
PowerShell in C# für Red-Teaming-Zwecke neu aufgebaut
NoPowerShell ist ein in C# implementiertes Tool, das die Ausführung PowerShell-ähnlicher Befehle unterstützt, während es für sämtliche PowerShell-Protokollierungsmechanismen unsichtbar bleibt. Diese mit .NET Framework 2 kompatible Binärdatei kann in Cobalt Strike geladen werden, um Befehle im Speicher auszuführen. Es wird keine System.Management.Automation.dll verwendet; nur native .NET-Bibliotheken. Ein alternativer Anwendungsfall für NoPowerShell besteht darin, es als DLL über rundll32.exe in einer eingeschränkten Umgebung zu starten: rundll32 NoPowerShell.dll,main.
Dieses Projekt ermöglicht es jedem, seine Funktionalität mit nur wenigen Zeilen C#-Code zu erweitern. Weitere Informationen findest du in CONTRIBUTING.md.
Die neuesten Binärdateien sind auf der Releases-Seite verfügbar. Der MASTER-Zweig wird nicht sehr regelmäßig aktualisiert; der neueste Code und die neuesten Cmdlets sind im DEV-Zweig verfügbar. Um schnell mit NoPowerShell durchzustarten, schau dir auch unbedingt den Cmdlet-Cheatsheet an.



NoPowerShell wurde für die Verwendung mit dem execute-assembly-Befehl von Cobalt Strike oder in einer eingeschränkten Umgebung mit rundll32.exe entwickelt.
Gründe für die Verwendung von NoPowerShell:
ping anstelle von Test-NetConnection)powerpick oder powershell nicht verfügbar sind, sind sie in nps doch verfügbar (z. B. Cmdlets aus dem ActiveDirectory-Modul)Siehe CHEATSHEET.md.
Verwende den execute-assembly-Befehl von Cobalt Strike, um die NoPowerShell.exe zu starten. Zum Beispiel execute-assembly /path/to/NoPowerShell.exe Get-Command.
Optional kann NoPowerShell.cna verwendet werden, um den nps-Alias zu Cobalt Strike hinzuzufügen.
bofnet_initbofnet_load /path/to/NoPowerShell.dllbofnet_execute NoPowerShell.Program Get-CommandDieser Fork ermöglicht die Ausführung regulärer .NET-Executables
bofnet_initbofnet_load /path/to/NoPowerShell.exebofnet_executeassembly NoPowerShell Get-CommandNoPowerShell.dll (Ziehen mit Rechtsklick -> Hier Verknüpfungen erstellen)rundll32 präfixierst und ,main anhängstrundll32 C:\Path\to\NoPowerShell.dll,mainBei Verwendung von NoPowerShell über cmd.exe oder PowerShell musst du das Pipe-Zeichen (|) entsprechend mit einem Caret (^) oder einem Backtick (`) escapen, z. B.:
ls ^| select Namels `| select Name[System.Security.Principal.WindowsIdentity]::GetCurrent().Name| Cmdlet | Beschreibung |
|---|---|
| Invoke-Command | Führt über PSRemoting einen Befehl auf einem entfernten Computer aus (wobei der Befehl in diesem Fall natürlich protokolliert wird) |
| * | Weitere *-Item*-Befehle |
| Search-ADAccount | |
| Get-ADPrincipalGroupMembership | |
| Get-ADOrganizationalUnits | |
| * | Weitere Befehle aus dem PowerShell-Modul ActiveDirectory |
| * | Sysinternals-Dienstprogramme wie pipelist und sdelete |
Autoren zusätzlicher NoPowerShell-Cmdlets werden in der folgenden Tabelle aufgeführt. Darüber hinaus listet die Tabelle Befehle auf, die von der Community zum Hinzufügen angefragt wurden. Gemeinsam können wir ein leistungsstarkes NoPowerShell-Toolkit entwickeln!
| Cmdlet | Beigetragen von | GitHub | Beschreibung | |
|---|---|---|---|---|