Running scans with Nmap
Distintos ejemplos de como correr variados tipos de scans usando Nmap.

Intro: Distintos tipos de scans con Nmap

En esta práctica veremos como usar nmap para realizar distintos tipos de escaneos mediante los cuales obtendremos distintos detalles de nuestro objetivo. Para esta práctica voy a usar un laboratorio local que tengo creado para practicas de Active Directory como objetivo. Este lab corre en VMware localmente y consta de los siguientes equipos:
Tipo
IP
​
DC: Controlador de Dominio
​
192.168.31.131
Client1: Win 10 Enterprise
192.168.31.132
Client2: Windows 10 Pro
192.168.31.133
Este lab esta destinado a practicar ciertas vulnerabilidades de varios tipos, algunos de ellos detallados a continuación:
​
​
​
  • LLMNR and NBT-NS Poisoning
  • SMB Relay Attacks
  • Kerberoasting
  • BloodHound and other enumeration tools
  • Golden Ticket
  • Token Impersonation
  • IPv6 DNS Takeover Attacks
  • Credentials Dumping with Mimikatz
Esta práctica no cubre las vulnerabilidades mencionadas ni la creación del lab, únicamente lo usaremos como objetivo para aprender los distintos tipos de escaneos.
Teniendo esto en cuenta debería servirnos para obtener información mediante los distintos tipos de scan usando Nmap que veremos en esta práctica.
Nmap es una herramienta que consta de muchas formas de uso, no es el objetivo de esta práctica cubrir todas. Simplemente veremos algunos tipos de escaneos a modo de ejemplo, principalmente los que uso comúnmente para resolver labs como los de VulnHub y TryHackMe entre otros.

Parte 1: Escaneos Básicos.

En esta primer parte del práctico veremos los escaneos más simples que podemos realizar con nmap.

Haciendo ping con Nmap.

Lo primero que podemos probar es como hacer ping a nuestro objetivo. Por el momento comencemos por un solo IP objetivo, el del controlador de dominio.
Para hacer un simple scan de un host con nmap podemos hacer uso del siguiente switch -sn, el mismo nos devuelve varios detalles del objetivo aparte de informarnos si el host esta activo, como ser la latencia y la dirección MAC del host.
-sn: Ping Scan - disable port scan
El comando completo queda de la siguiente manera:
nmap -sn 192.168.31.131
El uso de sudo no es necesario para este scan.
Con este simple scan obtuvimos la siguiente información de nuestro objetivo:
Info Obtenida
Valor
Estado del Host (Activo/Inactivo)
Host is up
MAC Address
00:0C:29:1C:F8:3D (VMware)
Latencia
0.00039s

Detectando el Sistema Operativo.

Para detectar el sistema operativo del objetivo podemos usar el siguiente switch de nmap: -O. Lo que nos devuelve el siguiente output en la consola:
El comando completo nos queda de esta forma:
sudo nmap -O 192.168.31.131
Este switch requiere ser ejecutado con privilegios.
Como vemos este scan no solo intenta detectar el SO (OS fingerprinting), sino que también ejecuta algunos análisis adicionales como ser detección de puertos comunes y detección de servicios corriendo en cada puerto.
En este caso vemos que no fue posible detectar el SO correctamente, posiblemente por alguno de los ajustes que tengo realizados en el laboratorio local. Es importante saber que disponemos de un switch alternativo para intentar detectar el SO más agresivamente: --osscan-guess .
Veamos como es el output cuando logra detectarlo correctamente:
También vemos que incluye los datos que vimos en el scan anterior.
Info Obtenida
Valor
Listado de puertos abiertos y sus servicios
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
Distancia de red hasta el host
1 hop
Posible Versión del Sistema Operativo (Host de ejemplo)
Windows XP SP3 o Windows Server 2012
​

Escaneando puertos específicos.

Para escanear determinados puertos podemos hacer uso del switch -p el cual nos permite especificar una serie de puertos específicos, sobre los cuales realizar un scan.
El comando queda de esta manera:
nmap -p 53,88,389,445 192.168.31.134
De esta manera podemos escanear los puertos deseados.
Si queremos escanear por un rango de puertos en particular podemos hacerlo de la siguiente forma:
nmap -p 54-445 192.168.31.131

Escaneando todos los puertos (65535).

Si en cambio queremos escanear todos los puertos podemos hacerlo de la siguiente manera, usando el switch -p-.
El comando queda de esta forma:
nmap -p- 192.168.31.131
Para este host en particular use el switch -Pn que nos permite indicarle a nmap que no realice pings. Necesario para objetivos que no responden a ping (ICMP) echo requests.

Escaneo de Versiones.

Para realizar un escaneo que nos ayude a identificar las versiones de los servicios que están corriendo en el objetivo podemos hacer uso del siguiente switch -sV.
El comando queda de esta forma:
nmap -sV 192.168.31.131

TCP/IP Full Open Scan

Si queremos realizar un escaneo completamente abierto, podemos hacer uso del switch -sT. En este tipo de escaneo generalmente nos asegura una respuesta dado que la sesión se inicia en su totalidad (SYN, SYN+ACK, ACK, RST).
Importante: Este escaneo es fácilmente detectado por firewalls y otras medidas de seguridad.
Para realizar este scan el comando queda de la siguiente manera:
nmap -sT 192.168.31.131

Stealth Scan (Half-open)

En muchos casos necesitamos realizar escaneos sin alertar o disparar detecciones del lado del objetivo. Para estos casos nmap cuenta con el switch -sS. En este tipo de scan la sesión no se completa correctamente, y únicamente los paquetes SYC, SYNC+ACK y RST son utilizados. Cuando el objetivo responde, el cliente en vez de responder con ACK responde directamente con RST.
Este comando requiere de privilegios para correr (sudo).
Para ejecutar este tipo de scan el comando queda de la siguiente forma:
nmap -sS 192.168.31.131
Como explique antes el switch adicional -Pn es necesario para hosts que no responden a ping requests (ICMP Echo Requests) como es el caso de este objetivo que estoy usando.

Escanear equipos en la red

Si queremos obtener un panorama general de los equipos que están activos en la red que estamos escaneando podemos hacer uso del switch -sP. El mismo puede llevar un tiempo terminar dependiendo que tan extensa sea nuestra red. En Este caso el lab objetivo es bastante pequeño.
Podemos usar el comando de esta manera:
nmap -sP 192.168.31.*
Notemos que en este caso estamos pasando parte del IP, e indicamos el último valor como * para que nmap automáticamente escanee todos los equipos que formen parte del mismo subnet.
Alternativamente podemos hacer uso de los switches -PS (SYN Ping) o -PR (ARP Scan) los cuales nos regresan resultados como estos:
De momento no explicaremos el uso de los switches/flags adicionales que puedes ver en la imagen anterior. Cubriremos esos más adelante en esta práctica.

Escaneo con Default scripts

Nmap incorpora scripts (NSE) que nos permiten indicar si durante el escaneo queremos que nmap también intente correr los scripts con los que viene incorporados. Estos scripts prueban vulnerabilidades comunes que pueden aportar buena información sobre el objetivo y sobre como lograr explotarlos para obtener acceso. Esto se realiza mediante el switch -sC.
El comando para este tipo de scan es el siguiente:
nmap -sC 192.168.31.131
Vemos que los resultados que obtenemos incluyen mucha información sobre el controlador de dominio (en este caso) escaneado. Estos resultados varían dependiendo de que objetivo estemos escaneando y cuales sean las vulnerabilidades que nmap pueda detectar para cada caso en particular.

Parte 2: Escaneos múltiples.

En esta parte del práctico veremos algunos escaneos más avanzados y comenzaremos a usar varios switches o flags al mismo tiempo en nuestros comandos.
Digamos que quiero obtener rápidamente toda la información que vimos, en los escaneos individuales, para tener un panorama general del objetivo lo más pronto posible. Normalmente cuando ejecuto un scan con nmap para algún laboratorio comienzo teniendo en cuenta lo siguiente:
  • Tipos de datos que necesito obtener
  • Tipos de datos que me gustaría obtener
  • Que tan rápido quiero obtener los resultados
Usualmente en los labs de práctica o challenges del tipo Capture The Flag (Captura la bandera), utilizo el siguiente set de switches o flags de nmap:
sudo nmap -sC -sV -Pn -p- -T5 -O -v -oN results 192.168.31.131
Como podemos ver en esa línea anterior, hay varios switches o flags nuevos que estamos pasando a nmap que no hemos visto en esta práctica aún. Veamos uno a uno que función cumplen.
Switch/Flag
Función
-T5
Indica la velocidad del scan. Valores posibles 1 a 5, siendo 5 el más alto. (Aumenta la detención de nuestro scan por parte de los mecanismos de defensa que tenga el objetivo)
-v
Indica a nmap que debe producir output verboso, proveyendo al usuario con mucho detalle sobre cada scan y su resultado.
-oN <archivoSalida>
Indica a nmap que debe generar un archivo de salida con los resultados. En este caso en formato común (texto).
Este tipo de escaneo suele resultar en un output extenso en la consola, por eso es buena idea guardarlo directamente a un archivo para consultarlo cuando sea necesario.
El resultado de este scan en su totalidad de puede ver en el siguiente bloque, dado que no amerita capturarlo en imágenes en su totalidad:
1
┌──(kali㉿kali)-[~]
2
└─$ sudo nmap -sC -sV -Pn -p- -T5 -O -v -oN results 192.168.31.131
3
[sudo] password for kali:
4
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
5
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-06 13:48 EST
6
NSE: Loaded 153 scripts for scanning.
7
NSE: Script Pre-scanning.
8
Initiating NSE at 13:48
9
Completed NSE at 13:48, 0.00s elapsed
10
Initiating NSE at 13:48
11
Completed NSE at 13:48, 0.00s elapsed
12
Initiating NSE at 13:48
13
Completed NSE at 13:48, 0.00s elapsed
14
Initiating ARP Ping Scan at 13:48
15
Scanning 192.168.31.131 [1 port]
16
Completed ARP Ping Scan at 13:48, 0.05s elapsed (1 total hosts)
17
Initiating Parallel DNS resolution of 1 host. at 13:48
18
Completed Parallel DNS resolution of 1 host. at 13:48, 0.01s elapsed
19
Initiating SYN Stealth Scan at 13:48
20
Scanning 192.168.31.131 [65535 ports]
21
Discovered open port 53/tcp on 192.168.31.131
22
Discovered open port 135/tcp on 192.168.31.131
23
Discovered open port 139/tcp on 192.168.31.131
24
Discovered open port 445/tcp on 192.168.31.131
25
Discovered open port 49703/tcp on 192.168.31.131
26
Discovered open port 9389/tcp on 192.168.31.131
27
Discovered open port 49667/tcp on 192.168.31.131
28
Discovered open port 3268/tcp on 192.168.31.131
29
Discovered open port 636/tcp on 192.168.31.131
30
Discovered open port 49674/tcp on 192.168.31.131
31
Discovered open port 49676/tcp on 192.168.31.131
32
Discovered open port 3269/tcp on 192.168.31.131
33
Discovered open port 49666/tcp on 192.168.31.131
34
SYN Stealth Scan Timing: About 45.08% done; ETC: 13:49 (0:00:38 remaining)
35
Discovered open port 593/tcp on 192.168.31.131
36
Discovered open port 5985/tcp on 192.168.31.131
37
Discovered open port 49673/tcp on 192.168.31.131
38
Discovered open port 88/tcp on 192.168.31.131
39
Discovered open port 464/tcp on 192.168.31.131
40
Discovered open port 49710/tcp on 192.168.31.131
41
Discovered open port 49686/tcp on 192.168.31.131
42
Discovered open port 389/tcp on 192.168.31.131
43
Completed SYN Stealth Scan at 13:49, 55.14s elapsed (65535 total ports)
44
Initiating Service scan at 13:49
45
Scanning 21 services on 192.168.31.131
46
Completed Service scan at 13:50, 53.60s elapsed (21 services on 1 host)
47
Initiating OS detection (try #1) against 192.168.31.131
48
Retrying OS detection (try #2) against 192.168.31.131
49
NSE: Script scanning 192.168.31.131.
50
Initiating NSE at 13:50
51
Completed NSE at 13:51, 40.06s elapsed
52
Initiating NSE at 13:51
53
Completed NSE at 13:51, 0.07s elapsed
54
Initiating NSE at 13:51
55
Completed NSE at 13:51, 0.00s elapsed
56
Nmap scan report for 192.168.31.131
57
Host is up (0.00045s latency).
58
Not shown: 65514 filtered ports
59
PORT STATE SERVICE VERSION
60
53/tcp open domain Simple DNS Plus
61
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2020-12-06 18:49:48Z)
62
135/tcp open msrpc Microsoft Windows RPC
63
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
64
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: CHUKARO.local0., Site: Default-First-Site-Name)
65
| ssl-cert: Subject: commonName=Chukaro-DC.CHUKARO.local
66
| Subject Alternative Name: othername:<unsupported>, DNS:Chukaro-DC.CHUKARO.local
67
| Issuer: commonName=CHUKARO-CHUKARO-DC-CA
68
| Public Key type: rsa
69
| Public Key bits: 2048
70
| Signature Algorithm: sha256WithRSAEncryption
71
| Not valid before: 2020-11-24T20:30:01
72
| Not valid after: 2021-11-24T20:30:01
73
| MD5: b134 42d1 5e7e 2394 dc8a 0eae 3e6f bb9f
74
|_SHA-1: 0fb3 428c 8b1f 8a6b b92a 785a a84e cc3f c393 74dd
75
|_ssl-date: 2020-12-06T18:51:20+00:00; 0s from scanner time.
76
445/tcp open microsoft-ds?
77
464/tcp open kpasswd5?
78
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
79
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: CHUKARO.local0., Site: Default-First-Site-Name)
80
| ssl-cert: Subject: commonName=Chukaro-DC.CHUKARO.local
81
| Subject Alternative Name: othername:<unsupported>, DNS:Chukaro-DC.CHUKARO.local
82
| Issuer: commonName=CHUKARO-CHUKARO-DC-CA
83
| Public Key type: rsa
84
| Public Key bits: 2048
85
| Signature Algorithm: sha256WithRSAEncryption
86
| Not valid before: 2020-11-24T20:30:01
87
| Not valid after: 2021-11-24T20:30:01
88
| MD5: b134 42d1 5e7e 2394 dc8a 0eae 3e6f bb9f
89
|_SHA-1: 0fb3 428c 8b1f 8a6b b92a 785a a84e cc3f c393 74dd
90
|_ssl-date: 2020-12-06T18:51:20+00:00; 0s from scanner time.
91
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: CHUKARO.local0., Site: Default-First-Site-Name)
92
| ssl-cert: Subject: commonName=Chukaro-DC.CHUKARO.local
93
| Subject Alternative Name: othername:<unsupported>, DNS:Chukaro-DC.CHUKARO.local
94
| Issuer: commonName=CHUKARO-CHUKARO-DC-CA
95
| Public Key type: rsa
96
| Public Key bits: 2048
97
| Signature Algorithm: sha256WithRSAEncryption
98
| Not valid before: 2020-11-24T20:30:01
99
| Not valid after: 2021-11-24T20:30:01
100
| MD5: b134 42d1 5e7e 2394 dc8a 0eae 3e6f bb9f
101
|_SHA-1: 0fb3 428c 8b1f 8a6b b92a 785a a84e cc3f c393 74dd
102
|_ssl-date: 2020-12-06T18:51:20+00:00; 0s from scanner time.
103
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: CHUKARO.local0., Site: Default-First-Site-Name)
104
| ssl-cert: Subject: commonName=Chukaro-DC.CHUKARO.local
105
| Subject Alternative Name: othername:<unsupported>, DNS:Chukaro-DC.CHUKARO.local
106
| Issuer: commonName=CHUKARO-CHUKARO-DC-CA
107
| Public Key type: rsa
108
| Public Key bits: 2048
109
| Signature Algorithm: sha256WithRSAEncryption
110
| Not valid before: 2020-11-24T20:30:01
111
| Not valid after: 2021-11-24T20:30:01
112
| MD5: b134 42d1 5e7e 2394 dc8a 0eae 3e6f bb9f
113
|_SHA-1: 0fb3 428c 8b1f 8a6b b92a 785a a84e cc3f c393 74dd
114
|_ssl-date: 2020-12-06T18:51:20+00:00; 0s from scanner time.
115
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
116
|_http-server-header: Microsoft-HTTPAPI/2.0
117
|_http-title: Not Found
118
9389/tcp open mc-nmf .NET Message Framing
119
49666/tcp open msrpc Microsoft Windows RPC
120
49667/tcp open msrpc Microsoft Windows RPC
121
49673/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
122
49674/tcp open msrpc Microsoft Windows RPC
123
49676/tcp open msrpc Microsoft Windows RPC
124
49686/tcp open msrpc Microsoft Windows RPC
125
49703/tcp open msrpc Microsoft Windows RPC
126
49710/tcp open msrpc Microsoft Windows RPC
127
MAC Address: 00:0C:29:1C:F8:3D (VMware)
128
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
129
OS fingerprint not ideal because: Timing level 5 (Insane) used
130
No OS matches for host
131
Network Distance: 1 hop
132
TCP Sequence Prediction: Difficulty=263 (Good luck!)
133
IP ID Sequence Generation: Incremental
134
Service Info: Host: CHUKARO-DC; OS: Windows; CPE: cpe:/o:microsoft:windows
135
​
136
Host script results:
137
| nbstat: NetBIOS name: CHUKARO-DC, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:1c:f8:3d (VMware)
138
| Names:
139
| CHUKARO-DC<20> Flags: <unique><active>
140
| CHUKARO-DC<00> Flags: <unique><active>
141
| CHUKARO<00> Flags: <group><active>
142
| CHUKARO<1c> Flags: <group><active>
143
|_ CHUKARO<1b> Flags: <unique><active>
144
| smb2-security-mode:
145
| 2.02:
146
|_ Message signing enabled and required
147
| smb2-time:
148
| date: 2020-12-06T18:50:40
149
|_ start_date: N/A
150
​
151
NSE: Script Post-scanning.
152
Initiating NSE at 13:51
153
Completed NSE at 13:51, 0.00s elapsed
154
Initiating NSE at 13:51
155
Completed NSE at 13:51, 0.00s elapsed
156
Initiating NSE at 13:51
157
Completed NSE at 13:51, 0.00s elapsed
158
Read data files from: /usr/bin/../share/nmap
159
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
160
Nmap done: 1 IP address (1 host up) scanned in 153.56 seconds
161
Raw packets sent: 131159 (5.775MB) | Rcvd: 75 (3.856KB)
162
​
Copied!
De esta forma vimos variados tipos de escaneos que podemos realizar con nmap para obtener importante información sobre nuestro objetivo. En la siguiente sección recopilaremos rápidamente todos los datos que logramos obtener a lo largo de esta práctica sobre el objetivo escaneado.

Parte 3: Recopilando la información.

En esta parte recopilaremos y presentaremos toda la información que obtuvimos de todos los tipos de escaneos practicados.
Durante esta práctica vimos de que manera podemos utilizar un subset de funcionalidades ofrecidas por nmap para realizar distintos tipos de escaneos a nuestro objetivo con el fin de obtener una serie de detalles para nuestro pentest.
Información del Objetivo
Dato
Detalle
Puertos abiertos y servicios (DC)
53 (domain Simple DNS Plus) 135 (MS Windows RPC) 139 (MS Netbios SSN) 445 (MS DS) 49703 (MS Win RPC) 9389 (.NET Message Framing) 49667 ( MS Win RPC) 3268 (MS Active Directory LDAP)
3269 (MS Active Directory LDAP) 636 (SSL LDAP) 49674 (MS Win RPC) 49666 (MS Win RPC) 593 (MS Win RPC Over HTTP 1.0) 5985 (Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP))
49673 (Microsoft Win RPC over HTTP 1.0)
88 (MS Kerberos)
464 (kpasswd5)
49710 (MS Win RPC)
49686 (MS Win RPC)
389 (MS Active Directory LDAP).
Domain Controller Domain Name
Chukaro-DC.CHUKARO.local
Sistema Operativo
MS Windows
Equipos activos en la subnet del DC
192.168.31.1
192.168.31.2
192.168.31.131 (DC) 192.168.31.31.132 (Client1) 192.168.31.31.133 (Client2)
192.168.31.31.134
Hasta acá llegamos con esta práctica de scanning con nmap, vimos como ejecutar distintos tipos de scan para obtener variadas piezas de información y aprendimos el usó básico de nmap.
Estas prácticas están sujetas a modificaciones y correcciones, la versión más actualizada disponible se encuentra online en el siguiente link.