Case Study sul malware "Gromozon", ispirato da un articolo di Marco Giuliani. Presentazione tenuta a Infosecurity 2007 con Luigi Mori, autore della sezione sul Reverse Engineering.
10. javascript offuscato
redirezione a un secondo sito
profilazione del browser (IE, FF, Opera)
www.google.com WMF exploit
dropper
11. ora abbiamo un nuovo utente sul sistema
ha una password casuale
e' nel gruppo degli amministratori
ha ridotto i nostri privilegi
un servizio gira sotto il suo account
l'eseguibile del servizio e' crittato con
EFS
13. fuori dall'EFS
i file protetti da EFS:
non si possono cancellare
non si possono copiare
non si possono leggere
ma si possono rinominare
quindi si possono sostituire
14. una semplice sostituzione
creiamo un applicazione che richiama la shell
invocando un batch
xcopy /g <file_crittato> e:
“e:” e' un volume non NTFS
la registriamo come servizio
la sostituiamo al servizio di Gromozon
riavviamo il sistema
27. Protezione da RE
● non esiste IAT, gli import vengono aggiustati
dinamicamente tramite:
– LoadLibrary+GetProcAddress
– GetModuleHandle+parsing PE hdr
• le stringhe sono tutte cifrate con RC4 e
decifrate dinamicamente appena prima dell’uso
sullo stack
28. Anti-Debug tricks #1
● Controllo presenza debugger
sul PEB
● Codice usato da
IsDebuggerPresent()
30. Anti-Debug tricks #3
● Controllo anti-tracciamento
● Basato su RDTSC - numero tick
Pseudocode: della CPU
t1 = ReadTSC()
Sleep(100)
t2 = ReadTSC()
if(t2 - t1 < MINVAL) {
fail
} else {
success
}
31. Anti-Debug tricks #4
● Controllo su VM
● RedPill - scoperto da Joanna
Rutkowska e Tobias Klein
Pseudocode:
IDTR = ReadIDTR() // SIDT
if(IDTR > 0xD0000000 || IDTR < 0x80000000) {
fail
}
32. VMWare e IDTR
● un IDTR per il VMM ed uno
per Host OS
● modificato nel “Total
Context Switch”
33. VMWare e SIDT
• l’istruzione SIDT non è privilegiata e può
essere usata anche in Ring 3
• usandola ci si può accorgere se siamo dentro
una VM o su un host “reale”
• esempi di IDTR:
– Windows XP o 2003: 0x8003F400
– VMware version 4: 0xFFC17800
34. Anti-Debug tricks #4
● RedPill controlla che il
Base del IDT sia compreso
tra 0x8000000 e 0xD0000000
Pseudocode:
IDTR = ReadIDTR() // SIDT
if(IDTR > 0xD0000000 || IDTR < 0x80000000) {
fail
}
35. Anti-Debug tricks #5
● gli eseguibili inoltre cercano di rilevare la
presenza di:
– Softice
– Regmon
– Filemon
● utilizzano device file virtuali usati da questi
programmi per comunicare con i driver
37. User Mode Rootkit
• i rootkit Windows sono strumenti utilizzati per
modificare il comportamento delle applicazioni
• agganciano (hook) le API per cambiare i
risultati
• due caratteristiche principali:
– Metodo di hooking
– Metodo di injection
42. Injection - AppInit_DLLs
● chiave del registry:
– HKLMSoftwareMicrosoftWindows
NTCurrentVersionWindowsAppInit_DLLs
• lista di DLL caricate con User32.dll
• praticamente tutti gli eseguibili
44. Webografia
Marco Giuliani “The Strange Case of Dr. Rootkit and Mr. Adware”:
http://pcalsicuro.phpsoft.it/gromozon.pdf
Mircea Ciubotariu:
“What Next? Trojan.LinkOptimizer” (Virus Bulletin – Dec 2006)
LADS:
http://www.heysoft.de/nt/ntfs-ads.htm
Random Dross “Web Security And Beyond”
http://blogs.msdn.com/dross/
WebSense Security Labs Threat Blog:
http://www.websense.com/securitylabs/blog/blog.php?BlogID=86)
F-Secure Weblog on WMF Vulnerability:
http://www.f-secure.com/weblog/archives/archive-122005.html