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
KDStab — BOF-Kombination von KillDefender und Backstab | Kitploit
Tools/GitHubGitHub/octoberfest7/kdstab
DefensivwerkzeugePrivilege EscalationExploit-FrameworksPost-ExploitationRed TeamingPayload-Entwicklung
GitHuboctoberfest7/kdstab

KDStab

BOF-Kombination von KillDefender und Backstab

Repository anzeigen
17036vor 3 JahrenVon 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

KDStab

28.06.2022: Microsoft hat einen Patch ausgerollt, der das Öffnen eines Handles zum MsMpEng.exe-Token verhindert. Daher funktioniert der KillDefender-Teil dieses Tools nicht mehr. Backstab sollte weiterhin funktionieren. Die Patch-ID ist unklar, möglicherweise funktioniert es auf älteren, nicht gepatchten Systemen. Verifiziert auf Win10 21H2 und Win11.

Dies ist eine kombinierte Beacon Object File-Implementierung von Yaxsers Backstab und pwn1shers KillDefender zur Verwendung mit Cobalt Strike.

image

Einleitung

KDStab ist ein Post-Exploitation-Tool, um Windows Defender auszuschalten (theoretisch könnte es auch für andere Lösungen funktionieren, wurde aber nicht getestet), sodass andere Post-Exploitation-Tools mit weniger Angst vor Erkennung verwendet werden können. Es nutzt Backstab und KillDefender, um dies zu erreichen, die beide bei Bedarf vom Cobalt Strike-Befehl kdstab aufgerufen werden.

KDStab wurde erfolgreich auf x64 Windows 10, Windows 11 und Server 2019 getestet.

KDStab erfordert Administrator- oder Systemzugriff.

Primäre Funktionen:

  1. Die Integrität eines Prozesses ermitteln
  2. Einem Prozess seine Privilegien entziehen und seine Integrität auf "Untrusted" setzen
  3. Einen PPL-geschützten Prozess beenden
  4. Die Handles eines PPL-geschützten Prozesses auflisten
  5. Ein bestimmtes Handle eines PPL-geschützten Prozesses schließen

Beispiele

Überprüfen der Integritätsstufe eines Prozesses

image

Einem Prozess seine Privilegien entziehen und sein Token auf "Untrusted" setzen

image

Ergebnis des /STRIP-Befehls

image

Einen PPL-geschützten Prozess beenden

image

Hintergrund

Ich bin kurz nach der Veröffentlichung auf pwn1shers KillDefender gestoßen und fand es großartig; zusätzlich dazu, dass MsMpEng.exe (Defender) nutzlos gemacht wird, bleibt der Prozess am Laufen, was aus OPSEC-Sicht wünschenswert erscheint (neben der Tatsache, dass das Standardverhalten des WinDefend-Dienstes darin besteht, MsMpEng.exe bei einem Fehler neu zu starten – etwas, das später nützlich sein wird).

Während es für ein Engagement großartig ist, Defender zu blenden, sind wir als Profis dafür verantwortlich, die Assets des Kunden in den Zustand zu versetzen, in dem wir sie vorgefunden haben. Außerdem möchten wir deren Systeme nicht wirklich anderen Akteuren aussetzen, nur weil wir Defender ausgeschaltet haben.

Das Problem ist, dass es schwierig ist, MsMpEng.exe wieder in einen funktionsfähigen Zustand zu versetzen. KillDefender funktioniert, indem es dem Zielprozess seine Privilegien entzieht (SeDebugPrivilege usw.) und seine Token-Integrität auf "Untrusted" setzt. Man kann das Token nicht einfach wieder auf System hochstufen und die Privilegien wiederherstellen; der Prozess muss beendet und eine neue Instanz gestartet werden. Natürlich ist MsMpEng.exe auch ein PsProtectedSignerAntimalware-Light-Prozess, sodass selbst als System der Prozess nicht einfach beendet werden kann. Frustrierenderweise wurde die TrustedInstaller-Gruppe kürzlich aus MsMpEng.exe entfernt (dazu gibt es andere Forschungen), wodurch diese seit Jahren bekannte Technik zum wirklichen Beenden des MsMpEng.exe-Prozesses (oder des WinDefend-Dienstes) unwirksam geworden ist. Daher scheint die einzig praktikable Option ein Neustart des Rechners zu sein, was bei Servern und DCs zu Problemen führen könnte.

Mit diesem Problem ausgestattet, begann ich mich umzusehen und fand schnell Yaxsers Backstab. Backstab ist in der Lage, PPL-geschützte Prozesse zu beenden, indem es den Treiber von ProcExp nutzt; dies ist ein von Microsoft signierter Treiber von Sysinternals, der zu unseren Gunsten arbeitet. Backstab führt jedoch einige OPSEC-unsichere Aktionen durch; es legt den Treiber auf die Festplatte ab und erstellt Registry-Schlüssel. Aber wenn Defender bereits blind ist… :).

Ich machte mich daran, beide Tools in das BOF-Format zu portieren, damit sie über ein Cobalt Strike Beacon verwendet werden können, ohne sie auf die Festplatte legen zu müssen (die ursprüngliche Backstab-Binary wurde zur Laufzeit von Defender blockiert).

Ich bin sowohl neu in C/C++ als auch im Schreiben von BOFs und habe während des Prozesses viel gelernt. Sie werden einige Inkonsistenzen im Code finden (wie zum Beispiel, dass Backstab_bof unter Linux mit gcc geschrieben und kompiliert wurde, während KillDefender_bof in Visual Studio geschrieben und kompiliert wurde), was auf meine Lernkurve während der Erstellung zurückzuführen ist. Ich habe jedoch umfangreiche Tests durchgeführt, um die Funktionalität sicherzustellen, und auch viele Sicherheitsvorkehrungen in das Aggressor-Skript eingebaut, um eine korrekte Verwendung und Eingabe für die BOFs zu gewährleisten. Ich hoffe, Sie finden dieses Tool nützlich.

Änderungen und Programmierhinweise:

Einige bemerkenswerte Änderungen wurden am Quellcode der Tools vorgenommen, und bestimmte programmatische Entscheidungen werden hier erwähnt:

  1. Der ProcExp-Treiber wird nicht mehr als Ressource gespeichert/geladen, sondern ist ein hartcodiertes Byte-Array in backstab_src/resource.c.

  2. Es gab mehrere Speicherlecks im ursprünglichen Backstab-Code, die ich gefunden und behoben habe.

  3. Der KillDefender-POC schlägt fehl, wenn der Benutzer nicht System ist. Ich habe einen Code-Abschnitt hinzugefügt, der den aktuellen Benutzer ermittelt und falls nötig System durch Imitation des Winlogon-Tokens erlangt.

  4. KillDefender wurde modifiziert, um Benutzern die Angabe des Zielprozesses zu ermöglichen; außerdem wurde ein "Check"-Modus hinzugefügt, um die Integritätsstufe eines Prozesses zu ermitteln (wodurch bestätigt werden kann, dass einem Prozess erfolgreich Privilegien und Integrität entzogen wurden).

  5. Backstab verwendet so viele verschiedene APIs und C-Aufrufe, dass Cobalt Strike nicht in der Lage war, alle dynamischen Funktionsauflösungen zu bewältigen – TrustedSec zur Rettung! Ich habe deren dynamische Funktionsauflösung implementiert, um die von CS zu ergänzen, sodass alle notwendigen APIs aufgerufen werden konnten.

  6. Der ursprüngliche Backstab enthält mehrere switch/case-Anweisungen, die während des Portierens Probleme verursachten; daher wurden sie durch if/else-Anweisungen ersetzt. Außerdem wurden so gut wie alle globalen Variablen aus ähnlichen Gründen eliminiert.

  7. Ich weiß, es ist merkwürdig, dass ein Tool für Visual Studio und das andere für GCC geschrieben wurde; dies ist ein Nebenprodukt meiner Mühen, diese erfolgreich zu portieren, und vieler Wachstumsschmerzen auf dem Weg. Zukünftige Tools sollten hoffentlich von vielen der Lektionen profitieren, die ich hier gelernt habe.

  8. Sowohl KillDefender_bof als auch Backstab_bof existieren als eigenständige Repos. BEACHTEN SIE, DASS DER CODE ZWISCHEN DEN EIGENSTÄNDIGEN REPOS UND DIESEM TOOL UNTERSCHIEDLICH IST. Dies wurde getan, um sie flexibler und in ein einzelnes Paket integrierbar zu machen.

Kompilieren:

Ich habe nicht versucht, eines der Tools für x86 zu kompilieren; falls Sie wirklich eine Version dafür benötigen, überlasse ich es Ihnen, dies herauszufinden.

So kompilieren Sie Backstab_bof mit gcc:

root@kitploit:~
x86_64-w64-mingw32-gcc -o backstab.x64.o -Os -c main.c -DBOF -D_UNICODE

Stellen Sie sicher, dass Sie Ihr Mingw auf die neueste Version aktualisiert haben! Ich hatte Probleme, da meine Version veraltete Header-Dateien hatte, aber die Header-Dateien der neuesten Version sind korrekt.

So kompilieren Sie KillDefender_bof mit der x64 Native-Eingabeaufforderung:

root@kitploit:~
cl.exe /c /GS- /TP killdefender_bof.cpp /FoKillDefender.x64.o

Danksagungen

  1. Yaxser und sein Backstab-Tool: https://github.com/Yaxser/Backstab

  2. pwn1sher und sein KillDefender-Tool: https://github.com/pwn1sher/KillDefender

  3. TrustedSec für sein CS-Situational-Awareness-BOF-Repo, das eine große Hilfe während des Portierungsprozesses war. Ich habe Code-Ausschnitte von ihm in diesem Projekt verwendet und empfehle jedem, der mit dem Schreiben von BOFs beginnt, sich das Repo anzusehen: https://github.com/trustedsec/CS-Situational-Awareness-BOF

Tool herunterladen