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/dnschef

Overview

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)
  • --log is 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)
  • --log est 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