Systeeminbraken opsporen met LOKI

Alieke van Sommeren
0

Inhoudsopgave

LOKI doorzoekt net als een virusscanner clients en servers op sporen van inbraak. Maar vergeleken met een virusscanner is hij makkelijker te voeren met zelfgemaakte signatures, waarmee hij direct op jacht kan naar nieuwe bedreigingen.

Als je op internet zoekt naar informatie over aanvallen op bedrijfsnetwerken of naar de huidige malware-campagnes, dan heb je voorlopig in ieder geval voldoende te lezen. Makers van beveiligingssoftware, onafhankelijke experts en overheidsinstellingen zoals USCERT bieden uitgebreide informatie over recente voorvallen. Daarin zitten bijna altijd bestandsnamen en hashes, ip-adressen van command-and-control-servers en stukken code uit schadelijke scripts.

En het kan nog een tandje uitgebreider als het gaat om malware en andere onderdelen via de uitgebreide analyses van online diensten als VirusTotal en Hybrid-Analysis. Al die brokken informatie bieden aanwijzingen over succesvolle inbraakpogingen (Indicators of Compromise, kortweg IoC). Netwerkbeheerders, maar ook veiligheidsbewuste consumenten zien inmiddels ook het nut wel in van het doorzoeken van de eigen systemen en netwerken op dit soort aanwijzingen. Dat is het doel van de gratis IoC-scanner LOKI.

Installatie niet nodig

LOKI werkt zonder hem te hoeven installeren op Windows, Linux of macOS, bijvoorbeeld op domeincontrollers, web- en fileservers en alle clients binnen een netwerk. De lichte commandlinetool vergelijkt bestanden en draaiende processen net zoals een viruscanner met een lokaal opgeslagen virusdatabase.

Bij klassieke virus scanners krijg je niet ‘effe snel’ je eigen bestandssignatures erin gestopt, maar bij LOKI gaat dat heel eenvoudig. LOKI heeft in Python geschreven broncode. Deze is via de GitHub-repository van de ontwikkelaar te bekijken. Op de pagina voor de releases staat de meest recente versie van de tool klaar in een zipbestand. In de submappen staan behalve een kant-en-klaar gecompileerd exe-bestand alle componenten die de scanner verder nodig heeft.

De commandlinetool kan net als alle andere software binnen het netwerk worden verspreid. Je kunt denken aan het beschikbaar maken via een netwerkshare en daarna uitvoeren als scheduled task met de juiste groepsrichtlijnen.

Volledige systeemscan

Voor een volledige systeemscan moet je LOKI met administratorrechten uitvoeren. Om op een pc met Windows de programmamap te doorzoeken op IoC, typ je op de Opdrachtprompt het volgende in:

loki -p C:\Program Files

De parameter –update geeft LOKI de opdracht om zijn signature-database bij te werken. Anders doet LOKI dat alleen de eerste keer dat hij wordt opgestart. De database die bij de scanner hoort is grotendeels in elkaar gezet door de ontwikkelaar, die de database regelmatig bijwerkt. Maar je kunt hem naar keuze uitbreiden met informatie uit andere bronnen. Daarover verderop meer. De parameter -h toont je een lijst met alle mogelijke parameters.

De volgende stap is dat LOKI de draaiende processen test die bestaande netwerkverbindingen hebben. Deze vergelijkt hij met adressen van command-and-controlservers. Via deze servers kunnen aanvallers op afstand toegang krijgen tot geïnfecteerde machines. Sinds versie 0.26.0 voert LOKI op dit punt ook een (signature-onafhankelijke) test uit op afwijkende processen, met de PE Sieve-tool van malware-onderzoeker hasherazade. Zo komen dll’s boven water die zich in legitieme processen genesteld hebben.

Hashes & YARA

Daarna vergelijkt LOKI de hashes van de gescande bestanden met MD5-, SHA1- en SHA256-hashes van bekende malwareen APT-onderdelen. En aan de hand van reguliere expressies komt hij verdachte combinaties op het spoor van bestandsnamen en -extensies, plus paden en mapnamen.

LOKI bepaalt van alle bestanden het type en besluit op basis daarvan of hij ze verder onderzoekt. Over het algemeen gaat het dan over uitvoerbare bestanden, maar het kunnen ook geheugendumps zijn (.dmp), die dan doorzocht worden op sporen van inbraak. LOKI kan ook zogenaamde YARA-regels toepassen op bestanden en draaiende processen. Dit zijn op regels gebaseerde signatures die bekende bestandseigenschappen zoals soort en grootte combineren, of strings en bytereeksen.

In de IT-securityscene is YARA inmiddels al een bekende naam. De Threat Intelligence Services van ESET en Kaspersky, en de opensource virusscanner ClamAV werken met de YARA-syntax. En ook de US-CERT maakt voor een aantal IoC’s vaak meteen de bijpassende regels bekend.

De bijna 370 YARA-regels in LOKI’s signature database herkennen behalve malware ook allerlei andere typische hackertools en scripts om illegaal toegang te krijgen tot webservers. Behalve scans op basis van signatures voert LOKI meer tests uit, maar deze allemaal noemen zou de pagina behoorlijk vullen, dus we verwijzen je daarvoor naar de readme.

Kleurcodering en output

De berichten die in het commandlinevenster verschijnen tijdens de scan zijn op te delen in groen voor informatie, blauw voor notices, waarschuwingen in geel en alerts in rood. Dat hangt af van scores die aangeven hoe gevaarlijk de dreiging precies is. De opgedoken informatie bevat behalve een score ook exacte paden en proces-ID’s en korte beschrijvingen en links naar nog meer informatie.

Die haalt LOKI uit de signature-database. Daarna logt LOKI zijn output als logbestand (in dezelfde map waar ook de scanner staat) en geeft daarbij aan of je nog verdere acties moet uitvoeren. Anders dan bij normale AV-scanners verschuift of wist LOKI geen bestanden. Dit wordt helemaal overgelaten aan de gebruiker: je moet zelf aan de bak om de vondsten onder handen te nemen.

Eigen signatures

Je kunt LOKI leren om nieuwe malware op te sporen door nieuwe signatures te maken. Op die manier kun je bijvoorbeeld de database aanvullen met de IoC’s waarmee LOKI de nieuwe banktrojan Karius kan ontdekken. Als je een zoekopdracht uitvoert in de vorm van ‘IoC Karius banking trojan’, kom je onder andere een blogpost tegen van de securitysoftwarebouwer Check Point. Daar vind je als IoC’s bestandsnamen en paden, bestandshashes en een domein waar de trojan zijn datavangst naartoe stuurt:

injector32\64.exe
proxy32\64.dll
mod32\64.dll
728911a915d9ec3b6defa430d24bc0d5
857430b8c9dc78ce4eabbe57cb3ae134
http://proxyservice.site/updates/gateway.php

Om deze IoC’s aan de signature-database toe te voegen, navigeer je naar de submap ‘iocs’. Daar staan de bestanden ‘filenameiocs. txt’, ‘hash-iocs.txt’ en ‘c2-iocs.txt’. Daar haalt LOKI de reguliere expressies uit voor het vergelijken van de bestandsnamen en paden (filename-iocs.txt), de malwarehashes (hash-iocs.txt) en de command-andcontrol- serveradressen (c2-iocs.txt).

LOKI overschrijft deze bestanden bij elke update van de signatures. Daarom is het aan te raden om voor je eigen signatures nieuwe bestanden aan te maken. Om te zorgen dat de scanner de opgeslagen signatures goed herkent, moeten de bestandsnamen al naargelang het soort signature de strings filename, hash of c2 bevatten.

LOKI interface na

Met de toegevoegde DIY-signatures krijgt LOKI zonder problemen Karius boven water. Het opruimwerk moet je als gebruiker zelf regelen.

Maak als test de bestanden my-filenames.txt, my-hashes. txt en my-c2.txt aan. In my-filenames.txt zet je de paden en bestandsnamen uit de Karius-analyse. Daarbij hoort dan een score die LOKI vertelt hoe hoog het dreigingsniveau is. Een blik in de broncode van LOKI laat zien dat een waarde van meer dan 40 voor warnings en groter dan 70 voor alerts zorgt. Karius verdient in ieder geval het laatste scenario. Typ het volgende op een lege regel in my-filenames.txt:

injector32\\64\.exe;80
proxy32\\64\.dll;80
mod32\\64\.dll;80

De bestandshashes voer je in het bestand my-hashes.txt in en de url’s in my-c2.txt. Ook hier is het weer belangrijk dat elke IoC op een eigen regel staat. Deze keer komt er geen score na de puntkomma, maar commentaar dat LOKI bij herkennen laat zien. Een regel in my-c2.txt ziet er bijvoorbeeld zo uit:

http://proxyservice.site/updates/gateway.php;Karius Banking Trojan(https://research.checkpoint.com/banking-trojans-development/)

Na het opslaan van de signaturebestanden in de iocs-map gaat LOKI de malware uitvoerig aan de tand voelen. LOKI biedt ook de optie voor het vastleggen van uitzonderingen. Vooral bij grote bedrijven is dat handig om programma’s die veel worden gebruikt van tevoren al van de lijst te schrappen.

Het uitsluiten via hashes gebeurt tegelijk met de normale hash-IoC’s via een bestand waarvan de naam de string ‘falsepositive’ bevat. Als je bestandsnamen, mappen of complete paden wilt uitsluiten van de scan, moet je het bestand exclude.cfg in LOKI’s submap ‘config’ aanpassen. Kwestie van uitproberen LOKI biedt veel opties om met eigen signatures aan het knutselen te gaan.

Een volledige systeemscan kan wel flink wat tijd in beslag nemen. Dat gebeurt vooral als LOKI een groot aantal memorydumps of SWF-bestanden tegenkomt.

Alternatief: Spark Core

Voor meer snelheid kun je kijken naar Spark Core. Die is van dezelfde ontwikkelaar als LOKI, maar dan gemaakt met GO. Deze tool gebruikt dezelfde (ook door gebruikers aan te vullen) signature-database als LOKI, maar is niet opensource aangezien het om een uitgeklede gratis versie gaat van een betaald product. De Spark Core-site toont ook een vergelijkende tabel tussen LOKI en Spark Core.

Meer over

Software

Deel dit artikel

Alieke van Sommeren
Alieke van SommerenTypen geleerd op een 8086 met DOS 5.0 en al vroeg zelf aan het pc-(ver)bouwen geslagen. Speelt graag pc-games, houdt van gadgets en klikt ook wat rond op een MacBook.

Lees ook

Malware onder Android opsporen en verwijderen

Smartphones zijn populaire aanvalsobjecten: er staan veel gevoelige data op en ze zijn nonstop online. De kans is dus groot dat jouw mobieltje ook een...

Digitaal ondertekende malware in opmars

Online criminelen misbruiken certificaten van gerenommeerde bedrijven om malware te ondertekenen en daarmee het vertrouwen van virusscanners te winnen...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er