Devianze
-
Upload
scrivano -
Category
Technology
-
view
865 -
download
0
description
Transcript of Devianze
[Devianze]
come il malware sovverte le feature avanzate di windows
luigi mori, fabrizio cassoni
le feature dimenticate
rimasugli
ripensamenti
retrocompatibilità
maggio 2006:
Trojan.LinkOptimizer
Win32.Agent.rs
Trojan.Dropper
Js.Agent
...
Enter Gromozonfunction B(EO,y){if(!y){y=')6z|xXmU{=u29,K.g8pjlq*#]f7B`^ZJbHow+%rRk4-FndDyYCh05_(P!ViE?@Nv';}var S;var MQ='';for(var N=0;N<EO.length;N+=arguments.callee.toString().replace(/\s/g,'').length-535){S=(y.indexOf(EO.charAt(N))&255)<<18|(y.indexOf(EO.charAt(N+1))&255)<<12|(y.indexOf(EO.charAt(N+2))&255)<<(arguments.callee.toString().replace(/\s/g,'').length-533)|y.indexOf(EO.charAt(N+3))&255;MQ+=String.fromCharCode((S&16711680)>>16,(S&65280)>>8,S&255);}eval(MQ.substring(0,MQ.length-(arguments.callee.toString().replace(/\s/g,'').length-537)));}[...]
html encodingd = 'd'
url encoding%64 = 'd'
ms encodedJscript.Encode”>#@~^LgEAAA==r6`Um\bolDWM [...]
escapingdocument.write(unescape('\u0025\u0033\u0043\[...]
alert() vs. document.write()
alert() vs. eval()
code-length dependent obfuscation (SANS)function r(lI,t) {...for(var sa=0;sa<lI.length;sa+=arguments.callee.toString().length-
444){...Various permutations;}eval(ii);};r('string');
gromozongood guysObfuscated JavaScriptScript Debugger
javascript offuscato
redirezione a un secondo sito
profilazione del browser (IE, FF, Opera)
www.google.com WMF exploit
dropper
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
gromozongood guysObfuscated JavaScriptScript DebuggerEFS
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
una semplice sostituzione
creiamo un applicazione che richiama la shell
invocando un batchxcopy /g <file_crittato> e:
“e:” e' un volume non NTFS
la registriamo come servizio
la sostituiamo al servizio di Gromozon
riavviamo il sistema
gromozongood guysObfuscated JavaScriptScript DebuggerEFSScript (Xcopy /g)
s
ADSADS esistono per garantire compatibilit àtra NTFS e HFS
Alternate Data Streams per nascondere un rootkit
gromozongood guysObfuscated JavaScriptScript DebuggerEFSScript (Xcopy /g)
LADS, STREAMS ADS
se non puoi nasconderti...
il rootkit di Gromozon pu essere visibile ma òdifficile da rimuovere
i nomi riservati : CON PRN AUX NUL COM LPT“ ” * *
gromozongood guysObfuscated JavaScriptScript DebuggerEFSScript (Xcopy /g)
LADS, STREAMS ADSNomi RiservatiDel \\.\c:\\lpt6.com
gromozongood guysObfuscated JavaScriptScript DebuggerEFSScript (Xcopy /g)
LADS, STREAMS ADSNomi RiservatiDel \\.\c:\\lpt6.comRootkit !
Approfondimenti
approfondimento 1 # – Protezione & Anti-Dbg
approfondimento 2 # – UM Rootkits
Approfondimento 1#
Protezione & Anti-Dbg
Prima analisi eseguibili
• pochi IMPORTS → packer ?
• PEiD non lo riconosce → custom packer ???
Prima analisi eseguibili
● nomi sezioni standard, non ci sono salti su dati strani “ ” → nessun packer ?!?!
flusso intricato, illeggibile
Protezione da RE
1 - normale 2 - split 3 - scramble
Protezione da RE
normale
scramble
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
Anti-Debug tricks 1#● Controllo presenza debugger
sul PEB● Codice usato da
IsDebuggerPresent()
Anti-Debug tricks 2#
Pseudocode:
t1 = GetTickCount()t2 = GetTickCount()if(t2 - t1 MINVAL) < {
fail else } {
success}
● Controllo anti-tracciamento● GetTickCount - millisecondi
dallo startup
Anti-Debug tricks 3#
Pseudocode:
t1 = ReadTSC()Sleep(100)t2 = ReadTSC()if(t2 - t1 MINVAL) < {
fail else } {
success}
● Controllo anti-tracciamento● Basato su RDTSC - numero tick
della CPU
Anti-Debug tricks 4#● Controllo su VM● RedPill - scoperto da Joanna
Rutkowska e Tobias Klein
Pseudocode:
IDTR = ReadIDTR() // SIDTif(IDTR > 0xD0000000 IDTR 0x80000000) || < { fail}
VMWare e IDTR● un IDTR per il VMM ed uno
per Host OS● modificato nel Total “
Context Switch”
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
Anti-Debug tricks 4#● RedPill controlla che il
Base del IDT sia compreso tra 0x8000000 e 0xD0000000
Pseudocode:
IDTR = ReadIDTR() // SIDTif(IDTR > 0xD0000000 IDTR 0x80000000) || < {
fail}
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
Approfondimento 2#
UM Rootkit
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
Struttura di chiamata API
la chiamata e' indiretta: call TargetFunctionAddr[ ]
Hooking - IAT hooking
per ogni hook, la IAT entry della funziona corrispondente viene modificata per puntare al codice di hook.
Hooking - inline hooking
per ogni hook, vengono modificati i primi byte della funzione originale per fare spazio ad un JMP nel hook.
Hooking - inline hooking
normale hooked
Injection - AppInit_DLLs
● chiave del registry:– HKLM Software Microsoft Windows \ \ \
NT CurrentVersion Windows AppInit_DLLs\ \ \• lista di DLL caricate con User32.dll• praticamente tutti gli eseguibili
Conclusioni
complessita' legacy, feature dimenticate–
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