Skip to content

[ES] Wiki

Jennifer Torres edited this page Jun 30, 2023 · 10 revisions

XNP - Xtreme Nmap Parser

Xtreme Nmap Parser (XNP) toma archivos XML generados por Nmap y los convierte en formatos fácilmente manipulables como CSV, XLSX o JSON. De esta manera, puedes pasar menos tiempo tamizando la salida bruta de Nmap y más tiempo interpretando los resultados y planificando tus próximos pasos.

Esto es particularmente útil cuando se tiene la tarea de analizar un gran número de hosts, ya que permite un filtrado y pruebas más rápidos y eficientes.

Características

  • Manejo de entrada: XNP puede procesar tanto archivos XML de Nmap individuales como directorios que contienen múltiples archivos.
  • Exportación de datos: XNP transforma los resultados de las exploraciones de Nmap en DataFrames de pandas y los exporta en formatos CSV, XLSX y/o JSON, facilitando la integración con otras herramientas de análisis o almacenando los resultados para su revisión futura.
  • Personalización: Con un archivo de configuración YAML, XNP permite que la salida se adapte a necesidades específicas.

Beneficios

  • Opciones de filtrado: Filtra en base a servicios específicos o puertos abiertos para concentrarte en los objetivos de interés mientras se descartan datos irrelevantes.
  • Registros de Pentest: Mantener un registro de los datos analizados puede ser beneficioso para evitar un nuevo escaneo innecesario, monitorizar el progreso a lo largo del tiempo y proporcionar un rastro de auditoría para fines de revisión.
  • Detección de vulnerabilidades en toda la red: Si se detecta un servicio vulnerable en un host, XNP puede usarse para buscar rápidamente otros hosts en la red que potencialmente estén ejecutando el mismo servicio, ayudando a identificar vulnerabilidades en toda la red.
  • Exportación de datos fácil: La capacidad de copiar y pegar sin esfuerzo datos sobre hosts vulnerables, filtrados por versión de servicio, puede ser una característica práctica. Simplifica la documentación de los hallazgos, el compartir datos con colegas y la introducción de datos en otras herramientas o informes.

En resumen, XNP es una herramienta diseñada para simplificar la vida de un pentester. Al automatizar el procesamiento y análisis de la salida de Nmap, XNP te permite centrarte en la parte más crucial de tu trabajo: interpretar los resultados y planificar mejores estrategias. }8·)

Estructura de datos

La estructura y los campos utilizados fueron extraídos del DTD asociado con los archivos XML de Nmap que se encuentran en el repositorio oficial de la herramienta.

Las columnas incluidas actualmente en la salida de información de los diferentes formatos (CSV, XLSX y JSON) son:

  • Hostname.
  • IP.
  • State.
  • Port.
  • Protocol.
  • State Port.
  • Service Name.
  • Product.
  • Version.
  • Extrainfo.
  • Scripts.

Ejemplo de salida en CSV:

Hostname;IP;State;Port;Protocol;State Port; Service Name; Product; Version; Extrainfo
xtormin.local;10.10.1.9;up;445;tcp;open;microsoft-ds;Windows Server 2016 Standard 14393 microsoft-ds;;
xtormin.local;10.10.1.9;up;1433;tcp;open;ms-sql-s;Microsoft SQL Server 2017;"14.00.1000.00; RTM";
xtormin.local;10.10.1.9;up;3389;tcp;open;ms-wbt-server;Microsoft Terminal Services;;

Instalación

  1. Clonar el repositorio:
git clone https://github.com/xtormin/XtremeNmapParser.git
  1. Acceder a la carpeta:
cd XtremeNmapParser
  1. Instalar los paquetes de python necesarios:
python3 -m pip install -r requirements.txt

or

sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -r requirements.txt
  1. Ejecutar XNP.

Uso

Ejemplo de escáner con Nmap:

nmap -T4 -Pn -open --script=default,version,vuln -A -p- -oA nmap/tcp-full-scripts 10.10.1.9

Fichero XML

Para parsear la información, se puede utilizar el siguiente comando:

python3 xnp.py -f <fichero XML> -oF <lista de formatos de salida> 
python3 xnp.py -f nmap/tcp-full-scripts.xml -oF csv,xlsx,json

single_scan.png

Múltiples ficheros XML

Para convertir los ficheros XML de una carpeta de forma recursiva, es decir, buscando todos los ficheros XML dentro de la estructura de la carpeta que se desee, se puede utilizar el argumento "-R".

Cada fichero XML a XLSX/CSV/JSON

El siguiente comando sacará un archivo CSV/XLSX por cada archivo XML en la carpeta especificada. El CSV/XLSX se guardará en la misma ubicación que el original.

Para convertir todos los archivos XML contenidos en una carpeta, puedes usar el siguiente comando:

python3 xnp.py -d <carpeta con ficheros XML> -oF <lista de formatos de salida>
python3 xnp.py -d nmap/ -oF csv,xlsx,json

multiple_scans.png

Lo mismo, pero de forma recursiva:

python3 xnp.py -d nmap/ -oF csv,xlsx,json -R

Fusión de ficheros XML

El siguiente comando producirá un único archivo XLSX/CSV/JSON que contiene los datos fusionados de todos los archivos XML en la carpeta especificada.

Para fusionar todos los archivos XML de nmap y generar un archivo con el resultado, puedes usar el siguiente comando:

  1. Nombre por defecto "merged_nmap_scan_data":
python3 xnp.py -d <carpeta con ficheros XML> -oF <lista de formatos de salida> -M
python3 xnp.py -d nmap/ -oF csv,xlsx,json -M

multiple_merged_default.png

  1. Otro nombre de salida:
python3 xnp.py -d <carpeta con ficheros XML> -oF <lista de formatos de salida> -M -oN <nombre del fichero/s de salida>
python3 xnp.py -d nmap/ -oF csv,xlsx,json -M -oN merged_nmap_scan_data

multiple_merged_outputname.png

Lo mismo, pero de forma recursiva:

python3 xnp.py -d nmap/ -oF csv,xlsx,json -M -oN merged_nmap_scan_data -R

Mi favorito

python3 xnp.py -d nmap/ -M -R --open -C all

Bonus extra

Columnas personalizadas

Es posible seleccionar las columnas que se desean en la salida utilizando el argumento '-C' e indicando los campos que se desean.

Por ejemplo, se muestra un ejemplo de salida con la columna "Scripts" que contiene la información del resultado de la salida de todos los scripts de nmap para cada puerto/servicio en cuestión:

python3 xnp.py -f nmap/tcp-full-scripts.xml -C all

bonus_custom_headers.png

Exportar solo puertos abiertos

Para exportar únicamente los puertos abiertos del dataframe, se puede utilizar el argumento "--open".

Por ejemplo:

python3 xnp.py -f nmap/tcp-full-scripts.xml -C all --open 

Descripción de argumentos

Argumento Descripción
-f Se usa para especificar el archivo de entrada para el script XNP. En este caso, nmap/tcp-full-scripts.xml es el archivo XML de Nmap que quieres analizar.
-d Se usa para especificar un directorio que contiene archivos XML de Nmap que quieres analizar. En este caso, nmap/ es el directorio que se especifica.
-oF Se usa para especificar el formato de salida para los datos analizados. En este caso, que exporte los datos analizados tanto en formatos CSV (Comma-Separated Values), XLSX (Microsoft Excel) formats and JSON (JavaScript Object Notation).
-M Indica que los datos analizados de todos los archivos XML deben fusionarse en un solo conjunto de datos.
-oN Se usa para especificar el nombre base para los archivos de salida. En este caso, "merged_nmap_scan_data" es el nombre base, por lo que los archivos de salida se llamarán "merged_nmap_scan_data.csv", "merged_nmap_scan_data.xlsx" y "merged_nmap_scan_data.json".
-R Este argumento indica que se incluirán todos los ficheros del directorio y subdirectorios dentro de la carpeta, de forma recursiva.
-C Este argumento indica las columnas incluidas en los ficheros de salida. (default, all)
--open Este argumento indica que se solo se incluirán los puertos abiertos.