
Un scanner d'énumération & de vulnérabilités asynchrone. Exécutez tous les outils sur tous les hôtes.
celerystalk vous aide à automatiser votre processus de scan réseau/énumération avec des tâches asynchrones (alias tâches) tout en gardant un contrôle total sur les outils que vous souhaitez exécuter.

Démo interactive : Mode Bug Bounty (HackerOne)
Démo interactive : Mode Évaluation de vulnérabilité / Test d'intrusion (machines Retired HackTheBox.eu)
celerystalk est :
Vous devez installer et exécuter celerystalk en tant que root``` git clone https://github.com/sethsec/celerystalk.git cd celerystalk/setup ./install.sh cd .. ./celerystalk -h
## Utiliser le conteneur docker depuis Dockerhub```
docker pull sethsec/celerystalk:latest
docker run -p 27007:27007 -ti celerystalk
docker build -t celerystalk https://github.com/sethsec/celerystalk.git docker run -p 27007:27007 -ti celerystalk
## Utilisation de celerystalk - Les bases
### [Mode URL] - Comment scanner une URL (ou plusieurs URLs dans un fichier)
#### Lancer tous les outils activés contre une URL ou plusieurs URLs dans un fichier sans avoir à importer le scope, nmap, etc.```
# ./celerystalk scan -u url or filename # Run all enabled commands against specified url(s)
# ./celerystalk query watch (then Ctrl+c) # Wait for scans to finish
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
#### Ou, importer une liste d'hôtes qui sont dans le scope et laisser celerystalk exécuter nmap pour vous```
# ./celerystalk import -S scope.txt # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk nmap # Nmap all in-scope hosts (reads options from config.ini)
## Utilisation avancée : Mode Bug Bounty vs Mode Évaluation des Vulnérabilités
Vous définissez le mode lors de l'instanciation de l'espace de travail. L'espace de travail par défaut est le mode VAPT, mais vous avez deux options pour les espaces de travail créés manuellement.
* Si vous commencez avec des adresses IP/plages/CIDR dans le périmètre, utilisez le mode Évaluation des Vulnérabilités et Test d'Intrusion (VAPT).
* Si vous commencez avec des domaines dans le périmètre, utilisez le mode Bug Bounty (BB).
### [Mode Bug Bounty]
* En mode BB, tous les sous-domaines trouvés avec celerystalk ou importés manuellement sont marqués dans le périmètre.
#### Trouver les sous-domaines, définir les hôtes hors périmètre, scanner tout le reste```
# ./celerystalk workspace create -o /dir -m bb # Create default workspace and set output dir
# ./celerystalk subdomains -d company.com,dom.net # Find subdomains and determine if in scope
# ./celerystalk import -S scope.txt (optional) # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk import -O out_scope.txt (optional) # Define HOSTS/IPs that are out of scope
# ./celerystalk nmap (optional) # Nmap all in-scope hosts (reads options from config.ini)
# ./celerystalk import -f client.xml (optional) # If you would rather import an nmap file you already ran
# ./celerystalk scan [--noIP] # Run all enabled commands against all in scope hosts
# ./celerystalk query watch (then Ctrl+c) # Wait for scans to finish
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
Note : Vous pouvez d'abord exécuter la commande de sous-domaines puis définir le scope, ou bien définir le scope puis importer les sous-domaines.
**Remarque:** Vous pouvez d'abord exécuter la commande de sous-domaines, puis définir le périmètre, ou définir le périmètre et importer les sous-domaines.
#### Importer la liste des hôtes qui sont dans le périmètre et faire exécuter nmap par celerystalk, puis analyser les résultats```
# ./celerystalk workspace create -o /dir -m vapt # Create default workspace and set output dir
# ./celerystalk import -S client-inscope-list.txt # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk import -O out_scope.txt (optional) # Define HOSTS/IPs that are out of scope
# ./celerystalk nmap # Nmap all in-scope hosts (reads options from config.ini)
# ./celerystalk query watch (then Ctrl+c) # Watch nmap scans as they move from pending > running > complete
# ./celerystalk subdomains -d client.com,client.net # Find subdomains and determine if in scope
# ./celerystalk scan # Run all enabled commands
# ./celerystalk query watch (then Ctrl+c) # Watch scans as they move from pending > running > complete
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
Remarque : Vous pouvez exécuter la commande subdomains en premier et ensuite définir la portée, ou vous pouvez définir la portée et importer les sous-domaines.
Pour plus de détails, consultez la page Configuration dans le Wiki
Vous devez créer un espace de travail avant de pouvoir faire quoi que ce soit d'autre.
#### import
Cette commande permet d'importer des données de ports et d'hôtes dans celerystalk, et de définir ce qui est dans le périmètre (scope) et ce qui ne l'est pas.
| Option | Description |
| --- | --- |
| -f scan.xml | <b>XML Nmap/Nessus</b><br><ul><li>Ajoute toutes les adresses IP de ce fichier à la table des hôtes et les marque toutes dans le périmètre (scope) pour être scannées.</li><li>Ajoute tous les ports et types de services à la table des services.</li></ul> |
| -S scope.txt | <b>Fichier de scope</b><br><ul><li>Affiche les différences de fichiers qui n'ont pas été mis en scène (staged)</li></ul>|
| -D subdomains.txt | <b>Fichier de (sous)domaines</b><br><ul><li>celerystalk détermine si chaque sous-domaine est dans le périmètre (scope) en résolvant l'IP et en cherchant l'IP dans la base de données. S'il y a une correspondance, le domaine est marqué comme étant dans le périmètre et sera scanné.</li></ul>|```
Import Nmap XML file: ./celerystalk import -f /assessments/nmap.xml
Import Nessus file: ./celerystalk import -f /assessments/scan.nessus
Import list of Domains: ./celerystalk import -D <file>
Import list of IPs/Ranges: ./celerystalk import -S <file>
Specify workspace: ./celerystalk import -f <file>
Import multiple files: ./celerystalk import -f nmap.xml -S scope.txt -D domains.txt
Cette commande exécute tous les outils de recherche de sous-domaines présents dans votre fichier de configuration. Si vous préférez, vous pouvez le faire en dehors de celerystalk et importer les sous-domaines avec la commande import
| Option | Description |
|---|---|
| -d domaine1,domaine2,etc | Exécuter Amass, Sublist3r, etc. et stocker les domaines dans la base de données
|
| Find subdomains: celerystalk subdomains -d domain1.com,domain2.com |
#### nmap
Cette commande exécutera nmap pour vous, en utilisant les options que vous avez spécifiées dans le fichier config.ini. Vous pouvez également importer les données de scan de ports depuis un fichier xml nmap ou depuis un fichier .nessus.
| Option | Description |
| --- | --- |
| aucune option | Lit la commande nmap depuis la configuration et scanne tous les services pour les hôtes dans le scope |
| -c [filename] | Spécifiez un fichier de configuration celerystalk [Défaut: ./config.ini] |
#### scan
Cette commande soumet des tâches à celery, qui les exécute de manière asynchrone et enregistre la sortie dans votre répertoire de sortie.
| Option | Description |
| --- | --- |
| aucune option | <b>Scanne tous les hôtes dans le scope</b><ul><li>Lit la base de données et scanne chaque IP et sous-domaine dans le scope.</li><li>Lance tous les outils activés pour les IPs, mais uniquement les outils spécifiques http/http contre les virtualhosts</li></ul> |
| --noIP | Ne scanne pas les hôtes par adresse IP (ne scanne que les vhosts)
| -t ip,vhost,cidr | <b>Scanne une ou plusieurs cibles spécifiques depuis la base de données ou un fichier de scan</b><ul><li>Scanne un sous-ensemble des IPs et/ou sous-domaines dans le scope</li></ul> |
| -s | <b>Simulation</b><br> Envoie toutes les tâches à celery, mais toutes les commandes sont exécutées avec un # devant elles, les rendant inertes</li></ul> |
| -c [filename] | Spécifiez un fichier de configuration celerystalk [Défaut: ./config.ini] |
| -u [URL] | Scanne une URL spécifique, même si elle n'est pas encore dans la base de données |```
Scan all in scope hosts: ./celerystalk scan
Scan subset of DB hosts: ./celerystalk scan -t 10.0.0.1,10.0.0.3
./celerystalk scan -t 10.0.0.100-200
./celerystalk scan -t 10.0.0.0/24
./celerystalk scan -t sub.domain.com
Simulation mode: ./celerystalk scan -s
Cette commande rescannera un hôte déjà scanné.
| Option | Description |
|---|---|
| aucune option |
./celerystalk rescan -c myconfig.ini
Rescan some hosts ./celerystalk rescan -t 1.2.3.4,sub.domain.com
Simulation mode: ./celerystalk rescan -s
#### query
Vérifiez de manière asynchrone le statut de la file d'attente des tâches aussi souvent que vous le souhaitez. Le mode watch exécute en fait la commande linux watch afin que vous ne remplissiez pas tout votre tampon de terminal.
| Option | Description |
| --- | --- |
| no options | Affiche toutes les tâches de l'espace de travail actuel |
| watch | Envoie la commande à la commande unix watch qui vous permet d'obtenir un statut mis à jour toutes les 2 secondes |
| brief | Limite de 5 résultats par statut (pending/running/completed/cancelled/paused) |
| summary | Affiche uniquement une bannière avec des chiffres et non les tâches elles-mêmes |```
Query Tasks: ./celerystalk query
./celerystalk query watch
./celerystalk query brief
./celerystalk query summary
./celerystalk query summary watch
Annuler/Mettre en pause/Reprendre toute(s) tâche(s) qui est en cours d'exécution ou en file d'attente.
./celerystalk <verb> all #Cancel/Pause/Resume all tasks from current workspaces
#### captures d'écran
| Options | Description |
| --- | --- |
| aucune option | Prendre des captures d'écran pour tous les chemins connus |```
./celerystalk screenshots
Exécutez un rapport qui combine toutes les sorties de l'outil en un fichier html et un fichier txt. Exécutez-le aussi souvent que vous le souhaitez. Chaque fois que vous exécutez le rapport, il écrase le rapport précédent.
| Options | Description |
|---|---|
| aucune option | Crée un rapport pour tous les hôtes dans le périmètre qui ont été scannés |
| Create Report: ./celerystalk report #Create a report for all scanned hosts in current workspace |
#### db
Liste ou exporte les espaces de travail, les hôtes, les services ou les chemins stockés dans la base de données celerystalk
| Option | Description |
| --- | --- |
| workspaces | Affiche tous les espaces de travail connus et le répertoire de sortie associé à chaque espace de travail |
| workspace | Identique à workspaces |
| services | Affiche tous les ports ouverts connus et les types de services par IP |
| ports | Identique à ports. |
| hosts | Affiche tous les hôtes (adresses IP et sous-domaines/vhosts) et indique s'ils sont dans le périmètre et s'ils ont été soumis à l'analyse |
| vhosts | Identique à la commande hosts, mais exclut les vhosts qui sont des adresses IP. |
| paths | Affiche tous les chemins identifiés par vhost |
| paths_only | Affiche une liste de chemins séparée par des sauts de ligne dans la base. Utile pour rediriger vers un autre outil |
| export | Exporte les tables des services, des hôtes et des chemins
| export_paths_only | Exporte uniquement une liste de chemins séparée par des sauts de ligne depuis la base vers un fichier.```
Show workspaces: ./celerystalk db workspaces
./celerystalk db workspace
Show services: ./celerystalk db services
./celerystalk db ports
Show hosts: ./celerystalk db hosts
Show vhosts only ./celerystalk db vhosts
Show paths: ./celerystalk db paths
Show paths (no table) ./celerystalk db paths_only
Show tasks: ./celerystalk db tasks
Export tables to csv ./celerystalk db export
Export paths to txt ./celerystalk db export_paths_only
Fonctions administratives
## Utilisation```
Usage:
celerystalk workspace ([create]|[switch]) [-w workspace_name] [-o <output_dir>] [-m <mode>] [-h]
celerystalk import [-f <nmap_file>] [-S scope_file] [-D subdomains_file] [-O outOfScope.txt] [-u <url>] [-h]
celerystalk subdomains [-d <domains>] [-c <config_file>] [-s] [-h]
celerystalk nmap [-t <targets>] [-c <config_file>] [-s] [-h]
celerystalk scan [-t <targets>] [--noIP] [-c <config_file>] [-s] [-h]
celerystalk scan -u <url> [-c <config_file>] [-s] [-h]
celerystalk rescan [-t <targets>] [-c <config_file>] [-s] [-h]
celerystalk query ([full] | [summary] | [brief]) [watch] [-h]
celerystalk query [watch] ([full] | [summary] | [brief]) [-h]
celerystalk report [-h]
celerystalk screenshots [-h]
celerystalk cancel ([all]|[<task_ids>]) [-h]
celerystalk pause ([all]|[<task_ids>]) [-h]
celerystalk resume ([all]|[<task_ids>]) [-h]
celerystalk db ([workspaces]|[workspace]|[services]|[ports]|[hosts]|[vhosts]|[paths]|[paths_only]|[tasks]) [-h]
celerystalk db export [-h]
celerystalk admin ([start]|[stop]|[restart]|[reset]|[backup]|[restore]) [-f <restore_file>] [-h]
celerystalk interactive [-h]
celerystalk (help | -h | --help)
Options:
-h --help Show this screen
-v --version Show version
-f <nmap_file> Nmap xml import file
-c <config_file> Specify a non-default configuration file by name
-o <output_dir> Output directory
-m <mode> vapt = VulnAssmt/PenTest, bb = Bug Bounty
-S <scope_file> Scope import file
-O <outscope_file> Out of scope hosts file
-D <subdomains_file> Subdomains import file
-t <targets> Target(s): IP, IP Range, CIDR
-u <url> URL to parse and scan with all configured tools
-w <workspace> Workspace
-d --domains Domains to scan for vhosts
-s --simulation Simulation mode. Submit tasks comment out all commands
--noIP Only scan targets by DNS hostname (Don't scan the IP address)
Context specific help with examples:
./celerystalk workspace -h
./celerystalk subdomains -h
./celerystalk import -h
./celerystalk nmap -h
./celerystalk scan -h
./celerystalk rescan -h
./celerystalk query -h
./celerystalk pause -h
./celerystalk resume -h
./celerystalk cancel -h
./celerystalk db -h
./celerystalk screenshots -h
./celerystalk report -h
./celerystalk admin -h
Ce projet a été inspiré par de nombreux excellents outils :
Merci à @offensivesecurity et @hackthebox_eu pour leurs réseaux de laboratoire
Merci également à :
| Phase | Commande | Exemples d'outils utilisés |
|---|
| Recon/Énumération DNS | ./celerystalk subdomains -d domaine1,domaine2 | Amass, sublist3r |
| Définir le périmètre, Importer nmap/nessus | ./celerystalk import [scan_data,scope_files,etc.] | celerystalk |
| Scan de ports | ./celerystalk nmap | nmap |
| Énumération de répertoires et fichiers, Identification de vulnérabilités | ./celerystalk scan | Gobuster, Nikto, Photon, sqlmap, wpscan, hydra, medusa, wappalyzer, whatweb, etc. |
| Captures d'écran | ./celerystalk sceenshots | Aquatone |
| Analyse | ./celerystalk report | celerystalk |
| Option | Description |
|---|
| no options | Affiche l'espace de travail actuel |
| create | Crée un nouvel espace de travail |
| -w | Définit le nom du nouvel espace de travail |
| -o | Définit le répertoire de sortie attribué à l'espace de travail |
| -m | Mode [vapt \ bb] |
| Create default workspace ./celerystalk workspace create -o /assessments/client -m bb | |
| Create named workspace ./celerystalk workspace create -o /assessments/client -w client -m vapt | |
| Switch to another workspace ./celerystalk workspace client |
| Pour chaque hôte dans le périmètre dans la base de données, celerystalk demandera si vous souhaitez le rescanner |
| -t ip,vhost,cidr | Analyse un sous-ensemble des adresses IP et/ou sous-domaines dans le périmètre |
| -s | Envoie toutes les tâches à celery, mais toutes les commandes sont exécutées avec un # devant elles, les rendant inertes |
| -c [filename] | Spécifier un fichier de configuration celerystalk [Par défaut : ./config.ini] |
| Rescan all hosts: ./celerystalk rescan |
| Option | Description |
|---|
| cancel |
|
| pause |
|
| resume |
|
| Cancel/Pause/Resume Tasks: ./celerystalk 5,6,10-20 #Cancel/Pause/Resume tasks 5, 6, and 10-20 from current workspace |
| Options | Description |
|---|
| start | Démarrer les processus Celery & Redis |
| stop | Arrêter les processus Celery & Redis |
| restart | Redémarrer les processus Celery & Redis |
| reset | Détruire la base de données, vider Redis, recommencer |
| backup | Sauvegarder la base de données et tous les répertoires de données de l'espace de travail |
| restore | Restaurer la base de données et tous les répertoires de données de l'espace de travail |
| -f [filename] | Nom du fichier de restauration |
| Examples: | |
| ./celerystalk admin start | |
| ./celerystalk admin stop | |
| ./celerystalk admin restart | |
| ./celerystalk admin reset | |
| ./celerystalk admin backup -f | |
| ./celerystalk admin restore -f |