Libreria powrprof.dll: analisi malware

Elementi importanti dell’analisi 

  • Detections per lo più euristiche 
  • Creazione di oggetti mutex 
  • Child execution con la funzione WinExec 
  • Esecuzione rundll32 
  • DLL relativa a componenti NVIDIA non firmata correttamente 
  • Mutex sospetto relativo a threats Backdoor:Win32/Temratanam.A 

Introduzione 

Nella presente analisi è stata presa in considerazione la libreria powrprof.dll (Hash: dc9385b83a139db8606f4f9cb8d7d8d8e0aeac2dd963f03a669f231ef6deb951), la quale viene identificata dalle fonti OSINT principalmente a causa di detections di natura euristica e comportamentale, nonché di machine learning algorithms. Solo Microsoft di recente ha provveduto a classificarlo con la firma Trojan:Win32/FavLoader.A!MTB.

Nel caso specifico, la DLL powrprof.dll inizializzava un contesto di DLL child execution prendendo in considerazione il file favicon.jpg, il quale si maschera dietro una falsa immagine, tuttavia esso fa riferimento ad una libreria DLL. Il Portable Executable in questione è relativo ad un componente di schede video NVIDIA avente un certificato non verificato, vi è inoltre contezza di un mutex relativo a Backdoors threats.

Tale tipologia di threat è definibile “Malicious DLL as a Service” in quanto in un’ottica di threat development e threat landscape la libreria DLL eseguita in seconda istanza favicon.jpg può essere sostituita potenzialmente con una qualsiasi tipologia di minaccia, come ad esempio Ransomware o Remote Access Trojans. 

Analisi statica powrprof.dll 

Il timestamp di compilazione risale al 20 Luglio 2023

Il Relative Virtual Address dell’entrypoint risulta essere 00001000.  

Di seguito i dettagli delle sezioni della DLL, inclusa la sezione di CPU instructions .text, avente come VirtualSize 000000B5. La sezione .edata contiene i riferimenti agli exports relativi alla libreria per esecuzioni esterne. 

Una delle caratteristiche principali della libreria powrprof.dll è la creazione di un oggetto mutex, tramite la funzione CreateMutexA, per la gestione concorrenziale delle esecuzioni della stessa. 

La libreria sottoposta ad analisi non possiede particolari caratteristiche di packing, difatti i coefficienti d’entropia delle varie sezioni non risultano essere elevati: 

Tra gli indicatori sospetti vi troviamo dettagli inerenti a funzioni di reckoning ed execution: 

La funzione WinExec è fondamentale per l’infection phase e child execution, ovvero l’esecuzione della DLL (potenzialmente malevola) esterna richiamata dalla libreria powrprof.dll. 

Esaminando il codice esadecimale del sample possiamo notare la presenza dell’esecuzione rundll32 della libreria richiamata mediante l’utilizzo del mutex creato poc’anzi al fine di poter gestire l’esecuzione in questione in modo concorrenziale. 

Contestualmente vi è un riferimento al parametro esadecimale 60B0I0O0Z0, il quale può potenzialmente essere identificativo in un’ottica di threat hunting: 

Attraverso un’analisi delle stringhe estraibili dalla libreria in questione è possibile identificare il comando di esecuzione di DLL rundll32 favicon.jpg, #189, l’oggetto mutex denominato idozlopm e le funzioni WinExec e CreateMutex

Debugging e disassembling powrprof.dll 

All’interno del DllEntryPoint vi è un’istruzione di load addressing inerente al file favicon.jpg. 

La funzione CreateFileA viene richiamata con l’attributo dwCreationDisposition posto a 3, ovvero l’apertura di un file solo se esistente: 

Qui la creazione del mutex idozlopm e l’esecuzione rundll32 della DLL esterna favicon.jpg: 

La libreria di import KERNEL32.DLL viene utilizzata per richiamare ed eseguire le funzioni WinExec, CreateFileA e CreateMutexA: 

La funzione GetFileVersionInfoSizeA ritorna il valore 1, posto come coefficiente alla variabile eax

A seguire, all’interno del disassemblato della sezione .text, una chiamata alla funzione GetLastError dopo la creazione dell’oggetto mutex utilizzato, ed una consequenziale istruzione cmp per il valore 0XB7 con il registro EAX

Il numero di bytes della last page corrisponde a 80: 

Le sezioni del PE hanno tutte le medesime dimensioni: 

Qui alcune istruzioni di jumping JBE (il “salto” avviene se i flags Carry Flag e Zero Flag risultano essere entrambi a 1) che fanno riferimento agli indirizzi 0x40207F e 0x402091. 

Analisi statica favicon.jpg 

Il file richiamato nel contesto di child execution favicon.jpg è in realtà una libreria DLL (si noti l’header MZ). 

La medesima fa riferimento a dettagli assembly di un’estensione di configurazione della scheda video NVIDIA

La DLL non possiede alti valori di entropia: 

Tra gli indicatori sospetti troviamo evidenze legate a files management, services management, registry management, desktop e resources management (al fine di gestire le proprietà della scheda video), enumerazione di dettagli delle proprietà RDP. Con lo scopo di verificare i dettagli dei devices vi sono correlazioni con dettagli GUID, mutexes management ed exports. 

Tra le librerie importate vi sono infatti wtsapi32.dll (con lo scopo di gestire le sessioni RDP) e advapi32.dll (al fine di gestire il registro di sistema). 

Le funzioni di maggiore interesse eseguite risultano essere WTSEnumerateSessionsW (per enumerare le sessioni RDP su un server), QueryPerformanceFrequency (permette di ottenere la frequenza del performance counter, pertanto contestualmente effettua environment execution discovery), LookupAccountSidW (per associare un nome utenza ad un determinato SID), ImpersonateLoggedOnUser (per effettuare esecuzioni che impersonificano utenze di contesto specifiche), nonché la funzione di ottenimento dei dettagli inerenti all’oggetto del registro HKEY_CURRENT_USER RegOpenCurrentUser

A seguire l’evidenza della chiamata a funzione CreateThread per la creazione di oggetti threads specifici ed EncodePointer (la quale offusca il valore dei puntatori presi in considerazione). 

Ulteriori funzioni di gestione del registro di sistema sono, ad esempio, RegEnumKeyExW, RegOpenKeyW, RegEnumValueW. Vi è evidenza della funzione RegisterTraceGuidsW (al fine di tracciare e monitorare alcune tipologie puntuali di eventi), la funzione di conversione di tipo StringFromGUID2 al fine di ottenere attributi di tipo stringa da elementi GUID, nonché la funzione di accesso a folders speciali SHGetSpecialFolderPathW

A seguire elementi relativi a chiamate API di NVIDIA all’interno della sezione .text (istruzioni eseguite dalla CPU). 

Qui le risorse della libreria NVIDIA, che includono le icone ed il file manifest: 

Le API calls includono funzioni di ottenimento di dettagli ed informazioni della GPU. 

Qui riferimenti a pacchetti di installazione di drivers e scripts di setup .bat e .cmd, .com. 

Qui troviamo invece dettagli di ottenimento di persistenza fisiologica da parte dei drivers della scheda video: 

La DLL richiama l’SCManager per l’installazione dei dovuti servizi. 

A seguire elementi associati alla gestione (START e STOP) dei drivers NVIDIA. 

Tra le stringhe estraibili dalla DLL sottoposta ad inspection possiamo avere evidenza dell’attributo mutex {C15730E2-145C-4c5e-B005-3BC753F42475}, il quale è associato a minacce Backdoor:Win32/Temratanam.A: 

[0] 

A seguire i dettagli del certificato, valido dal 2011 al 2028, il quale però non risulta essere verificato: 

Debugging e disassembling favicon.jpg 

A seguire alcune esecuzioni all’interno della funzione sub_642877A0 facenti riferimento alla libreria ADVAPI32.dll, le funzioni di apertura servizi OpenSCManagerW e OpenServiceW, nonché QueryServiceConfigW

Favicon.jpg effettua l’enumerazione di valori di chiavi di registro e adapters grafici D3DKMT

All’interno del registro di sistema viene salvato il valore ChipsetMatchID, individualizzante della scheda video. 

All’interno della funzione sub_642A1660 viene evidenziato un riferimento al SYSTEMID

Di seguito un dettaglio del codice esadecimale della DLL contenente NvStartup per la fisiologica persistenza. 

A seguire evidenze di esecuzioni relative all’ottenimento del SystemTime attuale ed il performance counter. 

Contestualmente ad un’eccezione dei drivers NVIDIA vi è una serie di istruzioni INT3

Vi sono istruzioni di AND tra dword [rbp + 0x40] ed 0xfffffffe per il valore 4294967294. 

Di seguito un costrutto per la cancellazione d’esecuzione di un task concorrenziale. 

Vi è una struttura degli ID utilizzati ed ottenuti con i tipi %s (string) e %d (valore decimale). 

A seguire un listato del codice esadecimale di favicon.jpg contenente dettagli relativi a NVIDIA: 

Tra gli exports della libreria è possibile notare funzioni relative a contesti di schede grafiche: 

Dal disassemblato ottenibile dalla sezione .text possiamo evidenziare riferimenti a check updates dei drivers NVIDIA, mutexes management nella gestione degli attributi grafici. 

Durante una sessione di debugging è stato possibile osservare un’esecuzione della funzione IsDebuggerPresent per il processo attuale. 

IOCs: 

5253201a250b909a01251a8984c3451b 

6800ad564eac58ca2694dc10f9a51603229639e6 

dc9385b83a139db8606f4f9cb8d7d8d8e0aeac2dd963f03a669f231ef6deb951 

idozlopm 

Regola YARA: 

rule SuspiciousPowrProfDLLRule 

    strings: 

        $str = ” idozlopm” 

        $hexStr = { 69 64 6f 7a 6c 6f 70 6d } 

        $str1 = “60B0I0O0Z0” 

    condition: 

        $str or $hexStr or $str1 

CONCLUSIONI: 

La DLL powrprof.dll possiede caratteristiche degne di nota, come il fatto che tale libreria si identifica dietro una Microsoft library o che possieda evasion techniques causando per lo più solo detections di tipo euristico e comportamentale. Essa possiede difatti il DLLEntrypoint che richiama direttamente la DLL utilizzabile nella fase di child execution. Nel caso specifico la DLL favicon.jpg eseguita mediante un comando rundll32 fa riferimento ad una libreria di gestione di drivers e componenti NVIDIA, tuttavia è possibile ipotizzare ulteriori e diversi scenari nei quali la libreria DLL richiamata ed eseguita possa essere, ad esempio, un “ponte” di connessione verso un dominio C&C, una backdoor threat oppure un ransomware threat. 

In conclusione, essa è una libreria DLL definibile “Malicious DLL as a Service” a causa del fatto che, mediante una personalizzazione dell’esecuzione della DLL richiamata, possono essere creati infection entrypoints che dispongono tasks di evasion e, pertanto, uno scenario che potrebbe essere sempre più presente in termini di threats landscape. 

Riferimenti: 

[0]: Backdoor:Win32/Temratanam.A threat description – Microsoft Security Intelligence 

La Direttiva NIS2: cosa è, quale impatto avrà sulle aziende e come essere pronti a rispettarla?
Cyberlaundering: come difenderci dal riciclaggio digitale?

Pronto intervento Cyber Swascan

Contattaci per un supporto immediato

Il sottoscritto, in qualità di interessato DICHIARA di aver letto e compreso il contenuto della privacy policy ai sensi dell’articolo 13, GDPR. ACCONSENTE al trattamento dei Dati in relazione all’invio da parte del Titolare di comunicazioni afferenti alla gestione di eventuali misure precontrattuali, preordinate alla stipulazione e/o esecuzione del contratto con il Cliente nonché all'adempimento dei relativi obblighi.
Il consenso prestato potrà essere revocato in qualsiasi momento contattando il Titolare ai recapiti presenti nella citata privacy policy.