Il malware Emotet riprende a colpire l’Italia
emotet
Ancora una volta, dopo una pausa di 4 mesi, Emotet riparte con una campagna massiva rivolta ad utenti italiani. L’ultima attività di Emotet osservata in Italia risale al mese di novembre 2022 ed è durata appena una settimana, precisamente dal 3 al 9 novembre, nel corso della quale il CERT-AGID ha registrato 16 campagne veicolate tramite email con allegati ZIP ed XLS che hanno sfruttato le botnet Epoch4 ed Epoch5.
La campagna odierna, individuata e contrastata dal CERT-AGID, non interessa un tema in particolare ma riprende conversazioni già intercorse, fornendo in allegato un file ZIP (in questo caso “Copia Fattura.zip“) contenente un file di tipo DOC di oltre 500MB.
La dimensione esagerata del file DOC è voluta per evitare che l’utente possa sottoporla ad analisi sulle sandbox online. Il contenuto reale del file DOC risulta essere poco più di 300 Kb. ai quali sono stati aggiunti una serie di null byte fino a superare la dimensione di 500MB.
Come già osservato in molte altre campagne simili, il file DOC è predisposto con una macro malevola, leggermente offuscata, che ha lo scopo di scaricare ulteriori file (PE o ZIP) ed eseguirli. Le URL da cui scaricare i file sono offuscate e vengono testate, una ad una, finchè non viene rilasciato il file richiesto.
A tal proposito, il CERT-AGID ha prodotto un semplice script python che consente, adattandolo di volta in volta al vba estratto tramite oletools, di deoffuscare le macro utilizzate per questa campagna e recuperare rapidamente le dropurl:
import re
def decode(s, mp, n):
return "".join([s[mp[i]-1] for i in range(0, n)])
with open("macro.vba", "r") as f:
lines = f.readlines()
qawel = re.compile(r"^(\w+)\s*=\s*qawel\(")
arr = re.compile(r"^\w+\((\d+)\)\s*=\s*(\d+)$")
asg = re.compile(r'^\w+\s*=\s*"(.*?)"$')
num = re.compile(r'^\w+\s*=\s*(\d+)$')
res = []
for i in range(0, len(lines)):
l = lines[i]
qm = qawel.search(l)
if not qm:
res.append(l)
continue
j = i - 1
mp = [0]*100
while m := arr.search(lines[j]):
mp[int(m.group(1))] = int(m.group(2))
j -= 1
m = asg.search(lines[j])
s = m.group(1)
j -= 1
m = num.search(lines[j])
n = int(m.group(1))
dec = decode(s, mp, n)
v = qm.group(1)
k = i - j + 1
res = res[:-k]
res.append(f"{v} = \"{dec}\n\"")
with open("macro.deob.vba", "w") as f:
f.writelines(res)
Il risultato ottenuto dallo script consente di leggere chiaramente il codice della macro e quindi la lista delle dropurl che utilizzerà per scaricare le componenti malevole:
Il file ottenuto dalle dropurl è un file ZIP che contiene un PE, in particolare una DLL di oltre 500MB, anche in questo caso ripiena di null byte, che successivamente eseguirà tramite “regsvr32”, come si evince dalla macro deoffuscata:
I C2 rilevati in questa campagna sono 49 ed afferiscono alla botnet Emotet denominata Epoch4.
Indicatori di Compromissione
Gli IoC relativi a questa campagna sono stati già condivisi con le organizzazioni accreditate al flusso IoC del CERT-AgID.
Link: Download IoC