Mal­wa­re ana­ly­se­ren met Cuckoo Sand­box

Mal­wa­re-ana­ly­se met Cuckoo Sand­box

C’t Magazine - - Inhoud - Oli­via von Wes­tern­ha­gen

Soms is de af­komst twij­fel­ach­tig, soms slaat de vi­rus­scan­ner aan – en soms is het ge­woon nieuws­gie­rig­heid: als je wilt we­ten wat een pro­gram­ma nou wer­ke­lijk uit­voert, kun je met de gra­tis Cuckoo Sand­box bin­nen een paar mi­nu­ten uit­sluit­sel krij­gen. Cuckoo is ook heel mak­ke­lijk als on­li­ne ser­vi­ce te ge­brui­ken.

De Cuckoo Sand­box stuurt be­stan­den naar een vir­tu­e­le om­ge­ving, ana­ly­seert hun ge­drag en le­vert veel bruik­ba­re in­for­ma­tie te­rug waar­mee je mak­ke­lijk kunt in­schat­ten of ze een po­ten­ti­eel ge­vaar zijn. Het opens­our­ce­pro­ject is in 2010 al in het le­ven ge­roe­pen, en dank­zij de con­ti­nue door­ont­wik­ke­ling van een team van vier man en de bij­dra­gen van een en­thou­si­as­te com­mu­ni­ty heeft het zich de laat­ste ja­ren ont­wik­keld tot een sta­biel en krach­tig mal­wa­re-ana­ly­se­sys­teem. Zelfs de com­mer­ci­ë­le an­ti­vi­rus­pro­du­cen­ten ge­brui­ken het.

Als je in de pri­vés­feer met mal­wa­re be­zig bent of in de ICT-in­fra­struc­tuur van je werk va­ker met ver­dach­te be­stan­den ge­con­fron­teerd wordt, kun je met een lo­ka­le Cuckoo-in­stal­la­tie een ge­heel gra­tis en aan te pas­sen testom­ge­ving in el­kaar zet­ten. Cuckoo is ech­ter ook voor ge­le­gen­heids­ge­brui­kers be­schik­baar: op mal­wr.com kun je ver­dach­te be­stan­den uplo­a­den en la­ten tes­ten. Het ge­ge­ne­reer­de rap­port krijg je een paar tel­len la­ter dan in de brow­ser te zien.

Om het pro­gram­ma te ana­ly­se­ren, voert Cuckoo het daad­wer­ke­lijk uit. Daar­bij wordt al­ler­lei mo­ge­lij­ke in­for­ma­tie ver­za­meld. De Cuckoo-host is daar­bij het cen­trum van de in­fra­struc­tuur met de pro­gram­ma­lo­gi­ca. Die com­pu­ter stelt de in­ter­fa­ce voor het ver­stu­ren van het be­stand be­schik­baar en is ook de plek waar de (mal­wa­re-)sam­ples, be­rich­ten, log- en con­fi­gu­ra­tie­be­stan­den be­heerd wor­den.

Op­bouw en wer­king

Bij een lo­ka­le in­stal­la­tie fun­geert je ei­gen com­pu­ter als host. Daar moet lo­gi­scher­wij­ze geen mo­ge­lij­ke scha­de­lij­ke co­de op uit­ge­voerd wor­den. Daar wor­den dan de guests voor ge­bruikt, waar­bij het gaat om vir­tu­e­le ma­chi­nes (van bij­voor­beeld Vir­tu­alBox of VMwa­re) of om apar­te fy­sie­ke sys­te­men.

De guests zijn via een vir­tu­eel ge­iso­leerd net­werk met de host ver­bon­den (host-on­ly). De host kan daar­bij als in­ter­net­rou­ter van de guest wer­ken en diens ver­bin­din­gen bij­voor­beeld door­stu­ren naar in­ter­net via ip-for­war­ding en mas­ke­ra­ding/ NAT. Daar kan hij op­ti­o­neel ook een VPN of Tor bij ge­brui­ken.

Bij de eer­ste stap van de ana­ly­se ver­pakt de Cuckoo-host de sam­ple eerst in een zip-be­stand – sa­men met de ge­pre­pa­reer­de ana­ly­se­com­po­nen­ten (ana­ly­zer) en een paar con­fi­gu­ra­tie­be­stan­den. Ver­vol­gens neemt hij con­tact op met een agent­com­po­nent die op het guest-sys­teem op een bin­nen­ko­men­de ver­bin­ding wacht. De agent ont­vangt het zip-be­stand, pakt het uit en start de ana­ly­zer die er ook in­zit. Die kiest op ba­sis van de con­fig-in­for­ma­tie en het ty­pe van het ge­stuur­de be­stand een ana­ly­se­pak­ket dat ver­ant­woor­de­lijk is voor het uit­voe­ren van het be­stand.

Uit­voer­ba­re be­stands­for­ma­ten wor­den door het ver­ant­woor­de­lij­ke Py­thon­script met­een ge­start. Word-do­cu­men­ten, PDF-be­stan­den en DLL's wor­den met een bij­pas­send hulp­pro­gram­ma ge­o­pend. Op dit mo­ment kun je met Cuckoo meer dan 20 be­stands­ty­pen ana­ly­se­ren, waar­on­der de ge­brui­ke­lij­ke EXE-be­stan­den (PE32) en of­fi­ce­do­cu­men­ten, PDF's en Ja­vaScript.

Tij­dens het uit­voe­ren be­waakt de ana­ly­ser al­le re­le­van­tie func­tie-aan­roe­pen van de ge­star­te sam­ple. Daar­voor in­jec­teert hij na het la­den, maar nog voor het star­ten een mo­ni­tor-DLL in het pro­ces en wor­den al­le be­waak­te sys­teem­aan­roe­pen naar zijn func­ties om­ge­leid. Tech­nisch heb je het dan over DLL in­jec­ti­on en in­li­ne hoo­king.

De mo­ni­tor­func­ties hou­den dan voor en na het aan­roe­pen van de ei­gen­lij­ke sys­teem­func­ties uit­voe­rig bij wel­ke be­stan­den of re­gis­ter­sleu­tels de sam­ple ge­bruikt en en nog veel meer. Bij een hook naar de func­tie Re­gCre­a­teKey re­gi­streert de mo­ni­tor niet al­leen dat het pro­gram­ma een nieu­we re­gis­ter­sleu­tel wil aan­ma­ken en of dat ge­lukt is, maar uit de pa­ra­me­ters van de aan­roep kun je ook het pad, de naam en de in­houd van de nieu­we sleu­tel ha­len.

Als het pro­gram­ma een an­der pro­ces kaapt of start, zorgt de mo­ni­tor-DLL er­voor dat die ook be­waakt wordt. Al met al houdt Cuckoo on­ge­veer 300 ver­schil­len­de sys­teem­aan­roe­pen in de ga­ten, on­der meer uit de be­rei­ken pro­ces­ma­na­ge­ment, be­stands-, re­gis­ter-, net­werk- en GUI-ope­ra­ties.

De Cuckoo-mo­ni­tor maakt van­uit sta­bi­li­teits­over­we­gin­gen geen log­be­stand op de guest aan. In plaats daar­van wor­den de ge­re­gi­streer­de ac­ti­vi­tei­ten via TCP/IP recht­streeks naar de host ge­stuurd, waar ze in een spe­ci­aal voor de ana­ly­se aan­ge­maak­te map wor­den op­ge­sla­gen. Daar wordt la­ter ook het af­slui­ten­de rap­port in op­ge­sla­gen.

Net­werk­ver­keer

Een be­lang­rijk on­der­deel van de ana­ly­se is het uit­plui­zen van het net­werk­ver­keer. Bij­na al­le mal­wa­re com­mu­ni­ceert op een ge­ge­ven mo­ment na het uit­voe­ren met een ser­ver el­ders op de we­reld om de ver­za­mel­de in­for­ma­tie te ver­stu­ren, com­man­do's te ont­van­gen of an­de­re com­po­nen­ten te down­lo­a­den.

Om­dat al­le pak­ket­ten van de guests so­wie­so bij de host langs­ko­men, kan die een­vou­dig mee­kij­ken naar het net­werk­ver­keer. Cuckoo doet dat met tc­pdump, dat een PCAP-be­stand in de ana­ly­se­map aan­maakt. Uit die ko­pie is het com­ple­te net­werk­ver­keer te re­con­stru­e­ren. Cuckoo zet in die map ove­ri­gens ook ko­pie­ën van al­le ge­maak­te be­stan­den.

Als je ook via TLS ver­sleu­tel­de da­ta via HTT­PS-ver­bin­din­gen wilt ana­ly­se­ren, moet je de Cuckoo-host als man-in-the-midd­le in­stel­len. Daar­voor kun je in de guest een root-CA van de host als te ver­trou­wens­waar­di­ge cer­ti­fi­caat­uit­ge­ver in­stal­le­ren. Een tool als mit­m­proxy kan zich daar­mee in de TLS-ver­bin­din­gen in­bed­den. Bo­ven­dien ex­tra­heert Cuckoo sinds ver­sie 2.0 de zo­ge­he­ten TLS Mas­ter Se­crets van zijn Win­dows-guests in een be­stand met de naam tls­mas­ter.txt, dat in de­zelf­de map als het PCAP-be­stand komt te staan. Daar­mee kan bij­voor­beeld Wi­reshark ook de ver­sleu­tel­de HTT­PS-da­ta ont­cij­fe­ren. Vaak zegt één beeld meer dan 1000 woor­den. Een ven­ster met een af­per­sings­bood­schap en ver­sleu­tel­de be­stan­den op de desktop laat wei­nig twij­fel over de plan­nen van het ge­a­na­ly­seer­de be­stand. Cuckoo geeft je in het ka­der van een rap­port een in­kijk in de sand­box met be­hulp van meer­de­re screenshots die een tool tij­dens het uit­voe­ren van het be­stand maakt.

Cuckoo laat een pro­gram­ma twee mi­nu­ten lo­pen voor een test. Ver­vol­gens beein­digt de ana­ly­zer zo­wel het pro­gram­ma als het guest-sys­teem. Als de ana­ly­zer of zelfs de vir­tu­e­le ma­chi­ne niet meer re­a­geert, zorgt de host er­voor dat er na nog eens 60 se­con­den een ein­de aan komt.

An­ti- en an­ti-an­ti-ana­ly­se

Mal­wa­re kan aan een ana­ly­se ont­snap­pen door de eer­ste twee mi­nu­ten al­leen maar dui­men te draai­en en ver­der niets te doen. Je kunt de tijds­duur ech­ter glo­baal aan­pas­sen bij de Cuckoo-con­fi­gu­ra­tie of tij­de­lijk ver­len­gen door bij­voor­beeld een com­mand­line-pa­ra­me­ter mee te ge­ven als je de ana­ly­se start.

De sand­box heeft ook stra­te­gie­ën te­gen an­de­re an­ti-ana­ly­se­tech­nie­ken. Een mo­du­le met de naam hu­man.py si­mu­leert bij­voor­beeld men­se­lij­ke in­ter­ac­ties als muis­be­we­gin­gen en toet­sen­bordaan­sla­gen. Bo­ven­dien kan het script ook knop­pen aan­klik­ken en 'ant­woor­den' op vra­gen over het uit­voe­ren van ma­cro's.

Na het af­slui­ten van de dy­na­mi­sche ana­ly­se be­kijkt Cuckoo al­le ver­za­mel­de

da­ta en maakt daar een over­zich­te­lijk ge­struc­tu­reerd ana­ly­se­rap­port van. De host zet het guest-sys­teem na el­ke scan weer te­rug in de oor­spron­ke­lij­ke be­gin­toe­stand om voor el­ke ana­ly­se gel­di­ge re­sul­ta­ten op een zui­ver sys­teem te ga­ran­de­ren. Bij vir­tu­e­le ma­chi­nes werkt dat met her­stel­pun­ten, bij fy­sie­ke pc's wordt daar soft­wa­re als FOG, Clo­ne­zil­la of Deep Free­ze bij ge­bruikt. Daar wor­den dan meest­al ssd's voor ge­bruikt, zo­dat ook het te­rug­zet­ten van com­ple­te ima­ges maar een paar mi­nu­ten duurt en geen uren meer.

ZLoa­der in on­li­ne-check

Als je zo snel mo­ge­lijk wilt we­ten hoe een ana­ly­se er­uit ziet, kun je een (mal­wa­re)pro­gram­ma uplo­a­den naar de on­li­ne-ser­vi­ce mal­wr.com. Net als bij Cuckoo gaat het daar­bij om een niet-com­mer­ci­eel pro­ject dat door twee Cuckoo-ont­wik­ke­laars in hun vrije tijd be­heerd wordt en re­gel­ma­tig wordt bij­ge­werkt naar de nieuw­ste ont­wik­kel­stand. Bij het ver­stu­ren van een be­stand kun je door het ver­wij­de­ren van het vin­kje bij 'Sha­re the sam­ple' ove­ri­gens aan­ge­ven dat je het be­stand niet aan der­den wilt door­ge­ven. Laat je het op de stan­daard­in­stel­ling staan, krijgt het op de ser­ver al­tijd be­schik­ba­re rap­port een down­lo­ad­link voor an­de­ren. Na het uplo­a­den krijg je een link naar het rap­port. Het duurt nor­maal ge­spro­ken een paar mi­nu­ten voor­dat de re­sul­ta­ten be­kend zijn.

De ru­we da­ta van een ana­ly­se zijn een har­de noot om te kra­ken. Cuckoo doet ech­ter zijn best de bin­nen­ge­haal­de in­for­ma­tie van con­text te voor­zien en een be­oor­de­ling daar­door te ver­ge­mak­ke­lij­ken. Daar ho­ren on­der meer zo­ge­he­ten 'sig­na­tu­res' bij, die je niet moet ver­war­ren met de sig­na­tu­res van an­ti­vi­rus­soft­wa­re. In dit ge­val ge­ven ze aan dat het on­der­zoch­te pro­gram­ma op­val­lend ge­drag ver­toont.

Voor de in­ter­pre­ta­tie is het van be­lang dat ook die sig­na­tu­res geen een­dui­dig be­wijs vor­men voor het scha­de­lijk zijn van een pro­gram­ma. Met na­me geel com­men­taar als 'Per­forms so­me HTTP re­quests' zegt niet zo heel veel. Het door ons bij het tes­ten ge­bruik­te ZLoa­der-sam­ple zorgt er­voor dat min­stens één an­ti­vi­rus­pro­gram­ma bij Vi­rus­to­tal aan­slaat. Het pro­gram­ma ge­bruikt daar­naast re­sour­ces in het Rus­sisch, maar daar kun­nen al­le­maal on­schul­di­ge ver­kla­rin­gen voor zijn.

Dui­de­lijk ver­dach­te ac­ti­vi­tei­ten wor­den in het rap­port met rood aan­ge­ge­ven, zo­als het aan­ma­ken van een Au­to­run-item of – zo­als bij ZLoa­der – een po­ging zich door hoo­king aan de ana­ly­se te ont­trek­ken. Met na­me con­cre­te in­for­ma­tie als 'Con­tacts C&C ser­ver HTTP check-in (Ban­king Tro­jan)' is zin­vol, waar­mee de ZLoa­der-sam­ple re­de­lijk een­dui­dig als ban­king­tro­jan wordt ge­clas­si­fi­ceerd. Er zijn im­mers wei­nig le­gi­tie­me re­de­nen waar­om een pro­gram­ma met de com­mand&con­trol­ser­ver van een cri­mi­ne­le ben­de con­tact moet ma­ken.

De over­zichts­pa­gi­na laat ook met­een zien dat het daar­bij om het do­mein to­hin­wit­hec.com gaat, zo­dat je daar ver­der op kunt gaan zoe­ken. Op een tab­blad met de 'Net­work Ana­ly­sis' staan meer de­tails over de net­werk­ac­ti­vi­tei­ten, bij­voor­beeld een com­ple­te lijst met de hosts waar­mee con­tact ge­zocht is en de af­zon­der­lij­ke HTTPre­quests.

Het tab­blad 'Be­ha­vi­ou­ral Ana­ly­sis' ver­za­melt be­lang­rij­ke in­for­ma­tie voor een ver­de­re ana­ly­se. Daar staat, ge­sor­teerd op pro­ces­sen, de van de API-hoo­king ver­kre­gen in­for­ma­tie. Daar­naast is er ook een op ca­te­go­rie­ën ge­sor­teer­de gra­fi­sche weer­ga­ve van events als het star­ten van pro­ces­sen en ser­vi­ces, toe­gang tot be­stan­den en re­gis­ter en net­werk­ac­ti­vi­tei­ten.

Voor het in­ter­pre­te­ren van de ge­drags­in­for­ma­tie moet je wel de no­di­ge ach­ter­grond­ken­nis heb­ben of ge­noeg tijd om on­li­ne wat ver­der te zoe­ken. Je kunt uit de ge­do­cu­men­teer­de func­tie­aan­roe­pen van de ZLoa­der-sam­ple dan bij­voor­beeld des­til­le­ren dat hij een in­stan­ce van ex­plo­rer.exe in sus­pen­ded sta­te start waar­in hij een DLL met ge­ïn­fec­teer­de co­de in­jec­teert. Dat is een be­ken­de tech­niek om scha­de­lij­ke co­de on­der de dek­man­tel van een le­gi­tiem pro­gram­ma uit te voe­ren.

Het tab­blad 'Sta­tic Ana­ly­sis' is ove­ri­gens ook in­te­res­sant. Daar somt Cuckoo al­le ge­ïm­por­teer­de Win­dows-func­ties op. Dat is han­dig om­dat de dy­na­mi­sche

API-hoo­king al­leen de tij­dens het tes­ten ge­bruik­te func­ties laat zien. De sta­ti­sche lijst geeft daar­en­te­gen een snel over­zicht van de com­ple­te func­tie­om­vang van het pro­gram­ma. Het is ook prak­tisch dat Cuckoo min­der on­der­leg­de ana­lis­ten het ver­der zoe­ken mak­ke­lijk maakt door links naar do­cu­men­ta­tie van Mi­cro­soft over de func­ties toe te voe­gen. Dan kom je er met een paar muis­klik­ken ach­ter dat (en hoe) bij­voor­beeld Vir­tu­alPro­tect ge­heu­gen­be­scher­mings­op­ties ver­an­dert.

Het kor­te voor­beeld met ZLoa­der laat zien hoe een ana­ly­se met Cuckoo ver­schilt van een check bij de be­ken­de on­li­n­e­dienst Vi­rus­to­tal. Die laat­ste le­ver­de al­leen een wei­nig zeg­gend re­sul­taat. Of er ach­ter McA­fee's 'Be­ha­ves­Li­ke.Win32.Bad-Fi­le.ch' een echt ge­vaar schuil­gaat blijft een kwes­tie van spe­cu­le­ren. Met de con­cre­te ana­ly­se van het ge­drag die mal­wr.com le­vert, is het re­sul­taat ech­ter re­de­lijk een­dui­dig: de sam­ple lijkt re­de­lijk ze­ker kwaad­wil­lend van aard te zijn. Op ba­sis van de ge­toon­de in­for­ma­tie en wat ex­tra zoek­werk kun je dat nog ver­der con­cre­ti­se­ren.

Ei­gen koe­koe­k­nest

Hoe mak­ke­lijk het ana­ly­se­ren door de on­li­ne-dienst ook is, er zijn toch ook een paar na­de­len die spre­ken voor het heb­ben van een ei­gen sand­box. Om te be­gin­nen is dat het vaak on­ge­wens­te uplo­a­den van een sam­ple naar de cloud. Ver­der heb je met een ei­gen sand­box veel meer mo­ge­lijk­he­den om een ana­ly­se ver­der te ver­fij­nen – bij­voor­beeld ex­tra me­mo­ry-dumps met de fo­ren­si­sche tool Vo­la­ti­li­ty.

Bo­ven­dien pro­be­ren de mal­wa­re­ma­kers na­tuur­lijk ook steeds weer nieu­we trucs om het ana­ly­se­ren van hun brouw­sels te ver­hin­de­ren. Dan heb je meer aan een pro­fes­si­o­ne­le hand­ma­tig ge­op­ti­ma­li­seer­de sand­box met an­ti-an­ti-ana­ly­se­t­rucs. Bij twij­fel kun je die dan ook op ech­te hard­wa­re in plaats van een vir­tu­e­le ma­chi­ne la­ten draai­en.

Een van de gro­te plus­pun­ten van een lo­ka­le Cuckoo-in­stal­la­tie is de aan­pas­baar­heid van de guest-sys­te­men. Je kunt mal­wa­re op van te­vo­ren ge­de­fi­ni­eer­de sys­te­men los­la­ten om het ge­drag be­ter te be­grij­pen of zelfs de werk­zaam­heid van be­paal­de be­vei­li­gings­maat­re­ge­len te tes­ten. Je kunt daar ook een heel vir­tu­eel net­werk voor op­rich­ten en dan bij­voor­beeld kij­ken hoe Wan­naCry zich ver­spreid. Aan het in­rich­ten van een func­ti­o­neel ba­sis­sys­teem moet je wel een dag werk be­ste­den. Daar­na kun je nog ver­schil­len­de uit­brei­din­gen toe­voe­gen, al kan daar be­hoor­lijk wat meer tijd in gaan zit­ten.

An­ti­vi­rus­soft­wa­re en sand­boxes als Cuckoo be­ant­woor­den ui­t­ein­de­lijk de­zelf­de vraag, na­me­lijk of een pro­gram­ma iets kwaad­aar­digs van plan is. Maar het ty­pe ant­woor­den ver­schilt fun­da­men­teel. An­ti­vi­rus­soft­wa­re be­perkt zich al­leen tot een sim­pel 'ja' of 'nee'. Dat is in veel ge­val­len ook vol­doen­de, maar je loopt na­tuur­lijk al­tijd het ri­si­co dat het an­ti­vi­rus­pro­gram­ma het een keer mis heeft. Als je twij­felt, kom je dan niet veel ver­der. Zelfs ex­perts kun­nen uit de mel­din­gen van de an­ti­vi­rus­soft­wa­re niet op­ma­ken waar­om die in­schat­ting is ge­maakt.

Cuckoo pro­beert niet eens om der­ge­lij­ke een­dui­di­ge ant­woor­den te ge­ven, maar le­vert al­leen in­di­ca­to­ren die de sand­box-ge­brui­ker zelf moet in­ter­pre­te­ren. Dat is niet al­tijd een­vou­dig en zal voor de mees­te com­pu­ter­ge­brui­kers vaak iets te­veel ge­vraagd zijn. Cuckoo doet wel zijn best het ver­der zoe­ken zo mak­ke­lijk mo­ge­lijk te ma­ken en is daar­door ook voor nog­niet-ex­perts een mooie in­stap­mo­ge­lijk­heid in het ana­ly­se­ren van mal­wa­re. (nkr)

De dienst mal­wr.com le­vert een snel­le in­kijk in het ge­drag van een pro­gram­ma. Op de ach­ter­grond hier­van draait Cuckoo.

Een lo­ka­le Cuckoo-in­stal­la­tie maakt meer ge­rich­te ana­ly­ses mo­ge­lijk, bij­voor­beeld met op maat ge­maak­te vir­tu­e­le ma­chi­nes.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.