Zoals we in een van onze eerdere blogposts over exploitkits (Nuclear EK) hadden beloofd, gaan we nu dieper in op Angler Exploit Kit. Angler EK is mogelijk de meest geraffineerde exploit kit die momenteel door cybercriminelen wordt gebruikt. Het is een pionier op het gebied van oplossingen die andere exploitkits later zijn gaan gebruiken, zoals antivirusdetectie en versleutelde dropper-bestanden. Bovendien integreert Angler het snelst de nieuwste zero days, zoals de Adobe Flash zero day (CVE-2015-0311) van een paar weken geleden, en gebruikt het een opmerkelijk unieke obfuscation. Tenslotte draait Angler de gedropte malware vanuit het geheugen, zonder ooit naar de harde schijf te hoeven schrijven; deze unieke techniek onder de exploit kits maakt het extreem moeilijk voor traditionele antivirus technologieën om het te detecteren, omdat ze vertrouwen op het scannen van het bestandssysteem.
Hoewel Angler de meest geavanceerde exploit kit is in het huidige bedreigingslandschap, zijn Websense klanten beschermd tegen deze bedreiging met ACE, onze Advanced Classification Engine, in de volgende stadia:
- Stadium 2 (Lure) – ACE heeft detectie voor de gecompromitteerde websites.
- Stage 3 (Redirect) – ACE heeft detectie voor de geïnjecteerde code die de gebruiker omleidt naar de exploit-pagina.
- Stage 4 (Exploit Kit) – ACE heeft detectie voor de kwaadaardige code die probeert deze cyberaanval uit te voeren.
- Stage 5 (Dropper Files) – ACE heeft detectie voor de binaire bestanden die bij deze aanval horen
Obfuscation
Angler’s landingspagina bestaat uit vier basisonderdelen. Ten eerste is er wat zichtbare Engelse tekst, die wordt gebruikt om het slachtoffer van de exploit kit te laten geloven dat ze naar een legitieme pagina hebben gebladerd. Ten tweede zijn er verschillende deobfuscation routines om de eigenlijke kwaadaardige scripts te deobfusceren. Deze scripts bevinden zich in p class tags en zijn gecodeerd als base64. Het decoderen van de base64 strings onthult de werkelijke versluierde exploit kit code. En tenslotte bevat de landingspagina diverse versleutelde strings, die diverse URL’s bevatten die leiden naar de diverse exploits (Flash, Silverlight, Internet Explorer) die in de kit zijn opgenomen.
Samples van Angler-landingspagina
Deobfuscated Exploit Code
Wanneer de landingspagina eenmaal is gedeobfuscated, wordt de ware aard van de code onthuld. Angler gebruikt, net als Nuclear en diverse andere exploitkits, een zeer eenvoudige tweede laag versluiering om detectie door beveiligingsproducten nog moeilijker te maken.
Hij maakt ook gebruik van antivirus detectie naast het detecteren van diverse virtualisatie oplossingen (VMWare, VirtualBox, Parallels) alsmede een web debug proxy genaamd Fiddler, welke veel gebruikt wordt door beveiligingsonderzoekers. Het implementeren van deze maatregelen maakt het erg moeilijk om deze exploit kit in het wild te observeren en te onderzoeken, aangezien de meeste beveiligingsonderzoekers vaak zwaar leunen op deze tools.
Detectie van verschillende .sys en .dll bestanden die behoren tot AV en virtualisatiesoftware
VMWare, VirtualBox, Parallels detectie evenals Fiddler web debugging proxy
Het meest unieke kenmerk van Angler is het gebruik van deze versleutelde URL paden. Het gebruikt een eenvoudig op transpositie gebaseerd cijfer (in lekentaal: het door elkaar husselen van de letters) om deze gegevens te versleutelen en te ontsleutelen.
De ontsleutelingsroutine is ingebed in het versluierde deel van de exploit kit.
Decoderingsroutine zoals gevonden in de kit
Decoderingsroutine geformatteerd en becommentarieerd
We zullen een heel eenvoudig voorbeeld gebruiken om te laten zien hoe de decodering werkt. Stel dat onze cijfertekst (versleutelde gegevens) is “TEER CSURH TO PLTAOEL IX TP” en onze ontcijferingssleutel is “OBFUSCATE”. Angler neemt de alfabetische volgorde van de letters in de sleutel en herschikt op basis daarvan de cijfertekst. Bijvoorbeeld:
OBFUSCATE → 6,2,5,9,7,3,1,8,4
Dit geeft ons de volgorde van de letters in de cijfertekst. Hiermee kunnen we de tekst eenvoudig ontcijferen door de volgorde van de letters te wijzigen.
Exemplaar ontcijfering
En tenslotte worden spaties uit de ontcijferde string verwijderd. Dit is uiteraard een zeer rudimentaire vorm van vercijfering en zou zelfs zonder sleutel zeer eenvoudig te kraken zijn als (zoals in bovenstaand voorbeeld) de klare tekst uit echte woorden zou bestaan. Angler gebruikt echter zeer gerandomiseerde URL’s, dus dit soort encryptie is meer dan voldoende om de ware aard van deze strings en de werkelijke URL paden te verbergen voor diverse beveiligingsproducten.
De rest van de gedeobfusceerde code volgt de gebruikelijke exploit kit patronen: er zijn diverse plugin detectie en versie controle routines zodat de exploit kit ‘weet’ welke exploit(s) op het doelwit af te vuren. Er zijn ook nogal wat shellcode bouwroutines omdat Angler een meerfasige shellcode gebruikt, waarbij verschillende stadia gecodeerd worden en gedecodeerd worden door de vorige stadia. Het bevat ook een hard gecodeerde encryptie/decryptie sleutel voor het dropper bestand.
Encryptiesleutel voor payload
Multi stage Shellcode
Dropper
Als de exploit slaagt, wordt de payload van Angler gedropt op het systeem van het slachtoffer. Terwijl de payload door het netwerk reist, is het nog steeds versleuteld en wordt het later gedecodeerd door de shellcode van de laatste fase. Deze techniek wordt gebruikt om detectie van de kwaadaardige dropper zeer moeilijk te maken voor traditionele intrusion detection systems (IDS). Zoals we eerder vermeldden, gebruikt Angler ‘bestandsloze’ droppers, wat betekent dat ze rechtstreeks vanuit het geheugen worden uitgevoerd. De dropper die Angler gebruikt heet Bedep, en is eigenlijk alleen een downloader – dat wil zeggen, het is niet kwaadaardig op zich, maar het wordt gebruikt om verschillende malware te downloaden en uit te voeren.
De payload bestaat uit een combinatie van shellcode en de Bedep DLL. Als de eerste paar bytes van de payload “909090” zijn (NOPs of No Operations in x86 assembly) wordt de DLL uit het geheugen geladen, anders wordt het naar de schijf geschreven net als een normaal dropper bestand. De shellcode is verantwoordelijk voor het uitvoeren van de DLL vanuit het geheugen.
De shellcode lost API’s op zoals kernel32.dll en wininet.dll
Summary
Angler Exploit Kit is zonder twijfel een van de gevaarlijkste exploit kits die vandaag de dag in het wild te vinden is. Het heeft verschillende technieken in zijn arsenaal om traditionele detectiemethoden te verslaan, zoals:
- Unique Obfuscation
- Detects antivirus/virtualization software
- Encrypted payload
- Fileless infections
Daarnaast is Angler vaak de eerste om de nieuwste exploits over te nemen, waaronder van tijd tot tijd ook zero days. De voortdurend veranderende aard van Angler onderstreept ook de noodzaak van beveiligingsoplossingen die bescherming bieden in de hele kill chain in plaats van zich te richten op slechts één fase daarvan.