Iscriviti ora al Webinar di presentazione del corso Ethical Hacker! Scopri di più
Iscriviti ora al Webinar di presentazione del corso CISO! Scopri di più
Pillole di #MalwareAnalysis
La #persistenza
Quasi tutti i #malware per raggiungere il proprio scopo necessitano di ottenere la persistenza sui sistemi infettati. Dico quasi tutti perché a volte quelli nati per infettare i server non la implementano.
Per persistenza si intende la capacità del malware di resistere ai reboot. Se spengo il sistema e poi lo riaccendo, questo rimane infetto.
I modi per ottenerla sono molteplici, ma di questi sicuramente il più utilizzato è la scrittura nelle chiavi di registro di windows, e tra queste la più bersagliata è HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run dove vengono inseriti tutti i processi da attivare allo startup.
In un’analisi statica del malware è necessario ricercare le primitive che consentono la scrittura di queste chiavi e l’api incriminata è RegSetValueEx nelle versioni Ascii (RegSetValueExA) e Unicode (RegSetValueExW).
Questa primitiva è sempre preceduta da una #RegOpenKeyEx.
In pratica il malware prima utilizza RegOpenKeyEx per aprire la chiave da modificare e poi la modifica con #RegSetValueEx
Utilizzando tools come #Strings di #Sysinternals o #Floss di #FireEye è possibile andare ad analizzare le stringhe contenute nei malware (se questi non sono offuscati) ed il ritrovamento delle API che vi ho citato è un forte indicatore della ricerca della persistenza.
Generalmente se riusciamo a trovare queste API saremo in grado anche di vedere la stringa che identifica la chiave modificata.
Pillole di #MalwareAnalysis
I #Packer
I packer sono dei software che vengono utilizzati dalle software house per proteggere il proprio codice da azioni di #reverseEngineering. Naturalmente questo rende più difficoltosa questa operazione ma non impossibile ;-). Gli sviluppatori di #Malware li utilizzano invece per complicare le operazioni di malware analisi.
Ma cosa sono questi packer? Sono dei software in grado di prendere un software binario, comprimerlo (rendendo illegibili le stringhe interne) e impacchettarlo con uno stub, ovvero un programma in grado di decoprimerlo in memoria ed eseguirlo.
Per l’utente finale non cambia nulla. Lancierà il suo programma con un semplice click, ma l’azione eseguita è quella di eseguire lo stub che decomprime il programma e poi inizia la sua esecuzione.
Esistono moltissimi packer ma forse il più conosciuto è #UPX. Un software compresso con UPX è facilmente identificabile in quanto le sezioni del file PE vengono rinominate in UPX0 UPX1 etc… e sono altrettanto semplici da decomprimere.
Sfortunatamente UPX viene utilizzato poco e spesso è necessario eseguire azioni di decompressione ‘a mano’ utilizzando tool specifici ed i debugger come Olly
#hacker #cybersecurityup #cybersecurity #zeroday #ransomware
Pillole di #MalwareAnalysis
Il #processHollowing
Questa tecnica di infezione prevede di svuotare un processo legittimo del suo codice (hollow) ed in seguito riempire l’area svuotata del codice malvolo.
Per poter essere eseguita con successo bisogna:
· lanciare il processo legittimo nello stato suspended con la primitiva #CreateProcess
· svuotarlo del proprio codice utilizzando la primitiva #ZwUnmapViewOfSection
· adattare l’area svuotata alla dimensione del codice malevolo con #VirtualAllocEx
· scriverci dentro con la primitiva #WriteProcessMemory
· far ripartire il processo con le primitive #SetThreadContext e #ResumeThread.
In pratica un gioco da ragazzi ??
Ma come fare a capire che un #malware esegue questo tipo di procedura?
Ricercando tra le stringhe con il comando #strings o #floss dobbiamo trovare le primitive che vi ho menzionato prima, in particolare ZwUnmapViewOfSection.
Purtroppo con #ProcessExplorer è difficile capire questo tipo di tecnica ma se sappiamo cosa cercare possiamo utilizzare #ApiMonitor andando a ricercare le specifiche api che vi ho indicato in questo post.
Pillole di #MalwareAnalysis
Image File Execution Option #IFEO per la #persistenza
I metodi utilizzati dai #malware per mettersi in persistenza sono svariati, tra questi uno poco conosciuto è l’opzione IFEO (Image File Execution Option).
Tramite questa opzione è possibile dire a #Windows di lanciare un programma al posto di un altro.
Io ad esempio lo utilizzo per lanciare #ProcessExplorer ogni volta che richiamo il #TaskManager con la Secure Attention Sequence (CTRL-ALT-CANC).
Come fare? Semplice!
Andate con #regedit nel ramo “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options” e scegliete il ramo con il file che volete sostituire, in questo caso #Taskmgr.exe.
In quel ramo nella chiave Debugger inserite il path del programma che desiderate eseguire.
Naturalmente se un Malware esegue un’operazione di questo tipo verrà lanciato a vostra insaputa.
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
Pagina 355 di 358
Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.