
Le moteur de fingerprinting distribué modulaire
Scannerl est un moteur d'empreinte digitale modulaire distribué implémenté par Kudelski Security. Scannerl peut prendre les empreintes de milliers de cibles sur un seul hôte, mais peut tout aussi facilement être distribué sur plusieurs hôtes. Scannerl est à la prise d'empreinte ce que zmap est au scan de ports.
Scannerl fonctionne sur Debian/Ubuntu/Arch (mais fonctionnera probablement sur d'autres distributions également). Il utilise une architecture maître/esclave où le nœud maître distribue le travail (hôte(s) à prendre en empreinte) à ses esclaves (locaux ou distants). L'ensemble du déploiement est transparent pour l'utilisateur.
Lors de l'utilisation d'outils de prise d'empreinte conventionnels pour des analyses à grande échelle, les chercheurs en sécurité rencontrent souvent deux limitations : premièrement, ces outils sont généralement conçus pour analyser un nombre relativement restreint d'hôtes à la fois et sont inadaptés pour de grandes plages d'adresses IP. Deuxièmement, si une grande plage d'adresses IP protégées par des dispositifs IPS sont soumises à la prise d'empreinte, la probabilité d'être blacklisté est plus élevée, ce qui pourrait conduire à un ensemble d'informations incomplet. Scannerl est conçu pour contourner ces limitations, non seulement en offrant la capacité de prendre les empreintes de plusieurs hôtes simultanément, mais aussi en distribuant la charge sur un nombre arbitraire d'hôtes. Scannerl rend également la distribution de ces tâches complètement transparente, ce qui rend la configuration et la maintenance de projets de prise d'empreinte à grande échelle triviales ; cela permet de se concentrer sur les analyses plutôt que sur la tâche herculéenne de gérer et distribuer les processus de prise d'empreinte manuellement. En plus du facteur vitesse, scannerl a été conçu pour permettre de mettre en place facilement des analyses d'empreinte spécifiques en quelques lignes de code. Non seulement la création d'un cluster de prise d'empreinte est facile à configurer, mais elle peut être ajustée en ajoutant des scans finement réglés à vos campagnes de prise d'empreinte.
C'est l'outil le plus rapide pour réaliser des campagnes de prise d'empreinte à grande échelle.
Pour en savoir plus :
Table des matières
Voir le wiki pour plus d'informations.
Voir les différentes options d'installation sur la page d'installation du wiki
Pour installer à partir des sources, installez d'abord Erlang (au moins v.18) en choisissant le bon paquet pour votre plateforme : Téléchargements Erlang
Installez les paquets requis :
# sur debian
$ sudo apt install erlang erlang-src rebar
# sur arch
$ sudo pacman -S erlang-nox rebar
Ensuite, construisez scannerl :
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh
Obtenez l'utilisation en exécutant
$ ./scannerl -h
Scannerl est disponible sur AUR pour les utilisateurs d'arch linux
Les DEB (Ubuntu, Debian) sont disponibles dans les releases.
Les RPM (Opensuse, Centos, Redhat) sont disponibles sous https://build.opensuse.org/package/show/home:chapeaurouge/scannerl.
Deux types de nœuds sont nécessaires pour effectuer un scan distribué :
Le nœud maître doit avoir scannerl installé et compilé tandis que le nœud(s) esclave(s) a seulement besoin d'Erlang installé. L'ensemble de la configuration est transparente et effectuée automatiquement par le nœud maître.
Exigences pour un scan distribué :
$ ./scannerl -h
____ ____ _ _ _ _ _ _____ ____ _
/ ___| / ___| / \ | \ | | \ | | ____| _ \| |
\___ \| | / _ \ | \| | \| | _| | |_) | |
___) | |___ / ___ \| |\ | |\ | |___| _ <| |___
|____/ \____/_/ \_\_| \_|_| \_|_____|_| \_\_____|
USAGE
scannerl MODULE TARGETS [NODES] [OPTIONS]
MODULE:
-m <mod> --module <mod>
mod: le module de prise d'empreinte à utiliser.
les arguments sont séparés par deux-points.
TARGETS:
-f <target> --target <target>
target: une liste de cibles séparées par une virgule.
-F <path> --target-file <path>
path: le chemin du fichier contenant une cible par ligne.
-d <domain> --domain <domain>
domain: une liste de domaines séparés par une virgule.
-D <path> --domain-file <path>
path: le chemin du fichier contenant un domaine par ligne.
NODES:
-s <node> --slave <node>
node: une liste de nœuds (noms d'hôtes, pas d'IP) séparés par une virgule.
-S <path> --slave-file <path>
path: le chemin du fichier contenant un nœud par ligne.
un nœud peut également être fourni avec un multiplicateur (<node>*<nb>).