Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tko-subs — Una herramienta que puede ayudar a detectar y tomar el control de subdominios con registros DNS muertos. | Kitploit
Herramientas/GitHubGitHub/anshumanbh/tko-subs
Análisis de VulnerabilidadesPruebas de PenetraciónSeguridad en la NubeEnumeración de SubdominiosAnálisis de DNS
GitHubanshumanbh/tko-subs

tko-subs

Una herramienta que puede ayudar a detectar y tomar el control de subdominios con registros DNS muertos.

Ver Repositorio
776137hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

tko-subs

Esta herramienta permite:

  • Verificar si un subdominio puede ser tomado porque tiene:

    • un CNAME colgante que apunta a un proveedor de CMS (Heroku, Github, Shopify, Amazon S3, Amazon CloudFront, etc.) que puede ser tomado.
    • un CNAME colgante que apunta a un nombre de dominio inexistente
    • uno o más registros NS incorrectos/con errores tipográficos que apuntan a un servidor de nombres que puede ser tomado por un atacante para obtener control de los registros DNS del subdominio
  • Para tomar realmente esos subdominios proporcionando una bandera -takeover. Actualmente, la toma solo es compatible con Github Pages y Heroku Apps y, por defecto, la funcionalidad de toma está desactivada.

  • Para especificar tus propios proveedores de CMS y verificarlos mediante el archivo providers-data.csv. En ese archivo, mencionarías el nombre del CMS, su valor CNAME, la cadena que deseas buscar y si solo funciona sobre HTTP o no. Échale un vistazo para ver algunos ejemplos.

Aviso: ¡NO SEAS UN IMBÉCIL!

No hace falta mencionarlo, usa esta herramienta con mucho, mucho cuidado. Los autores no serán responsables de ninguna consecuencia. Por defecto, esta herramienta no permite la toma de subdominios. Si deseas hacerlo, solo especifica la bandera -takeover.

Requisitos previos

Necesitamos tener GO instalado. Una vez que tengas GO, solo escribe go get github.com/anshumanbh/tko-subs para descargar la herramienta.

Una vez descargada la herramienta, escribe tko-subs -h.

Lo siguiente que debemos hacer es obtener la siguiente información:

  • Token de acceso personal de Github - Asegúrate de que este token tenga permisos para crear repositorios, referencias, contenidos, etc. Puedes crear este token aquí - https://github.com/settings/tokens
  • Nombre de usuario y clave API de Heroku
  • Nombre de la aplicación Heroku - Puedes crear una aplicación estática en Heroku con lo que quieras que se muestre en su página de inicio siguiendo las instrucciones aquí - https://gist.github.com/wh1tney/2ad13aa5fbdd83f6a489. Una vez que crees esa aplicación, usa ese nombre en la bandera (ver más abajo). Usaremos esa aplicación para tomar el dominio (con el CNAME colgante a otra aplicación de Heroku).

NOTA - Solo necesitas estos valores si deseas tomar subdominios. Por defecto, no son requeridos.

Paquetes Go necesarios para compilar.

root@kitploit:~
go get github.com/bgentry/heroku-go
go get github.com/gocarina/gocsv
go get github.com/google/go-github/github
go get github.com/olekukonko/tablewriter
go get golang.org/x/net/publicsuffix
go get golang.org/x/oauth2
go get github.com/miekg/dns

¿Cómo ejecutar?

Una vez que tengas todo instalado, cd al directorio y escribe: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv

Si también deseas tomar, el comando sería: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv -takeover -githubtoken=<github-token> -herokuusername=<heroku-username> -herokuapikey=<heroku-api-key> -herokuappname=<heroku-app-name>

Si solo deseas verificar un solo dominio, escribe: tko-subs -domain <domain-name>

Si solo deseas verificar múltiples dominios, escribe: tko-subs -domain <domain-name-1>,<domain-name-2>

Por defecto:

  • la bandera domains está establecida en domains.txt
  • la bandera data está establecida en providers-data.csv
  • la bandera output está establecida en output.csv
  • la bandera takeover no está establecida, por lo que no hay toma por defecto
  • la bandera domain NO está establecida, por lo que siempre verificará todos los dominios mencionados en el archivo domains.txt. Si se menciona la bandera domain, solo verificará ese dominio e ignorará el archivo domains.txt, incluso si está presente
  • la bandera threads está establecida en 5

Por lo tanto, simplemente ejecutar tko-subs se ejecutará con los valores predeterminados mencionados anteriormente.

¿Cómo está formateado providers-data.csv?

name,cname,string,http

  • name: El nombre del proveedor (ej. github)
  • cname: El CNAME usado para mapear un sitio web al contenido del proveedor (ej. github.io)
  • string: El mensaje de error devuelto para un subdominio no reclamado (ej. "There isn't a GitHub Pages site here")
  • http: Si se debe usar http (no https, que es el predeterminado) para conectarse al sitio (true/false)

¿Cómo está formateada la salida?

Domain,CNAME,Provider,IsVulnerable,IsTakenOver,Response

  • Domain: El dominio verificado
  • CNAME: El CNAME del dominio
  • Provider: El proveedor que se encontró que el dominio estaba usando
  • IsVulnerable: Si se encontró que el dominio era vulnerable o no (true/false)
  • IsTakenOver: Si el dominio fue tomado o no (true/false)
  • Response: El mensaje contra el que se verificó el subdominio

Si se encuentra un registro DNS muerto, Provider se deja vacío. Si se encuentra un servidor de nombres con mal comportamiento, Provider y CNAME se dejan vacíos

¿Qué está pasando bajo el capó?

Esto iterará sobre todos los dominios (de forma concurrente usando GoRoutines) en el archivo subdomains.txt y:

  • Verificar si tienen un servidor de nombres autoritativo con mal comportamiento; si es así, marcamos ese dominio como vulnerable.
  • Verificar si tienen registros CNAME colgantes, también conocidos como registros DNS muertos; si es así, marcamos ese dominio como vulnerable.
  • Si un subdominio pasa estas dos pruebas, intenta hacer curl a ellos y obtener una respuesta, y luego ver si esa respuesta coincide con alguna de las cadenas de proveedores de datos mencionadas en el archivo providers-data.csv.
  • Si la respuesta coincide, marcamos ese dominio como vulnerable.
  • A continuación, dependiendo de si se menciona la bandera takeover o no, intentará tomar ese subdominio vulnerable.
  • Por ejemplo, para tomar una página de Github, el código:
    • Creará un repositorio
    • Creará una rama gh-pages en ese repositorio
    • Subirá CNAME e index.html a la rama gh-pages en ese repositorio. Aquí, CNAME contiene el dominio que debe ser tomado. index.html contiene el texto This domain is temporarily suspended que se mostrará una vez que el dominio sea tomado.
  • De manera similar, para las aplicaciones de Heroku, el código:
    • Agregará el dominio colgante a tu aplicación de Heroku (cuyo nombre proporcionarás en el archivo .env)

Trabajo futuro

  • Tomar el nombre del CMS y la expresión regular del usuario o del archivo .env y luego engancharlos automáticamente en la herramienta para poder encontrarlos. HECHO
  • Agregar tomas para más CMS
  • Agregar más proveedores de CMS

Créditos

  • Gracias a Luke Young (@TheBoredEng) por ayudarme con la librería go-github.
  • Gracias a Frans Rosen (@fransrosen) por ayudarme a entender los detalles técnicos requeridos para algunas de las tomas.
  • Gracias a Mohammed Diaa (@mhmdiaa) por tomarse el tiempo para implementar la funcionalidad de datos del proveedor y poner en marcha el código.
  • Gracias a high-stakes por una muy necesaria actualización del código.

Registro de cambios

5/27

  • Se agregó un nuevo Dockerfile reduciendo el tamaño de la imagen
  • Se agregó un archivo de muestra domains.txt para probar
  • mhmdiaa agregó la lógica para las tomas de DNS muertos. Documentación actualizada. ¡Muchas gracias!

11/6

  • high-stakes emitió un PR con un montón de código nuevo que corrige algunos errores y hace el código más limpio

9/22

  • Se agregó una bandera opcional para verificar un solo dominio
  • Se hizo más fácil de instalar y ejecutar

6/25

  • Se hizo el código mucho más rápido implementando goroutines
  • En lugar de verificar usando la función LookupCNAME de los paquetes net de Golang, se hizo para usar solo dig ya que eso también da registros DNS muertos. ¡Más superficie de ataque!!
Descargar herramienta
  • ¡Y eso es todo!