Een honingval voor malware

Eugene Kaspersky legt uit hoe Kaspersky Sandbox gebruikmaakt van virtuele machines om het gedrag van malware grondig te onderzoeken.

Ik heb het zesde deel van Mission Impossible niet gezien, en dat ben ik ook niet van plan. Ik keek deel vijf — als een soort zombie, tijdens mijn reis terug naar huis op een langeafstandsvlucht na een zware werkweek — maar puur en alleen omdat één scène ervan was opgenomen in ons prachtige nieuwe, moderne kantoor in Londen. En dat was één deel van Mission Impossible te veel, eerlijk gezegd. Nee, niets voor mij. Knal, boem, bots, ram, wauw. Oef. Nee, ik heb liever iets uitdagends, dat je aan het denken zet en simpelweg interessant is. Ik heb al zo weinig tijd!

Ik ben Tom Cruise en co hier enorm te kakken aan het zetten, nietwaar? Maar wacht. Ik moet ze nageven dat er in ieder geval één scène erg goed gedaan was (die je aan het denken zet en simpelweg interessant is!). Het is de scène waarin de goeden de schurk zover moeten krijgen om zijn mede-schurken te verraden, of zoiets. Dus ze zetten en nepomgeving op in een “ziekenhuis” met “CNN” op “tv” waar nieuws wordt uitgezonden over een allesvernietigende atoomoorlog. Voldoende tevreden door het feit dat zijn apocalyptische manifest aan de wereld wordt getoond, geeft de schurk zijn maten op (of was het een inlogcode?) in een deal die hij heeft gesloten met zijn ondervragers. Oeps. Dit is het fragment.

Waarom ben ik zo dol op deze scène? Omdat het heel goed een van de methodes weergeeft voor het detecteren van… nooit eerder vertoonde cyberdreigingen! Er zijn tal van zulke methodes, variërend van het toepassingsbied, de effectiviteit, hulpbronnengebruik en andere parameters (Ik schrijf daar hier regelmatig over). Maar één methode lijkt er altijd bovenuit te steken: emulatie (waar ik ook erg veel over heb geschreven).

Net als in de Mission Impossible-film, lanceert een emulator het object dat wordt onderzocht in een geïsoleerde, kunstmatige omgeving, die het object aanmoedigt om zijn kwaadaardigheid te tonen.

Maar er is één groot nadeel aan deze aanpak: het feit dat de omgeving kunstmatig is. De emulator doet zijn best om die kunstmatige omgeving zo veel mogelijk op een echt besturingssysteem te laten lijken, maar de steeds slimmer wordende malware slaagt er nog altijd in om het te onderscheiden van the real thing. En dan ziet de emulator hoe de malware het heeft herkend, hergroepeert het en verbetert het zijn emulatie, en dat gaat zo maar door in een eindeloze cyclus die met regelmaat kwetsbare plekken blootstelt op een beschermde computer. Het fundamentele probleem is dat er nog altijd geen emulator is geweest die een exact evenbeeld is van een echt besturingssysteem.

Er is echter een andere optie voor het tackelen van gedragsanalyses van verdachte objecten: een analyse — op een echt besturingssysteem — op een virtuele machine. Nou, waarom niet? Als de emulator nooit helemaal genoeg is, laat dan een echte, al zij het virtuele, machine het maar proberen! Het zou de ideale “ondervraging” zijn — uitgevoerd in een echte omgeving, en geen kunstmatige, maar zonder de echte negatieve gevolgen.

Bij het horen van dit concept, zullen velen zich onmiddellijk afvragen waarom niemand hier eerder aan heeft gedacht. Virtualisatie maakt immer als sinds 1992 deel uit van de tech-mainstream. Zo simpel blijkt het dus niet te liggen.

Ten eerste is het analyseren van verdachte objecten op een virtuele machine een hulpbron-intensief proces, alleen geschikt voor de zwaardere enterprise-grade beveiligingsoplossingen, waarbij het scannen superintensief moet zijn zodat er absoluut geen kwaadaardigheid door de verdediging heen komt. Dus helaas, voor pc’s, laat staan smartphones, is deze technologie niet geschikt. Nog niet.

Ten tweede bestaat dit ook daadwerkelijk. We gebruiken deze technologie zelfs al — intern, hier bij de Kompany — voor interne onderzoeken. Maar op het gebied van producten die klaar zijn voor de markt, is er nog niet veel beschikbaar. Concurrenten hebben vergelijkbare producten op de markt gebracht, maar de effectiviteit daarvan laat nog veel te wensen over. Over het algemeen zijn die producten beperkt tot het verzamelen van logboeken en eenvoudige analyses.

Ten derde is het lanceren van een bestand op een virtuele machine slechts het begin van een erg lang en ingewikkeld proces. Het doel ervan is immers om ervoor te zorgen dat een object zijn kwaadaardigheid onthult, en daar is een slimme hypervisor voor nodig, het loggen en analyseren van gedrag, constant verfijnen van de modellen van gevaarlijke handelingen, bescherming tegen anti-emulatietrucs, uitvoeringsoptimalisatie en nog veel meer.

Hier kan ik zonder valse bescheidenheid zeggen dat we echt vooroplopen, op de hele wereld!

We kregen onlangs een U.S. patent toegekend (US10339301) dat de creatie dekt van een geschikte omgeving voor een virtuele machine voor het uitvoeren van diepe, snelle analyses van verdachte objecten. Zo werkt het:

  • Virtuele machines worden gecreëerd (voor verschillende soorten objecten) met instellingen die zowel de optimale uitvoering garanderen als de maximale opsporingskans.
  • De hypervisor van een virtuele machine werkt in samenwerking met het systeemloggen van het gedrag van een object en een systeemanalyse daarvan, geholpen door updatebare databases van modellen van verdacht gedrag, heuristieken, de logica van reacties op acties, en meer.
  • Indien er verdacht gedrag wordt gedetecteerd, voert het analysesysteem on-the-fly wijzigingen door aan het uitvoeringsproces van het object op een virtuele machine om het object aan te moedigen zijn kwaadaardige bedoelingen te laten zien. Het systeem kan bijvoorbeeld bestanden aanmaken, het register aanpassen, de tijd versnellen, enzovoorts.

Dit laatste punt, het derde, is het meest unieke en geweldigste gedeelte van onze technologie. Ik zal een voorbeeld geven van hoe dit werkt.

Het systeem detecteert dat een gelanceerd bestand “in slaap is gevallen” en niet langer activiteit vertoont. Dat komt doordat het object geprogrammeerd kan worden om stilletjes niets te doen gedurende (tientallen) minuten (uren) tot de start van kwaadaardige activiteit. Als het niets doen begint, versnellen we de tijd binnen de virtuele machine tot één, drie, vijf en tot wel een ontelbaar minuten per seconde. De functionaliteit van het bestand dat wordt geanalyseerd verandert niet, terwijl de wachttijd met een factor van honderd (of duizend) wordt ingekort. En als de malware na dit “dutje” besluit om de systeemklok te controleren (tikte deze?), wordt deze wijsgemaakt dat dat inderdaad zo was, en gaat de malware dus verder met zijn kwaadaardige missie, en tijdens dit proces wordt het onthuld.

Nog een voorbeeld:

Het object gebruikt een zwakke plek in een specifieke bibliotheek of probeert de inhoud van een bestand of register te wijzigen. Eerst probeert het met de hulp van de reguliere fopen()-functie om de bibliotheek te openen (of het bestand of register), en als dat niet lukt (er is geen bibliotheek, of geen toegangsrechten tot het bestand), geeft het simpelweg op. In zo’n scenario veranderen we (on the fly) de return-waarde van de fopen()-functie van “bestand afwezig” naar “bestand bestaat” (of, indien nodig, creëren we het bestand zelf en vullen we het met de geschikte content), en vervolgens observeren we simpelweg wat het object doet.

Deze aanpak werkt ook erg goed in de omstandigheden van logic trees van het gedrag van een object. Bijvoorbeeld: als er een bestand A en een bestand B bestaan, dan wordt bestand C gewijzigd en is de taak voltooid. Het is echter niet bekend wat het programma dat wordt onderzocht doet als alleen bestand A of alleen bestand B bestaat. Daardoor lanceren we een parallelle herhaling en vertellen we het programma dat bestand A bestaat, maar B niet, en vervolgens analyseren we de activiteit van de logic tree verder.

Het is belangrijk om rekening te houden met het feit dat de regels van reactie bij het uitvoeren van het bestand worden geconfigureerd door externe, eenvoudig te updaten databases. Het is niet nodig om de hele engine opnieuw te ontwikkelen om nieuw logica toe te voegen, maar je hoeft alleen de veelheid aan mogelijke scenario’s van kwaadaardig gedrag correct te beschrijven en een update in één klik uit te voeren.

En dat is, in een notendop, hoe deze technologie werkt. Deze technologie wordt binnenkort toegevoegd aan KATA, en zal tevens op de markt komen als een losstaande oplossing voor bedrijven: Kaspersky Sandbox.

 

Tips