Logo de SubCat con estilo pixel art y un gato en forma de púa de guitarra.
SubCat: Enumeración rápida de subdominios.

SubCat: Herramienta Rápida de Enumeración de Subdominios

SubCat es una potente herramienta de descubrimiento de subdominios que recopila pasivamente datos de diversas fuentes online para identificar subdominios válidos de sitios web. Diseñada con una arquitectura modular y eficiente, SubCat es ideal para testers de penetración, cazadores de recompensas y investigadores de seguridad.

Creada para cumplir con las restricciones de licencia y uso de sus fuentes pasivas, SubCat garantiza un impacto mínimo en los sistemas objetivo a la vez que proporciona información detallada sobre los subdominios.

Representación pixel art de "SubCat" con código de programación al fondo.
Interfaz gráfica de usuario de SubCat.

Características

  • Enumeración rápida: Aprovecha un módulo de resolución y eliminación de comodines de alto rendimiento.
  • Fuentes pasivas seleccionadas: Recopila subdominios de fuentes online de confianza para maximizar la cobertura.
  • Ligera y eficiente: Optimizada para la velocidad con un consumo mínimo de recursos.
  • Integración STDIN/STDOUT: Se integra perfectamente con otras herramientas y flujos de trabajo.
  • Filtrado por rango IP: Filtra los resultados por direcciones IP utilizando un rango proporcionado (CIDR o basado en archivos).
  • Salida detallada: Opciones para mostrar códigos de estado HTTP, títulos de páginas, direcciones IP y detección de tecnología.
  • Modo de búsqueda inversa: Admite la búsqueda inversa para cargar solo los módulos que gestionan la enumeración inversa (requiere un rango IP válido).
  • Selección de módulos personalizada: Incluye o excluye módulos específicos mediante indicadores de línea de comandos.
  • Multi-threading mejorado: Utiliza 50 hilos concurrentes por defecto para un procesamiento rápido.

Instalación

#Linux, Windows, MacOS
pip3 install -r requirements.txt

Después de la instalación

Antes de consultar servicios de terceros, configura tus claves API en el archivo config.yaml. No todos los módulos requieren una clave API, pero las siguientes fuentes sí:

  • BinaryEdge
  • Virustotal
  • SecurityTrails
  • Shodan
  • Bevigil
  • Chaos
  • DNSDumpster
  • Netlas
  • DigitalYama
  • Censys
  • AlienVault
  • CertSpotter
  • URLScan (para uso avanzado)

Ejemplo de archivo de configuración del proveedor:

codebinaryedge:
  - e3a2f1c4-9d2b-47f3-a1e2-4b8d7f0a1c2e
virustotal:
  - b1e2d3c4f5a6978877665544332211ffeeddccbbaa99887766554433221100ff
securitytrails:
  - X7a9B2c4D6e8F0g1H3i5J7k9L1m3N5o7
  - P8q6R4s2T0u8V6w4X2y0Z8a6B4c2D0e2
shodan:
  - M3n4O5p6Q7r8S9t0U1v2W3x4Y5z6A7b8
bevigil:
  - F1g2H3i4J5k6L7m8
chaos:
  - d2c4b6a8-90ef-12ab-34cd-56ef78ab90cd
dnsdumpster:
  - c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4
  - e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5
netlas:
  - Z1x2C3v4B5n6M7a8S9d0F1g2H3j4K5l6
digitalyama:
  - Q1w2E3r4T5y6U7i8O9p0

Uso

python3 subcat.py -h

Esto mostrará la ayuda de la herramienta. Aquí están todos los modificadores que admite:

INPUT:
  -d DOMAIN, --domain DOMAIN
                        Target domain to scan
  -l LIST, --list LIST  File containing list of domains
  --scope SCOPE         IP scope filter: provide either a file containing CIDR ranges or a single IP/CIDR string (e.g., '8.8.8.8' or  
                        '8.8.4.0/24'). This filter is required when reverse lookup is enabled.

OUTPUT:
  -o OUTPUT, --output OUTPUT
                        Output file
  -title, --title       Show page titles
  -ip, --ip             Resolve IP addresses
  -sc, --status-code    Show HTTP status codes
  --up                  Show only domains that are up (exclude TIMEOUT)
  -td, --tech           Show detected technologies
  -nc, --no-colors      Disable colored output in console

FILTERS:
  -mc MATCH_CODES, --match-codes MATCH_CODES
                        Comma separated list of HTTP status codes to filter (e.g., 200,404)

SOURCE:
  -ls                   List available modules and exit
  -s SOURCES, --sources SOURCES
                        Specific sources to use for discovery (comma-separated, e.g., crtsh,wayback)
  -es EXCLUDE_SOURCES, --exclude-sources EXCLUDE_SOURCES
                        Sources to exclude from enumeration (comma-separated, e.g., alienvault,crtsh)
  -r, --reverse         Enable reverse lookup mode for enumeration (loads only modules supporting reverse lookup). Requires --scope   
                        to be provided.

CONFIGURATION:
  -t THREADS, --threads THREADS
                        Number of concurrent threads (default: 50)
  -c CONFIG, --config CONFIG
                        Path to YAML config file (default: config.yaml)

DEBUG:
  -v, --verbose         Increase verbosity level (-v, -vv, -vvv)
  -silent, --silent     Suppress all output except results
  -h, --help            Show this help message and exit

Ejecutando SubCat

Aquí tienes varios ejemplos para ayudarte a empezar:

Escanear un solo dominio:

python3 subcat.py -d hackerone.com --sc --title --tech --up                                                                


                           ;            ;                  
                         ρββΚ          ;ββΝ                
                       έΆχββββββββββββββββββΒ              
                     ;ΣΆχΜ΅΅ΫΝββββββββ Ϋ΅ΫβββΝ            
                    όΆΆχβ   Ά   ββββ΅  Ά΅  βββββ           
                   χΆΆΆφβΒ; Ϋ΅;έββββΒ; Ϋ΅ ρββββββ          
                   ΆΆΆΆδβββββββββ;χββββββμβββββββ          
                   ΪχχχχΧβββββββββββββββββββθθθθΚ          
                  ·ϊβθβζ  Ϊθθβββββββββββββββμ ;όβΫ΅        
                   ·΅   ΅ΫΫΫΆΆθβββββββββθθΫ΅   ΅Ϋ΅         
                           ;ΣΆθββββΒΝρρρμ                  
                          ;ΣΆΆβββββββββββμ
      ▄∞∞∞∞∞▄, ╒∞∞▄   ∞∞▄ ▄∞∞∞∞∞∞▄   ,▄∞∞∞∞▄      ▄∞∞4▄  ╒∞∞∞∞∞∞∞▄,
     ▐▄ ═▄▄▄ ▐█▐ ,▀  j' █▌█  ▄▄▄ ▀█▌█▀ ╓▄▄  ▀▄  ¡█  , ▐█ ▐▄▄▄  ▄▄██
     ▐▄ `'""▀██▐  █▌ j  █▌█  `"" ▄█▌█ ▐█▀`▀▄██' M  $██  █, `█ ▐█```
     j▀▀███▌ ▐█▐  ▀▌▄█  ▀▀█ ▐███  █▌▄ ▀█▄▄▀ ▐█M▀.       ▀█▄.▀ J▀
     ╚▄,,¬¬⌐▄█▌ ▀▄,,, ▄██ █,,,,,▓██▌ ▀▄,,,,▄█╩j▌,██▀▀▀▀▌,█▌`█,▐█
       ▀▀▀▀▀▀▀    ▀▀▀▀▀▀ ""▀▀▀▀▀▀      ▀▀▀""`  ▀▀▀     ▀▀▀   ▀▀▀
                    ΅qΆΆΆΆβββββββββββββββββββββΡ΅  
                       ΫθΆΆΆββββββββββββββββΡ΅         
                           ΅ΫΫΫ΅ΝNNΝΫΫΫΐ΅Ϋ      
                          v{1.3.0#dev}@duty1g

[07:43:51][INF]: Starting enumeration for hackerone.com
[07:43:51][INF]: Loaded 19 modules
https://mta-sts.managed.hackerone.com [Page not found · GitHub] [Fastly,GitHub Pages]
https://www.hackerone.com [HackerOne | #1 Trusted Securit] [Google Tag Manager,Drupal,HSTS,Cloudflare,Pantheon,PHP,Fastly,MariaDB,Nginx]
https://gslink.hackerone.com [404 Not Found] [Nginx,Amazon CloudFront,Amazon Web Services]
https://mta-sts.hackerone.com [Page not found · GitHub] [GitHub Pages,Fastly]
https://api.hackerone.com [HackerOne API] [Algolia,HSTS,Cloudflare]
http://resources.hackerone.com [Sorry, no Folders found.] [Amazon Web Services]
https://hackerone.com [HackerOne | #1 Trusted Securit] [Cloudflare,Drupal,Google Tag Manager,HSTS,Pantheon,PHP,Fastly,MariaDB,Nginx]  
https://mta-sts.forwarding.hackerone.com [Page not found · GitHub] [Fastly,GitHub Pages]
https://docs.hackerone.com [HackerOne Help Center] [Cloudflare,HSTS]
https://support.hackerone.com [Sign into : HackerOne Support ] [HSTS,Envoy,Cloudflare,HTTP/3]
[07:44:00][INF]: Completed with 23 subdomains for hackerone.com in 9 seconds 58 milliseconds
  • Canalizar dominios desde un archivo con resolución IP y códigos de estado HTTP:
cat domains.txt | python3 subcat.py -ip -sc
  • Ejecutar con modo de búsqueda inversa (requiere rango IP):
python3 subcat.py -d example.com --scope 8.8.8.0/24 -r
  • Escanear un dominio y guardar la salida en un archivo (modo detallado):
python3 subcat.py -d hackerone.com -o output.txt -v
  • Integrar con HTTPx para procesamiento posterior o cualquier otra herramienta:
echo hackerone.com | python3 subcat.py -silent -td -title | httpx -silent
  • Escanear múltiples dominios desde una lista:
python3 subcat.py -l domains.txt
  • Selección de módulos personalizada:
python3 subcat.py -d example.com -s dnsdumpster,virustotal,urlscan -es digitalyama,anubis

Módulos disponibles

SubCat actualmente admite los siguientes módulos para el descubrimiento pasivo de subdominios:

  • dnsdumpster
  • digitalyama
  • virustotal
  • binaryedge
  • chaos
  • bevigil
  • dnsarchive
  • netlas
  • wayback
  • shodan
  • securitytrails
  • urlscan
  • crtsh
  • threatcrowd
  • anubis
  • censys
  • alienvault
  • hackertarget
  • certspotter

La arquitectura modular de SubCat está diseñada para la flexibilidad y la facilidad de extensión. Si tienes una idea para un nuevo módulo o quieres contribuir con mejoras, no dudes en enviar una solicitud de extracción (pull request). ¡Tus contribuciones ayudan a que SubCat sea aún mejor!

Ver código fuente

My Cart Close (×)

Tu carrito está vacío
Ver tienda