
Divisez les résultats d'un scan complet de ports et utilisez-les pour des exécutions ciblées de Nmap.
Diviser Et Impera Et Scanner (et aussi fusionner les résultats des scans)
DiviseEtScan (DivideAndScan) est utilisé pour automatiser efficacement la routine de scan de ports en la divisant en 3 phases :
Pour la 1ère phase, un scanner de ports rapide est prévu, dont la sortie est analysée et stockée dans une base de données fichier unique (TinyDB). Ensuite, pendant la 2ème phase, des scans Nmap individuels sont lancés pour chaque cible avec son ensemble de ports ouverts (le multiprocessing est supporté) selon les données de la base. Enfin, lors de la 3ème phase, les sorties Nmap séparées sont fusionnées en un seul rapport dans différents formats (XML / HTML / texte simple / grepable) avec nMap_Merger. La partie visualisation est assurée par DrawNmap.
Cas d'utilisation potentiels :
* Scanners de ports disponibles :
AVERTISSEMENT. Toutes les informations contenues dans ce dépôt sont fournies à des fins éducatives et de recherche uniquement. L'auteur n'est pas responsable de toute utilisation illégale de cet outil.

Pour diviser et scanner avec succès, nous avons besoin de bons outils de scan de ports (dans les exemples ci-dessous, les versions GitHub sont récupérées via eget).
📑 Note : si vous ne souhaitez pas gérer les dépendances sur votre système d'exploitation hôte, passez directement à la section 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 sur PyPI sous le nom divideandscan, mais je recommande de l'installer depuis GitHub avec pipx afin d'avoir toujours la version la plus récente :
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
Il existe aussi une version empaquetée avec shiv (bien que volumineuse) :
# 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
Pour le débogage, vous pouvez configurer un environnement de développement avec poetry :
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 Note : DivideAndScan utilise sudo pour exécuter tous les scanners de ports, il demandera donc le mot de passe lorsque les commandes de scan seront lancées.
Vous pouvez exécuter DivideAndScan dans un conteneur Docker comme suit :
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
Étant donné que l'outil nécessite des données d'entrée et produit des données de sortie, vous devez monter votre répertoire de travail actuel sur /app dans le conteneur. La publication du port 8050 sur l'hôte permet également d'accéder à l'application Dash utilisée pour la visualisation des rapports Nmap.
Vous pouvez définir un alias pour raccourcir la commande de base :
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

Énumérons les ports ouverts pour toutes les machines actives sur Hack The Box.
-p1-49151. Sur la deuxième capture d'écran, je consulte les résultats du scan par hôtes et par ports :~$ 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
Vous pouvez associer votre scanner de ports préféré à DivideAndScan en implémentant une seule méthode parse pour sa sortie dans das/parsers/DUMMY_SCANNER.py (voir exemple pour masscan) :
from das.parsers import IAddPortscanOutput
class AddPortscanOutput(IAddPortscanOutput):
"""Classe fille pour le traitement de la sortie de DUMMY_SCANNER."""
def parse(self):
"""
Analyseur de sortie brute de DUMMY_SCANNER.
:return: une paire de valeurs (nom du fichier de sortie brute du scan, nombre d'hôtes ajoutés à la base)
:rtype: tuple
"""
hosts = set()
for line in self.portscan_raw:
# Implémentation de l'analyseur 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 utilitaires pour manipulations manuelles de la base de données
add lancer un scan de ports complet et ajouter la sortie à la base
scan lancer des scans Nmap ciblés contre les hôtes et ports de la base
dns mapper les noms de domaine d'un fichier d'entrée vers les adresses IP correspondantes de la base
report fusionner les sorties Nmap séparées en un seul rapport (https://github.com/CBHue/nMap_Merger)
parse analyser les rapports Nmap bruts XML par nom de service et afficher les entrées au format {service}://{hôte}:{port}
draw visualiser les rapports Nmap XML (https://github.com/jor6PS/DrawNmap)
tree afficher le contenu du répertoire ~/.das/ à l'aide de tree
help afficher le dialogue --aide intégré d'un scanner de ports sélectionné
options:
-h, --help afficher ce message d'aide et quitter
-db DB nom de la base de données avec laquelle travailler
Psst, hé mon pote... Tu veux faire du p0r7 5c4nn1n6 organisé ?
fuff pour automatiser le fuzzing de répertoires webparse ajouté)|
Fournissez au module ⚠️ Avertissement : assurez-vous de bien comprendre ce que vous faites, car presque tous les outils de scan de ports peuvent endommager le système testé s'ils sont mal utilisés. Lorsque le module commence son travail, un répertoire |
|
Lancez des scans Nmap ciblés avec le module Pour lancer Nmap simultanément dans plusieurs processus, utilisez l'option Le format de sortie est sélectionné avec les options Vous pouvez également inspecter le contenu de la base de données avec l'option |
|
Pour générer un rapport indépendamment du module 📑 Note : gardez à l'esprit que le module |