
DNSChef - DNS-Proxy für Penetrationstester und Malware-Analysten
| | version 0.4 | | / _|
| | __ ___ | | __| |
/ ` | ' / |/ | ' \ / _ \ |
| (| | | | _ \ (| | | | __/ |
_,|| ||/_|| ||___||
D O K U M E N T A T I O N
DNSChef ist ein hochkonfigurierbarer DNS-Proxy für Penetrationstester und Malware-Analysten. Ein DNS-Proxy (auch "Fake DNS") wird unter anderem für die Analyse des Netzwerkverkehrs von Anwendungen eingesetzt. Beispielsweise kann ein DNS-Proxy verwendet werden, um Anfragen für "badguy.com" zu fälschen und auf eine lokale Maschine zu leiten, anstatt auf einen echten Host im Internet.
Es gibt mehrere DNS-Proxies auf dem Markt. Die meisten leiten einfach alle DNS-Abfragen an eine einzelne IP-Adresse weiter oder implementieren nur rudimentäre Filterung. DNSChef wurde im Rahmen eines Penetrationstests entwickelt, bei dem ein konfigurierbareres System benötigt wurde. DNSChef ist daher eine plattformübergreifende Anwendung, die Antworten auf Basis von einschließenden und ausschließenden Domain-Listen fälschen kann, mehrere DNS-Eintragstypen unterstützt, Domains mit Platzhaltern abgleicht, echte Antworten für nicht passende Domains weiterleitet, externe Konfigurationsdateien definiert, IPv6 und viele weitere Funktionen bietet. Eine detaillierte Erklärung der einzelnen Funktionen und Anwendungsempfehlungen finden Sie weiter unten.
Der Einsatz eines DNS-Proxys wird in Situationen empfohlen, in denen eine Anwendung nicht gezwungen werden kann, einen anderen Proxy-Server direkt zu verwenden. Beispielsweise ignorieren einige mobile Anwendungen die HTTP-Proxy-Einstellungen des Betriebssystems vollständig. In diesen Fällen ermöglicht der Einsatz eines DNS-Proxy-Servers wie DNSChef, die Anwendung auszutricksen und Verbindungen an das gewünschte Ziel weiterzuleiten.
Bevor Sie DNSChef verwenden können, müssen Sie Ihren Rechner so konfigurieren, dass er einen DNS-Nameserver mit dem laufenden Tool verwendet. Je nach verwendetem Betriebssystem haben Sie mehrere Optionen:
Linux – Bearbeiten Sie /etc/resolv.conf und fügen Sie eine Zeile ganz oben mit Ihrem Verkehrsanalyse-Host ein (z. B. "nameserver 127.0.0.1" bei lokalem Betrieb). Alternativ können Sie eine DNS-Serveradresse mit Tools wie dem Network Manager hinzufügen. Öffnen Sie im Network Manager die IPv4-Einstellungen, wählen Sie Automatisch (DHCP) Adressen nur oder Manuell aus dem Dropdown-Menü Methode und bearbeiten Sie das Textfeld DNS-Server, um eine IP-Adresse mit laufendem DNSChef einzugeben.
Windows – Wählen Sie Netzwerkverbindungen aus der Systemsteuerung aus. Wählen Sie anschließend eine der Verbindungen (z. B. "LAN-Verbindung"), klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Wählen Sie im neu erscheinenden Dialogfeld Internetprotokoll (TCP/IP) aus und klicken Sie auf Eigenschaften. Wählen Sie schließlich das Optionsfeld Folgende DNS-Serveradressen verwenden und geben Sie die IP-Adresse des Rechners mit laufendem DNSChef ein. Bei lokalem Betrieb geben Sie beispielsweise 127.0.0.1 ein.
OS X – Öffnen Sie Systemeinstellungen und klicken Sie auf das Netzwerk-Symbol. Wählen Sie die aktive Schnittstelle aus und tragen Sie das Feld DNS-Server ein. Wenn Sie Airport verwenden, müssen Sie auf den Erweitert...-Button klicken und die DNS-Server dort bearbeiten. Alternativ können Sie /etc/resolv.conf bearbeiten und einen gefälschten Nameserver ganz oben einfügen (z. B. "nameserver 127.0.0.1").
iOS – Öffnen Sie Einstellungen und wählen Sie Allgemein aus. Wählen Sie dann WLAN und klicken Sie auf den blauen Pfeil rechts neben einem aktiven Zugangspunkt aus der Liste. Bearbeiten Sie den DNS-Eintrag, um auf den Host mit laufendem DNSChef zu verweisen. Stellen Sie sicher, dass Sie die Mobilfunkschnittstelle (falls vorhanden) deaktiviert haben.
Android – Öffnen Sie Einstellungen und wählen Sie Drahtlos & Netzwerke aus. Tippen Sie auf WLAN-Einstellungen und wählen Sie Erweitert, nachdem Sie die Optionen-Taste auf dem Telefon gedrückt haben. Aktivieren Sie das Kontrollkästchen Statische IP verwenden und konfigurieren Sie einen benutzerdefinierten DNS-Server.
Wenn Sie die DNS-Einstellungen des Geräts nicht manuell ändern können, haben Sie dennoch mehrere Optionen, die Techniken wie ARP-Spoofing, Rogue DHCP und andere kreative Methoden umfassen.
Schließlich müssen Sie einen gefälschten Dienst konfigurieren, auf den DNSChef alle Anfragen umleiten soll. Wenn Sie beispielsweise Web-Traffic abfangen möchten, müssen Sie entweder einen separaten Webserver auf Port 80 starten oder einen Web-Proxy (z. B. Burp) einrichten, um den Traffic abzufangen. DNSChef leitet die Anfragen an Ihren Proxy/Server-Host mit ordnungsgemäß konfigurierten Diensten weiter.
DNSChef ist eine plattformübergreifende Anwendung, die in Python entwickelt wurde und auf den meisten Plattformen mit einem Python-Interpreter läuft. Sie können die mitgelieferte ausführbare Datei dnschef.exe verwenden, um es auf Windows-Hosts ohne Installation eines Python-Interpreters auszuführen. Diese Anleitung konzentriert sich auf Unix-Umgebungen; alle unten aufgeführten Beispiele wurden jedoch auch unter Windows getestet.
Lassen Sie uns einen ersten Eindruck von DNSChef mit seiner grundlegenden Überwachungsfunktion gewinnen. Führen Sie den folgenden Befehl als root aus (erforderlich, um einen Server auf Port 53 zu starten):
# ./dnschef.py
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] DNSChef started on interface: 127.0.0.1
[*] Using the following nameservers: 8.8.8.8
[*] No parameters were specified. Running in full proxy mode
Ohne Parameter läuft DNSChef im vollständigen Proxy-Modus. Das bedeutet, dass alle Anfragen einfach an einen vorgelagerten DNS-Server (standardmäßig 8.8.8.8) weitergeleitet und an den anfragenden Host zurückgegeben werden. Beispielsweise fragen wir einen "A"-Eintrag für eine Domain ab und beobachten die Ergebnisse:
$ host -t A thesprawl.org
thesprawl.org has address 108.59.3.64
DNSChef gibt die folgende Log-Zeile aus, die Zeit, Quell-IP-Adresse, Typ des angeforderten Eintrags und vor allem den abgefragten Namen zeigt:
[23:54:03] 127.0.0.1: proxying the response of type 'A' for thesprawl.org
Dieser Modus ist nützlich für einfache Anwendungsüberwachung, wenn Sie herausfinden müssen, welche Domains eine Anwendung für ihre Kommunikation verwendet.
DNSChef unterstützt vollständig IPv6, das mit den Flags -6 oder --ipv6 aktiviert werden kann. Es funktioniert genau wie der IPv4-Modus, mit der Ausnahme, dass das Standard-Hör-Interface auf ::1 und der Standard-DNS-Server auf 2001:4860:4860::8888 geändert wird. Hier ist eine Beispielausgabe:
# ./dnschef.py -6
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] Using IPv6 mode.
[*] DNSChef started on interface: ::1
[*] Using the following nameservers: 2001:4860:4860::8888
[*] No parameters were specified. Running in full proxy mode
[00:35:44] ::1: proxying the response of type 'A' for thesprawl.org
[00:35:44] ::1: proxying the response of type 'AAAA' for thesprawl.org