
Un escáner de enumeración y vulnerabilidades asíncrono. Ejecuta todas las herramientas en todos los hosts.
celerystalk te ayuda a automatizar tu proceso de escaneo/enumeración de red con trabajos asíncronos (también conocidos como tareas) mientras conservas el control total de qué herramientas quieres ejecutar.

Demo interactiva: Modo Bug Bounty (HackerOne)
Demo interactiva: Modo Evaluación de Vulnerabilidades / PenTest (Máquinas retiradas de HackTheBox.eu)
| Fase | Comando | Ejemplos de herramientas utilizadas |
|---|---|---|
| Recon/Enumeración DNS | ./celerystalk subdomains -d domain1,domain2 | Amass, sublist3r |
| Definir alcance, importar nmap/nessus | ./celerystalk import [scan_data,scope_files,etc.] | celerystalk |
| Escaneo de puertos | ./celerystalk nmap | nmap |
| Enumeración de directorios y archivos, identificación de vulnerabilidades | ./celerystalk scan | Gobuster, Nikto, Photon, sqlmap, wpscan, hydra, medusa, wappalyzer, whatweb, etc. |
| Capturas de pantalla | ./celerystalk sceenshots | Aquatone |
| Análisis | ./celerystalk report | celerystalk |
celerystalk es:
Debes instalar y ejecutar celerystalk como root``` git clone https://github.com/sethsec/celerystalk.git cd celerystalk/setup ./install.sh cd .. ./celerystalk -h
## Usar contenedor docker de 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
## Usando celerystalk - Lo básico
### [Modo URL] - Cómo escanear una URL (o múltiples URLs en un archivo)
#### Lanzar todas las herramientas habilitadas contra una URL o muchas URLs en un archivo sin tener que importar alcance, 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
#### O bien, importa una lista de hosts que estén en el alcance y haz que celerystalk ejecute nmap por ti```
# ./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)
## Uso Avanzado: Modo Bug Bounty vs Modo Evaluación de Vulnerabilidades
Defines el modo al instanciar el espacio de trabajo. El espacio de trabajo por defecto es el modo VAPT, pero tienes dos opciones para espacios de trabajo creados manualmente.
* Si comienzas con direcciones IP/rangos/CIDR dentro del alcance, usa el modo Evaluación de Vulnerabilidades y Pruebas de Penetración (VAPT).
* Si comienzas con dominios dentro del alcance, usa el modo Bug Bounty (BB).
### [Modo Bug Bounty]
* En el modo BB, todos los subdominios encontrados con celerystalk o importados manualmente se marcan como dentro del alcance.
#### Encontrar subdominios, definir hosts fuera del alcance, escanear todo lo demás```
# ./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
Nota: Puedes ejecutar el comando subdomains primero y luego definir el alcance, o puedes definir el alcance e importar subdominios.
**Nota:** Puedes ejecutar primero el comando de subdominios y luego definir el alcance, o puedes definir el alcance e importar subdominios.
#### Importar lista de hosts que están en el alcance y hacer que celerystalk ejecute nmap y analice los resultados```
# ./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
Nota: Puedes ejecutar primero el comando de subdominios y luego definir el alcance, o puedes definir el alcance e importar subdominios.
Para más detalles, consulta la página de Configuración en la Wiki.
Necesitas crear un espacio de trabajo antes de poder hacer cualquier otra cosa.
#### import
Este comando permite importar datos de puertos y hosts a celerystalk, y permite definir qué está dentro del alcance y qué está fuera del alcance.
| Option | Description |
| --- | --- |
| -f scan.xml | <b>Nmap/Nessus xml</b><br><ul><li>Agrega todas las direcciones IP de este archivo a la tabla de hosts y las marca todas como dentro del alcance para ser escaneadas.</li><li>Agrega todos los puertos y tipos de servicio a la tabla de servicios.</li></ul> |
| -S scope.txt | <b>Archivo de alcance</b><br><ul><li>Muestra las diferencias de archivos que no han sido preparados</li></ul>|
| -D subdomains.txt | <b>Archivo de (sub)dominios</b><br><ul><li>celerystalk determina si cada subdominio está dentro del alcance resolviendo la IP y buscando la IP en la DB. Si hay coincidencia, el dominio se marca como dentro del alcance y será escaneado.</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
Este comando ejecuta todas las herramientas de búsqueda de subdominios en tu archivo de configuración. Si lo prefieres, puedes hacer esto fuera de celerystalk e importar los subdominios con el comando import
| Opción | Descripción |
|---|---|
| -d domain1,dominio2,etc | Ejecuta Amass, Sublist3r, etc. y almacena los dominios en la base de datos
|
| Find subdomains: celerystalk subdomains -d domain1.com,domain2.com |
#### nmap
Este comando ejecutará nmap por ti, usando las opciones que especificaste en el archivo config.ini. Alternativamente, puedes importar datos de escaneo de puertos desde un archivo nmap xml o desde un archivo .nessus
| Opción | Descripción |
| --- | --- |
| sin opciones | Lee el comando nmap desde la configuración y escanea todos los servicios para hosts en alcance
| -c [filename] | Especifica un archivo de configuración de celerystalk [Predeterminado: ./config.ini]
#### scan
Este comando enviará tareas a celery, que las ejecuta de forma asíncrona y registra la salida en tu directorio de salida.
| Opción | Descripción |
| --- | --- |
| sin opciones | <b>Escanear todos los hosts en alcance</b><ul><li>Lee la base de datos y escanea cada IP y subdominio en alcance.</li><li>Lanza todas las herramientas habilitadas para IPs, pero solo herramientas específicas de http/http contra virtualhosts</li></ul> |
| --noIP | No escanear hosts por IP (solo escanear vhosts)
| -t ip,vhost,cidr | <b>Escanear objetivo(s) específico(s) desde la base de datos o archivo de escaneo</b><ul><li>Escanear un subconjunto de las IPs y/o subdominios en alcance</li></ul> |
| -s | <b>Simulación</b><br>Envía todas las tareas a celery, pero todos los comandos se ejecutan con un # antes, volviéndolos inertes</li></ul> |
| -c [filename] | Especifica un archivo de configuración de celerystalk [Predeterminado: ./config.ini] |
| -u [URL] | Escanear una URL específica, incluso si aún no está en la base de datos |```
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
Este comando volverá a escanear un host ya escaneado.
| Opción | Descripción |
|---|---|
| sin opción | Para cada host en el alcance en la base de datos, celerystalk preguntará si deseas volver a escanearlo |
./celerystalk rescan -c myconfig.ini
Rescan some hosts ./celerystalk rescan -t 1.2.3.4,sub.domain.com
Simulation mode: ./celerystalk rescan -s
#### query
Verifique de forma asíncrona el estado de la cola de tareas con la frecuencia que desee. El modo watch realmente ejecuta el comando linux watch para que no llene todo el búfer de su terminal.
| Opción | Descripción |
| --- | --- |
| sin opciones | Muestra todas las tareas en el espacio de trabajo actual |
| watch | Envía el comando al comando unix watch que le permitirá obtener un estado actualizado cada 2 segundos |
| brief | Límite de 5 resultados por estado (pendiente/en ejecución/completado/cancelado/en pausa) |
| summary | Muestra solo un banner con números y no las tareas en sí |```
Query Tasks: ./celerystalk query
./celerystalk query watch
./celerystalk query brief
./celerystalk query summary
./celerystalk query summary watch
Cancelar/Pausar/Reanudar cualquier tarea(s) que estén ejecutándose o en cola.
./celerystalk <verb> all #Cancel/Pause/Resume all tasks from current workspaces
#### screenshots
| Opciones | Descripción |
| --- | --- |
| sin opciones | Tomar capturas de pantalla para todas las rutas conocidas |```
./celerystalk screenshots
Ejecuta un informe que combina toda la salida de la herramienta en un archivo html y un archivo txt. Ejecútalo tantas veces como quieras. Cada vez que ejecutas el informe, sobrescribe el informe anterior.
| Opciones | Descripción |
|---|---|
| sin opciones | Crea un informe para todos los hosts dentro del alcance que han sido escaneados |
| Create Report: ./celerystalk report #Create a report for all scanned hosts in current workspace |
#### db
Lista o exporta los workspaces, hosts, servicios o rutas almacenados en la base de datos de celerystalk
| Opción | Descripción |
| --- | --- |
| workspaces | Muestra todos los workspaces conocidos y el directorio de salida asociado a cada workspace |
| workspace | Igual que workspaces |
| services | Muestra todos los puertos abiertos conocidos y tipos de servicio por IP |
| ports | Igual que ports. |
| hosts | Muestra todos los hosts (direcciones IP y subdominios/vhosts) e indica si están en el alcance y si han sido enviados para escaneo |
| vhosts | Igual que el comando hosts, pero excluye los vhosts que son direcciones IP. |
| paths | Muestra todas las rutas identificadas por vhost |
| paths_only | Muestra una lista separada por saltos de línea de las rutas en la base de datos. Útil para canalizar a otra herramienta |
| export | Exporta las tablas de services, hosts y paths
| export_paths_only | Exporta solo una lista separada por saltos de línea de las rutas en la base de datos a un archivo.```
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
Funciones Administrativas
## Uso```
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
Este proyecto fue inspirado por muchas herramientas excelentes:
Agradecimientos a @offensivesecurity y @hackthebox_eu por sus redes de laboratorio
También, agradecimientos a:
| Opción | Descripción |
|---|
| sin opciones | Muestra el espacio de trabajo actual |
| create | Crea un nuevo espacio de trabajo |
| -w | Define el nombre del nuevo espacio de trabajo |
| -o | Define el directorio de salida asignado al espacio de trabajo |
| -m | Modo [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 |
| -t ip,vhost,cidr | Escanea un subconjunto de las IPs y/o subdominios en el alcance. |
| -s | Envía todas las tareas a celery, pero todos los comandos se ejecutan con un # delante haciéndolos inertes. |
| -c [filename] | Especifica un archivo de configuración de celerystalk [Por defecto: ./config.ini] |
| Rescan all hosts: ./celerystalk rescan |
| Opción | Descripción |
|---|
| cancelar |
|
| pausar |
|
| reanudar |
|
| Cancel/Pause/Resume Tasks: ./celerystalk 5,6,10-20 #Cancel/Pause/Resume tasks 5, 6, and 10-20 from current workspace |
| Options | Descripción |
|---|
| start | Iniciar procesos de Celery y Redis |
| stop | Detener procesos de Celery y Redis |
| restart | Reiniciar procesos de Celery y Redis |
| reset | Destruir BD, vaciar Redis, empezar de nuevo |
| backup | Respaldar BD y todos los directorios de datos del espacio de trabajo |
| restore | Restaurar BD y todos los directorios de datos del espacio de trabajo |
| -f [filename] | Nombre del archivo de restauración |
| Examples: | |
| ./celerystalk admin start | |
| ./celerystalk admin stop | |
| ./celerystalk admin restart | |
| ./celerystalk admin reset | |
| ./celerystalk admin backup -f | |
| ./celerystalk admin restore -f |