
Sudomy es una herramienta de enumeración de subdominios para recolectar subdominios y analizar dominios realizando reconocimiento automatizado (recon) para caza de bugs / pruebas de penetración.
Sudomy es una herramienta de enumeración de subdominios para recolectar subdominios y analizar dominios mediante reconocimiento automatizado avanzado (framework). Esta herramienta también se puede utilizar para actividades de OSINT (inteligencia de fuentes abiertas).
Método Activo
Método Pasivo
Al evaluar y seleccionar los buenos sitios/recursos de terceros, el proceso de enumeración puede ser optimizado. Se obtendrán más resultados en menos tiempo. Sudomy puede recolectar datos de estos 22 sitios de terceros cuidadosamente seleccionados:
https://censys.io
https://developer.shodan.io
https://dns.bufferover.run
https://index.commoncrawl.org
https://riddler.io
https://api.certspotter.com
https://api.hackertarget.com
https://api.threatminer.org
https://community.riskiq.com
https://crt.sh
https://dnsdumpster.com
https://docs.binaryedge.io
https://securitytrails.com
https://graph.facebook.com
https://otx.alienvault.com
https://rapiddns.io
https://spyse.com
https://urlscan.io
https://www.dnsdb.info
https://www.virustotal.com
https://threatcrowd.org
https://web.archive.org
Así es como funciona sudomy o el flujo de reconocimiento, cuando ejecutas los mejores argumentos para recolectar subdominios y analizar mediante reconocimiento automático.
root@maland: ./sudomy -d bugcrowd.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze -sS
Este es el flujo de trabajo de reconocimiento de Sudomy v1.1.8#dev

Información detallada del archivo de reconocimiento y datos jugosos
------------------------------------------------------------------------------------------------------
- subdomain.txt -- Lista de subdominios < $DOMAIN (Objetivo)
- httprobe_subdomain.txt -- Validar subdominios < subdomain.txt
- webanalyzes.txt -- Escaneo de identificación de tecnologías < httprobe_subdomain.txt
- httpx_status_title.txt -- título+código de estado+longitud < httprobe_subdomain.txt
- dnsprobe_subdomain.txt -- Resolución de subdominios < subdomain.txt
- Subdomain_Resolver.txt -- Resolución de subdominios (alt) < subdomain.txt
- cf-ipresolv.txt -- Escaneo de Cloudflare < ip_resolver.txt
- Live_hosts_pingsweep.txt -- Comprobación de hosts activos < ip_resolver.txt
- ip_resolver.txt -- Lista de IPs resueltas < Subdomain_Resolver::dnsprobe
- ip_dbasn.txt -- Comprobación de número ASN < ip_resolver.txt
- vHost_subdomain.txt -- Host virtual (agrupado por IP) < Subdomain_Resolver.txt
- nmap_top_ports.txt -- Escaneo de puertos activos < cf-ipresolv.txt
- ip_dbport.txt -- Escaneo de puertos pasivos < cf-ipresolv.txt
------------------------------------------------------------------------------------------------------
- Passive_Collect_URL_Full.txt -- Todas las URLs completas rastreadas (WebArchive, CommonCrawl, UrlScanIO)
------------------------------------------------------------------------------------------------------
- ./screenshots/report-0.html -- Informe de capturas de pantalla < httprobe_subdomain.txt
- ./screenshots/gowitness/gowitness.sqlite3 -- Base de datos de capturas de pantalla < httprobe_subdomain.txt
------------------------------------------------------------------------------------------------------
- ./interest/interesturi-allpath.out -- Rutas de interés (/api,/git,etc) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-doc.out -- Documentos de interés (doc,pdf,xls) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-otherfile.out -- Otros archivos (.json,.env,etc) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-js.out -- Todos los archivos JavaScript(*.js) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-nodemodule.out -- Archivos de /node_modules/ < Passive_Collect_URL_Full.txt
- ./interest/interesturi-param-full.out -- Lista completa de parámetros < Passive_Collect_URL_Full.txt
- ./interest/interesturi-paramsuniq.out -- Lista única de parámetros < Passive_Collect_URL_Full.txt
- Notas : Puedes validar URLs/parámetros jugosos/de interés usando urlprobe o httpx para evitar falsos positivos
------------------------------------------------------------------------------------------------------
- ./takeover/CNAME-resolv.txt -- Resolución CNAME < subdomain.txt
- ./takeover/TakeOver-Lookup.txt -- DNSLookup < CNAME-resolv.txt
- ./takeover/TakeOver-nxdomain.txt -- Otra plataforma de servicios 3d < TakeOver-Lookup.txt
- ./takeover/TakeOver.txt -- Comprobación de vulnerabilidad < CNAME-resolv.txt
------------------------------------------------------------------------------------------------------
- ./wordlist/wordlist-parameter.lst -- Generar lista de palabras de parámetros < Passive_Collect_URL_Full.txt
- ./wordlist/wordlist-pathurl.lst -- Generar lista de palabras de rutas < Passive_Collect_URL_Full.txt
- Notas : Esta lista de palabras está basada en información del dominio y subdominio (ruta, archivo, cadenas de consulta y parámetros)
------------------------------------------------------------------------------------------------------
Sudomy minimiza más recursos al usar recursos (sitios de terceros) evaluando y seleccionando los buenos sitios/recursos de terceros, por lo que el proceso de enumeración puede optimizarse. El dominio utilizado en esta comparación es tiket.com.
A continuación se presentan los resultados de las pruebas de enumeración DNS pasiva de Sublist3r v1.1.0, Subfinder v2.4.5 y Sudomy v1.2.0.
Aquí, subfinder sigue clasificándose como muy rápido para recolectar subdominios utilizando bastantes recursos. Especialmente si los recursos utilizados han sido optimizados (?).
Para ver los resultados compilados y los videos, puedes consultar aquí:
Cuando tenga tiempo libre. Quizás en el futuro, sudomy usará golang también. Si quieres contribuir, las pull requests están abiertas.
Sudomy se extiende actualmente con las siguientes herramientas. Las instrucciones sobre cómo instalar y usar la aplicación están enlazadas a continuación.
# Clona este repositorio
git clone --recursive https://github.com/screetsec/Sudomy.git
$ python3 -m pip install -r requirements.txt
Sudomy requiere jq y GNU grep para ejecutarse y analizar. La información sobre cómo descargar e instalar jq se puede acceder aquí.
# Linux
apt-get update
apt-get install jq nmap phantomjs npm chromium parallel
npm i -g wappalyzer wscat
# Mac
brew cask install phantomjs
brew install jq nmap npm parallel grep
npm i -g wappalyzer wscat
# Nota
Todo lo que necesitas es una instalación de la última versión de Google Chrome o Chromium
Configura la variable PATH en el archivo rc para los cambios de GNU grep
# Obtén la imagen de DockerHub
docker pull screetsec/sudomy:v1.2.1-dev
# Crea un directorio de salida
mkdir output
# Ejecuta la imagen, puedes ejecutarla en un directorio personalizado pero debes copiar/descargar el archivo de configuración sudomy.api en el directorio actual
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -v "${PWD}/sudomy.api:/usr/lib/sudomy/sudomy.api" -t --rm screetsec/sudomy:v1.1.9-dev [argumento]
# o define variables de API al ejecutar la imagen.
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -e "SHODAN_API=xxxx" -e "VIRUSTOTAL=xxxx" -t --rm screetsec/sudomy:v1.1.9-dev [argumento]
Se necesita una clave API antes de consultar sitios de terceros, como Shodan, Censys, SecurityTrails, Virustotal y BinaryEdge.
# Shodan
# URL : http://developer.shodan.io
# Ejemplo :
# - SHODAN_API="VGhpc1M0bXBsZWwKVGhmcGxlbAo"
SHODAN_API=""
# Censys
# URL : https://search.censys.io/register
CENSYS_API=""
CENSYS_SECRET=""
# Virustotal
# URL : https://www.virustotal.com/gui/
VIRUSTOTAL=""
# Binaryedge
# URL : https://app.binaryedge.io/login
BINARYEDGE=""
# SecurityTrails
# URL : https://securitytrails.com/
SECURITY_TRAILS=""
Se necesita YOUR_WEBHOOK_URL antes de usar las notificaciones de Slack.
# Configuración de Alertas Slack
# Para la configuración/tutorial sobre cómo obtener la URL del webhook, sigue este sitio
# - https://api.slack.com/messaging/webhooks
# Ejemplo:
# - YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
___ _ _ _
/ __|_ _ __| (_)(_)_ __ _ _
\__ \ || / _ / __ \ ' \ || |
|___/\_,_\__,_\____/_|_|_\_, |
|__/ v{1.2.1#dev} by @screetsec
Sud⍥my - Fast Subdmain Enumeration and Analyzer
http://github.com/screetsec/sudomy
Usage: sud⍥my.sh [-h [--help]] [-s[--source]][-d[--domain=]]
Example: sud⍥my.sh -d example.com
sud⍥my.sh -s Shodan,VirusTotal -d example.com
Mejores argumentos:
sudomy -d domain.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze --slack -sS
Argumentos opcionales:
-a, --all Ejecutar toda la enumeración, sin nmap ni gobuster
-b, --bruteforce Fuerza bruta de subdominios usando Gobuster (lista de palabras: todos los DNS de SecList top)
-d, --domain Dominio del sitio web a escanear
-h, --help Mostrar este mensaje de ayuda
-o, --outfile Especificar un archivo de salida al finalizar
-s, --source Usar fuente para enumerar subdominios
-aI, --apps-identifier Identificar tecnologías en el sitio web (ej: -aI webanalyze)
-dP, --db-port Recolectar puertos de terceros (por defecto=shodan)
-eP, --extract-params Recolectar parámetros de URL desde el motor
-tO, --takeover Escáner de vulnerabilidad de Subdomain TakeOver
-wS, --websocket Comprobación de conexión WebSocket
-cF, --cloudfare Comprobar si una IP es propiedad de Cloudflare
-pS, --ping-sweep Comprobar host activo usando el método Ping Sweep
-rS, --resolver Convertir listas de dominios en listas de IPs resueltas sin duplicados
-sC, --status-code Obtener códigos de estado, respuesta de la lista de dominios
-nT, --nmap-top Escaneo de puertos con top-ports usando nmap desde la lista de dominios
-sS, --screenshot Capturas de pantalla de una lista de sitios web (por defecto: gowitness)
-nP, --no-passive No realizar enumeración pasiva de subdominios
-gW, --gwordlist Generar lista de palabras basada en la recolección de recursos URL (pasiva)
--httpx Realizar múltiples sondas httpx usando retryablehttp
--dnsprobe Realizar múltiples consultas DNS (dnsprobe)
--no-probe No realizar httprobe
--html Generar informe en HTML
--graph Visualización de gráficos de red
Para usar las 22 fuentes y sondear servidores http o https funcionales (validaciones):
$ sudomy -d hackerone.com
Para usar una o más fuentes:
$ sudomy -s shodan,dnsdumpster,webarchive -d hackerone.com
Para usar todas las fuentes sin validaciones:
$ sudomy -d hackerone.com --no-probe
Para usar uno o más plugins:
$ sudomy -pS -sC -sS -d hackerone.com
Para usar todos los plugins: probar estado del host, código de estado http/https, subdomain takeover y capturas de pantalla.
Nmap, Gobuster, wappalyzer y wscat no incluidos.
$ sudomy -d hackerone.com --all
Para crear informe en formato HTML
$ sudomy -d hackerone.com --html --all
Ejemplo de informe HTML:
| Panel | Informes |
|---|---|
![]() | ![]() |
Para generar visualización de gráficos de red de subdominios y virtualhosts
$ sudomy -d hackerone.com -rS --graph
Visualización de gráficos Ejemplo:
| nGraph |
|---|
![]() |
Para usar los mejores argumentos para recolectar subdominios, analizar mediante reconocimiento automático y enviar notificaciones a Slack
./sudomy -d ngesec.id -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe --graph -aI webanalyze --slack -sS
Ejemplo de notificación de Slack:
| Slack |
|---|
![]() |
Todos los cambios notables de este proyecto se documentarán en este archivo.