Deze blog is geschreven door @bartblaze, werkzaam als malware analist bij Panda Security Nederland, en oorspronkelijk in het Engels gepubliceerd op Blaze's Security Blog
Malware lab, de basics
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 fysieke toestel als je een VM gebruikt
Malware gaat vaak checken op bepaalde karakteristieken in het systeem, zoals hardware GUID's, eigenschappen van de Netwerkkaart, nakijken of X of Y tools geïnstalleerd zijn, 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.
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 kun je het beste split virtual disk gebruiken, aangezien deze minder schijfruimte gaat innemen (dynamisch), single file wordt meer gebruikt voor oudere toestellen. Qua prestaties 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 kunt gebruiken
Buiten uiteraard een Windows OS (bv. een Windows XP en een Windows 7, twee verschillende OS'en kunnen soms 2 verschillende resultaten opleveren) kan je ook een *nix distributie gebruiken die speciaal voor Malware Analysts is ontworpen. Hier heb je keuze in:- Malnet2 - deze wordt niet meer ontwikkeld, heb deze ergens in 2010 op HITB leren kennen en maar af en toe gebruikt. Enkel de slides zijn nog nuttig voor referentie. Informatieve slides & pastebin.
- Remnux - deze gebruik ik tegenwoordig, de ideale toolbox, een must have dus! Info: Zeltser.com & SANS (video)
- Je eigen distri - Niets houdt je tegen om immers zelf een eigen environment op te zetten met tools die jij wilt - echter, waarom zou je het wiel opnieuw uitvinden?
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:
Deze drie 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 mocht 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 dit zijn wel de bekendste. (vooral Malwr is een aanrader)
Sandboxie
Indien je geen VM hebt of er geen kunt gebruiken maar toch min of meer malware analysis wilt gaan uitvoeren, kun 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
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 en JSunpack zijn beide tools om malware sites te analyseren, indien je moeilijkheden hebt met Malzilla of, wegens tijdsgebrek snel iets moet checken. URLquery is meer intuïtief. Beide tools zijn echter onmisbaar.
Last, but not least: VirusTotal
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 kunt al een schat aan tools op deze link vinden: http://zeltser.com/malware-analysis-toolkit/
Mijn persoonlijke favorieten:
Fiddler: bekijken wat X of Y URL precies probeert te laden, handig voor de infection vector en het bepalen van de methodiek.
RegShot: neem een "snapshot" van het huidige systeem en vergelijk daarna welke wijzigingen malware heeft doorgevoerd.
Revelo: 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 ben 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
Process Guard
Algemene tips & trucs
Nog enkele leuke slides voor de eerste keer dat je malware analysis gaat performen, inclusief de sample. Gebruik tools als Process Explorer om na te kijken wat de malware gaat doen. Bv. wordt CMD geladen om 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 malwarenaam 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 om antivirus-detectie te omzeilen. Meer uitleg over packers vind je op deze pagina.
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 kun je unpacken in een disassembler (bv. IDA Pro, OllyDBG). Kijken of er een packer aanwezig is kun je met VirusTotal, of met tools zoals PEiD of LordPE
Tools voor analyse van PDF kun je zowel online vinden, bv. MalwareTracker, VirusTotal (zie ook hierboven), of kun je zelf doen met bv. PDFiD of PDF-Parser.
Tools voor analyse van JAR zijn schaarser, bv. ShowMyCode - of je bekijkt deze zelf met JD-GUI.
Werkt een bepaalde malware site niet? Dubbelcheck eens met URLquery of 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
Geen opmerkingen:
Een reactie posten