• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Devianze
 

Devianze

on

  • 1,494 views

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.

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.

Statistics

Views

Total Views
1,494
Views on SlideShare
1,484
Embed Views
10

Actions

Likes
0
Downloads
4
Comments
10

3 Embeds 10

http://scrivano.wordpress.com 8
http://www.slideshare.net 1
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

110 of 10 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Sessione di Reverse Engineering e Analisi, a cura di Luigi Mori.
    Are you sure you want to
    Your message goes here
    Processing…
  • Gromozon installa diversi oggetti nel sistema infetto e può nasconderli con gli Alternate Data Stream. Che però possono essere ispezionati con le utility LADS e Stream.
    Are you sure you want to
    Your message goes here
    Processing…
  • In questo modo, il servizio installato da Gromozon viene decrittato e può essere analizzato e rimosso.
    Are you sure you want to
    Your message goes here
    Processing…
  • La tabella del punteggio dei Buoni (noi) versus Cattivi (gli autori del malware). Sì, è una citazione da una puntata di 'Dr. House'!
    Are you sure you want to
    Your message goes here
    Processing…
  • Alcuni dei metodi di offuscamento implementati nel codice e i metodi per riportarlo in chiaro.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Devianze Devianze Presentation Transcript

    • [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 Gromozon function 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().repl ace(/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.fromCharCo de((S&16711680)>>16,(S&65280)>>8,S&255);}eval(MQ.su bstring(0,MQ.length- (arguments.callee.toString().replace(/s/g,'').leng th-537)));}[...]
    • html encoding &#100; = 'd' url encoding %64 = 'd' ms encoded Jscript.Encode”>#@~^LgEAAA==r6`UmbolDWM [...] escaping document.write(unescape('u0025u0033u0043[...] 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');
    • good guys gromozon Script Debugger Obfuscated JavaScript
    • 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
    • good guys gromozon Script Debugger Obfuscated JavaScript EFS
    • 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 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
    • good guys gromozon Script Debugger Obfuscated JavaScript Script (Xcopy /g) EFS
    • ADS ADS esistono per garantire compatibilità tra NTFS e HFS s Alternate Data Streams per nascondere un rootkit
    • good guys gromozon Script Debugger Obfuscated JavaScript Script (Xcopy /g) EFS 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*
    • good guys gromozon Script Debugger Obfuscated JavaScript Script (Xcopy /g) EFS LADS, STREAMS ADS Del .c:lpt6.com Nomi Riservati
    • good guys gromozon Script Debugger Obfuscated JavaScript Script (Xcopy /g) EFS LADS, STREAMS ADS Del .c:lpt6.com Nomi Riservati Rootkit !
    • 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 ● Controllo anti-tracciamento ● GetTickCount - millisecondi Pseudocode: dallo startup t1 = GetTickCount() t2 = GetTickCount() if(t2 - t1 < MINVAL) { fail } else { success }
    • 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 }
    • 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 }
    • 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() // SIDT if(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: – HKLMSoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_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