O Nmap é bastante conhecido por mapear redes e identificar portas abertas/fechadas (veja neste post), mas não se limita a isso. Ele pode ser utilizado para verificar quais cifras TLS (normalmente referenciado como SSL) estão disponíveis em um servidor Web, verificar a existência de vulnerabilidades, enumerar HTTP e SMB, fazer brute force em Telnet, SSH, FTP e VNC, e ainda dezenas de outras opções.
Os exemplos acima são possíveis graças ao NSE – Nmap Scripting Engine, e todos eles estão disponíveis com a instalação no Nmap. Além disso, podemos criar scripts personalizados, utilizando a linguagem LUA.
Os scripts ficam na pasta:
Linux: /usr/share/nmap/scripts
Windows: C:\Program Files (x86)\Nmap\scripts
Exemplos de Scripts Nmap
Podemos usar a opção –sc para o Nmap executar um grupo padrão de scripts, ou usar a opção –scritp nome_do_script.nse se quisermos executar um script específico. Também podemos referenciar parte do nome, e assim todos os scripts que tiverem essa string serão executados (ex. –script “http” vai executar todos os scritps que tiverem http no nome).
Use o comando ls –lh na pasta onde estão os scripts para ver todas as opções.
ssl-enum-ciphers.nse: Script para verificar quais versões TLS e quais cifras um servidor aceita. Útil para identificar servidores usando versões menos seguras (TLS 1.0 e 1.1 por exemplo) ou cifras fracas.
└─$ nmap brainwork.com.br –script ssl-enum-ciphers -p443
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 14:57 EDT
Nmap scan report for brainwork.com.br (108.179.193.84)
Host is up (0.16s latency).
rDNS record for 108.179.193.84: 108-179-193-84.unifiedlayer.comPORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) – A
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) – A
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) – A
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) – A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) – A
| compressors:
| NULL
| cipher preference: server
| TLSv1.3:
| ciphers:
| TLS_AKE_WITH_AES_256_GCM_SHA384 (ecdh_x25519) – A
| TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) – A
| TLS_AKE_WITH_AES_128_GCM_SHA256 (ecdh_x25519) – A
| cipher preference: server
|_ least strength: ANmap done: 1 IP address (1 host up) scanned in 7.06 seconds
vulners.nse: Script que lista vulnerabilidades conhecidas para aplicação identificada, inclusive citando o CVE.
└─$ nmap -sV –script vulners.nse 192.168.15.13 -p22
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:01 EDT
Nmap scan report for 192.168.15.13
Host is up (0.00053s latency).PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| vulners:
| cpe:/a:openbsd:openssh:4.7p1:
| SECURITYVULNS:VULN:8166 7.5 https://vulners.com/securityvulns/SECURITYVULNS:VULN:8166
| CVE-2010-4478 7.5 https://vulners.com/cve/CVE-2010-4478
| CVE-2008-1657 6.5 https://vulners.com/cve/CVE-2008-1657
| SSV:60656 5.0 https://vulners.com/seebug/SSV:60656 *EXPLOIT*
| CVE-2010-5107 5.0 https://vulners.com/cve/CVE-2010-5107
| CVE-2012-0814 3.5 https://vulners.com/cve/CVE-2012-0814
| CVE-2011-5000 3.5 https://vulners.com/cve/CVE-2011-5000
| CVE-2008-5161 2.6 https://vulners.com/cve/CVE-2008-5161
| CVE-2011-4327 2.1 https://vulners.com/cve/CVE-2011-4327
| CVE-2008-3259 1.2 https://vulners.com/cve/CVE-2008-3259
|_ SECURITYVULNS:VULN:9455 0.0 https://vulners.com/securityvulns/SECURITYVULNS:VULN:9455
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds
http-enum.nse: O HTTP Enumeration lista diretórios e páginas em um servidor HTTP.
└─$ nmap –script http-enum.nse 192.168.15.13 -p80
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:05 EDT
Nmap scan report for 192.168.15.13
Host is up (0.00049s latency).PORT STATE SERVICE
80/tcp open http
| http-enum:
| /tikiwiki/: Tikiwiki
| /test/: Test page
| /phpinfo.php: Possible information file
| /phpMyAdmin/: phpMyAdmin
| /doc/: Potentially interesting directory w/ listing on ‘apache/2.2.8 (ubuntu) dav/2’
| /icons/: Potentially interesting folder w/ directory listing
|_ /index/: Potentially interesting folderNmap done: 1 IP address (1 host up) scanned in 0.96 seconds
ftp-anon.nse: Script para testar se um servidor FTP aceita conexão anônima.
└─$ nmap –script ftp-anon.nse 192.168.136.129 -p21
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-08 09:24 EST
Nmap scan report for 192.168.136.129
Host is up (0.00052s latency).PORT STATE SERVICE
21/tcp open ftp
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)Nmap done: 1 IP address (1 host up) scanned in 13.26 seconds
ftp-brute.nse: E se o servidor FTP não aceitar conexão anônima, que tal tentar um brute force (não faça isso sem autorização!)? No exemplo abaixo encontrou as credenciais user/user.
└─$ nmap –script ftp-brute.nse 192.168.15.13 -p21
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 15:33 EDT
NSE: [ftp-brute] usernames: Time limit 10m00s exceeded.
NSE: [ftp-brute] usernames: Time limit 10m00s exceeded.
NSE: [ftp-brute] passwords: Time limit 10m00s exceeded.
Nmap scan report for 192.168.15.13
Host is up (0.0010s latency).PORT STATE SERVICE
21/tcp open ftp
| ftp-brute:
| Accounts:
| user:user – Valid credentials
|_ Statistics: Performed 3675 guesses in 602 seconds, average tps: 6.1Nmap done: 1 IP address (1 host up) scanned in 602.18 seconds
Bônus Track
Se deixar o Wireshark rodando enquanto tenta o brute force, é possível ver quais foram as credenciais que o Nmap usou no teste.
Para isso, após o término, clique em Tools > Credentials.
Outra opção, ainda no Wireshark, é usar o filtro ftp.request.command == “USER”.
E com o filtro ftp.response.arg == “Login successful.” conseguimos ver a resposta de login com sucesso. Se selecionarmos este pacote e aplicarmos um filtro (botão direito no pacote, Conversation Filter > TCP), veremos todo o processo com as credenciais que funcionaram (user/user).
Mais informações no Nmap Reference Guide (capítulo 9 e capítulo 15).
Até a próxima.
You must be logged in to post a comment.