← retour aux outils back to tools

# 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