DDoS-kenmerken vastleggen met de Dissector
Auteurs: João Ceron (SIDN Labs), Pim van Stam (NBIP), Gerald Schaapman (NBIP), Cristian Hesselman (SIDN Labs)
De oorspronkelijke blog is in het Engels. Dit is de Nederlandse vertaling.
In deze blog bespreken we nieuwe algoritmen die we ontwikkelden, om het verkeer van multi-vector DDoS-aanvallen te classificeren. We hebben deze algoritmen geïmplementeerd als onderdeel van het DDoS-clearinghouse, een systeem waarmee operationsteams van verschillende organisaties zich gezamenlijk kunnen voorbereiden op DDoS-aanvallen door automatisch DDoS-kenmerken met elkaar te delen in de vorm van zogeheten ‘DDoS fingerprints’. We ontwikkelen het DDoS-clearinghouse in het CONCORDIA-project en gaan het gebruiken in de Nederlandse nationale anti-DDoS-coalitie.
DDoS-kenmerken vastleggen met de Dissector
Onze DDoS-classificatiealgoritmen maken deel uit van de Dissector, een kerncomponent van het DDoS-clearinghouse. De Dissector heeft als taak DDoS-netwerkverkeer (bijvoorbeeld in de vorm van een PCAP-bestand) te verwerken, aanvalskenmerken te identificeren (bijvoorbeeld protocollen, poorten, bron-IP’s, lengte van de payload van datapakketen) en een fingerprint te genereren die deze kenmerken vastlegt. De Dissector is modulair, in die zin dat het verschillende classificatieheuristieken ondersteunt, die elk een fingerprint kunnen genereren voor een specifiek aanvalstype. Figuur 1 geeft een overzicht van de Dissector. De Dissector ontvangt DDoS-netwerkverkeer als invoer – datapakket of ‘flowdata’ – en levert als uitvoer een fingerprint-bestand in JSON-formaat. Het netwerkverkeer is meestal een sample van de totale hoeveelheid verkeer die betrokken is bij een DDoS-aanval. Hierdoor kan de Dissector snel vingerafdrukken genereren met relatief beperkte middelen (bijvoorbeeld in termen van geheugen en CPU-vereisten).
Figuur 1. Schematisch overzicht van de Dissector.
Het verwerkingsproces van de Dissector bestaat uit twee componenten:
- Attack profiler: de Attack Profiler stelt profielen samen op basis van het gesamplede netwerkverkeer. De profiler stelt vast welke protocollen en diensten bij de aanval zijn betrokken en identificeert een reeks attributen die relevant zijn voor de classificatie van de aanval. Attributen zijn ofwel typen pakketheaders (bijvoorbeeld HTTP-headers, DNS-verzoeken, pakketladingen, bron- en doel-IP’s) ofwel hoger-niveau attributen, zoals de vermoedelijke aard van de aanval (bijvoorbeeld een DDoS-aanval gebaseerd op amplificatie of ransomware).
- Attack classifier: de Attack Classifier berekent de waarden voor elk van de attributen in het profiel, met als doel patronen en overeenkomsten te identificeren. Onze classifiers gebruiken eenvoudige heuristieken op basis van de frequentie van de attributen in combinatie met meer uitgebreide algoritmen om de waarden van de hoger-niveau attributen te bepalen (bijvoorbeeld een classifier die kan beoordelen of een aanval een amplificatie-aanval is).
We ontwikkelen en verbeteren onze implementatie van de Dissector voornamelijk op basis van PCAP’s van echte aanvallen, ter beschikking gesteld door NBIP, een van de partners in de nationale anti-DDos-coalitie. NBIP is de beheerder van de Nationale Wasstraat (NaWas), die vorig jaar 1.610 DDoS-aanvallen verwerkte. Clients die worden aangevallen, sturen hun inkomende verkeer naar de NaWas, die het DDoS-verkeer verwijdert (‘wast’) en het opgeschoonde verkeer via een apart VLAN terugstuurt naar de client.
Voorbeeld: multi-vector aanval
DDoS-aanvallen die bestaan uit meerdere aanvalsvectoren groeien in populariteit. Aanvallers richten zich op verschillende diensten en gebruiken een mengeling van protocollen (bijvoorbeeld DNS, NTP, LDAP en SNMP) om het doelwit te overbelasten. Dit maakt het mitigatieproces complexer voor operationsteams, waardoor aanvallers meer kans hebben om in hun opzet te slagen.
Laten we als voorbeeld een DDoS-amplificatieaanval gebruiken waarbij werd gewerkt met de protocollen LDAP en DNS. Het gaat hier om een daadwerkelijke aanval die NBIP afhandelde. De aanval vond plaats op 30 september 2020 en er waren 690 bron-IP’s bij betrokken. De aanvallers gebruikten legitieme LDAP- en DNS-servers om het volume aan verkeer naar het slachtoffer te vergroten. Het gebruik van legitieme servers maakt het nog moeilijker om de aanval te verwerken, omdat het eenvoudigweg filteren van IP-bronadressen ook verzoeken van legitieme gebruikers zou kunnen blokkeren. De Dissector analyseert beide aanvalsvectoren (LDAP en DNS) om kenmerken van datapakketten te identificeren die operationsteams zouden kunnen gebruiken om het verkeer te filteren. De Dissector splitst het DDoS-verkeer daarvoor eerst op in twee vectoren (DNS- en LDAP-aanvalsvectoren), waarna het elke vector nader analyseert om pakketwaarden te identificeren waaraan de DDoS-aanval zou kunnen worden herkend. Figuur 2 geeft dit proces in meer detail weer.
Figuur 2. Het identificeren van DDoS-aanvalskenmerken.
In Figuur 2 heeft onze classifier een reeks attributen en hun waarden geïdentificeerd die samen de LDAP-DNS-amplificatieaanval representeren. Voor de DNS-vector identificeerde de Dissector twee specifieke query’s (evil.com en bad.com) en enkele andere parameters (pakketlengte, IP-bronadres en IP-TTL). Voor LDAP hebben we een aantal IP’s en een specifieke pakketlengte. Deze reeks kenmerken is essentieel om een fingerprint van de aanval te kunnen genereren.
DDoS-classifiers
Om de software van de Dissector eenvoudig te houden en minder afhankelijk te maken van externe bronnen, implementeerden we de Attack Classifier met eenvoudige statistische methoden, met name z-score en frequentieanalyse. Z-score is een statistische waarde die het aantal standaardafwijkingen van het gemiddelde weergeeft, wat handig is voor het opsporen van uitschieters. De combinatie van z-score en frequenties (aantal pakketten met bepaalde protocolvelden) is voldoende gebleken voor het genereren van fingerprints van de DDoS-aanvallen die we tot dusverre hebben geëvalueerd.
De Dissector heeft nog niet voor alle vectoren en aanvalstypen een classifier. Wanneer er voor een bepaalde aanval geen classifier bestaat, dan gebruikt de Dissector een standaardclassifier gebaseerd op algemene op heuristieken voor het aantal keren dat pakketheaders voorkomen. Voor onze dataset leverde deze aanpak in de meeste gevallen goede resultaten op. We kunnen het proces voor het genereren van vingerafdrukken echter verbeteren door classifiers te gebruiken die specifiek gericht zijn op een bepaald DDoS-type en kijken naar de protocolvelden en het aanvalstype (amplificatie, ransom-DDoS, flood). Onlangs hebben we nieuwe classifiers aan de Dissector toegevoegd (zie Tabel 1). De classifier voor LDAP amplification with fragmentation beoordeelt bijvoorbeeld of een aanvalsvector van dat type is door de bronadressen van het LDAP-verkeer in een PCAP-bestand te analyseren en te berekenen welk percentage van de pakketten gefragmenteerd is. Hierdoor kunnen we verschillende aanvallen en aanvalsvectoren met elkaar in verband brengen. Bijvoorbeeld: is dezelfde reeks IP-bronadressen verantwoordelijk voor LDAP- en IP-fragmentatieaanvallen?
Type Attack Classifier |
DNS amplification |
Multiprotocol amplification |
LDAP amplification |
GRE flood |
DNS water torture |
SNMP amplification |
Multi-protocol flood |
LDAP amplification with fragmentation |
Tabel 1. Geïmplementeerde DDoS-aanvalsclassifiers.
Er verschijnen voortdurend nieuwe soorten DDoS-aanvallen en het is dus van cruciaal belang om nieuwe classifiers te blijven ontwikkelen. Daarnaast moeten bestaande classifiers regelmatig worden verbeterd, zodat de fingerprints die ze genereren zo specifiek mogelijk zijn, om false positives te voorkomen.
Vingerafdrukken genereren
De Dissector legt de uitvoer van de classifiers vast in een JSON-fingerprint-bestand en voegt ook een aantal velden met metadata aan het bestand toe, waaronder algemene statistieken voor de aanval (gemiddeld aantal bits per seconde, aantal pakketten, totaal aantal IP-adressen). De classificatiealgoritmen van de Dissector voegen verder nog een tag toe die de aanval labelt, zoals ‘NTP’, ‘Volumetric Attack’ of ‘Layer 7 Attack’. Figuur 3 laat een fragment van een fingerprint zien, die de Dissector heeft gegenereerd op basis voor een op DNS gebaseerde DDoS-aanval.
{ "attack_vector": [ { "src_ips": [ "ommited" ], "attack_vector_key": "66f2e83fde0e6351d3f5ad967c6230aa3b60dbc498ad13b074296cb5f84c7734", "one_line_fingerprint": "{'dns_qry_type': 1, 'ip_proto': 'UDP', 'highest_protocol': 'DNS', 'dns_qry_name': 'a.packetdevil.com', 'frame_len': 1514, 'udp_length': 4103, 'srcport': 53, 'fragmentation': True, 'src_ips': 'omitted'}" } ], "start_time": "2013-08-14 23:04:00", "duration_sec": 0.16, "total_dst_ports": 4649, "avg_bps": 143426993, "total_packets": 16471, "ddos_attack_key": "44518107642b9ac7098174a16cbf220395c862bf26389c734e0b109b318e9291", "key": "44518107642b9ac", "total_ips": 2065, "file_type": "PCAP", "tags": [ "AMPLIFICATION", "DNS_QUERY", "FRAGMENTATION", "SINGLE_VECTOR_ATTACK", "UDP_SUSPECT_LENGTH", "DNS" ] }
Figuur 3. Fingerprint van een DNS-aanval (JSON).
Het fingerprint-formaat is flexibel. We hebben de verplichte velden gedefinieerd in het schema (protocollen en IP-bronadressen) en andere informatie kan eenvoudig worden toegevoegd. Dit is belangrijk omdat voor nieuwe aanvalstypen mogelijk velden nodig zijn die niet in het huidige fingerprintschema voorkomen. Daarnaast is deze flexibiliteit van belang voor het ontwikkelen van mitigatieregels (bijvoorbeeld een SNORT- of iptables-regel die specifieke adresreeksen filtert), omdat het DDoS-clearinghouse ook een tool bevat (de Converter) die automatisch mitigatieregels creëert op basis van vingerafdrukken.
Conclusies en vervolgstappen
Onze Dissector kan meerdere DDoS-aanvaltypes verwerken dankzij zijn modulaire architectuur, die flexibel kan worden uitgebreid door nieuwe DDoS-classifiers toe te voegen. Dit is vooral belangrijk voor de aanpak van het sinds kort populaire type DDoS-aanvallen die meerdere aanvalsvectoren combineren alsook om om te kunnen gaan met het voortdurend veranderende DDoS-landschap. Bovendien kunnen de classifiers afzonderlijk worden verbeterd, zonder dat dit de overige kernsoftwarecomponenten van het DDoS-clearinghouse beïnvloedt. Ons volgende doel is om classifiers te ontwikkelen voor lastiger aanvalstypen, bijvoorbeeld gespoofte aanvallen en DNS water torture attacks. Verder blijven we onze bestaande classifiers verbeteren om de kans op false positives te verkleinen en de nauwkeurigheid van de fingerprints te maximaliseren. Ook zetten we de Dissector in de komende paar maanden in in de netwerken van een aantal leden van de nationale anti-DDoS-coalitie.
Met dank aan
Dit onderzoek werd gedeeltelijk gefinancierd via de projecten PAADDoS en CONCORDIA. PAADDoS wordt ondersteund door het Amerikaanse Department of Homeland Security via contractnummer HSHQDC-17-R-B0004-TTA.02-0006-I in de VS en door de Nederlandse Organisatie voor Wetenschappelijk Onderzoek (NWO) via contractnummer 4019020199 in Nederland. CONCORDIA wordt ondersteund door het onderzoeks- en innovatieprogramma Horizon 2020 van de Europese Unie in het kader van subsidieovereenkomst 830927. Projectwebsite: https://www.concordia-h2020.eu/.