BlogNmap

Cómo: Detectar fácilmente CVE con scripts de Nmap

Nmap es posiblemente el escáner de seguridad más utilizado de su tipo, en parte debido a sus apariciones en películas como La matrix recargada y Vive libre o muere duro. Aún así, la mayoría de las mejores características de Nmap son subestimadas por piratas informáticos y pentesters, una de las cuales mejorará las habilidades de uno para identificar rápidamente exploits y vulnerabilidades al escanear servidores.

En el momento de la redacción de este artículo, Nmap tiene más de 21 años. Es posible que algunos de los que lean este artículo en este momento no sean tan antiguos como Nmap. Este es un testimonio de la utilidad de Nmap durante las últimas dos décadas. Si bien existen varias alternativas valiosas de escáner de puertos, Nmap sigue siendo una herramienta de seguridad tan útil como lo era en 1997.

Una parte menos conocida de Nmap es NSE, el nortemapa Slisiado mingine, una de las funciones más potentes y flexibles de Nmap. Permite a los usuarios escribir (y compartir) secuencias de comandos simples para automatizar una amplia variedad de tareas de red. Nmap tiene un colección completa de scripts NSE integrado, que los usuarios pueden utilizar fácilmente, pero los usuarios también pueden crear scripts personalizados para satisfacer sus necesidades individuales con NSE.

Uso de scripts NSE para encontrar más vulnerabilidades con mayor rapidez

Aquí, mostraré dos scripts NSE prefabricados similares a la vez, nmap-vulners y vulscan. Ambos scripts fueron diseñados para mejorar la detección de versiones de Nmap al producir información CVE relevante para un servicio en particular, como SSH, RDP, SMB y más. CVE, o Vulnerabilidades y exposiciones comunes, es un método utilizado por investigadores de seguridad y explotar bases de datos para catalogar y hacer referencia a vulnerabilidades individuales.

Por ejemplo, la base de datos de exploits es una base de datos popular de exploits divulgados públicamente. Exploit-DB utiliza CVE para catalogar exploits y vulnerabilidades individuales que están asociadas con una versión particular de un servicio como “SSH v7.2”. A continuación se muestra una captura de pantalla de un posible exploit en el sitio web Exploit-DB … observe el número CVE asignado a esta vulnerabilidad SSH en particular.

Tanto nmap-vulners como vulscan usan registros CVE para mejorar la detección de versiones de Nmap. Nmap identificará la información de la versión de un servicio escaneado. Los scripts NSE tomarán esa información y producirán CVE conocidos que se pueden usar para explotar el servicio, lo que simplifica mucho la búsqueda de vulnerabilidades.

A continuación se muestra un ejemplo de detección de versiones de Nmap sin el uso de scripts NSE. Nmap descubrió un servicio SSH en el puerto 22 usando la versión “OpenSSH 4.3”.

nmap -sV -p22 1##.##.###.#21

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#21
Host is up (0.58s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    ssh     OpenSSH 4.3 (protocol 2.0)

Y aquí hay un ejemplo de ese mismo servidor que usa los scripts NSE. Podemos ver que ahora hay una salida mucho más informativa.

nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV -p22 1##.##.###.#21

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#21
Host is up (0.54s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    ssh     OpenSSH 4.3 (protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:4.3:
|       CVE-2006-5051           9.3             https://vulners.com/cve/CVE-2006-5051
|       CVE-2006-4924           7.8             https://vulners.com/cve/CVE-2006-4924
|       CVE-2007-4752           7.5             https://vulners.com/cve/CVE-2007-4752
|       CVE-2010-4478           7.5             https://vulners.com/cve/CVE-2010-4478
|       CVE-2014-1692           7.5             https://vulners.com/cve/CVE-2014-1692
|       CVE-2009-2904           6.9             https://vulners.com/cve/CVE-2009-2904
|       CVE-2008-4109           5.0             https://vulners.com/cve/CVE-2008-4109
|       CVE-2007-2243           5.0             https://vulners.com/cve/CVE-2007-2243
|       CVE-2017-15906          5.0             https://vulners.com/cve/CVE-2017-15906
|       CVE-2006-5052           5.0             https://vulners.com/cve/CVE-2006-5052
|       CVE-2010-5107           5.0             https://vulners.com/cve/CVE-2010-5107
|       CVE-2010-4755           4.0             https://vulners.com/cve/CVE-2010-4755
|       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-2011-4327           2.1             https://vulners.com/cve/CVE-2011-4327
|_      CVE-2008-3259           1.2             https://vulners.com/cve/CVE-2008-3259
| vulscan: scipvuldb.csv:
| [44077] OpenBSD OpenSSH up to 4.3 Signal denial of service
| [39331] OpenBSD 4.3p2 Audit Log linux_audit_record_event unknown vulnerability
| [32512] OpenBSD OpenSSH up to 4.3 unknown vulnerability
| [43307] OpenBSD 4.0 unknown vulnerability
| [41835] OpenBSD up to 4.8 unknown vulnerability
| [38743] OpenBSD up to 4.6 unknown vulnerability
| [36382] OpenBSD OpenSSH up to 4.6 information disclosure
| [32699] OpenBSD OpenSSH 4.1 denial of service
| [2667] OpenBSD OpenSSH 4.4 Separation Monitor Designfehler
| [2578] OpenBSD OpenSSH up to 4.4 Singal race condition
| [32532] OpenBSD OpenSSH 4.5 packet.c denial of service
| [1999] OpenBSD OpenSSH up to 4.2pl scp system() Designfehler
| [1724] OpenBSD OpenSSH 4.0 GSSAPIDelegateCredentials Designfehler
| [1723] OpenBSD OpenSSH 4.0 Dynamic Port Forwarding Designfehler
| [26219] OpenBSD OpenSSH up to 4.1 pl information disclosure
| [16020] OpenBSD OpenSSH 4.5 Format String

El script NSE nmap-vulners informó más de una docena de CVE divulgados en los últimos años. Los CVE de nmap-vulners están organizados por gravedad, siendo “9.3” el más grave, colocado en la parte superior de la lista y, por lo tanto, vale la pena investigarlo. El script vulscan NSE (después de todos los CVE) también informó sobre una docena de vulnerabilidades interesantes relacionadas con OpenSSH v4.3.

Ambos scripts NSE hacen un excelente trabajo al mostrar información útil relacionada con servicios vulnerables. Nmap-vulners consulta el Vulners explotar la base de datos cada vez que usamos el script NSE. Vulscan, por otro lado, consulta una base de datos local en nuestra computadora que está preconfigurada cuando descargamos vulscan por primera vez.

Ahora, están sucediendo muchas cosas en la captura de pantalla anterior, así que primero aprendamos cómo instalar estos scripts NSE antes de comenzar a usarlos. El video a continuación es útil si aprende mejor de esa manera; de lo contrario, pase a mi guía completa debajo de él.

Paso 1: Instale Nmap-Vulners

Para instalar el script nmap-vulners, primero usaremos CD para cambiar al directorio de scripts de Nmap.

cd /usr/share/nmap/scripts/

Luego, clone el repositorio de GitHub nmap-vulners escribiendo el siguiente comando en una terminal. Eso es todo para instalar nmap-vulners. No se requiere absolutamente ninguna configuración después de instalarlo.

git clone https://github.com/vulnersCom/nmap-vulners.git

Cloning into 'nmap-vulners'...
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 28 (delta 9), reused 19 (delta 4), pack-reused 0
Unpacking objects: 100% (28/28), done.

Paso 2: Instale Vulscan

Para instalar vulscan, también necesitaremos clonar el repositorio de GitHub en el directorio de scripts de Nmap. Escriba el siguiente comando para hacerlo.

git clone https://github.com/scipag/vulscan.git

Cloning into 'vulscan'...
remote: Counting objects: 227, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 227 (delta 19), reused 22 (delta 9), pack-reused 194
Receiving objects: 100% (227/227), 15.87 MiB | 408.00 KiB/s, done.
Resolving deltas: 100% (137/137), done.

Como se mencionó anteriormente, vulscan utiliza bases de datos preconfiguradas que se almacenan localmente en nuestra computadora. Podemos ver estas bases de datos en la raíz del directorio vulscan. Ejecute lo siguiente ls comando para listar las bases de datos disponibles.

ls vulscan/*.csv

vulscan/cve.csv
vulscan/exploitdb.csv
vulscan/openvas.csv
vulscan/osvdb.csv
vulscan/scipvuldb.csv
vulscan/securityfocus.csv
vulscan/securitytracker.csv
vulscan/xforce.csv

Vulscan admite una gran cantidad de excelentes bases de datos de exploits:

Para asegurarnos de que las bases de datos estén completamente actualizadas, podemos utilizar el updateFiles.sh script encontrado en el vulscan / utilidades / actualizador / directorio. Cambie al directorio del actualizador escribiendo el siguiente comando en una terminal.

cd vulscan/utilities/updater/

Luego, asegúrese de que el archivo tenga los permisos adecuados para ejecutarse en su computadora con lo siguiente chmod mando.

chmod +x updateFiles.sh

Luego podemos ejecutar y ejecutar el script ingresando el siguiente comando en nuestra terminal.

./updateFiles.sh

Downloading https://raw.githubusercontent.com/scipag/vulscan/master/cve.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/exploitdb.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/openvas.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/osvdb.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/scipvuldb.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/securityfocus.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/securitytracker.csv...
Downloading https://raw.githubusercontent.com/scipag/vulscan/master/xforce.csv...
Returning 0, as no files have been updated, but script ran successfully

Una vez hecho esto, ahora estamos listos para comenzar a usar los scripts de NSE.

Paso 3: Escanear usando Nmap-Vulners

Usar scripts NSE es simple. Todo lo que tenemos que hacer es agregar el –texto argumento a nuestro comando Nmap y decirle a Nmap qué script NSE usar. Para usar el script nmap-vulners, usaríamos el siguiente comando. Por supuesto, cambie el # después -pag al puerto que está escaneando y los siguientes números a la dirección IP que está utilizando.

nmap --script nmap-vulners -sV -p# ###.###.###.###

El -sV es absolutamente necesario. Con -sV, le estamos diciendo a Nmap que pruebe la dirección de destino para obtener información sobre la versión. Si Nmap no produce información sobre la versión, nmap-vulners no tendrá ningún dato para consultar la base de datos de Vulners. Siempre usa -sV al utilizar estos scripts NSE.

nmap --script nmap-vulners -sV -p80 1##.##.###.#24

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#24
Host is up (0.89s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    http    nginx 1.0.15
|_http-server-header: nginx/1.0.15
| vulners:
|   cpe:/a:igor_sysoev:nginx:1.0.15:
|       CVE-2013-4547           7.5             https://vulners.com/cve/CVE-2013-4547
|_      CVE-2013-0337           7.5             https://vulners.com/cve/CVE-2013-0337

Paso 4: Escanee con Vulscan

Podemos usar el script vulscan NSE exactamente de la misma manera que nmap-vulners:

nmap --script vulscan -sV -p# ###.###.###.###

De forma predeterminada, vulscan consultará todas las bases de datos mencionadas anteriormente a la vez. Como podemos ver en el cuadro de código a continuación, es una cantidad abrumadora de información para digerir. Realmente es más información de la que necesitamos.

nmap --script vulscan -sV -p22 1##.##.###.#77

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#77
Host is up (0.67s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    ssh     OpenSSH 4.3 (protocol 2.0)
| vulscan: scip VulDB - http://www.scip.ch/en/?vuldb:
| [44077] OpenBSD OpenSSH up to 4.3 Signal denial of service
| [39331] OpenBSD 4.3p2 Audit Log linux_audit_record_event unknown vulnerability
| [32512] OpenBSD OpenSSH up to 4.3 unknown vulnerability
| [43307] OpenBSD 4.0 unknown vulnerability
| [41835] OpenBSD up to 4.8 unknown vulnerability
| [38743] OpenBSD up to 4.6 unknown vulnerability
| [36382] OpenBSD OpenSSH up to 4.6 information disclosure
| [32699] OpenBSD OpenSSH 4.1 denial of service
| [2667] OpenBSD OpenSSH 4.4 Separation Monitor Designfehler
| [2578] OpenBSD OpenSSH up to 4.4 Singal race condition
| [32532] OpenBSD OpenSSH 4.5 packet.c denial of service
| [1999] OpenBSD OpenSSH up to 4.2pl scp system() Designfehler
| [1724] OpenBSD OpenSSH 4.0 GSSAPIDelegateCredentials Designfehler
| [1723] OpenBSD OpenSSH 4.0 Dynamic Port Forwarding Designfehler
| [26219] OpenBSD OpenSSH up to 4.1 pl information disclosure
| [16020] OpenBSD OpenSSH 4.5 Format String
|
| MITRE CVE - http://cve.mitre.org:
| [CVE-2009-2904] A certain Red Hat modification to the ChrootDirectory feature in OpenSSH 4.8, as used in sshd in OpenSSH 4.3 in Red Hat Enterprise Linux (RHEL) 5.4 and Fedora 11, allows local users to gain privileges via hard links to setuid programs that use configuration files within the chroot directory, related to requirements for directory ownership.
| [CVE-2008-4109] A certain Debian patch for OpenSSH before 4.3p2-9etch3 on etch
| [CVE-2008-1483] OpenSSH 4.3p2, and probably other versions, allows local users to hijack forwarded X connections by causing ssh to set DISPLAY to :10, even when another process is listening on the associated port, as demonstrated by opening TCP port 6010 (IPv4) and sniffing a cookie sent by Emacs.
| [CVE-2007-3102] Unspecified vulnerability in the linux_audit_record_event function in OpenSSH 4.3p2, as used on Fedora Core 6 and possibly other systems, allows remote attackers to write arbitrary characters to an audit log via a crafted username. NOTE: some of these details are obtained from third party information.
| [CVE-2010-4755] The (1) remote_glob function in sftp-glob.c and the (2) process_put function in sftp.c in OpenSSH 5.8 and earlier, as used in FreeBSD 7.3 and 8.1, NetBSD 5.0.2, OpenBSD 4.7, and other products, allow remote authenticated users to cause a denial of service (CPU and memory consumption) via crafted glob expressions that do not match any pathnames, as demonstrated by glob expressions in SSH_FXP_STAT requests to an sftp daemon, a different vulnerability than CVE-2010-2632.
| [CVE-2008-3844] Certain Red Hat Enterprise Linux (RHEL) 4 and 5 packages for OpenSSH, as signed in August 2008 using a legitimate Red Hat GPG key, contain an externally introduced modification (Trojan Horse) that allows the package authors to have an unknown impact. NOTE: since the malicious packages were not distributed from any official Red Hat sources, the scope of this issue is restricted to users who may have obtained these packages through unofficial distribution points. As of 20080827, no unofficial distributions of this software are known.

Recomiendo encarecidamente consultar solo una base de datos a la vez. Podemos lograr esto agregando el vulscandb argumento a nuestro comando Nmap y especificando una base de datos como se muestra en los ejemplos a continuación.

nmap --script vulscan --script-args vulscandb=database_name -sV -p# ###.###.###.###
nmap --script vulscan --script-args vulscandb=scipvuldb.csv -sV -p# ###.###.###.###
nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV -p# ###.###.###.###
nmap --script vulscan --script-args vulscandb=securitytracker.csv -sV -p# ###.###.###.###

A continuación, se muestra un ejemplo de uno de los que están en uso:

nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV -p22 1##.##.###.#43

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#43
Host is up (0.52s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    ssh     OpenSSH 4.3 (protocol 2.0)
| vulscan: exploitdb.csv:
| [2444] OpenSSH <= 4.3 pl (Duplicated Block) Remote Denital of Service Exploit
| [21402] OpenSSH s.x/3.x Kerberos 4 TGT/AFS Token Buffer Overflow Vulnerability
| [3303] Portable OpenSSH <= 3.6.1p-PAM / 4.1-SUSE Timing Attack Exploit
|
|_

Como arquitecto principal de VulDB, el desarrollador de vulscan generalmente encuentra tiempo para actualizar el archivo de base de datos scipvuldb.csv. La consulta de esa base de datos probablemente producirá los mejores resultados al utilizar el script vulscan NSE.

Paso 5: combinar en un solo comando

Los scripts de NSE mejoran significativamente la versatilidad, el alcance y el ingenio de Nmap como escáner de seguridad. Para aprovechar al máximo los escaneos de versiones de Nmap, podemos usar tanto nmap-vulners como vulscan en un solo comando. Para hacer esto, escriba el siguiente comando en su terminal.

nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV -p# ###.###.###.###

Como ejemplo, revisemos lo que comenzamos en este artículo:

nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV -p22 1##.##.###.#21

Starting Nmap 7.60 ( https://nmap.org )
Nmap scan report for 1##.##.###.#21
Host is up (0.54s latency).

PORT    STATE   SERVICE VERSION
22/tcp  open    ssh     OpenSSH 4.3 (protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:4.3:
|       CVE-2006-5051           9.3             https://vulners.com/cve/CVE-2006-5051
|       CVE-2006-4924           7.8             https://vulners.com/cve/CVE-2006-4924
|       CVE-2007-4752           7.5             https://vulners.com/cve/CVE-2007-4752
|       CVE-2010-4478           7.5             https://vulners.com/cve/CVE-2010-4478
|       CVE-2014-1692           7.5             https://vulners.com/cve/CVE-2014-1692
|       CVE-2009-2904           6.9             https://vulners.com/cve/CVE-2009-2904
|       CVE-2008-4109           5.0             https://vulners.com/cve/CVE-2008-4109
|       CVE-2007-2243           5.0             https://vulners.com/cve/CVE-2007-2243
|       CVE-2017-15906          5.0             https://vulners.com/cve/CVE-2017-15906
|       CVE-2006-5052           5.0             https://vulners.com/cve/CVE-2006-5052
|       CVE-2010-5107           5.0             https://vulners.com/cve/CVE-2010-5107
|       CVE-2010-4755           4.0             https://vulners.com/cve/CVE-2010-4755
|       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-2011-4327           2.1             https://vulners.com/cve/CVE-2011-4327
|_      CVE-2008-3259           1.2             https://vulners.com/cve/CVE-2008-3259
| vulscan: scipvuldb.csv:
| [44077] OpenBSD OpenSSH up to 4.3 Signal denial of service
| [39331] OpenBSD 4.3p2 Audit Log linux_audit_record_event unknown vulnerability
| [32512] OpenBSD OpenSSH up to 4.3 unknown vulnerability
| [43307] OpenBSD 4.0 unknown vulnerability
| [41835] OpenBSD up to 4.8 unknown vulnerability
| [38743] OpenBSD up to 4.6 unknown vulnerability
| [36382] OpenBSD OpenSSH up to 4.6 information disclosure
| [32699] OpenBSD OpenSSH 4.1 denial of service
| [2667] OpenBSD OpenSSH 4.4 Separation Monitor Designfehler
| [2578] OpenBSD OpenSSH up to 4.4 Singal race condition
| [32532] OpenBSD OpenSSH 4.5 packet.c denial of service
| [1999] OpenBSD OpenSSH up to 4.2pl scp system() Designfehler
| [1724] OpenBSD OpenSSH 4.0 GSSAPIDelegateCredentials Designfehler
| [1723] OpenBSD OpenSSH 4.0 Dynamic Port Forwarding Designfehler
| [26219] OpenBSD OpenSSH up to 4.1 pl information disclosure
| [16020] OpenBSD OpenSSH 4.5 Format String

Eso es todo para el escaneo de versiones con scripts Nmap NSE. Hasta la próxima, sígueme en Twitter. @tokyoneon_ y GitHub. Y como siempre, deje un comentario a continuación o envíeme un mensaje en Twitter si tiene alguna pregunta.

Imagen de portada a través de ktsdesign / 123RF (antecedentes); Capturas de pantalla de tokyoneon / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar