Verificando cifras TLS, vulnerabilidades e mais com o Nmap

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.com

PORT    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: A

Nmap 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_kernel

Service 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 folder

Nmap 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.1

Nmap 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.

FTP Brute Force Credentials

Outra opção, ainda no Wireshark, é usar o filtro ftp.request.command == “USER”.

FTP Brute Force Request Command

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).

FTP Brute Force Login Successful

Mais informações no Nmap Reference Guide (capítulo 9 e capítulo 15).

Até a próxima.

Leave a Reply

About Us

Luckily friends do ashamed to do suppose. Tried meant mr smile so. Exquisite behaviour as to middleton perfectly. Chicken no wishing waiting am. Say concerns dwelling graceful.

Services

Most Recent Posts

  • All Post
  • Branding
  • Certificação
  • Cisco
  • Cloud
  • Configuração
  • Configuração Básica
  • Development
  • Geral
  • Informação
  • Leadership
  • Linux
  • Management
  • Microsoft
  • Network
  • Security
  • UC
  • Virtualização
  • Wireless

Company Info

She wholly fat who window extent either formal. Removing welcomed.

Your Business Potential with Our Proven Strategies

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Company

About Us

Contact Us

Products

Services

Blog

Features

Analytics

Engagement

Builder

Publisher

Help

Privacy Policy

Terms

Conditions

Product

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
You have been successfully Subscribed! Ops! Something went wrong, please try again.
© 2023 Created with Royal Elementor Addons