Indagine sulla configurazione del Trojan di accesso remoto LuminosityLink

Questo post è disponibile anche in: 日本語 (giapponese)

Nelle ultime settimane, ho dedicato del tempo a studiare la configurazione integrata del Trojan di accesso remoto LuminosityLink (RAT). Per chi non lo sapesse, LuminosityLink è una famiglia di malware che costa 4 40 che pretende di essere un’utilità di amministrazione del sistema. Tuttavia, quando viene eseguito, il malware sfrutta un keylogger molto aggressivo, così come una serie di altre funzionalità dannose che consentono a un utente malintenzionato di ottenere il pieno controllo su una macchina vittima.

LuminosityLink 1

Figura 1 LuminosityLink sito web

su richiesta di un collega, mi è stato chiesto di estrarre la configurazione di un LuminosityLink campione, e mentre avrei potuto semplicemente eseguito il malware in un ambiente con sandbox e tirato la configurazione di memoria, ho deciso di vedere se riuscivo a eseguire la stessa azione contro il binario statico.

Questo mi ha portato a capire come la configurazione è crittografata all’interno del binario, così come come analizzare quella configurazione. Ho creato uno script per eseguire questa azione contro un campione di malware LuminosityLink inalterato, che condividerò all’interno di questo post del blog. Inoltre, ho esaminato i circa 18.000 campioni LuminosityLink Palo Alto Networks ha raccolto nel tempo, e utilizzando questo script, sono stato in grado di estrarre le configurazioni di 14.700 campioni. (Questi dati possono essere trovati nella sezione Appendice di questo post.)

Panoramica di LuminosityLink

Originariamente emerso nel maggio 2015, la popolarità di LuminosityLink è in aumento, come mostrato nella seguente tabella. Ad oggi, Palo Alto Networks ha monitorato circa 50.000 tentativi di infezione di LuminosityLink contro i nostri clienti.

LuminositàLink 2

Figura 2 grafico AutoFocus delle sessioni LuminosityLink nel tempo.

LuminosityLink attualmente vende per $40 e può essere acquistato direttamente dal suo autore. Questo pacchetto consente agli aggressori di ospitare un server LuminosityLink e generare binari personalizzati, che vengono offuscati con ConfuserEx 0.4.0. ConfuserEx è un progetto open source che offusca il sottostante .Codice NETTO, il che rende molto più difficile per i reverse engineer che decompilarlo. Questo è importante notare per più tardi quando discutiamo determinare come decodificare il processo di crittografia.

Come accennato in precedenza, sono incluse una serie di opzioni di configurazione, come possiamo vedere nello screenshot seguente.

LuminositàLink 3

Figura 3 opzioni di configurazione client in LuminosityLink

Una volta eseguito, agli aggressori viene fornita una vasta gamma di opzioni, tra cui keylogging, desktop remoto, furto di password e interazione con una shell sul dispositivo.

Reverse Engineering della configurazione

Il primo passo per analizzare la configurazione di LuminosityLink consiste nell’estrarla staticamente. Inizialmente ho aperto un campione di LuminosityLink pulito utilizzando un programma chiamato dnSpy per cercare indizi su dove la configurazione potrebbe essere memorizzata. (Per inciso, consiglio vivamente dnSpy, in quanto non solo fa un ottimo lavoro di decompilazione del binario.NET fornito, ma è anche dotato di un debugger integrato, che è fondamentale per affrontare problemi come quello che stiamo affrontando.)

Quando inizialmente aprivo un binario di esempio, non mi aspettavo molto perché sapevo che il campione era offuscato usando ConfuserEx. Tuttavia, guardando le risorse del campione, ho visto alcune stringhe che sembravano promettenti.

LuminositàLink 4

Figura 4 stringhe di risorse incorporate in LuminosityLink

Come possiamo vedere, il malware contiene una serie di risorse che a loro volta contengono quelli che sembrano essere dati codificati Base64. Le risorse” SMARTLOGS”,” XML “e” CONFIG ” contengono tutti una grande quantità di dati, che, a questo punto, è ancora sconosciuta. Sfortunatamente, la decodifica di queste stringhe si traduce in spazzatura, il che probabilmente significa che sotto viene utilizzata un’altra forma di crittografia.

Ho continuato a indagare sul codice sottostante, che, sebbene offuscato, fornisce ancora un’idea di alto livello di ciò che le varie classi stanno facendo. Utilizzando spazi dei nomi importati, chiamate API e alcune stringhe non offuscate, siamo in grado di ottenere indizi su ciò che sta accadendo all’interno del programma. Nello specifico, vediamo la classe fd () usando lo spazio dei nomi di ‘ System.Sicurezza.Crittografia’, che merita certamente un’indagine in quanto sospettavamo che la crittografia venisse utilizzata contro le precedenti stringhe di risorse di riferimento.

LuminosityLink 5

Figura 5 spazio dei nomi Crittografia utilizzato da LuminosityLink

Come abbiamo indagare ulteriormente questa classe, vediamo riferimento alle seguenti classi e funzioni:

  • MD5CryptoServiceProvider
  • ComputeHash
  • FromBase64String
  • RijndaelManaged

A questo punto, Mi rivolsi al mio debugger, nel tentativo di vedere come queste stringhe sono state gestite. Ho impostato i punti di interruzione su varie chiamate precedentemente menzionate. In particolare, il punto di interruzione sulla classe RijndaelManaged produce risultati eccellenti.

LuminositàLink 6

Figura 6 Recupero riuscito della chiave AES-128

Siamo in grado non solo di verificare che venga utilizzata la crittografia AES-128, ma anche di verificare che venga utilizzata la stringa di risorse “SMARTLOGS”. Siamo anche in grado di identificare la stringa utilizzata come chiave, che in questo particolare esempio è “\\ecnOnuR\\noisreVtnerruC\\swodniW\\tfosorciM\\erawtfoS”. Ulteriori indagini rivelano che questa stringa è hash utilizzando l’algoritmo MD5. I primi 15 byte di questo hash sono concatenati con l’intero 16 byte dell’hash, seguito da un byte nullo. Siamo in grado di replicare questo processo di decrittografia in Python come tale:

1
2
3
4
5
6
7
8
9
10

def decrypt_data(dati, key_string):
decoded_data = base64.b64decode (dati)
m = hashlib.md5 ()
m.update (key_string)
md5 = m.digest ()
chiave = md5+md5+”\x00″
modalità = AES.MODE_ECB
iv = ‘\ x00’ * 16
e = AES.nuovo (chiave, modalità, iv)
ritorno e. decrypt(decoded_data)

Possiamo inoltre verificare che questo sia corretto usando il codice sopra. Nell’esempio seguente, la variabile dati è stata impostata con la stringa codificata base64 trovata all’interno della risorsa” SMARTLOGS ” e la variabile key_string è stata impostata sulla chiave di registro invertita precedentemente menzionata.

1
2

>>> stampa decrypt_data(dati, key_string)
172.16.1.100|11111|backup.dns.com|filename.exe|startup_name|folder_name|data_directory_name|backup_startup.exe / df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4 / BuildID|1idsnb|

Utilizzando tentativi ed errori, siamo in grado di mappare con successo ogni variabile testimoniata nella configurazione di cui sopra. L’ultima variabile si rivela piuttosto interessante, poiché ogni personaggio tranne ‘1’ si associa a una particolare opzione di configurazione. È stata determinata la seguente mappatura:

  • i: Abilitare l’installazione/avvio del client
  • d : Modulo di persistenza del client: proteggere il binario client di luminosità
  • s : Modalità silenziosa (Nascondere Luminosità Finestra sul PC Client)
  • a : Proactive Anti-Malware: Pulire i File Dannosi e velocizzare il PC Client
  • n : Risparmio energetico: Evitare che la Modalità di Sospensione e spegni il Monitor dopo 15 minuti di inattività
  • m : Rimuovere File dopo l’Esecuzione (Melt)
  • v : Anti-Macchine Virtuali/Debug
  • h : Nascondi File e Directory
  • b : il Backup di Avvio

Usando questa conoscenza, possiamo analizzare la configurazione di cui sopra, che consente di ottenere i seguenti risultati.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Dominio/IP: 172.16.1.100
Porta: 11111
DNS di Backup: backup.dns.com
Filename: nome del file.exe
Nome avvio: startup_name
Nome cartella: folder_name
Nome directory dati: data_directory_name
Avvio di backup Exe: backup_startup.exe
Mutex: df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4
Build ID: BuildID
Impostazioni:
Abilitare il Client di Installazione/Avvio
Client Persistenza Modulo: Proteggere la Luminosità del Client Binary
Modalità Silenziosa (Nascondere Luminosità Finestra sul PC Client)
Proattivo Anti-Malware: Pulire i File Dannosi e velocizzare il PC Client
Risparmio energetico: Evitare che la Modalità di Sospensione e spegni il Monitor dopo 15 minuti di inattività
Rimuovere File dopo l’Esecuzione (Melt)
Anti-Macchine Virtuali/Debug
Nascondi File e Directory
Backup di Avvio

L’analisi LuminosityLink Configurazioni a Scala

Utilizzando questa conoscenza, abbiamo creato uno script per analizzare la configurazione di un dato campione. Lo script cerca stringhe che sembrano essere codificate con base64 con una lunghezza maggiore di 50 e adotta un approccio a forza bruta. Anche se non elegante, fa il lavoro con successo. Lo script può essere scaricato nella sezione Appendice di questo post del blog.

Passando attraverso Palo Alto Networks repository di campioni, abbiamo trovato circa 18.000 file etichettati come LuminosityLink. Per questi 18.000 campioni, abbiamo applicato il nostro script di estrazione e analisi della configurazione statica e recuperato con successo circa 4.500 configurazioni. I campioni rimanenti sono stati imballati oltre la routine di offuscamento ConfuserEx integrata e, come tale, le stringhe di configurazione non elaborate non erano presenti.

Questi campioni sono stati eseguiti attraverso un’istanza locale della sandbox Cuckoo open source, dove sono stati estratti i dump del processo. Lo stesso script è stato applicato a questi dump di processo, dove siamo stati in grado di ottenere ulteriori 10.200 configurazioni, lasciandoci con un totale di 14.700 configurazioni di LuminosityLink analizzate.

Mentre i campioni sono stati elaborati, sono state scoperte ulteriori chiavi per essere utilizzate dall’autore. Le seguenti tre stringhe aggiuntive sono state utilizzate per generare le chiavi per i campioni LuminosityLink.

  • Questo conf’ig non contiene nulla di utile. Smetti di comportarti come se fossi a posto decrittografandolo.
  • Risorse.SMARTLOGS
  • Specifica una password

Sembra che l’autore di LuminosityLink non sia privo di senso dell’umorismo. Inoltre, mentre analizzavamo i campioni più vecchi, è stato scoperto che la configurazione ha apportato una modifica tra febbraio e giugno di quest’anno. Meno opzioni erano disponibili nella configurazione dei campioni più vecchi. Lo script fornito rappresenta queste differenze e varie chiavi utilizzate.

Utilizzando i dati aggregati delle 14.700 configurazioni, sono state estratte le seguenti statistiche di alto livello:

LuminosityLink 7

Figure 7 Prevalence of enabled settings in LuminosityLink configurations

Top C2 TLDs/IP Addresses

  • ddnsnet
  • duckdnsorg
  • no-ipbiz
  • chickenkillercom
  • no-iporg
  • mooocom
  • fishdnscom
  • no-ipinfo
  • ignorelistcom
  • freednssu

Top Build IDs

  • HOME
  • Client
  • crtx1
  • M4CHINATION
  • CSGO
  • NEW
  • Slave
  • CAPO
  • Youtube
  • PROJECT.D

Top Executable Names

  • sysmon.exe
  • client.exe
  • helper.exe
  • repair.exe
  • winlogon.exe
  • svchost.exe
  • Luminosity.exe
  • WinCOMHost.exe
  • chrome.exe
  • windowsbootapp.exe

Top Porte

  • 6318
  • 1400
  • 1604
  • 1337
  • 3175
  • 22028
  • 9045
  • 2122
  • 100
  • 9999

analizzati i dati di configurazione fornito nel formato di file CSV, è liberamente forniti per la sicurezza della comunità, nella speranza che le protezioni saranno creati contro questa minaccia.

Conclusione

LuminosityLink, mentre commercializzato come utility di amministrazione dei sistemi, è un keylogger formidabile e backdoor utilizzato da un gran numero di criminali. Ad oggi, Palo Alto Networks ha assistito a oltre 50.000 tentativi di infezione di LuminosityLink, che comprende 18.000 campioni unici. Il malware è economico e prontamente disponibile al pubblico, rendendo questa una minaccia pericolosa sia per le organizzazioni che per gli individui.

Con il reverse engineering dei campioni LuminosityLink, siamo stati in grado di estrarre e analizzare staticamente la configurazione embedded, che a sua volta fornisce preziose informazioni su quali host e porte il malware è configurato per comunicare. Fornisce inoltre informazioni relative alle protezioni configurate configurate all’interno dell’eseguibile, nonché informazioni sull’installazione.

Palo Alto Networks clienti sono protetti da questa minaccia nei seguenti modi:

Un AutoFocus tag può essere utilizzato per tenere traccia di questa famiglia di malware

  • Tutti LuminosityLink campioni sono adeguatamente contrassegnati come pericolosi in WildFire
  • Tutti i domini identificati sono contrassegnati come pericolosi
  • il traffico di Rete è correttamente identificati e bloccati come minaccia ID #14460 (LumonosityLinkRAT.Gen Comando e controllo del traffico)

Appendice

Uno script di estrazione e analisi per i campioni LuminosityLink può essere trovato qui.

Uno script da utilizzare per analizzare le stringhe di configurazione semplici può essere trovato qui.

Un file CSV contenente tutti i dati di configurazione estratti dal set di esempi di Palo Alto Networks può essere trovato qui.

Ricevi aggiornamenti da
Palo Alto
Reti!

Iscriviti per ricevere le ultime notizie, cyber threat intelligence e ricerca da noi

Inviando questo modulo, accetti i nostri Termini di utilizzo e accetti la nostra Informativa sulla privacy.

Write a Comment

Il tuo indirizzo email non sarà pubblicato.