In een eerder artikel maakte Networking4all al bekend dat in een onderzoek van onze security consultant naar voren was gekomen dat veel nameservers van Nederlandse domeinnamen AXFR-requests toestaan. Hierdoor is op een onbeveiligde nameserver de inhoud van een complete zone te achterhalen. In dit artikel duiken we wat dieper in de beveiliging van een nameserver, en wat de beste manier is om er voor te zorgen dat uw gegevens veilig zijn.

DNSSEC
Ter beveiliging van nameservers is DNSSEC in het leven geroepen. DNSSEC laat een DNS resolver door middel van een handtekening controleren of de informatie die wordt teruggegeven in een DNS request correct is, of dat deze wordt gespoofd vanaf een andere locatie. Een nameserver waar een domeinnaam opstaat die met DNSSEC wordt beschermd, wordt verplicht om alle requests te beantwoorden met een response die ondertekend is. Hieronder vallen ook de responses met foutmeldingen. Omdat de nameserver van te voren niet kijkt naar de status van de response en dus alles standaard ondertekent, kan de server overbelast raken wanneer er veel requests komen. Nameservers waar DNSSEC op wordt gebruikt, kunnen daardoor dus gevoelig zijn voor DoS aanvallen.

NSEC
De oplossing voor dit probleem kwam in de vorm van NSEC. NSEC records, oftewel Next Secure records, zijn gekoppeld aan bestaande records en bevatten informatie over het volgende gekoppelde record, en de type records die zijn opgenomen op de nameserver voor het domein. Dit creëert een keten van aaneengeschakelde records, waardoor het fenomeen ‘zone walking’ is ontstaan.

Aan de wandel
Zone walking is een ongewenst fenomeen, wat inhoudt dat wanneer iemand de records van een domeinnaam opvraagt, deze, dankzij NSEC, de inhoud van de complete aaneenschakeling van records teruggeeft. We bespreken het aan de hand van een voorbeeld:

In dit voorbeeld vragen we de niet-bestaande records op van een domein:

# dig A nietbestaand.voorbeeld.nl +dnssec

De response op dit request is een SOA record, in de vorm van een RRSIG. Maar daarnaast wordt er ook een NSEC record meegegeven van het eerstvolgende wèl bestaande record, hieronder weergegeven in rood:


SOA    ns1.voorbeeld.nl. hostmaster.domein.nl 133821 10800 1080 2419200 RRSIG
SOA 10 2 300 20180119161305 20180115151305 42743 voorbeeld.nl.
D5MOrFqxu9iM7bYhgj2N+OFwkJ9keKteKTBKtCLNvT4J4I9VW56y8Tht
mau7bYNr4ro2xG+/Rcba23XcqQSAiWtNvbgoThSoTtMT3hr6/Maeq7nj
0V10FRUDCmBGVXTUOyQUCUjw/0Y8SkoqnzNfnA5nfYGr3qhY6m5h89pT
Yt4=
NSEC    1.voorbeeld.nl. A NS SOA MX TXT RRSIG NSEC DNSKEY

Aan de hand van deze response kan het eerstvolgende NSEC record worden opgevraagd:

# dig NSEC 1.voorbeeld.nl +dnssec

Deze request krijgt ook weer een response terug met  de RRSIG van het opgevraagde record, met het NSEC record van het eerstvolgende record. Zo kan stap voor stap de volledige zone worden opgevraagd.

Hash-blokkade
Om deze zone-walking techniek tegen te gaan, is NSEC3 uitgevonden. Wanneer een domeinnaam is uitgerust met NSEC3 wordt niet meer de volledige record teruggegeven in de request, maar wordt in plaats daarvan een gehashte waarde teruggegeven. Zo is zone-walking niet meer mogelijk.

Dit betekent niet dat het met NSEC3 onmogelijk is gemaakt om deze waarden alsnog te achterhalen. Met een beetje rekenkracht kan de hash gekraakt worden waardoor de records alsnog uit te lezen zijn. Daarnaast bestaan er ook meerdere scripts die dit rekenwerk af kunnen handelen, zoals de scripts van Nmap en Hashcat. Waterdicht is het dus absoluut niet.


In ons eerdere onderzoek naar de AXFR records van Nederlandse domeinnamen heeft Networking4all een groot aantal nameservers bekeken. Voor dit onderzoek hebben wij gekeken naar dezelfde groep domeinnamen. Hier kwam uit naar voren dat 50.5% van deze domeinnamen überhaupt niet gesigned is. Van de overige 49.5% gebruikt 32.5% NSEC3 en 17% NSEC. De groep domeinnamen die geen gebruik maakt van deze security records loopt niet per definitie gevaar: zo is er iets voor te zeggen om uit veiligheidsoverwegingen geen gebruik te maken van DNSSEC. Maar de 17% die wel gebruik maakt van NSEC, maar niet van NSEC3 doet er goed aan om over te stappen.

Lees relevante artikelen

Categorie  SSL & Security | Tags  dnssec Security