
Divide los resultados de un escaneo completo de puertos y úsalos para ejecuciones de Nmap dirigidas.
Divide Et Impera And Scan (y también fusiona los resultados del escaneo)
DivideAndScan se utiliza para automatizar eficientemente la rutina de escaneo de puertos dividiéndola en 3 fases:
Para la 1.ª fase se pretende utilizar un escáner de puertos rápido*, cuya salida se analiza y almacena en una base de datos de archivo único (TinyDB). A continuación, durante la 2.ª fase se lanzan escaneos Nmap individuales para cada objetivo con su conjunto de puertos abiertos (se admite multiprocesamiento) según los datos de la base de datos. Finalmente, en la 3.ª fase las salidas Nmap separadas se fusionan en un único informe en diferentes formatos (XML / HTML / texto simple / grepable) con nMap_Merger. La parte de visualización la proporciona DrawNmap.
Casos de uso potenciales:
* Escáneres de puertos disponibles:
DESCARGO DE RESPONSABILIDAD. Toda la información contenida en este repositorio se proporciona únicamente con fines educativos y de investigación. El autor no es responsable de ningún uso ilegal de esta herramienta.

Para dividir y escanear con éxito necesitamos algunas buenas herramientas de escaneo de puertos (en los ejemplos siguientes las versiones de GitHub se obtienen mediante eget).
📑 Nota: si no quieres lidiar con dependencias en tu sistema operativo anfitrión, salta a la parte de Docker.
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx
DivideAndScan está disponible en PyPI como divideandscan, aunque recomiendo instalarlo desde GitHub con pipx para tener siempre la versión más reciente:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
También hay un release empaquetado con shiv (aunque con un tamaño de archivo grande):
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz
Para fines de depuración, puedes configurar un entorno de desarrollo con poetry:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 Nota: DivideAndScan usa sudo para ejecutar todos los escáneres de puertos, por lo que pedirá la contraseña cuando se invoquen los comandos de escaneo.
Puedes ejecutar DivideAndScan en un contenedor Docker de la siguiente manera:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
Dado que la herramienta requiere algunos datos de entrada y produce algunos datos de salida, debes especificar tu directorio de trabajo actual como punto de montaje en /app dentro del contenedor. También publicar el puerto 8050 en el host permite acceder a la aplicación Dash utilizada para la visualización de informes Nmap.
Puedes querer establecer un alias para acortar el comando base:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

Vamos a enumerar puertos abiertos para todas las máquinas activas en Hack The Box.
-p1-49151. En la segunda captura de pantalla estoy revisando los resultados del escaneo por hosts y por puertos:~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show
~$ das -db htb scan -hosts all -oA report
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel
Puedes emparejar tu escáner de puertos favorito con DivideAndScan implementando un único método parse para su salida en das/parsers/DUMMY_SCANNER.py (ver ejemplo para masscan):
from das.parsers import IAddPortscanOutput
class AddPortscanOutput(IAddPortscanOutput):
"""Clase hija para procesar la salida de DUMMY_SCANNER."""
def parse(self):
"""
Analizador de salida bruta de DUMMY_SCANNER.
:return: un par de valores (nombre del archivo de salida bruta del escaneo, número de hosts añadidos a la BD)
:rtype: tuple
"""
hosts = set()
for line in self.portscan_raw:
# Implementación del analizador DUMMY_SCANNER
pass
return (self.portscan_out, len(hosts))
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...
-----------------------------------------------------------------------------------------------
| ________ .__ .__ .___ _____ .____________ |
| \______ \ |__|__ _|__| __| _/____ / _ \ ____ __| _/ _____/ ____ _____ ____ |
| | | \| \ \/ / |/ __ |/ __ \ / /_\ \ / \ / __ |\_____ \_/ ___\\__ \ / \ |
| | ` \ |\ /| / /_/ \ ___// | \ | \/ /_/ |/ \ \___ / __ \| | \ |
| /_______ /__| \_/ |__\____ |\___ >____|__ /___| /\____ /_______ /\___ >____ /___| / |
| \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ |
| {@snovvcrash} {https://github.com/snovvcrash/DivideAndScan} {vX.Y.Z} |
-----------------------------------------------------------------------------------------------
argumentos posicionales:
{db,add,scan,dns,report,parse,draw,tree,help}
db utilidades para manipulaciones manuales de la BD
add ejecutar un escaneo de puertos completo y añadir la salida a la BD
scan ejecutar escaneos Nmap dirigidos contra hosts y puertos de la BD
dns mapear nombres de dominio desde un archivo de entrada a las direcciones IP correspondientes de la BD
report fusionar salidas Nmap separadas en un único informe (https://github.com/CBHue/nMap_Merger)
parse analizar informes Nmap XML brutos por nombres de servicio e imprimir entradas en formato {service}://{host}:{port}}
draw visualizar informes Nmap XML (https://github.com/jor6PS/DrawNmap)
tree mostrar el contenido del directorio ~/.das/ usando tree
help mostrar el diálogo de ayuda --help incorporado de un escáner de puertos seleccionado
opciones:
-h, --help mostrar este mensaje de ayuda y salir
-db DB nombre de la BD con la que trabajar
Psst, hey buddy... Wanna do some organized p0r7 5c4nn1n6?
fuff para automatizar el fuzzing de directorios webparse)|
Proporciona al módulo ⚠️ Advertencia: asegúrate de entender lo que estás haciendo, porque casi todas las herramientas de escaneo de puertos pueden dañar el sistema que se está probando si se usan incorrectamente. Cuando el módulo comienza su trabajo, se crea un directorio |
|
Lanza escaneos Nmap dirigidos con el módulo Para iniciar Nmap simultáneamente en múltiples procesos, especifica el interruptor El formato de salida se selecciona con las opciones Además, puedes inspeccionar el contenido de la base de datos con la opción |
|
Para generar un informe independientemente del módulo 📑 Nota: ten en cuenta que el módulo |