Enumerar Serviços SMB no Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos como enumerar serviços SMB (Server Message Block) usando o Nmap. SMB é um protocolo de compartilhamento de arquivos em rede, e identificar compartilhamentos disponíveis pode revelar informações valiosas sobre um sistema alvo. Usaremos o script smb-enum-shares do Nmap Scripting Engine (NSE) para atingir este objetivo.

O laboratório envolve a execução de comandos Nmap para enumerar compartilhamentos SMB em uma máquina alvo, especificando o endereço IP do alvo (por exemplo, 192.168.1.1 ou 127.0.0.1 para localhost), e interpretando a saída para identificar compartilhamentos disponíveis, seus tipos e comentários associados. Também exploraremos a adição de verbosidade, salvando os resultados em um arquivo e comparando a saída com uma varredura de banner.

Executar enumeração SMB com nmap --script smb-enum-shares 192.168.1.1

Nesta etapa, usaremos o Nmap com o script smb-enum-shares para enumerar compartilhamentos SMB em uma máquina alvo. SMB (Server Message Block) é um protocolo de compartilhamento de arquivos em rede, e enumerar compartilhamentos pode revelar informações valiosas sobre o sistema alvo, como recursos disponíveis e potenciais vulnerabilidades.

Primeiro, vamos entender o comando que usaremos:

  • nmap: Esta é a ferramenta de mapeamento de rede que usaremos.
  • --script smb-enum-shares: Isso diz ao Nmap para usar o script NSE (Nmap Scripting Engine) smb-enum-shares. Este script é projetado especificamente para enumerar compartilhamentos SMB.
  • 192.168.1.1: Este é o endereço IP do alvo. Importante: Você precisará substituir isso pelo endereço IP real da máquina alvo que deseja escanear. Se você não tiver um alvo específico, pode usar 127.0.0.1 (localhost) para fins de teste, mas lembre-se de que isso só escaneará sua própria máquina.

Agora, vamos executar o comando. Abra seu terminal Xfce e digite o seguinte comando, depois pressione Enter:

nmap --script smb-enum-shares 192.168.1.1

Importante: Substitua 192.168.1.1 pelo endereço IP real do seu alvo. Se você estiver testando localmente, pode usar 127.0.0.1.

A saída mostrará os resultados da enumeração de compartilhamento SMB. Pode parecer algo assim (a saída exata dependerá do sistema alvo):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00043s latency).
Not shown: 999 filtered ports
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.1.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\192.168.1.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 2.54 seconds

Esta saída mostra os compartilhamentos SMB que o Nmap conseguiu descobrir no sistema alvo. Você pode ver os nomes dos compartilhamentos (por exemplo, IPC$, ADMIN$, C$), seus tipos, comentários e flags. Esta informação pode ser útil para identificar potenciais vetores de ataque ou configurações incorretas.

Verificar a porta 445 com nmap --script smb-enum-shares -p 445 127.0.0.1

Nesta etapa, focaremos em escanear uma porta específica, a 445, que é comumente associada ao SMB. Ao especificar a porta, podemos restringir a varredura e potencialmente obter resultados mais rapidamente. Usaremos o mesmo script smb-enum-shares de antes, mas desta vez diremos ao Nmap para escanear apenas a porta 445.

Vamos detalhar o comando:

  • nmap: A ferramenta de mapeamento de rede.
  • --script smb-enum-shares: Especifica o script NSE a ser usado para a enumeração de compartilhamento SMB.
  • -p 445: Esta opção diz ao Nmap para escanear apenas a porta 445. Sem isso, o Nmap escanearia uma variedade de portas comumente usadas.
  • 127.0.0.1: Este é o endereço IP do alvo, neste caso, localhost. Isso significa que estamos escaneando o serviço SMB em execução em nossa própria máquina.

Agora, abra seu terminal Xfce e execute o seguinte comando:

nmap --script smb-enum-shares -p 445 127.0.0.1

A saída mostrará os resultados da enumeração de compartilhamento SMB especificamente na porta 445. Pode parecer semelhante a isto:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

Observe que a saída é semelhante à etapa anterior, mas desta vez visamos especificamente a porta 445. Isso pode ser útil quando você sabe que o SMB está em execução em uma porta específica e deseja evitar escanear outras portas desnecessariamente.

Adicionar verbosidade com nmap -v --script smb-enum-shares 192.168.1.1

Nesta etapa, adicionaremos verbosidade à nossa varredura Nmap. A verbosidade fornece uma saída mais detalhada, o que pode ser útil para entender o que o Nmap está fazendo e para solucionar quaisquer problemas. A opção -v aumenta o nível de verbosidade.

Vamos analisar o comando:

  • nmap: A ferramenta de mapeamento de rede.
  • -v: Esta opção aumenta o nível de verbosidade. Adicionar mais opções -v (por exemplo, -vv) aumenta ainda mais a verbosidade.
  • --script smb-enum-shares: Especifica o script NSE a ser usado para a enumeração de compartilhamento SMB.
  • 192.168.1.1: O endereço IP do alvo. Lembre-se de substituir isso pelo endereço IP real do seu alvo.

Agora, abra seu terminal Xfce e execute o seguinte comando:

nmap -v --script smb-enum-shares 192.168.1.1

Importante: Substitua 192.168.1.1 pelo endereço IP real do seu alvo. Se você estiver testando localmente e não tiver o SMB ativado, talvez não veja muita diferença na saída.

A saída será mais detalhada do que as varreduras anteriores. Você verá mais informações sobre o progresso da varredura, os scripts em execução e quaisquer erros que ocorram. Por exemplo, você pode ver uma saída como esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 1 script for scanning.
Initiating Ping Scan at 10:10
Scanning 192.168.1.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating Connect Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Discovered open port 445/tcp on 192.168.1.1
Completed Connect Scan at 10:10, 0.12s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 1 service on 192.168.1.1
Completed Service scan at 10:10, 6.41s elapsed (1 service total)
NSE: Starting runlevel 1 (of 1) scan.
NSE: Running script smb-enum-shares on 192.168.1.1.
Nmap scan report for 192.168.1.1
Host is up (0.00038s latency).
Not shown: 999 filtered ports
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\192.168.1.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\192.168.1.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\192.168.1.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0

NSE: Script Post-scanning.
Nmap done: 1 IP address (1 host up) scanned in 7.01 seconds

A saída detalhada mostra os diferentes estágios da varredura Nmap, incluindo a varredura ping, resolução DNS, varredura de conexão, varredura de serviço e a execução do script smb-enum-shares. Este nível de detalhe pode ser inestimável para depurar e entender o processo de varredura.

Salvar resultados SMB com nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

Nesta etapa, aprenderemos como salvar os resultados da nossa varredura Nmap em um arquivo. Isso é útil para análise posterior ou para compartilhar os resultados com outras pessoas. Usaremos a opção -oN para salvar a saída em um formato "normal", que é legível por humanos.

Vamos detalhar o comando:

  • nmap: A ferramenta de mapeamento de rede.
  • --script smb-enum-shares: Especifica o script NSE a ser usado para a enumeração de compartilhamento SMB.
  • -oN smb.txt: Esta opção diz ao Nmap para salvar a saída em formato normal em um arquivo chamado smb.txt. O arquivo será salvo no seu diretório atual, que é ~/project.
  • 127.0.0.1: Este é o endereço IP do alvo, neste caso, localhost.

Agora, abra seu terminal Xfce e execute o seguinte comando:

nmap --script smb-enum-shares -oN smb.txt 127.0.0.1

Após a conclusão da varredura, você não verá a saída no terminal. Em vez disso, os resultados serão salvos em um arquivo chamado smb.txt no seu diretório ~/project.

Para verificar se o arquivo foi criado e contém os resultados da varredura, você pode usar o comando cat para exibir o conteúdo do arquivo:

cat smb.txt

Você deverá ver os resultados da varredura Nmap impressos no terminal. A saída deve ser semelhante ao que você viu nas etapas anteriores, mas agora também está salva em um arquivo.

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

Você também pode usar o comando ls -l para verificar o tamanho do arquivo e a data de modificação:

ls -l smb.txt

Isso mostrará informações sobre o arquivo smb.txt, incluindo seu tamanho, data de modificação e permissões.

Revisar compartilhamentos SMB no terminal Xfce

Nesta etapa, revisaremos os compartilhamentos SMB que foram identificados nas etapas anteriores. Usaremos o comando cat para visualizar o conteúdo do arquivo smb.txt, que contém os resultados da varredura Nmap. Em seguida, discutiremos como interpretar a saída e identificar potenciais vulnerabilidades de segurança.

Primeiro, abra seu terminal Xfce e use o comando cat para exibir o conteúdo do arquivo smb.txt:

cat smb.txt

A saída mostrará os resultados da varredura Nmap, incluindo os compartilhamentos SMB identificados. Por exemplo, você pode ver uma saída como esta:

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023 as: nmap --script smb-enum-shares -oN smb.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
Host script results:
| smb-enum-shares:
|   account_used: guest
|   \\127.0.0.1\IPC$:
|     type: STYPE_IPC_HIDDEN
|     comment: Remote IPC
|     flags: 0x80000000
|   \\127.0.0.1\ADMIN$:
|     type: STYPE_DISKTREE
|     comment: Remote Admin
|     flags: 0x0
|_  \\127.0.0.1\C$:
|     type: STYPE_DISKTREE
|     comment: Default share
|     flags: 0x0
## Nmap done at Fri Oct 27 10:20:01 2023 -- 1 IP address (1 host up) scanned in 1.23 seconds

Vamos analisar a saída:

  • \\127.0.0.1\IPC$: Este é o compartilhamento de Comunicação Interprocessos (Inter-Process Communication - IPC), que é usado para comunicação entre processos na mesma máquina ou em uma rede. Ele é tipicamente oculto (STYPE_IPC_HIDDEN) e usado para funções do sistema.
  • \\127.0.0.1\ADMIN$: Este é o compartilhamento administrativo, que fornece acesso ao diretório do sistema Windows. Ele é tipicamente usado por administradores para gerenciamento remoto.
  • \\127.0.0.1\C$: Este é o compartilhamento padrão para a unidade C. Ele permite que os administradores acessem toda a unidade C remotamente.

Esses compartilhamentos geralmente estão presentes em sistemas Windows. No entanto, é importante revisar suas permissões e garantir que estejam devidamente protegidos. Por exemplo, os compartilhamentos ADMIN$ e C$ normalmente só devem ser acessíveis a administradores. Se esses compartilhamentos forem acessíveis a usuários não autorizados, isso pode levar a vulnerabilidades de segurança.

Na próxima etapa, compararemos esses resultados com uma varredura de banner para reunir mais informações sobre o sistema de destino.

Nesta etapa, realizaremos uma varredura de banner usando o Nmap e compararemos os resultados com os resultados da enumeração de compartilhamento SMB das etapas anteriores. A captura de banner (banner grabbing) nos permite identificar o sistema operacional e os serviços em execução no alvo, o que pode fornecer informações valiosas para identificar potenciais vulnerabilidades.

Primeiro, vamos realizar uma varredura de banner na porta 445 usando o Nmap. Abra seu terminal Xfce e execute o seguinte comando:

nmap -p 445 -sV 127.0.0.1

Aqui está uma análise do comando:

  • nmap: A ferramenta de mapeamento de rede.
  • -p 445: Especifica a porta 445, que é a porta usada para SMB.
  • -sV: Habilita a detecção de versão, que tenta determinar o serviço e as informações de versão em execução na porta de destino.
  • 127.0.0.1: Este é o endereço IP do alvo, neste caso, localhost.

A saída do comando mostrará o serviço em execução na porta 445 e suas informações de versão. Por exemplo, você pode ver uma saída como esta:

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).

PORT    STATE SERVICE      VERSION
445/tcp open  microsoft-ds Windows 10 Pro 19042 microsoft-ds

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds

Neste exemplo, a varredura de banner revela que o alvo está executando Windows 10 Pro 19042. Essa informação pode ser usada para identificar potenciais vulnerabilidades específicas para esta versão do sistema operacional.

Agora, vamos comparar essa informação com os resultados da enumeração de compartilhamento SMB da etapa anterior. Na etapa anterior, identificamos os seguintes compartilhamentos SMB: IPC$, ADMIN$ e C$. Também sabemos que o alvo está executando Windows 10 Pro 19042.

Ao combinar essas informações, podemos começar a construir uma imagem mais completa do sistema de destino e suas potenciais vulnerabilidades. Por exemplo, podemos pesquisar vulnerabilidades conhecidas no Windows 10 Pro 19042 relacionadas aos compartilhamentos SMB e determinar se o sistema de destino é vulnerável.

Essa comparação nos ajuda a priorizar nossos esforços e focar nos vetores de ataque mais prováveis. Por exemplo, se encontrarmos uma vulnerabilidade conhecida no Windows 10 Pro 19042 que permite acesso não autorizado ao compartilhamento ADMIN$, podemos concentrar nossos esforços em explorar essa vulnerabilidade.

Resumo

Neste laboratório, exploramos como usar o Nmap com o script smb-enum-shares para enumerar compartilhamentos SMB em uma máquina de destino. Aprendemos que o SMB é um protocolo de compartilhamento de arquivos em rede e que a enumeração de compartilhamentos pode revelar informações valiosas sobre o sistema de destino, incluindo recursos disponíveis e potenciais vulnerabilidades. O comando básico nmap --script smb-enum-shares <target_ip> foi usado para realizar a enumeração.

Além disso, praticamos a especificação da porta de destino (445), o aumento da verbosidade com a flag -v e a salvaguarda da saída em um arquivo usando a opção -oN. Finalmente, revisamos os compartilhamentos SMB no terminal Xfce e comparamos os resultados com uma varredura de banner, demonstrando diferentes métodos para coletar informações sobre os serviços SMB.