
Herramienta de enumeración de subdominios, paquetes DNS asíncronos, usa pcap para escanear 1600,000 subdominios en 1 segundo
English | 中文
KSubdomain es una herramienta de fuerza bruta de subdominios basada en tecnología sin estado, que ofrece una velocidad de escaneo sin precedentes y un consumo de memoria extremadamente bajo. Utiliza sockets raw para operar directamente el adaptador de red, evitando la pila de protocolos del kernel del sistema, y cuenta con un mecanismo confiable de reenvío de tabla de estados para garantizar la integridad de los resultados. Compatible con Windows, Linux y macOS, es la herramienta preferida para la detección masiva de activos DNS.
--interface repetido para múltiples tarjetas de red, sumando ancho de banda y utilizando múltiples IPs de salidaEnumStream/VerifyStream para procesar resultados en tiempo realPrueba con CPU de 4 núcleos, ancho de banda de 5M y diccionario de 100.000 entradas:
| Herramienta | Modo | Tiempo | Éxitos |
|---|---|---|---|
| KSubdomain | envío por tarjeta pcap | ~30 seg | 1397 |
| massdns | pcap/socket | ~3 min 29 seg | 1396 |
| dnsx | socket | ~5 min 26 seg | 1396 |
Visite Releases para descargar la última versión para su sistema.
Instalación de dependencias:
libpcap-devgit clone https://github.com/boy-hack/ksubdomain.git
cd ksubdomain
# Se recomienda inyectar el número de versión mediante ldflags
go build -ldflags "-X github.com/boy-hack/ksubdomain/v2/pkg/core/conf.Version=v2.x.y" \
-o ksubdomain ./cmd/ksubdomain
O usar go install:
go install github.com/boy-hack/ksubdomain/v2/cmd/ksubdomain@latest
Nota: Requiere permisos de root /
CAP_NET_RAWpara ejecutarse (captura de paquetes con socket raw)
Uso:
ksubdomain [opciones globales] <comando> [opciones del comando]
Comandos:
enum, e Modo enumeración: fuerza bruta de subdominios en un dominio principal
verify, v Modo verificación: verifica si una lista de dominios resuelve
test Prueba la velocidad máxima de envío de la tarjeta de red local
device Muestra información de las tarjetas de red disponibles
help, h Muestra ayuda
Opciones globales:
--help, -h Muestra ayuda
--version, -v Imprime la versión
Verifica si la lista de dominios proporcionada tiene registros de resolución DNS.
Opciones:
--domain, -d Especifica un dominio (repetible)
--filename, -f Lee la lista de dominios desde un archivo
--stdin Lee desde la entrada estándar
--bandwidth, -b Límite de ancho de banda, ej. 5m, 10m, 100m (por defecto 3m)
--resolvers, -r Especifica servidores DNS (por defecto usa los incorporados)
--output, -o Ruta del archivo de salida
--format, -f Formato de salida: txt (por defecto), json, csv, jsonl
--silent, -s Modo silencioso, solo muestra dominios (sin banner ni logs)
--only-domain, --od Solo muestra el dominio, sin IP/registro
--retry Número de reintentos, -1 para reintentos infinitos (por defecto 3)
--timeout Timeout de consulta individual en segundos (por defecto 6)
--interface, -e Especifica el nombre de la interfaz (repetible, múltiples interfaces concurrentes)
--wildcard-filter Filtro de comodín: none (por defecto), basic, advanced
--predict Habilita el modo de predicción de subdominios
--quiet, -q No imprime resultados en pantalla (solo escribe en archivo)
--color, -c Salida con colores
# Verificar un solo dominio / múltiples dominios
./ksubdomain v -d www.example.com -d mail.example.com
# Leer desde archivo, guardar en txt
./ksubdomain v -f domains.txt -o output.txt
# Entrada por pipe, ancho de banda 10M, modo silencioso para canalizar a herramientas posteriores
cat domains.txt | ./ksubdomain v --stdin -b 10m -s --od | httpx -silent
# Filtro avanzado de comodín, salida en JSONL
./ksubdomain v -f domains.txt --wildcard-filter advanced --format jsonl -o output.jsonl
# Envío concurrente con múltiples interfaces (suma de ancho de banda)
./ksubdomain v -f domains.txt --interface eth0 --interface eth1
Realiza fuerza bruta de subdominios en el dominio especificado usando diccionarios y algoritmos de predicción.
Opciones:
--domain, -d Dominio principal objetivo (repetible)
--domain-list, --ds Archivo con múltiples dominios principales
--filename, -f Ruta del diccionario (por defecto usa el diccionario incorporado)
--use-ns-records Lee los registros NS del dominio y los agrega a los resolvedores DNS
(las demás opciones son iguales que en modo verify)
# Enumerar un solo dominio (usando diccionario incorporado)
./ksubdomain e -d example.com
# Especificar archivo de diccionario
./ksubdomain e -d example.com -f subdomains.txt -o result.txt
# Habilitar modo de predicción + filtro avanzado de comodín
./ksubdomain e -d example.com --predict --wildcard-filter advanced
# Enumeración por lotes de múltiples dominios principales
./ksubdomain e --domain-list roots.txt -b 10m --format jsonl -o result.jsonl
# Canalizar a httpx
./ksubdomain e -d example.com --od -s | httpx -silent
# Probar velocidad máxima de envío de la tarjeta de red
./ksubdomain test
# Ver tarjetas de red disponibles
./ksubdomain device
Sin necesidad de establecer --timeout manualmente, el motor ajusta dinámicamente los límites superior e inferior del timeout basándose en el RTT medido real (media móvil exponencial ponderada, EWMA α=0.125), reduciendo eficazmente los falsos negativos sin esperas innecesarias.
Repitiendo --interface se pueden usar varias tarjetas de red simultáneamente; múltiples goroutines compiten por el mismo domainChan, logrando un balance de carga natural:
./ksubdomain e -d example.com --interface eth0 --interface eth1 -b 20m
Al habilitar --predict, la herramienta predice posibles subdominios relacionados basándose en los ya descubiertos, aumentando la tasa de detección.