Massiva campagna Ursnif, il dropper esclude 12 paesi dall’infezione
malspam malware malware analysis ursnif
Nella giornata di ieri è stata registrata una corposa campagna di malspam per veicolare il malware Ursnif. La particolarità di questa campagna riguarda il fatto che il codice malevolo annidato nella macro non risulta normalmente individuabile da gran parte degli antivirus, è quanto accaduto in particolar modo nelle prime ore della diffusione.
Le tipologie di mail segnalate al CERT-PA da diversi Enti della Constituency sono di vario tipo, solitamente piuttosto sintetiche, scritte in lingua italiana e contenenti nell’oggetto le classiche keyword: “Sollecito“, “Pagamento“, “Fattura“… L’allegato malevolo in alcuni casi è situato dentro un file compresso, in altri casi viene esposto direttamente il file office.
Il documento allegato include una macro malevola che differenzia dalle altre varianti solo per qualche riga di codice. Il fatto che non venga facilmente rilevato dai software antivirus è dovuto ai vari livelli di offuscamento utilizzati per celare il codice originale. Inoltre, si ha evidenza che molte delle sandbox online non riescono ad attivare la componente malevola della macro e restituiscono un esito di analisi negativo.
Algoritmo di infezione
Il codice della macro fa uso del parametro xlCountrySetting per verificare le impostazioni della lingua. Il valore 39 riguarda l’Italia.
Dopo aver ottenuto il valore numerico corrispondente al paese di appartenenza, un algoritmo verifica che quel valore rientri nella lista dei paesi da compromettere.
Il calcolo viene effettuato mediante una espressione che confronta se il valore di xlCountrySetting moltiplicato per 3 risulta maggiore di xlTickLabelPositionHigh moltiplicato per -1 e diviso per 36. Tale codice riscritto in forma più elegante è del tipo:
If (xlCountrySetting * 3) > (xlTickLabelPositionHigh * -1 / 36) Then execute code Else exit code
Come già detto, nel caso dell’Italia il valore di xlCountrySetting è 39, mentre il valore del parametro xlTickLabelPositionHigh è di -4127, un valore negativo.
In definitiva, considerando i seguenti valori dei parametri:
xlCountrySetting = 39 (Italia) xlTickLabelPositionHigh = -4127
Nel nostro caso (Italia) l’espressione diventa la seguente:
If (39 * 3) > (-4127 * -1 / 36) Then
Il motivo per cui dalle macchine italiane l’infezione va a buon fine è spiegato dal fatto che la condizione prevista dall’algoritmo risulta soddisfatta:
If 117 > 114,63 Then execute code
Lista dei Paesi esclusi dall’infezione
Secondo quanto stabilito attraverso l’algoritmo di verifica, i paesi di cui il country code non soddisfa la disequazione, e quindi immuni all’infezione, sono i seguenti:
- Canada
- United States
- Kazakhstan
- Russia
- Egypt
- South Africa
- Greece
- Netherlands
- Belgium
- France
- Spain
- Hungary
Indicatori di compromissione
IoC (.txt) – File globale : Domini, hash files (SHA1, MD5 e SHA256), IPv4
IoC (HASHr.txt) – Lista dei soli hash file da utilizzare in combinazione con il tool HASHr