Wat zijn DGA's en hoe kunnen ze worden gedetecteerd?

Domain Generation Algorithms (DGA's) zijn een klasse van algoritmen die periodiek en dynamisch grote aantallen domeinnamen genereren. Meestal worden de domeinen door malware en botnets gebruikt als ontmoetingspunten om het terugbellen naar de Command & Control-servers van de kwaadwillende actor te vergemakkelijken. Met DGA's kan malware tienduizenden domeinen per dag genereren, waarvan de overgrote meerderheid niet geregistreerd is. Het enorme aantal niet-geregistreerde domeinen wordt gebruikt om de geregistreerde te maskeren, waardoor de geïnfecteerde botnets detectie en afschrikking kunnen omzeilen door op handtekeningen of IP-reputatie gebaseerde beveiligingsdetectiesystemen.

De eerste bekende malwarefamilie die een DGA gebruikte, was Kraken in 2008. Later dat jaar zorgde de Conflicker-worm ervoor dat de DGA-tactiek bekend werd. Zelfs na 10 jaar is het nog steeds mogelijk om Conflicker of een van zijn varianten op sommige van de huidige netwerken te vinden.

In combinatie met de toenemende verspreiding van malware, is het gebruik van DGA's alomtegenwoordiger geworden.

De doelstellingen van DGA-detectie

Omdat DGA-activiteit een aanzienlijke indicator is van een compromis, wordt het van cruciaal belang om dergelijke activiteiten op uw netwerk te detecteren. Er zijn drie niveaus van DGA-detectie, waarbij elk volgend niveau correleert met een toename in ernst. Detectie op latere niveaus is moeilijker, maar kritischer.

Als een DGA wordt gedetecteerd, betekent dit dat een of meer van uw systemen zijn geïnfecteerd door op DGA gebaseerde malware en botnets zijn geworden. Er moeten enkele acties worden ondernomen. Het eerste doel is om de getroffen systemen te identificeren, ze op de juiste manier schoon te maken of in quarantaine te plaatsen om escalatie te voorkomen.

Het volgende doel is om te bepalen of een bepaalde DGA-domeinnaam is geregistreerd. Als het domein is geregistreerd, is het een actieve Command & Control-server geworden die een groot risico vormt voor uw netwerk. Geïnfecteerde systemen, nu botnets, kunnen deze servers gebruiken om naar huis te bellen en commando's te ontvangen van de kwaadwillende aanvaller. Daarom is de tweede component van een effectief DGA-detectiesysteem de mogelijkheid om geregistreerde domeinen te onderscheiden van niet-geregistreerde domeinen.

Een DGA kan bijvoorbeeld 1000 domeinen genereren, van xyzwer1, xyzwer2…. naar xyzwer1000. De hacker hoeft maar één domein te registreren, namelijk xyzwer500, niet de andere 999 domeinen. Als het geregistreerde domein en het bijbehorende IP-adres kunnen worden geïdentificeerd, kan de informatie worden gebruikt om het communicatiekanaal tussen het beoogde systeem en de Command & Control-server te blokkeren. Bovendien moet de informatie worden doorgegeven aan alle andere bestaande preventie- of detectiesystemen om het terugbellen naar die server vanaf elk systeem in het netwerk te verhinderen.

Het laatste maar meest kritische doel van een DGA-detectiesysteem is om te bepalen of het terugbellen is gelukt met de geregistreerde domeinen en of er contact is gemaakt tussen het geïnfecteerde systeem (en) en de Command & Control-server. Als een dergelijke activiteit wordt gedetecteerd, is er mogelijk al enige schade aangericht. Misschien is de malware in uw netwerk bijgewerkt of is er nieuwe malware geïnstalleerd. Gevoelige gegevens zijn mogelijk geëxfiltreerd.

Hoe werkt DGA-detectie?

DGA-activiteit wordt gedetecteerd door netwerkpakketten vast te leggen en te analyseren, meestal in vijf algemene stappen.

Stap 1 - Detecteer DNS-applicatie
Detectie begint via DNS-verzoek- en / of antwoordberichten. DNS is een fundamenteel internetprotocol en de meeste firewalls hebben een beleid om uitgaand DNS-verkeer op zijn gereserveerde poort 53 toe te staan. Een hacker kan echter voordeel halen uit poort 53 om zijn verkeer te verzenden zonder zich aan het standaard DNS-berichtformaat te houden. Deze aanval wordt DNS-tunneling genoemd. Een Deep Packet Inspection (DPI) Engine wordt aanbevolen om de DNS-applicaties nauwkeuriger te identificeren.

Stap 2 - Extraheer domeinnamen
Zodra een netwerktoepassing is geïdentificeerd als DNS, moeten de domeinnamen in de DNS-query- en antwoordberichten worden geëxtraheerd. Om de juiste domeinnaam te extraheren, moet de inhoud van het DNS-bericht zorgvuldig worden geparseerd en is een DPI-engine vereist om deze taak uit te voeren.

Stap 3 - Detecteer elke DGA
Er moet een analyse worden uitgevoerd op de domeinen die zijn geëxtraheerd uit DNS-berichten om te bepalen of het DGA's zijn. Dit is misschien wel de meest gecompliceerde stap. De uitdaging is om zowel valse positieven als valse negatieven te verminderen. Detectiemechanismen zijn de afgelopen 10 jaar enorm geëvolueerd.
Sommige mechanismen zijn gebaseerd op de relatief eenvoudige Shannon Entropy.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Sommige mechanismen zijn gebaseerd op meer geavanceerde Ngrams, zoals gepresenteerd door Fyodor tijdens de Hitb-conferentie
De laatste tijd, nu machine learning populair wordt, zijn de methodologieën ervan ook toegepast op DGA-detectie. Machine learning kan de kenmerken van Ngrams, Shannon Entropy combineren, evenals de lengte van de domeinnamen om beslissingen te beïnvloeden. Er zijn verschillende modellen voor machine learning geprobeerd. Er is een zeer goede blogpost van Jay Jacobs uit 2014 waarin het proces wordt beschreven.
Hier is nog een open source DGA-detector op basis van Machine Learning met Markov Chain:
https://github.com/exp0se/dga_detector

Stap 4 - Detecteer geregistreerde DGA-domeinen
Om te zien of een DGA-domeinnaam is geregistreerd, moeten DNS-reacties worden gecontroleerd. Alleen het volgen van DNS-verzoeken is niet voldoende - het detectiesysteem moet de hele transactie volgen om de correlatie tussen stukjes informatie te vergemakkelijken.

Stap 5 - Detecteer verkeer naar geregistreerde DGA-domeinen
Wanneer de meeste bestaande DGA-detectiesystemen zich richten op het detecteren of een domeinnaam een ​​DGA-domein is, vergeten ze vaak de laatste vraag, de belangrijkste: is er verkeer dat naar de geregistreerde DGA-domeinen is gestuurd? Om dit tijdig te detecteren, moet DGA-domeindetectie nauw worden gekoppeld aan netwerkverkeersinspectie. De resultaten moeten onmiddellijk worden teruggekoppeld naar de verkeersinspectie-engine voordat er schade wordt aangericht.

Stap 6 - Het verkeer naar geregistreerde DGA-domeinen blokkeren
Hoewel technisch gezien geen onderdeel van detectie, moet er, als er een integratie is met een preventiesysteem zoals een firewall of IPS, meteen een regel worden ingevoegd om al het verkeer naar de geregistreerde domeinen te blokkeren.

Een geweldig DGA-detectiesysteem zou alle 5 stappen moeten uitvoeren. Een uitstekend DGA-detectiesysteem zou ook stap 6 moeten bevatten. Helaas stoppen de meeste DGA-detectiesystemen tegenwoordig bij stap 3 of 4.

Conclusie
Omdat DGA's moeilijk te detecteren zijn met een op een handtekening of reputatie gebaseerd detectie- of preventiesysteem, zijn ze behoorlijk populair geworden bij malware-ontwikkelaars.
Een intelligent detectiesysteem is vereist om de detectie uit te voeren. Een uitstekend DGA-detectiesysteem moet domeinnaaminformatie extraheren uit DNS-transacties, grondige analyses uitvoeren om de DGA-status te detecteren, de registratiestatus van verdachte domeinen controleren, correleren met netwerkverkeersinspectie om het niveau van compromittering te beoordelen, en idealiter integreren met preventiesystemen om verdere compromis. Om zowel valse positieven als valse negatieven te verminderen, moet een machine learning serieus worden overwogen. Alleen met uitgebreide en doordringende informatie in elke fase kan de dreiging echt worden verzacht.

Informatiebronnen

De repository in Github door Andrey Abakumove bevat algoritmen voor het genereren van domeinnamen, evenals woordenboeken van kwaadaardige domeinnamen.

Scroll naar boven