
Dividi i risultati della scansione completa delle porte e usali per esecuzioni mirate di Nmap
Divide Et Impera And Scan (e unisci anche i risultati della scansione)
DivideAndScan è usato per automatizzare in modo efficiente la routine di scansione delle porte, suddividendola in 3 fasi:
Per la 1ª fase si intende utilizzare uno scanner di porte veloce*, il cui output viene analizzato e memorizzato in un database a file singolo (TinyDB). Successivamente, durante la 2ª fase vengono avviate scansioni Nmap individuali per ogni target con il suo set di porte aperte (il multiprocessing è supportato) in base ai dati del database. Infine, nella 3ª fase gli output Nmap separati vengono uniti in un unico report in diversi formati (XML / HTML / testo semplice / grepable) con nMap_Merger. La parte di visualizzazione è fornita da DrawNmap.
Casi d'uso potenziali:
* Scanner di porte disponibili:
DICHIARAZIONE DI NON RESPONSABILITÀ. Tutte le informazioni contenute in questo repository sono fornite solo a scopo educativo e di ricerca. L'autore non è responsabile per qualsiasi uso illecito di questo strumento.

Per dividere e scansionare con successo dobbiamo procurarci dei buoni strumenti di scansione delle porte (negli esempi seguenti le release di GitHub vengono scaricate tramite eget).
📑 Nota: se non hai voglia di sporcarti le mani con le dipendenze sul tuo sistema operativo host, passa direttamente alla parte 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 è disponibile su PyPI come divideandscan, anche se consiglio di installarlo da GitHub con pipx per avere sempre la versione all'avanguardia:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
C'è anche una release impacchettata con shiv (anche se di grandi dimensioni):
# 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
Per scopi di debug puoi configurare un ambiente di sviluppo con poetry:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 Nota: DivideAndScan usa sudo per eseguire tutti gli scanner di porte, quindi chiederà la password quando vengono invocati i comandi di scansione.
Puoi eseguire DivideAndScan in un container Docker nel modo seguente:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
Poiché lo strumento richiede alcuni dati di input e produce alcuni dati di output, dovresti specificare la tua directory di lavoro corrente come punto di mount su /app all'interno del container. Inoltre, pubblicare la porta 8050 sull'host permette di accedere all'app Dash utilizzata per la visualizzazione dei report Nmap.
Potresti voler impostare un alias per accorciare il comando base:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

Enumeriamo le porte aperte per tutte le macchine attive su Hack The Box.
-p1-49151. Nel secondo screenshot sto rivedendo i risultati della scansione per host e per porte:~$ 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
Puoi abbinare il tuo scanner di porte preferito a DivideAndScan implementando un singolo metodo parse per il suo output in das/parsers/DUMMY_SCANNER.py (vedi esempio per masscan):
from das.parsers import IAddPortscanOutput
class AddPortscanOutput(IAddPortscanOutput):
"""Classe figlia per elaborare l'output di DUMMY_SCANNER."""
def parse(self):
"""
Parser dell'output grezzo di DUMMY_SCANNER.
:return: una coppia di valori (nome file output grezzo della scansione porte, numero di host aggiunti al DB)
:rtype: tuple
"""
hosts = set()
for line in self.portscan_raw:
# Implementazione del parser per 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} |
-----------------------------------------------------------------------------------------------
positional arguments:
{db,add,scan,dns,report,parse,draw,tree,help}
db utilità per manipolazioni manuali del DB
add esegue una scansione completa delle porte e aggiunge l'output al DB
scan esegue scansioni Nmap mirate contro host e porte dal DB
dns mappa i nomi di dominio da un file di input agli indirizzi IP corrispondenti dal DB
report unisce output Nmap separati in un unico report (https://github.com/CBHue/nMap_Merger)
parse analizza i report Nmap XML grezzi per nome del servizio e stampa le voci nel formato {servizio}://{host}:{porta}
draw visualizza i report Nmap XML (https://github.com/jor6PS/DrawNmap)
tree mostra il contenuto della directory ~/.das/ usando tree
help mostra la finestra di aiuto integrata --help di uno scanner di porte selezionato
options:
-h, --help mostra questo messaggio di aiuto ed esce
-db DB nome del DB con cui lavorare
Psst, ehi amico... Vuoi fare un po' di p0r7 5c4nn1n6 organizzato?
ffuf per automatizzare il fuzzing delle directory webparse)![]() |
|---|
| NixOS | offsec.tools |
|
Fornisci al modulo ⚠️ Attenzione: per favore, assicurati di capire cosa stai facendo, perché quasi tutti gli strumenti di scansione delle porte possono danneggiare il sistema sottoposto a test se usati impropriamente. Quando il modulo inizia il suo lavoro, viene creata una directory |
|
Avvia scansioni Nmap mirate con il modulo Per avviare Nmap simultaneamente in più processi, specifica l'opzione Il formato di output viene selezionato con le opzioni Inoltre, puoi ispezionare il contenuto del database con l'opzione |
|
Per generare un report indipendentemente dal modulo 📑 Nota: tieni presente che il modulo |