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 dentro de 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 que operam em uma rede NetBIOS são alcançadas por meio de seus nomes NetBIOS, que podem ter até 16 caracteres de comprimento e muitas vezes são 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 TCP Porta 139.
Port 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 é modernamente conhecido como Common Internet File System (CIFS). Como um protocolo de rede da camada de aplicação, SMB/CIFS é utilizado principalmente 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, é destacado que o SMB pode operar diretamente sobre TCP/IP, eliminando a necessidade de NetBIOS sobre TCP/IP, através da utilização da porta 445. Por outro lado, em sistemas diferentes, a utilização da porta 139 é observada, indicando que o SMB está sendo executado em conjunto com NetBIOS sobre TCP/IP.
SMB
O Server Message Block (SMB) protocolo, operando em um modelo cliente-servidor, é projetado para regular o acesso a arquivos, diretórios e outros recursos de rede, como impressoras e roteadores. Utilizado principalmente dentro da série de sistemas operacionais Windows, o SMB garante compatibilidade retroativa, permitindo que dispositivos com versões mais novas 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, permitindo a implementação do SMB em sistemas Linux e Unix, facilitando assim a comunicação entre plataformas através 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 Access Control Lists (ACLs), que definem direitos de acesso, permitem um controle detalhado sobre as permissões dos usuários, incluindo atributos como execute
, read
e full access
. 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.
IPC$ Share
O acesso ao compartilhamento IPC$ pode ser obtido através de uma sessão nula anônima, permitindo a interação com serviços expostos via pipes nomeados. A utilidade enum4linux
é útil para esse propósito. Utilizada corretamente, ela 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 os compartilhamentos SMB disponíveis
A política de segurança do sistema efetiva
Essa funcionalidade é crítica 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 enum4linux
pode ser usado para realizar uma enumeração completa contra um alvo especificado por target_ip
.
O que é NTLM
Se você não sabe o que é NTLM ou se deseja saber como funciona e como abusar dele, você achará muito interessante esta página sobre NTLM onde é explicado como este protocolo funciona e como você pode tirar proveito dele:
NTLMEnumeração de Servidor
Escanear uma rede em busca de hosts:
Versão do servidor SMB
Para procurar possíveis exploits para a versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas utilizadas, você pode:
Usar o módulo auxiliar MSF _auxiliary/scanner/smb/smb_version
Ou este script:
Buscar exploit
Credenciais Possíveis
Nome(s) de usuário | 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 já devem ter sido coletadas do enum4linux e enum4linux-ng.
Enumerar usuários locais
Oneliner
Metasploit - Enumerar usuários locais
Enumerando LSARPC e SAMR rpcclient
rpcclient enumerationConexão GUI 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 algo; se você não tiver credenciais, tente usar null credentials/guest user.
Conectar/Listar uma pasta compartilhada
Enumerar manualmente compartilhamentos do Windows e conectar-se a eles
Pode ser possível que você esteja restrito a exibir quaisquer compartilhamentos da máquina host e, quando tenta listá-los, parece que não há compartilhamentos para se conectar. Assim, pode valer a pena tentar se conectar manualmente a um compartilhamento. Para enumerar os compartilhamentos manualmente, você pode querer procurar por respostas como NT_STATUS_ACCESS_DENIED e NT_STATUS_BAD_NETWORK_NAME, ao usar uma sessão válida (por exemplo, sessão nula ou credenciais válidas). Isso pode indicar se o compartilhamento existe e você não tem acesso a ele ou se o compartilhamento não existe.
Nomes comuns de compartilhamento para alvos Windows são
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Nomes comuns de compartilhamento 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
CMD console
MMC Snap-in (gráfico)
explorer.exe (gráfico), digite \\<ip>\
para ver os compartilhamentos disponíveis não ocultos.
Montar uma pasta compartilhada
Baixar arquivos
Leia as seções anteriores para aprender como se conectar com credenciais/Pass-the-Hash.
Commands:
mask: especifica a máscara que é usada para filtrar os arquivos dentro do diretório (por exemplo, "" para todos os arquivos)
recurse: ativa a recursão (padrão: desligado)
prompt: desativa a solicitação de nomes de arquivos (padrão: ligado)
mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente
(Informação da página de manual do smbclient)
Pesquisa de Pastas Compartilhadas do Domínio
Snaffler****
CrackMapExec aranha.
-M spider_plus [--share <share_name>]
--pattern txt
Especialmente interessantes a partir de 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. Nele você pode encontrar muitos scripts diferentes em batch, 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. Impacket reg.py
permite que você tente:
Pós Exploração
A configuração padrão do servidor Samba geralmente está localizada em /etc/samba/smb.conf
e pode ter algumas configurações perigosas:
Configuração | Descrição |
| Permitir listar os compartilhamentos disponíveis no compartilhamento atual? |
| Proibir a criação e modificação de arquivos? |
| Permitir que os usuários criem e modifiquem arquivos? |
| Permitir conectar-se ao serviço sem usar uma senha? |
| Honrar 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 for fechado? |
| Onde a saída do script mágico deve 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
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 criarão um novo serviço (usando \pipe\svcctl via SMB) na máquina da vítima e o usarão para executar algo (psexec irá carregar um arquivo executável para o compartilhamento ADMIN$ e smbexec 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 parameter-k
você pode autenticar contra kerberos em vez de NTLM
wmiexec/dcomexec
Execute furtivamente um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via port 135. No kali está localizado em /usr/share/doc/python3-impacket/examples/
Usando parameter-k
você pode autenticar contra kerberos em vez de NTLM
Executar comandos via o Agendador de Tarefas (usando \pipe\atsvc via SMB). No kali, está localizado em /usr/share/doc/python3-impacket/examples/
Impacket reference
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 usa 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-se 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 acontece com as funções:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Que são usadas por alguns navegadores e ferramentas (como Skype)
SMBTrap usando MitMf
Roubo de NTLM
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como Responder. O hash pode então ser quebrado offline ou usado em um ataque de retransmissão SMB.
Comandos Automáticos HackTricks
Last updated