En este paso, vamos a aprender sobre los diversos formatos de salida que ofrece Nmap. Los formatos de salida son cruciales en ciberseguridad porque nos permiten presentar los resultados del escaneo de diferentes maneras, según nuestras necesidades. Por ejemplo, algunos formatos son fáciles de leer para los humanos, mientras que otros están diseñados para que las máquinas los analicen, lo cual es útil cuando se integra con otras herramientas.
Nmap admite varios formatos de salida, cada uno con sus propias características únicas y casos de uso:
- Salida normal (predeterminada): Este es un formato legible por humanos. Presenta los resultados del escaneo de una manera que es fácil de entender a simple vista, lo que lo hace ideal para un análisis manual rápido.
- Salida XML (
-oX
): XML significa Extensible Markup Language (Lenguaje de marcado extensible). Es un formato estructurado, lo que significa que los datos están organizados de manera jerárquica. Esto facilita que los programas y scripts analicen los datos y se utiliza comúnmente al integrar Nmap con otras herramientas de seguridad.
- Salida grepable (
-oG
): Este es un formato basado en líneas. Está diseñado para ser fácilmente procesado con herramientas Unix como grep, awk y cut. Este formato es útil cuando se desea extraer rápidamente información específica de los resultados del escaneo.
- Salida Script Kiddie (
-oS
): Este formato es similar a la salida normal, pero incluye arte ASCII. Sin embargo, se utiliza raramente en escenarios prácticos.
- Todos los formatos (
-oA
): Esta opción permite guardar los resultados del escaneo en formatos normal, XML y grepable simultáneamente. Es una forma conveniente de tener todos los tipos de salidas disponibles de una vez.
Exploremos estos formatos volviendo a escanear tu servidor web local.
XML, o Extensible Markup Language, es un formato estructurado que se utiliza ampliamente para el almacenamiento y el intercambio de datos. Su estructura jerárquica facilita que los programas analicen los datos, por lo que se utiliza comúnmente para la integración con otras herramientas de seguridad.
-
Ejecuta un escaneo de Nmap y guarda la salida en formato XML:
nmap -p 8080 localhost -oX /home/labex/project/scan_results.xml
En este comando, -p 8080
especifica que estamos escaneando el puerto 8080, localhost
es el objetivo que estamos escaneando (nuestra máquina local) y -oX
le dice a Nmap que guarde la salida en formato XML en la ruta de archivo especificada.
-
Visualiza la salida XML:
cat /home/labex/project/scan_results.xml
El comando cat
se utiliza para mostrar el contenido de un archivo. Cuando ejecutes este comando, verás una salida en formato XML que se parece a esto (abreviado):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<nmaprun scanner="nmap" args="nmap -p 8080 localhost -oX /home/labex/project/scan_results.xml" ...>
<scaninfo type="connect" protocol="tcp" .../>
<verbose level="0"/>
<debugging level="0"/>
<host>
<status state="up" reason="conn - refused" reason_ttl="0"/>
<address addr="127.0.0.1" addrtype="ipv4"/>
<hostnames>
<hostname name="localhost" type="user"/>
<hostname name="localhost" type="PTR"/>
</hostnames>
<ports>
<port protocol="tcp" portid="8080">
<state state="open" reason="syn - ack" reason_ttl="0"/>
<service name="http - proxy" method="table" conf="3"/>
</port>
</ports>
<times srtt="97" rttvar="5000" to="100000"/>
</host>
<runstats>...</runstats>
</nmaprun>
-
El formato XML incluye información detallada organizada en una estructura jerárquica. Extraigamos la información específica del puerto:
grep -A5 "<port " /home/labex/project/scan_results.xml > /home/labex/project/port_details.txt
El comando grep
se utiliza para buscar un patrón específico en un archivo. -A5
significa mostrar 5 líneas después de la línea que coincide con el patrón. Estamos buscando líneas que contengan <port
en el archivo XML y guardando los resultados en un nuevo archivo llamado port_details.txt
.
-
Visualiza los detalles del puerto extraídos:
cat /home/labex/project/port_details.txt
Ejecutar este comando mostrará la sección de información del puerto del XML.
La salida grepable está específicamente diseñada para ser fácilmente procesada con herramientas como grep, awk y cut. Estas herramientas Unix son muy poderosas para el procesamiento de texto y pueden ayudarnos a extraer rápidamente la información que necesitamos de los resultados del escaneo.
-
Ejecuta un escaneo de Nmap y guarda la salida en formato grepable:
nmap -p 8080 localhost -oG /home/labex/project/scan_results.grep
Aquí, -oG
le dice a Nmap que guarde la salida en formato grepable en el archivo especificado.
-
Visualiza la salida grepable:
cat /home/labex/project/scan_results.grep
La salida se parecerá a esto:
## Nmap 7.80 scan initiated Wed Nov 8 12:40:00 2023 as: nmap -p 8080 localhost -oG /home/labex/project/scan_results.grep
Host: 127.0.0.1 (localhost) Status: Up
Host: 127.0.0.1 (localhost) Ports: 8080/open/tcp//http - proxy///
## Nmap done at Wed Nov 8 12:40:00 2023 -- 1 IP address (1 host up) scanned in 0.05 seconds
-
El formato grepable coloca toda la información del host en una sola línea, lo que facilita su uso con herramientas de procesamiento de texto. Por ejemplo, puedes extraer solo la línea que contiene la información del puerto:
grep "Ports:" /home/labex/project/scan_results.grep > /home/labex/project/ports_info.txt
Este comando busca líneas que contengan la palabra "Ports:" en el archivo de salida grepable y guarda la línea coincidente en un nuevo archivo llamado ports_info.txt
.
-
Visualiza la información de los puertos extraída:
cat /home/labex/project/ports_info.txt
Nmap ofrece una opción conveniente para guardar la salida en múltiples formatos a la vez utilizando la opción -oA
. Esto puede ahorrarte tiempo si necesitas diferentes tipos de salidas para diferentes fines.
-
Ejecuta un escaneo de Nmap y guarda la salida en todos los formatos:
nmap -p 8080 localhost -oA /home/labex/project/all_formats
Este comando escanea el puerto 8080 en la máquina local y guarda los resultados en formatos normal, XML y grepable.
-
Verifica los archivos creados:
ls -la /home/labex/project/all_formats.*
El comando ls -la
lista todos los archivos en un directorio con información detallada. Cuando ejecutes este comando, deberías ver tres archivos:
all_formats.nmap
(salida normal)
all_formats.xml
(salida XML)
all_formats.gnmap
(salida grepable)
Ahora entiendes los diferentes formatos de salida que ofrece Nmap y cómo utilizarlos. Cada formato tiene sus propias ventajas:
- La salida normal es fácil de leer para los humanos.
- La salida XML está estructurada para el análisis por máquina y la integración con otras herramientas.
- La salida grepable está diseñada para un análisis rápido con herramientas de procesamiento de texto Unix.
En el siguiente paso, aprenderás cómo analizar estas salidas en más detalle.