139,445 - Pentesting SMB
Porta 139
O Sistema Básico de Entrada e Saída de Rede** (NetBIOS)** é um protocolo de software projetado para permitir que aplicativos, PCs e desktops em uma rede local (LAN) interajam com hardware de rede e facilitem a transmissão de dados pela rede. A identificação e localização de aplicativos de software operando em uma rede NetBIOS são alcançadas por meio de seus nomes NetBIOS, que podem ter até 16 caracteres de comprimento e são frequentemente distintos do nome do computador. Uma sessão NetBIOS entre dois aplicativos é iniciada quando um aplicativo (atuando como cliente) emite um comando para "chamar" outro aplicativo (atuando como servidor) utilizando a Porta TCP 139.
Porta 445
Tecnicamente, a Porta 139 é referida como 'NBT sobre IP', enquanto a Porta 445 é identificada como 'SMB sobre IP'. O acrônimo SMB significa 'Server Message Blocks', que também é conhecido modernamente como o Common Internet File System (CIFS). Como protocolo de rede da camada de aplicação, o SMB/CIFS é principalmente utilizado para permitir o acesso compartilhado a arquivos, impressoras, portas seriais e facilitar várias formas de comunicação entre nós em uma rede.
Por exemplo, no contexto do Windows, destaca-se que o SMB pode operar diretamente sobre o TCP/IP, eliminando a necessidade do NetBIOS sobre TCP/IP, por meio da utilização da porta 445. Por outro lado, em diferentes sistemas, observa-se o uso da porta 139, indicando que o SMB está sendo executado em conjunto com o NetBIOS sobre TCP/IP.
SMB
O protocolo Server Message Block (SMB), operando em um modelo cliente-servidor, é projetado para regular o acesso a arquivos, diretórios e outros recursos de rede como impressoras e roteadores. Principalmente utilizado na série de sistemas operacionais Windows, o SMB garante compatibilidade reversa, permitindo que dispositivos com versões mais recentes do sistema operacional da Microsoft interajam perfeitamente com aqueles que executam versões mais antigas. Além disso, o projeto Samba oferece uma solução de software livre, possibilitando a implementação do SMB em sistemas Linux e Unix, facilitando assim a comunicação entre plataformas por meio do SMB.
Compartilhamentos, representando partes arbitrárias do sistema de arquivos local, podem ser fornecidos por um servidor SMB, tornando a hierarquia visível para um cliente parcialmente independente da estrutura real do servidor. As Listas de Controle de Acesso (ACLs), que definem direitos de acesso, permitem um controle detalhado sobre as permissões do usuário, incluindo atributos como executar
, ler
e acesso total
. Essas permissões podem ser atribuídas a usuários individuais ou grupos, com base nos compartilhamentos, e são distintas das permissões locais definidas no servidor.
Compartilhamento IPC$
O acesso ao compartilhamento IPC$ pode ser obtido por meio de uma sessão nula anônima, permitindo a interação com serviços expostos por meio de pipes nomeados. A utilidade enum4linux
é útil para esse fim. Utilizado corretamente, ele permite a aquisição de:
Informações sobre o sistema operacional
Detalhes sobre o domínio pai
Uma compilação de usuários e grupos locais
Informações sobre compartilhamentos SMB disponíveis
A política de segurança do sistema eficaz
Essa funcionalidade é fundamental para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O enum4linux
fornece uma visão abrangente do ambiente SMB do sistema-alvo, o que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente seguros.
O comando acima é um exemplo de como o enum4linux
pode ser usado para realizar uma enumeração completa contra um alvo especificado pelo target_ip
.
O que é NTLM
Se você não sabe o que é NTLM ou deseja saber como ele funciona e como abusar dele, você achará muito interessante esta página sobre NTLM onde é explicado como esse protocolo funciona e como você pode tirar proveito dele:
pageNTLMEnumeração do Servidor
Escaneie uma rede em busca de hosts:
Versão do servidor SMB
Para procurar possíveis exploits na versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas usadas, você pode:
Usar o módulo auxiliar MSF _auxiliary/scanner/smb/smb_version
Ou este script:
Pesquisar exploit
Possíveis Credenciais
Nome de Usuário(s) | Senhas Comuns |
(em branco) | (em branco) |
convidado | (em branco) |
Administrador, admin | (em branco), senha, administrador, admin |
arcserve | arcserve, backup |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
teste, lab, demo | senha, teste, lab, demo |
Força Bruta
Informações do Ambiente SMB
Obter Informações
Enumerar Usuários, Grupos e Usuários Conectados
Essas informações devem ser coletadas usando o enum4linux e enum4linux-ng.
Enumerar usuários locais
Uma linha
Metasploit - Enumerar usuários locais
Enumerando LSARPC e SAMR rpcclient
pagerpcclient enumerationConexão GUI a partir do linux
No terminal:
xdg-open smb://cascade.htb/
Na janela do navegador de arquivos (nautilus, thunar, etc)
smb://friendzone.htb/general/
Enumeração de Pastas Compartilhadas
Listar pastas compartilhadas
É sempre recomendado verificar se você pode acessar alguma coisa, se você não tiver credenciais, tente usar credenciais nulas/usuário convidado.
Conectar/Listar uma pasta compartilhada
Enumerar manualmente compartilhamentos do Windows e conectá-los
Pode ser possível que você esteja restrito a exibir quaisquer compartilhamentos da máquina host e, ao tentar listá-los, pareça que não há nenhum compartilhamento para se conectar. Portanto, pode valer a pena tentar se conectar manualmente a um compartilhamento. Para enumerar os compartilhamentos manualmente, você pode procurar por respostas como NT_STATUS_ACCESS_DENIED e NT_STATUS_BAD_NETWORK_NAME, ao usar uma sessão válida (por exemplo, uma sessão nula ou credenciais válidas). Essas respostas podem indicar se o compartilhamento existe e você não tem acesso a ele ou se o compartilhamento não existe de forma alguma.
Nomes comuns de compartilhamentos para alvos do Windows são
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Nomes comuns de compartilhamentos do Network Security Assessment 3rd edition)
Você pode tentar se conectar a eles usando o seguinte comando
ou este script (usando uma sessão nula)
Exemplos
Enumerar compartilhamentos do Windows / sem ferramentas de terceiros
PowerShell
Console CMD
MMC Snap-in (gráfico)
explorer.exe (gráfico), digite \\<ip>\
para ver as compartilhamentos não ocultos disponíveis.
Montar uma pasta compartilhada
Baixar arquivos
Leia as seções anteriores para aprender como se conectar com credenciais/Pass-the-Hash.
Comandos:
mask: especifica a máscara usada para filtrar os arquivos dentro do diretório (por exemplo, "" para todos os arquivos)
recurse: ativa a recursão (padrão: desativado)
prompt: desativa a solicitação de nomes de arquivos (padrão: ativado)
mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente
(Informações da página de manual do smbclient)
Pesquisa de Pastas Compartilhadas do Domínio
Snaffler****
CrackMapExec spider.
-M spider_plus [--share <share_name>]
--pattern txt
Especialmente interessantes nos compartilhamentos são os arquivos chamados Registry.xml
pois podem conter senhas para usuários configurados com autologon via Política de Grupo. Ou arquivos web.config
pois contêm credenciais.
O compartilhamento SYSVOL é legível por todos os usuários autenticados no domínio. Lá você pode encontrar muitos scripts diferentes em lotes, VBScript e PowerShell. Você deve verificar os scripts dentro dele, pois pode encontrar informações sensíveis como senhas.
Ler Registro
Você pode ser capaz de ler o registro usando algumas credenciais descobertas. O Impacket reg.py
permite que você tente:
Pós Exploração
A configuração padrão de um servidor Samba geralmente está localizada em /etc/samba/smb.conf
e pode conter algumas configurações perigosas:
Configuração | Descrição |
| Permitir listar compartilhamentos disponíveis no compartilhamento atual? |
| Proibir a criação e modificação de arquivos? |
| Permitir que usuários criem e modifiquem arquivos? |
| Permitir conexão ao serviço sem usar uma senha? |
| Respeitar privilégios atribuídos a SID específicos? |
| Quais permissões devem ser atribuídas aos arquivos recém-criados? |
| Quais permissões devem ser atribuídas aos diretórios recém-criados? |
| Qual script precisa ser executado no login do usuário? |
| Qual script deve ser executado quando o script é fechado? |
| Onde a saída do script mágico precisa ser armazenada? |
O comando smbstatus
fornece informações sobre o servidor e sobre quem está conectado.
Autenticar usando Kerberos
Você pode autenticar no kerberos usando as ferramentas smbclient e rpcclient:
Executar Comandos
crackmapexec
O crackmapexec pode executar comandos abusando de qualquer um dos mmcexec, smbexec, atexec, wmiexec sendo wmiexec o método padrão. Você pode indicar qual opção prefere usar com o parâmetro --exec-method
:
Ambas as opções irão criar um novo serviço (usando \pipe\svcctl via SMB) na máquina vítima e usá-lo para executar algo (psexec irá fazer upload de um arquivo executável para o compartilhamento ADMIN$ e smbexec irá apontar para cmd.exe/powershell.exe e colocar nos argumentos o payload --técnica sem arquivo--). Mais informações sobre psexec e smbexec. No kali está localizado em /usr/share/doc/python3-impacket/examples/
Usando o parâmetro -k
você pode autenticar contra o kerberos em vez do NTLM
wmiexec/dcomexec
Execute furtivamente um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via porta 135. No kali está localizado em /usr/share/doc/python3-impacket/examples/
Usando o parâmetro -k
, você pode autenticar-se contra o kerberos em vez do NTLM.
Execute comandos via o Agendador de Tarefas (usando \pipe\atsvc via SMB). No kali está localizado em /usr/share/doc/python3-impacket/examples/
Referência do Impacket
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Forçar credenciais de usuários
Isso não é recomendado, você pode bloquear uma conta se exceder o número máximo de tentativas permitidas
Ataque de retransmissão SMB
Este ataque utiliza a ferramenta Responder para capturar sessões de autenticação SMB em uma rede interna e retransmiti-las para uma máquina alvo. Se a sessão de autenticação for bem-sucedida, você será automaticamente direcionado para um shell do sistema. Mais informações sobre este ataque aqui.
SMB-Trap
A biblioteca do Windows URLMon.dll tenta automaticamente autenticar no host quando uma página tenta acessar algum conteúdo via SMB, por exemplo: img src="\\10.10.10.10\path\image.jpg"
Isso ocorre com as funções:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Que são usadas por alguns navegadores e ferramentas (como o Skype)
SMBTrap usando MitMf
Roubo de NTLM
Similar ao SMB Trapping, ao implantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo), pode-se provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como o Responder. O hash pode então ser quebrado offline ou usado em um ataque de retransmissão SMB.
Comandos Automáticos do HackTricks
Last updated