image

Gaten in gedragsanalyse virusscanner

donderdag 13 augustus 2009, 22:18 door Redactie, 10 reacties

Met zijn 19 jaar is de Nederlandse Nomenumbra een van de jongste sprekers op HAR, toch wist zijn voorstel de kiescommissie zo te overtuigen dat hij vanavond voor vele honderden bezoekers mocht optreden. Reden genoeg voor Security.nl om hem te interviewen. Zijn echte naam wil hij niet vertellen, maar hij laat wel los een informatica student te zijn die al enige tijd meedraait. Zo begon hij met hackthissite en was actief op verschillende websites waar mensen malware analyseerden. In zijn lezing "Countering behavior based malware analysis" schetst hij een scenario hoe malware de gedragsanalyse van virusscanners kan omzeilen.

De meeste scanners gebruiken nog altijd signatures om kwaadaardige software te herkennen, maar kijken ook steeds vaker naar het gedrag dat bestanden op en het systeem zelf vertonen. Het gaat dan om behavior-gebaseerde analyse en detectie. "In het begin was het gros alleen gericht op patroon-gebaseerde detectie, met soms wat heuristieke detectie." Nomenumbra vermoedt dat vanwege de grote sommen geld die in het ondergrondse malware circuit rondgaan, de malware ook steeds professioneler wordt. Toch is nog altijd veel malware redelijk eenvoudig. Zelf Conficker noemt hij een simpele worm. "Stel dat ze op grote schaal metamorfisme gaan toepassen, dan zijn er veel moderne virusscanners die daar best een kluif aan hebben."

Daarom is het belangrijk om naar het gedrag van een bestand te kijken. "Je kunt een stukje code op twee manieren beschouwen, als platte binary, de blob, dit is de syntax. Maar op het moment als je die hele syntax morft dat is het gedrag, de symantiek, als die hetzelfde blijft wordt het veel moeilijker, dan kun je het niet meer met een reguliere expressie engine matchen."

Instructies
Nomenumbra keek naar het algemene idee van behaviour based analysis en wat mogelijk is om het nog lastiger te maken. Waar zitten daar de zwakheden in. Bij gedragsanalyse simuleert een virusscanner het programma. Daarbij loopt het alle mogelijke code paden af om te zien of er geen kwaadaardig pad of instructie tussenzit dat op malware duidt. Komt het gedrag op een specifieke locatie overeen met het gedrag in de database waarvan bekend is dat het slecht is. De database bestaat uit instructies die eerder door malware zijn gebruikt. Virusschrijvers kunnen echter via allerlei constructies de automatische analyse die veel anti-virusbedrijven toepassen omzeilen.

Volgens Nomenumbra begint het probleem al bij het bepalen wat slecht en goed is. Het formatteren van een schijf kan best goed gedrag zijn, mits aangeroepen door de gebruiker. "Over het algemeen zullen daar wel conventies over zijn. Verbinden naar een IRC -kanaal om een rekening te plunderen is gewoon kwaadaardig."

Achilleshiel
De achilleshiel van gedragsanalyse zit erin dat de virusscanner alle codepaden moet afgaan. Daarbij moet elk mogelijk pad geëxtraheerd worden. Tijdens een encryptie vraagstuk van Ron Rivest over timelock puzzels kreeg hij opeens een idee hoe ook virusschrijvers dit konden gebruiken. "Het ging over het concept van hoe stuur ik een stukje informatie naar de toekomst dat alleen op een bepaalde tijd gelezen kan worden." Denk aan een testament, maar ook de werking van een programma.

Rivest, de R van RSA, maakte een aanpassing aan het algoritme van niet paralleliseerbare instructies. Als je de instructies niet kunt parallelliseren verschilt de rekenkracht niet zoveel tussen een P4 en een supercomputer. Daarbij kan de ontwikkelaar aangeven hoe lang er over de instructies gedaan moet worden. Dit proces, de zogeheten timelock puzzel, kan niet worden gecomprimeerd. De sleutel waarmee het proces is versleuteld loopt bijvoorbeeld na een uur af, pas dan worden de instructies uitgevoerd. "Zelfs met een supercomputer kun je dat niet versnellen." Een virusschrijver kan elke instructie in het codepad met zijn eigen timelock puzzel versleutelen. Dat betekent dat een anti-virusbedrijf een uur lang moet emuleren om te zien of een bestand kwaadaardig is. Een virusscanner kan een gebruiker geen uur lang laten wachten tot die een bestand kan gebruiken. Het is dan ook bijna onmogelijk om binnen een acceptabele tijd met gedragsanalyse te bepalen of iets malware is.

Oplossing
Voor een virus maakt het wachten niet uit. Die heeft praktisch alle tijd, aangezien die toch al op het systeem staat. "En er is vrij weinig wat anti-virusbedrijven hier tegen kunnen doen." Een mogelijke oplossing zou het blacklisten van de encryptie code zijn, maar aangezien die van RSA is afgeleid, is dat niet realistisch. "Je kunt moeilijk instructies die RSA uitvoeren blacklisten." Oplossingen zijn dan ook lastig en Nomenumbra heeft geen kant en klaar oplossing.

"Ik denk dat je in een tussen oplossing je beter kunt richten op intrinsieke security, dus echt in het besturingssysteem. Dat je iedere API die systeem kritische functies uitvoert, die moet gewoon een goed rechtensysteem hebben." Verder noemt hij whitelisting als een mogelijke optie. Die bepaalt welke applicatie waar bij mag. "Ingebouwde security, in plaats van security als los product." De gemiddelde gebruiker installeert niet zoveel programma's, zo laat hij weten. "Als je die whitelist, is dat meer dan genoeg preventie."

Reacties (10)
14-08-2009, 01:13 door Anoniem
De Russische virusschrijver z0mbie bedacht dit al jaren geleden, en noemde dit "delayed code" als ik het mij goed herinner.
14-08-2009, 01:39 door Kukel
Oplossingen zijn dan ook lastig en Nomenumbra heeft geen kant en klaar oplossing.

Maar tegelijk geeft hij met zijn *whitelist* al een redelijke oplossing. Of het nou ingebouwd is of in een virusscanner/firewall/.... libraries/routines herkennen die *wel* RSA (achtige) zaken mogen uitvoeren en anderen niet. Er vanuitgaande dat je wel kan herkennen dat er iets als dit gaande is.

Wel interessant om te zien of malware hier binnenkort gebruik van gaat maken

Ronald
14-08-2009, 10:29 door sjonniev
"Het formatteren van een schijf kan best goed gedrag zijn, mits aangeroepen door de gebruiker."

Nou nee, pas wanneer aangeroepen door de systeembeheerder!

;-)

Ah, dat ouwe ASAR van Utimaco...
14-08-2009, 10:48 door spatieman
ja, en om op een whitelist te komen, mag je als software schrijver geld gaan ophoesten.
wat voor een virusschrijven geen probleem is..
14-08-2009, 11:23 door Anoniem
Je zal verbaasd zijn over het lage aantal malware dat probeert de harde schijf te formateren. Je kunt dit biologisch bekijken: er is geen belang bij het ombrengen van de gastheer en tegelijk ervoor zorgen dat de kans dat je ontdekt wordt veel groter wordt. Het heet wel malware, maar er is meestal toch wel een rationeel doel. Aanwijzingen voor malware zijn meer gericht op gedrag dat echt lijkt op gedrag van malware: zich nestelen op een bepaalde manier in het systeem, bepaalde poort openzetten, key logging, irc, etc.

Rivest is echt niet eerste die op tijd gebaseerde splitsingen als moeilijkheid heeft ontdekt. Dus in dit verhaal is het meer een outsider die denkt dat ie wat weet over iets dat zich buiten zijn vakgebied afspeelt. Komt vaker voor.

Uiteraard hoeft een emulator niet te wachten op een tijdschakelaar. Die leest gewoon uit wanneer de schakelaar omgaat, dat staat meestal gewoon in de code. Vaak heb je dat niet eens nodig om het executiepad te vervolgen, je slaat de conditie over en gaat verder met de mogelijke paden. Sleep() hoef je ook niet uit te voeren.
14-08-2009, 14:24 door Anoniem
Door Anoniem: Je zal verbaasd zijn over het lage aantal malware dat probeert de harde schijf te formateren. Je kunt dit biologisch bekijken: er is geen belang bij het ombrengen van de gastheer en tegelijk ervoor zorgen dat de kans dat je ontdekt wordt veel groter wordt. Het heet wel malware, maar er is meestal toch wel een rationeel doel. Aanwijzingen voor malware zijn meer gericht op gedrag dat echt lijkt op gedrag van malware: zich nestelen op een bepaalde manier in het systeem, bepaalde poort openzetten, key logging, irc, etc.

Rivest is echt niet eerste die op tijd gebaseerde splitsingen als moeilijkheid heeft ontdekt. Dus in dit verhaal is het meer een outsider die denkt dat ie wat weet over iets dat zich buiten zijn vakgebied afspeelt. Komt vaker voor.

Uiteraard hoeft een emulator niet te wachten op een tijdschakelaar. Die leest gewoon uit wanneer de schakelaar omgaat, dat staat meestal gewoon in de code. Vaak heb je dat niet eens nodig om het executiepad te vervolgen, je slaat de conditie over en gaat verder met de mogelijke paden. Sleep() hoef je ook niet uit te voeren.

Ik adviseer je het stukje te lezen, de 'tijdschakelaar' is niet te omzeilen, in de paper wordt duidelijk waarom en hoe.
Lezen voor je oordeelt.
14-08-2009, 14:28 door bernd
Door spatieman: ja, en om op een whitelist te komen, mag je als software schrijver geld gaan ophoesten.
wat voor een virusschrijven geen probleem is..
dat hoeft helemaal niet. De gebruiker kan een whitelist kunnen maken op basis van gedrag. UAC - achtig.
daarnaast zouden programmamakers gebruik kunnen maken van certificaten met daarin de hash van code (MD5 is niet waterdicht, maar iets is beter dan niets.)
hetzelfde zou de antivirusmaker kunnen doen, je betaalt immers ook voor de sig, waarom dan niet voor een whitelist?

hiermee houd je nieuwe code tegen op je systeem, maar vookom je niet dat bestaande goedgekeurde code wordt aangeroepen om foute dingen te doen (lekken in software / macro virus achtige dingen/kwaadaardige PDF bestanden etc)
14-08-2009, 19:37 door Anoniem
Door Anoniem:

Ik adviseer je het stukje te lezen, de 'tijdschakelaar' is niet te omzeilen, in de paper wordt duidelijk waarom en hoe.
Lezen voor je oordeelt.

Wat is schreef is dat een tijdschakelaar te omzeilen is.

Waar jij op doelt is dat je denkt dat de encryptie/decryptie tijdslot niet te omzeilen zou zijn. Dat kan wel zijn, het is immers encryptie en er zijn een oneindig aantal manieren om de sleutel elders te verbergen of pseudo-tijdafhankelijk te maken, maar dat is slechts een academisch probleem. Als je dergelijke code tegenkomt is het al bij voorbaat verdacht en zou het niet moeten worden uitgevoerd.
15-08-2009, 00:15 door Anoniem
Door Anoniem:
Door Anoniem:

Ik adviseer je het stukje te lezen, de 'tijdschakelaar' is niet te omzeilen, in de paper wordt duidelijk waarom en hoe.
Lezen voor je oordeelt.

Wat is schreef is dat een tijdschakelaar te omzeilen is.

Waar jij op doelt is dat je denkt dat de encryptie/decryptie tijdslot niet te omzeilen zou zijn. Dat kan wel zijn, het is immers encryptie en er zijn een oneindig aantal manieren om de sleutel elders te verbergen of pseudo-tijdafhankelijk te maken, maar dat is slechts een academisch probleem. Als je dergelijke code tegenkomt is het al bij voorbaat verdacht en zou het niet moeten worden uitgevoerd.

Het probleem is dat de code algemeen genoeg is om blacklisten onwaarschijnlijk te maken daar zoals ik al stel de instructies vrijwel gelijk aan RSA en BlumBlumShub zijn. In theorie is het blacklisten van de decrypter mogelijk maar in de praktijk wordt dat erg erg lastig zo niet onmogelijk/onwaarschijnlijk
15-08-2009, 13:57 door Anoniem
Door Anoniem: [
Het probleem is dat de code algemeen genoeg is om blacklisten onwaarschijnlijk te maken daar zoals ik al stel de instructies vrijwel gelijk aan RSA en BlumBlumShub zijn. In theorie is het blacklisten van de decrypter mogelijk maar in de praktijk wordt dat erg erg lastig zo niet onmogelijk/onwaarschijnlijk

Denk dat niet te snel. Er zijn veel onderzoekers die zich blind staren op het kernprobleem (de malicieuze code of zoals hier een decryptor) en de context uit het oog verliezen. Toch is die context (op bit/byte niveau) vaak karakteristiek en statisch en daarom goed bruikbaar in detectie. Je kunt zodoende met enorm weinig detectie routines een enorm grote hoeveelheid detecteren, ook pro-actief.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.