Monday, June 17, 2013

Basics for a malware analysis lab

For Security.nl, a Dutch infosec website, I wrote a short article on the basics of a malware analysis lab. The article is in Dutch, but here's a translated version by Google Translate (on Pastebin):
http://pastebin.com/kE5gQWhx

Note: for the links for tools & better mark-up, visit the post below on Security.nl or the mirror here. I might translate it myself in English later as well. (no translator ;-) )

Here's the post on Security.nl:
Security Tip van de Week: onderzoek malware in je eigen lab

Here's the original post:



Over het environment, de computer, zelf

Even een quote uit een artikel van mij:
Before we begin, I’d like to make clear that if you want to test your skills after reading this article or want to test malware in general, you should set up a proper testing environment. Make sure you are using a Virtual Machine if testing on your own machine, or create a machine for the sole use of testing malware and antimalware tools. In either case, it’s a good idea to use a separate network or use a DMZ should you have one. Personally I recommend having the machine connected to the internet, so the malware can do its evil work to its maximum potential and you will be able to carefully study and dissect its workings completely.


Denk wel dat bovenstaande duidelijk is:
- gebruik geen shared folders tussen VM & host
- gebruik bij voorkeur een apart netwerk
- gebruik bij voorkeur een fysiek toestel en geen VM
- gebruik antivirus op je fysiek toestel als je een VM gebruikt

Malware gaat vaak checken op bepaalde characteristics in het systeem, zoals hardware GUIDs, eigenschappen van de Netwerkkaart, nakijken of X of Y tools geïnstalleerd staan, controleren op X of Y services.... Vandaar dat een echt fysiek toestel soms betere of zelfs compleet andere resultaten (behaviour) kan geven dan in een VM. Indien een fysiek toestel niet mogelijk is, kan je inderdaad kiezen voor virtualisatiesoftware:
VirtualBox (Oracle/Sun) of VMware Workstation/VMWare Player. Beiden zijn makkelijk in gebruik.
VirtualBox: gratis, kan snapshots nemen
VMWare WS: niet gratis, kan snapshots nemen
VMWare Player: gratis, kan geen snapshots nemen


Een handig tooltje om na te gaan hoe malware je systeem op bepaalde parameters checkt is Pafish: https://github.com/a0rtega/pafish


Ik raad aan om, als je VM gebruikt, een snapshot te nemen in:
a) een "clean" state
b) een state waarop je tools en dergelijke staan
--> Hierna voer je X of Y malware uit

Voor de disk zelf kan je best split virtual disk gebruiken, aangezien deze minder schijfruimte gaat innemen (dynamisch), single file wordt meer gebruikt voor oudere toestellen. Qua performantie maakt dit niet veel verschil, voor malware analysis al zeker niet.

Voor de netwerkconnectie wordt meestal bridged gebruikt, aangezien NAT soms problemen kan geven bij bepaalde netwerkkaarten. Voor malware analysis zelf lijkt dit me op zich niet veel uit te maken.

Nog een handige link met extra uitleg: http://zeltser.com/vmware-malware-analysis/

Over het OS dat je kan gebruiken
Buiten uiteraard een Windows OS (bv. een Windows XP en een Windows 7, 2 verschillende OS'en kunnen soms 2 verschillende resultaten opleveren) kan je ook een *nix distri gebruiken welke speciaal voor Malware Analysts is ontworpen. Hier heb je keuze:



Tools voor Windows
Idealiter verloopt een analyse van wat X of Y malware doet als volgt:
a) Zet beide VM's op, zowel Windows box als Remnux
b) Prepareer de tools of logging op beide toestellen
c) Bezoek X link of voer Y malware uit
d) Bekijk het behaviour van de malware
e) Sla de logs op en bekijk deze ook nog eens apart, in-depth

Nu wat betreft de tools zelf. Uiteraard zijn er verschillende logging tools beschikbaar, maar we gaan beginnen met enkele automatisch systemen:
Malwr - https://malwr.com/
ThreatExpert - http://www.threatexpert.com/
Anubis - http://anubis.iseclab.org/
--> Deze 3 bovenste zijn in feite online sandboxes, waar je malware naar kan uploaden en hierna een (al dan niet) uitgebreid rapport kan bekijken. Dit kan handig zijn moest een sample weigeren te runnen op jouw systeem, of je hebt geen tijd om zelf uitgebreid onderzoek te doen. Uiteraard zijn er nog andere sandboxes online, maar deze zijn wel de bekendste. (vooral Malwr is een aanrader)

Sandboxie - http://www.sandboxie.com/
--> Indien je geen VM hebt of geen kunt gebruiken maar toch min of meer malware analysis gaan uitvoeren, kan je Sandboxie gebruiken. Deze gaat in feite programma's (of in dit geval malware), op een "apart stukje" van je harde schijf uitvoeren. Ik vermoed echter dat iedereen hiermee bekend is. Note: voer nooit een VM uit in een sandbox!

Malzilla - http://malzilla.sourceforge.net/
--> Malzilla is een excellente tool voor als je geen VM hebt (anders natuurlijk ook). Malzilla kan eigenlijk heel wat, zoals bv. Javascript decoden, lijst van links op een site weergeven, maar het voornaamste is eigenlijk dat je een URL kan bezoeken en kan bekijken wat er allemaal gebeurt (bv. een redirect naar X site, een redirect naar Google, helemaal niets,...). Handig is ook dat je al dan niet een referrer kan instellen. Bepaalde malware gaat controleren of je via X of Y referral gaat en zoniet, redirect gewoon naar Google. Het kan ook gebeuren dat hetzelfde IP slechts 1x dezelfde malware site mag/kan bezoeken. In Malzilla kan je dan een proxy instellen...

URLQuery - http://urlquery.net/
JSunpack - http://jsunpack.jeek.org/
--> Beide zijn tools om malware sites te analyseren, indien je moeilijkheden hebt met Malzilla of, wegens tijdsgebrek snel iets moet checken. URLquery is meer intuïtitef. Beide tools zijn echter onmisbaar.

Last, but not least:
VirusTotal - https://www.virustotal.com/
--> Schitterende service om snel een sample te checken. Houd in het achterhoofd dat detecties kunnen verschillen via VirusTotal of op een echt systeem (bv. behaviour analysis wordt niet mee opgenomen in de scanners op VirusTotal). Eveneens kan je bij File Detail makkelijk de mèta-data checken. Afhankelijk van het type bestand (PE files, Android files, others) worden extra scanners uitgevoerd. (.exe, .com, .apk, .jar, .pdf)


Nu, manuele systemen en tools. Je kan al een schat aan tools op onderstaande link vinden:
http://zeltser.com/malware-analysis-toolkit/

Mijn persoonlijke favorieten:
Fiddler - http://fiddler2.com/ - bekijken wat X of Y URL precies probeert te laden, handig voor de infection vector en methodiek te bepalen
RegShot - http://sourceforge.net/projects/regshot/ - neem een "snapshot" van het huidige systeem en vergelijk daarna welke wijzigingen malware heeft doorgevoerd
Revelo - http://www.kahusecurity.com/tools/ - meer een all-in-one tool, vergelijkbaar met Malzilla, maar anders

Uiteraard kan je ook Wireshark gebruiken maar:
a) Dit is redundant als je ook Remnux gebruikt.
b) Ik heb effectief al malware tegengekomen die gewoon weigert iets te doen als Wireshark op het toestel staat.

Andere "monitoring" tools on-the-fly zijn bijvoorbeeld:
WinPatrol - http://www.winpatrol.com/
Process Guard - http://download.cnet.com/ProcessGuard/3 ... 33974.html






Algemene tips & trucs
  • Nog enkele leuke slides voor de eerste keer dat je malware analysis gaat performen, inclusief de sample
    http://zeltser.com/reverse-malware/intr ... 201208.pdf
  • Gebruik tools zoals Process Explorer om na te kijken wat de malware gaat doen. Bv. wordt CMD geladen voor een bepaald commando uit te voeren? Wordt er in explorer.exe geïnjecteerd? Spawnt deze child-process? Gaat deze aan click-fraude doen? Welke strings worden er precies ingeladen? Wat is de malware naam exact? Hoe bereikt deze persistentie op het systeem? Is deze malware signed (digitaal certificaat)?
  • Heb je malware uitgevoerd maar lijkt er niet meteen iets te gebeuren? Check met Process Explorer of je een proces ziet. Ja? Oké, ga verder met analyse. Nee? Wacht 5 minuten en kijk of er iets verandert. Nog steeds niet? Herstart het systeem. Mogelijk moet je de systeemtijd zelfs enkele dagen verder zetten.
  • Mogelijk kan de malware ook packed zijn, dit is ofwel voor compressie ofwel voor antivirus-detectie te omzeilen. Meer uitleg over packers vind je op: http://www.virusbtn.com/resources/glossary/packer.xml
    Er zijn verschillende packers, de bekendste is wel UPX. Eveneens zijn er nog een pak andere packers en zelfs custom packers gemaakt door - de malware author zelf. Bestand kan je unpacken in een disassembler (bv. IDA Pro- https://www.hex-rays.com/products/ida/index.shtml, OllyDBG- http://www.ollydbg.de/,...). Kijken of er een packer aanwezig is kan je met VirusTotal, of met tools zoals PEiD - http://www.aldeid.com/wiki/PEiD of LordPE - http://www.woodmann.com/collaborative/t ... php/LordPE .
  • Tools voor analyse van PDF kan je zowel online vinden, bv. MalwareTracker - http://www.malwaretracker.com/pdf.php, VirusTotal (zie ook hierboven), of kan je zelf doen met bv. PDFiD of PDF-Parser - http://blog.didierstevens.com/programs/pdf-tools/ .
    Tools voor analyse van JAR zijn schaarser, bv. ShowMyCode - http://www.showmycode.com/ of je bekijkt deze zelf met JD-GUI - http://java.decompiler.free.fr/
  • Werkt een bepaalde malware site niet? Dubbelcheck eens met URLquery of http://isup.me om te kijken of die wel online is. Deze is ofwel
    a) Effectief offline (offline gehaald)
    b) Je IP is gebanned (op land)
    c) Je hebt geen correcte referrer gebruikt
    d) Nog niet actief
    e) Iets in je netwerk blokkeert de link, bijvoorbeeld MBAM, of een URL/Malware filter ingebakken in je router of andere appliance


Slot
Een heel pak informatie, naar ik hoop voldoende uitgelegd en voorzien van informatie. Verdere vragen mag je natuurlijk altijd stellen, maar zoek eerst zelf even op of je er iets over terugvind. Belangrijk is altijd dat je vragen blijft stellen, niet alleen over deze post, maar ook als je eenmaal aan analysis zelf begint. Waarom zou deze malware X of Y actie uitvoeren? Waarom dit niet en dit wel? Waarom op deze manier? Wat is het nut van deze string of naamgeving van malwarefile/folder? Stay curious!

2 comments:

  1. good, extensive post Bart. Thanks

    ReplyDelete
  2. I find your blog very informative and am looking forward to frequently visit your site in the near future

    ReplyDelete