Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine, NMAP es mucho más que eso.
Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3.
No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el sistema operativo del host.
sudo nmap -sV -p80 -O 192.168.56.102En este caso, le hemos pedido que nos dé información sobre el servicio que está corriendo en el puerto 80, y el sistema operativo que tiene el host. Vemos que ha hecho un buen trabajo averiguando la versión del servidor web (Microsoft IIS httpd 7.5), pero con el sistema operativo no llega a ser muy concreto en cuanto la versión exacta que hay instalada. Si miramos el directorio /usr/share/nmap/scripts, observaremos que hay una gran cantidad de archivos con extensión .nse. Son scripts con diversas funcionalidades. Desde la recogida de información hasta la explotación de vulneravilidades. Pero vamos por pasos. Para poder usar uno de estos scripts, utilizamos la opción --script de NMAP. En el siguiente ejemplo vamos a usar un script llamado smb-os-discovery.nse, cuya misión es intentar obtener información del sistema operativo del host objetivo a través del protocolo SMB. Como dicho protocolo usa los puertos 139 y 445, vamos a usar el script usando la siguiente instrucción.
sudo nmap -p139,445 --script=smb-os-discovery 192.168.56.102Gracias al script, hemos obtenido el sistema operativo exacto que usa la máquina, además de alguna información adicional, como el nombre del equipo o el grupo de trabajo de NetBIOS. No está mal ¿no?
Categorías
NMAP viene cargado con más de 600 scripts, y para organizarlos, están divididos en categorías, es decir, que cada script pretenece a una o más categorías. Vamos a hacer un rápido repaso. auth. Scripts relacionados con la autenticación de usuarios. broadcast. Descubrimiento de hosts mediante mensajes de broadcast en la red local. brute. Uso de técnicas de fuerza bruta para descubrir crendenciales sobre diferentes protocolos y aplicaciones. default. Scripts por defecto, que pueden ser lanzados mediante la opción -sC de NMAP. No tengo claro el criterio, pero supongo que son los scripts más usuales. discovery. Trata de hacer descubrimiento de hosts e información mediante consultas a servicios SMB, SNMP, directorios LDAP, etc. dos. Relacionados con ataques tipo DOS (denegación de servicio). exploit. Script pensados para explotar alguna vulnerabilidad. external. Son scripts que realizan conexiones con servicios externos, como por ejemplo whois. fuzzer. Los scripts de esta categoría utilizan técnicas de fuzzing. intrusive. Son scripts extremadamente intrusivos, que podrían incluso bloquear el host objetivo. malware. Tratan de identificar si el host ha sido comprometido por algún tipo de malware o tiene alguna puerta trasera. safe. Son script poco intrusivos que, en principio, no deben dañar el host objetivo. version. Estos scripts son invocados cuando se usa la opción -sV. No se pueden invocar explícitamente el uso de esta categoría. vuln. Hacen una búsqueda de vulnerabilidades en el host. Podemos lanzar los scripts individualmente, como ya hemos visto, o por categorías completas. Los scripts en la categoría default los podemos lanzar con la instrucción nmap -sC. Si queremos lanzar los scripts de otra categoría usamos el modificador --script, pero indicando la categoría en lugar de un script concreto.nmap --script=vulnLos nombres de los scripts son bastante representativos, pero si queremos obtener detalles de alguno de ellos podemos usar la opción --script-help.
nmap --script-help smb-enum-users
Uso de los scripts de NMAP para pentesting
Ahora que tenemos una visión general, vamos a ponerlos en práctica contra un host Windows del Metaesploitable3 que os indicaba al principio. Uno de los servicios que muchas veces no está bien configurado en los servidores Windows es el SNMP, así que suele ser un buen lugar donde lanzar la caña. Veamos si podemos recoger algo usando el script snmp-win32-users. En este caso, como SNMP va por UDP, usaremos el modificador -sU para usar este protocolo, y ya que el puerto de SNMP es el 161, usaremos también el modificador -p161.$sudo nmap -sU -p161 --script=snmp-win32-users 192.168.56.102 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 17:28 CEST Nmap scan report for 192.168.56.102 Host is up (0.00069s latency). PORT STATE SERVICE 161/udp open snmp | snmp-win32-users: | Administrator | Guest | anakin_skywalker | artoo_detoo | ben_kenobi | boba_fett | c_three_pio | chewbacca | darth_vader | greedo | han_solo | jabba_hutt | jarjar_binks | kylo_ren | lando_calrissian | leia_organa | luke_skywalker | sshd | sshd_server |_ vagrant MAC Address: 08:00:27:DC:53:82 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 13.50 secondsEstupendo, ahí tenemos a una serie de usuarios del sistema. Un autentico fan de Starwars. Veamos si podemos averiguar qué software está instalado en la máquina.
$sudo nmap -sU -p161 --script=snmp-win32-software 192.168.56.102 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 17:32 CEST Nmap scan report for 192.168.56.102 Host is up (0.00067s latency). PORT STATE SERVICE 161/udp open snmp | snmp-win32-software: | 7-Zip 22.01 (x64); 2023-03-19T02:22:16 | Java 8 Update 251 (64-bit); 2023-03-19T02:23:56 | Java SE Development Kit 8 Update 211 (64-bit); 2023-03-19T02:25:46 | Microsoft .NET Framework 4.5.2; 2023-03-19T02:12:48 | Microsoft .NET Framework 4.5.2; 2023-03-19T02:12:44 | Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161; 2023-03-19T02:27:48 | OpenSSH for Windows 7.1p1-1 (remove only); 2023-03-19T02:06:06 |_ Oracle VM VirtualBox Guest Additions 6.0.8; 2023-03-19T02:45:06 MAC Address: 08:00:27:DC:53:82 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 13.45 secondsY de camino, los servicios que están corriendo en la máquina.
$sudo nmap -sU -p161 --script=snmp-win32-services 192.168.56.102 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 17:33 CEST Nmap scan report for 192.168.56.102 Host is up (0.00084s latency). PORT STATE SERVICE 161/udp open snmp | snmp-win32-services: | Apache Tomcat 8.0 Tomcat8 | Application Host Helper Service | Background Intelligent Transfer Service | Base Filtering Engine | COM+ Event System | Certificate Propagation | Cryptographic Services | DCOM Server Process Launcher | DHCP Client | DNS Client | Desktop Window Manager Session Manager | Diagnostic Policy Service | Diagnostic System Host | Distributed Link Tracking Client | Distributed Transaction Coordinator | Elasticsearch 1.1.1 (elasticsearch-service-x64) | Group Policy Client | IKE and AuthIP IPsec Keying Modules | IP Helper | IPsec Policy Agent | MEDC Server Component - Apache | MEDC Server Component - Notification Server | ManageEngine Desktop Central Server | Microsoft FTP Service | Network Connections | Network List Service | Network Location Awareness | Network Store Interface Service | OpenSSH Server | Plug and Play | Power | Print Spooler | RPC Endpoint Mapper | Remote Desktop Configuration | Remote Desktop Services | Remote Desktop Services UserMode Port Redirector | Remote Procedure Call (RPC) | Remote Registry | SNMP Service | Security Accounts Manager | Server | Shell Hardware Detection | Software Protection | System Event Notification Service | TCP/IP NetBIOS Helper | Task Scheduler | User Profile Service | VirtualBox Guest Additions Service | Windows Event Log | Windows Firewall | Windows Font Cache Service | Windows Licensing Monitoring Service | Windows Management Instrumentation | Windows Process Activation Service | Windows Remote Management (WS-Management) | Windows Update | Workstation | World Wide Web Publishing Service | domain1 GlassFish Server | jenkins | jmx | wampapache |_ wampmysqld MAC Address: 08:00:27:DC:53:82 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 13.55 secondsCon este listado, ya podríamos consultar la base de datos CVE para ver si hay alguna vulnerabilidad en alguno de los programas o servicios, pero ya que estamos, vamos a pedirle a NMAP que nos adelante algo de trabajo pidiendole que lance los scripts de la categoría vuln contra el host.
sudo nmap --script=vuln 192.168.56.102 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-29 17:35 CEST Nmap scan report for 192.168.56.102 Host is up (0.00055s latency). Not shown: 981 closed tcp ports (reset) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http |_http-csrf: Couldn't find any CSRF vulnerabilities. |_http-dombased-xss: Couldn't find any DOM based XSS. |_http-stored-xss: Couldn't find any stored XSS vulnerabilities. 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3306/tcp open mysql 3389/tcp open ms-wbt-server 4848/tcp open appserv-http | ssl-dh-params: | VULNERABLE: | Diffie-Hellman Key Exchange Insufficient Group Strength | State: VULNERABLE | Transport Layer Security (TLS) services that use Diffie-Hellman groups | of insufficient strength, especially those using one of a few commonly | shared groups, may be susceptible to passive eavesdropping attacks. | Check results: | WEAK DH GROUP 1 | Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA | Modulus Type: Safe prime | Modulus Source: RFC2409/Oakley Group 2 | Modulus Length: 1024 | Generator Length: 8 | Public Key Length: 1024 | References: |_ https://weakdh.org 7676/tcp open imqbrokerd 8009/tcp open ajp13 8080/tcp open http-proxy | http-enum: |_ ..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/var/mobile/Library/AddressBook/AddressBook.sqlitedb: Possible iPhone/iPod/iPad generic file sharing app Directory Traversal (iOS) 8181/tcp open intermapper | ssl-dh-params: | VULNERABLE: | Diffie-Hellman Key Exchange Insufficient Group Strength | State: VULNERABLE | Transport Layer Security (TLS) services that use Diffie-Hellman groups | of insufficient strength, especially those using one of a few commonly | shared groups, may be susceptible to passive eavesdropping attacks. | Check results: | WEAK DH GROUP 1 | Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA | Modulus Type: Safe prime | Modulus Source: RFC2409/Oakley Group 2 | Modulus Length: 1024 | Generator Length: 8 | Public Key Length: 1024 | References: |_ https://weakdh.org 8383/tcp open m2mservices | ssl-dh-params: | VULNERABLE: | Diffie-Hellman Key Exchange Insufficient Group Strength | State: VULNERABLE | Transport Layer Security (TLS) services that use Diffie-Hellman groups | of insufficient strength, especially those using one of a few commonly | shared groups, may be susceptible to passive eavesdropping attacks. | Check results: | WEAK DH GROUP 1 | Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA | Modulus Type: Safe prime | Modulus Source: RFC2409/Oakley Group 2 | Modulus Length: 1024 | Generator Length: 8 | Public Key Length: 1024 | References: |_ https://weakdh.org 9200/tcp open elasticsearch 49152/tcp open unknown 49153/tcp open unknown 49154/tcp open unknown 49176/tcp open unknown MAC Address: 08:00:27:DC:53:82 (Oracle VirtualBox virtual NIC) Host script results: |_smb-vuln-ms10-054: false |_smb-vuln-ms10-061: NT_STATUS_ACCESS_DENIED | smb-vuln-ms17-010: | VULNERABLE: | Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010) | State: VULNERABLE | IDs: CVE:CVE-2017-0143 | Risk factor: HIGH | A critical remote code execution vulnerability exists in Microsoft SMBv1 | servers (ms17-010). | | Disclosure date: 2017-03-14 | References: | https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ | https://technet.microsoft.com/en-us/library/security/ms17-010.aspx |_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143 |_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED Nmap done: 1 IP address (1 host up) scanned in 152.97 secondsNMAP ha encontrado por nosotros algunos problemas, como posibles debilidades criptográficas, y lo mejor de todo, vulnerabilidades como la CVE-2017-0143 que tiene SMBv1, que permite la ejecución remota de código. Sólo con esta información, ya tendríamos material interesante para pasar a la fase de explotación de nuestro test de intrusión. Aunque de eso ya hablaremos otro día. Por hoy podemos descansar, que nos lo hemos ganado.
Comentarios
Publicar un comentario