La struttura PEB
- Antonio Capobianco
- Visite: 4148
Pillole di #MalwareAnalysis
La struttura #PEB (Process Environment Block)
La PEB viene utilizzata da #Windows per gestire il processo che la detiene. Questa struttura fa parte di una struttura più grande chiamata #EPROCESS.
I campi della PEB non sono tutti documentati da parte di Microsoft in quanto le informazioni contenute dovrebbero (il condizionale è d’obbligo) essere utilizzate solo dal sistema operativo.
Spesso i #malware per evitare di essere studiati accedono ad alcuni campi nella PEB per capire se in quel momento vengono analizzati da un debugger e se la risposta è positiva si disattivano o comunque eseguono azioni per ingannare gli analisti.
Ma come fanno? Semplice!
La PEB si trova all’indirizzo di memoria FS:[0x30h] ed in particolare all’offset 0x02h vi è un campo chiamato #BeingDebugged che è 1 se attualmente il software viene analizzato da un debugger.
Lo stesso accade per il campo #NTFlags all’indirizzo 0x68h che in quel caso assume il valore 0x70h Un semplice codice Assembly che mette il valore BeingDebugged nello stack è il seguente:
mov eax, fs[0x30h] // faccio puntare eax al PEB
mov ecx, [eax+2] // in ecx metto il valore BeingDebugged
push ecx // metto ecx nello stack
Per vedere la Peb di un processo basta farlo eseguire dentro #WindDBG ed alla riga di comando dare il comando !Peb come vi faccio vedere nella figura in calce. La Peb può anche essere utilizzata per nascondere il nome delle funzioni importate rendendo impossibile l’utilizzo dei comandi strings o floss, ma questo ve lo spiego nel prox post ;-)
#cybersecurityUP #cybersecurity #zerodays