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
WAREED-DNS-C2 — DNS-only Command-and-Control-Framework mit Windows-Agent, Payload-Generierung, Remote-Shell-Ausführung, Shellcode-Injektion und SOCKS5-Proxy-Unterstützung für verdeckte Operationen. | Kitploit
Tools/GitHubGitHub/faisal-p27/wareed-dns-c2
Payload-GenerierungIDS/IPS-UmgehungPost-ExploitationCommand and ControlRemote-Access-ToolPayload-Entwicklung
GitHubfaisal-p27/wareed-dns-c2

WAREED-DNS-C2

DNS-only Command-and-Control-Framework mit Windows-Agent, Payload-Generierung, Remote-Shell-Ausführung, Shellcode-Injektion und SOCKS5-Proxy-Unterstützung für verdeckte Operationen.

Repository anzeigen
12634vor 1 JahrVon 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

Wareed DNS C2

enter image description here

WAREED ist ein Command-and-Control-System (C2), das das DNS-Protokoll für sichere Kommunikation zwischen Server und Ziel nutzt. Es ist darauf ausgelegt, die Kommunikation zu minimieren und den Datenaustausch zu begrenzen. Es soll als First-Stage-C2 auf Maschinen persistieren, die keinen Internetzugang über HTTP/HTTPS haben, auf denen DNS jedoch erlaubt ist.

entwickelt von : @Fsalabduljabbar

Wie es funktioniert

enter image description here

Warum Wareed?

Während viele Command-and-Control-Frameworks (C2) DNS als Transportprotokoll unterstützen, sind sie überwiegend für HTTP/HTTPS ausgelegt. Die Umstellung dieser Frameworks auf DNS führt oft zu langsameren und weniger stabilen Abläufen. Da ich zahlreiche Herausforderungen mit der Instabilität dieser Frameworks für DNS-Transaktionen erlebt habe, sah ich mich gezwungen, eine Lösung zu entwickeln, die speziell auf DNS zugeschnitten ist. Das Ergebnis ist Wareed – ein reines DNS-C2-Framework. Diese spezielle Ausrichtung führt zu einem stabileren und effizienteren Betrieb und macht Wareed schneller und zuverlässiger als herkömmliche C2-Frameworks, die nicht in erster Linie für DNS konzipiert sind. Damit ist Wareed eine ideale Wahl für Umgebungen, in denen DNS-Verkehr erlaubt ist, HTTP/HTTPS jedoch eingeschränkt ist.

Über

Es wurde unter Verwendung von drei Programmiersprachen entwickelt:

  1. Hams-Agent in C
  2. Wareed-Teamserver in Golang
  3. Ather-GUI-Client in C++

Erklärung der Namen:

Hams (همس) bedeutet „Flüstern“ auf Arabisch

Wareed (وريد) bedeutet „Vene“ auf Arabisch

Ather (أثر) bedeutet „Spur“ auf Arabisch

Demo

IMAGE ALT TEXT HERE

Voraussetzungen

  1. Gültiger kontrollierter Domainname
  2. Kali Linux 2023+ oder Ubuntu 23+
  3. Ein Redirector (Ubuntu) zur Verarbeitung von DNS-Verbindungen (optional)

Installation

Schritt 1: Klonen Sie das Wareed-Repository:

root@kitploit:~
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git

Schritt 2: Führen Sie das Setup-Skript aus:

root@kitploit:~
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup

Wenn der Kompilierungsprozess erfolgreich abgeschlossen wird, werden in demselben Verzeichnis zwei ausführbare Dateien erzeugt:

  • WareedServer: Diese Datei dient als ausführbare Datei für den Teamserver
  • Ather: Diese Datei ist die ausführbare Datei für den GUI-Client.

Außerdem wird der Kompilierungsstatus des Agents überprüft. Bei Erfolg wird bestätigt, dass der Agent für die Bereitstellung und den Betrieb bereit ist, was für die Funktionalität des Wareed-C2 entscheidend ist.

Konfiguration

root@kitploit:~
{
    "magic_value": "cdn",
    "domains": ["2.example.net"],
    "listener_port": "111",
    "sleep": 5,
    "jitter": 50,
    "lookup_delay": 5,
    "default_dns_server": "1.1.1.1"
}
  • magic_value: Eine eindeutige Kennung, die vom C2 verwendet wird.
  • domains: Ein Array von Domainnamen, die vom C2 für die DNS-Kommunikation verwendet werden.
  • listener_port: Die Portnummer, auf der der DNS-Teamserver auf eingehende Verbindungen lauscht.
  • sleep: Die Basisverzögerung zwischen Aufgabenanforderungen.
  • jitter: Ein Prozentsatz, der den Schlafintervallen Zufälligkeit hinzufügt, um Verkehrsmuster zu verschleiern.
  • lookup_delay (deaktiviert): Die Verzögerung vor der Durchführung einer DNS-Abfrage, um DNS-Abfragen zu takten und eine Erkennung zu vermeiden.
  • **default_dns_server **: Der DNS-Server, der für den Agenten zur Verwendung festgelegt ist, falls das lokale DNS nicht antwortet.

magic_value: Die Länge muss 3 betragen.

DNS-Infrastruktur

DNS-Einrichtung: Für den Betrieb von Wareed ist ein gültiger Domainname unerlässlich. Nach dem Erwerb einer Domain müssen zwei DNS-Einträge konfiguriert werden, die auf den Redirector zeigen:

  1. A-Eintrag: Dieser sollte so eingerichtet werden, dass er auf die IP-Adresse des Redirectors zeigt.
  2. NS-Eintrag: Dieser muss auf den zuvor erstellten A-Eintrag zeigen.

example

Infrastruktur

Redirector-Einrichtung: Der Redirector verarbeitet eingehenden DNS-Verkehr auf Port 53 und leitet ihn an den Teamserver weiter. Um dies zu erreichen, führen Sie die folgenden iptables-Befehle auf der Redirector-Maschine (R1) aus:

DNS-Anfragen akzeptieren:
root@kitploit:~
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT

Dieser Befehl konfiguriert die Firewall so, dass eingehende UDP-Pakete auf Port 53 akzeptiert werden, dem Standardport für DNS-Anfragen.

DNS-Verkehr umleiten:
root@kitploit:~
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]

Ersetzen Sie [TeamServer IP] durch die tatsächliche IP-Adresse Ihres Teamservers und [teamserver listener port] durch die Portnummer, auf der Ihr Teamserver lauscht. Dieser Befehl leitet den gesamten auf Port 53 eingehenden Verkehr an die angegebene IP-Adresse und den Port des Teamservers weiter.

enter image description here

Wareed ausführen

Wareed-Teamserver

Um den Wareed-Teamserver zum ersten Mal zu starten, müssen Sie die Konfigurationsdatei sowie das Client-Passwort und den Port angeben, auf dem der Client lauschen wird. Verwenden Sie den folgenden Befehl, um den Wareed-Teamserver auszuführen:

root@kitploit:~
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
  • [Client Password]: Ersetzen Sie diesen Platzhalter durch das Passwort, mit dem sich Clients am Server authentifizieren.
  • [Client Port Listener]: Ersetzen Sie dies durch die Portnummer, auf der der Teamserver auf eingehende Verbindungen vom Client lauscht.
  • [Path to configuration file]: Geben Sie den vollständigen Pfad zur ursprünglichen Konfigurationsdatei an. Bei späteren Ausführungen wird diese Konfiguration aus der Datenbank geladen, und es ist nicht erforderlich, sie erneut anzugeben.

Ather-GUI-Client

Um den Ather-GUI-Client zu starten, führen Sie einfach

root@kitploit:~
./Ather

Nach Ausführung des Befehls erscheint ein neues Fenster mit einer Anmeldeseite.

enter image description here

Anmeldedaten: Auf der angezeigten Anmeldeseite:

  • Username: Geben Sie den Benutzernamen ein.
  • Password: Geben Sie das entsprechende Passwort ein, wie es in der Befehlszeile des Teamservers konfiguriert wurde.
  • Port: Geben Sie die Portnummer ein, auf der der Teamserver auf Verbindungen lauscht, wie in der Befehlszeile des Teamservers konfiguriert.
  • IPAddress: Geben Sie die Teamserver-Adresse ein.

Hauptfenster von Wareed: enter image description here

Neues Payload erzeugen

Um mit dem Ather-GUI-Client ein neues Payload zu erzeugen, gehen Sie wie folgt vor:

  1. Zur Payload-Erzeugung navigieren:

    • Öffnen Sie den GUI-Client.
    • Navigieren Sie in der Menüleiste zu Payload > Generate > Windows. Durch Auswahl dieser Option öffnet sich ein neues Fenster, das speziell für die Payload-Erzeugung ausgelegt ist.

enter image description here

  1. Payload-Typ auswählen: Wareed ermöglicht die Erzeugung von zwei Arten von Payloads: - EXE: Ein ausführbares Dateiformat, das sich unkompliziert bereitstellen lässt. - DLL: Eine dynamische Linkbibliothek, die auf verschiedene Weise verwendet werden kann. -

DLL-Payload-Optionen:

  1. Export-Funktion: Erstellt eine DLL mit bestimmten Funktionen, die bei Ausführung die Agentenfunktionalität auslösen.
  2. Prozessanbindung: Erzeugt eine DLL, die beim Anhängen an einen Prozess das Payload sofort aktiviert.

Sitzung

Nach der Erzeugung eines neuen Payloads wird automatisch eine neue Gast-Sitzung beim Teamserver registriert. Dieser Registrierungsprozess stellt sicher, dass nur diese bestimmte Sitzung eine Verbindung zum Teamserver herstellen kann. Zur Authentifizierung und Autorisierung der Sitzung werden eine eindeutige Kennung und ein „magic value“ verwendet. Dieser Mechanismus gewährleistet eine sichere und kontrollierte Kommunikation zwischen dem neu erzeugten Payload und dem Teamserver. enter image description here

Payload ausführen

Nach der Ausführung des Payloads auf einem Windows-Rechner beginnt dieser, DNS-Abfragen zu erzeugen, um sich beim Teamserver zu registrieren. Dieser Registrierungsprozess erfolgt innerhalb von Sekunden und umfasst in der Regel die Erzeugung von 3 bis 5 DNS-Abfragen. enter image description here

Interagieren

Um mit einer Sitzung zu interagieren, klicken Sie einfach mit der rechten Maustaste auf die gewünschte Sitzung und wählen Sie „Interact“ aus dem Kontextmenü. Dadurch wird ein neuer Tab mit einer Terminal-Oberfläche geöffnet. In diesem Terminal können Sie Befehle ausführen. enter image description here

Befehle

Hinweis: Der Befehl inject ist unkompliziert, wird jedoch häufig von Sicherheitskontrollen erkannt. Um die Tarnung zu verbessern, sollten Sie Ihre eigene Injection-Technik implementieren. Ändern Sie den Injection-Code in Agent/Source/Core/Tasks/Modules/Injection.c. Hier ist eine grundlegende Vorlage zum Anpassen der Injection-Funktion:

root@kitploit:~
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
	// Add your injection technique here.
	// You will receive the shellcode in [unsigned char *ShellCode] and shellcode size in [nt size]
	// and the process ID in [int ProcessID].
 }

Datenbank bereinigen

Um die Datenbank zu bereinigen, führen Sie einfach den folgenden Befehl in Ihrem Terminal aus:

root@kitploit:~
./Run clean

Weiteres Vorgehen

Auch wenn ich derzeit keine unmittelbaren Pläne habe, weiter Zeit in das Wareed-Projekt zu investieren, war es eine unglaubliche Lernreise, und ich habe es sehr genossen. Ich freue mich, ankündigen zu können, dass ich ein neues großes Projekt, THAWD BAS, starten möchte. Weitere Informationen finden Sie unter Thawd.io.

Wenn Sie über Entwicklerkenntnisse verfügen und daran interessiert sind, zu Wareed beizutragen, finden Sie hier einige Möglichkeiten:

  1. Entwickeln Sie ein Stager-Payload mit DNS: Es gibt ein großartiges Projekt von @C5pider, das eine Shellcode-Vorlage bereitstellt und sich hervorragend als Ausgangspunkt eignet. Schauen Sie sich Stardust auf GitHub an.
  2. COFF-Loader und Integration hinzufügen: Die Integration eines COFF-Loaders (Common Object File Format) in das Wareed-Framework kann dessen Fähigkeiten erheblich erweitern, indem das dynamische Laden und Ausführen von Binärmodulen ermöglicht wird, was die operative Flexibilität erhöht. Für Entwickler, die diese Funktion implementieren möchten, bieten Ressourcen wie Sector7 wertvolle Einblicke in die Funktionalität von COFF-Loadern, und das Open-Source-Projekt CoffeeLdr von @C5pider bietet ein praktisches Implementierungsbeispiel.

Besonderer Dank

Diese Arbeit wäre ohne die Beiträge mehrerer herausragender Open-Source-Projekte nicht möglich gewesen:

Havoc von - @C5pider

DNSStager von - @mohammadaskar2

Boomerang von - @NinjaParanoid

Socks5Server von earthquake

delete-self-poc von - @LloydLabs

Tool herunterladen
CommandBeschreibungUsageExample
helpZeigt die Hilfemeldung des angegebenen Befehls an[command]help shell
sleepLegt die Verzögerung mit Jitter fest[delay] [jitter]sleep 10 50
shellführt cmd.exe-Befehle aus und liefert die Ausgabe[commands]shell dir c:\windows\system32 (bitte nicht ausführen)
injectinjiziert Shellcode in einen entfernten Prozess[pid] [shellcode_path]inject 1234 /path/to/shellcode.bin
proxystartstartet einen SOCKS5-Proxy[callback_host] [agent_connect_port] [proxy_listener_port]proxystart example.com 443 1080
proxystopstoppt einen SOCKS5-Proxy[callback_host] [agent_connect_port] [proxy_listener_port]proxystop example.com 443 1080
adddomainfügt eine neue Callback-Domain hinzu[domain_name]adddomain example.com
deldomainlöscht eine Callback-Domain[domain_name]deldomain example.com
listdomainlistet alle aktiven Callback-Domains auflistdomain
killBeendet den aktuellen Prozess.[yes]kill yes
wipeBeendet und löscht den aktuellen Prozess.[yes]wipe yes
selfdelLöscht den aktuellen Prozess von der Festplatte.[yes]selfdel yes
tasklistListet alle in der Warteschlange befindlichen Aufgaben auftasklist
taskdelLöscht eine bestimmte Aufgabe anhand der ID[task id]taskdel 123
taskscleanLöscht alle Aufgaben in der Warteschlange[yes]tasksclean yes
clearleert den Terminalbildschirmclear