SIDN Labs heeft een prototype ontwikkeld van DNS Resolution Required en daarmee de eerste tests uitgevoerd. De Arnhemse organisatie heeft die techniek bedacht als aanvulling op dns-firewalls om malware en botnets te bestrijden.
Malware en botnets zijn te bestrijden door de IP-adressen en domeinnamen die ze gebruiken bij hun kwaadaardige toepassingen, te blokkeren. De achterliggende basis is dns, het systeem dat ip-adressen koppelt aan domeinnamen. Met dns-firewalls kom je een heel eind om dat soort kwaadaardige toepassingen tegen te gaan, maar ze houden niet alle soorten malware tegen. Bij SIDN Labs bedachten ze daarom een extra beschermlaag: DNS Resolution Required. Voor bepaalde toepassingen kan deze techniek in de toekomst wellicht bijdragen aan de strijd tegen malware en botnets.
:fill(white):strip_exif()/i/2004804156.webp?f=thumblarge)
"Het idee kwam voort uit een gesprek met een beveiligingsclub uit de medische sector", vertelt Jelte Jansen, research engineer bij SIDN. "Op een gegeven moment ging dat over het feit dat medische apparatuur steeds vaker aan internet hangt. Ze vertelden dat ze daar een mooie dns-firewall voor hadden. Toen dachten wij: maar wat als de malware niet afhankelijk is van de ingestelde dns-resolver? Zo is dat balletje gaan rollen."
Hoe zat het ook alweer met dns? Een client, zoals een browser, wil een website bezoeken en doet een request bij een recursive dns-server van bijvoorbeeld een provider. Die gaat daarop op zoek naar het IP-adres dat bij de naam hoort. Die vraag komt uit bij een authoritative dns-server, de houder van het 'telefoonboek' dat de domeinnamen en bijbehorende IP-adressen bevat. Het antwoord bevat het IP-adres dat bij de opgevraagde domeinnaam hoort, zodat de client de website te zien krijgt.
Dns-malware
Er zijn uit het verleden tal van voorbeelden bekend van kwaadaardige toepassingen die misbruik maken van of via dns. Zo beschreven onderzoekers van de Vrije Universiteit Amsterdam al in 2011 de werking van Feederbot, een botnet dat dns gebruikt als communicatiekanaal met command & control-servers. Of neem Multrigrain, dat creditcardgegevens van betaalpunten via dns-servers binnenhengelde, of DNSMessenger, dat kwaadaardige Powershell-commando's in textrecords van dns verstopte.
Het projectteam van de SIDN richt zich op malware die 'iets doet met dns' of zijn eigen dns implementeert. Zo kon bijvoorbeeld Cutwail zelf de dns-resolutie uitvoeren en maakten de Nugache- en Storm-botnets dankzij p2p al nagenoeg helemaal geen gebruik van dns. Ook was er al malware die dns-configuraties aanpast, zoals DNSChanger, dat zo doorverwees naar zijn eigen nameservers om advertenties te kunnen injecteren.
"Het is het zoveelste puzzelstukje om tot een veiliger internet te komen"
"We hebben niet gemeten hoe groot de verspreiding is van dit soort malware". vertelt Jansen. "Er zijn diverse varianten. De basis van dit idee was dan ook niet dat dit het grootste probleem is dat nu opgelost moet worden. Vaak wordt gebruikgemaakt van dns-firewalls, maar die hebben weinig nut als de malware geen dns gebruikt. Als hier een oplossing voor komt, is dat het zoveelste puzzelstukje waarvan wij denken dat het kan helpen om tot een veiliger internet te komen."
/i/2004804216.png?f=imagenormal)
Deze malware wist tot 2011 miljoenen systemen te infecteren en gedupeerden die de pagina's van onder andere Apple iTunes of Netflix bezochten, door te sluizen naar eigen advertentiepagina's. Daarmee werden miljoenen dollars verdiend.
Botnets frustreren met rpz

bedenker van rpz
Dns-firewalls werken met lijsten van als kwaadaardig aangemerkte of potentieel schadelijke IP-adressen en domeinnamen. De werking kan bijvoorbeeld berusten op een response policy zone of rpz. Dit is een open standaard die door Paul Vixie van het Internet Systems Consortium is ontwikkeld en die in 2010 werd gepresenteerd bij de beveiligingsevenementen Black Hat en Defcon. Het idee is dat beveiligingsdiensten nagenoeg in real time feeds met die schadelijke adressen en namen kunnen aanleveren, waarop recursive DNS-servers zich kunnen abonneren. Dit moet de beveiliging up-to-date houden in een tijd waarin het zo eenvoudig is voor scammers, spammers en andere criminelen om snel en massaal kwaadaardige domeinamen te registreren.
Die servers kunnen vervolgens met die aangeleverde lijsten voorkomen dat clients de host- en domeinnamen bereiken of die redirecten naar een walled garden, of ze kunnen de toegang blokkeren tot hostnamen die refereren aan schadelijke IP-adressen. Dit kan de werking van botnets en andere malafide toepassingen frustreren. Rpz stond een tijd op de lijst om als IETF-internetstandaard aangewezen te worden, maar die behandeling lijkt stil te liggen. Hoe dan ook is het rpz-mechanisme geïmplementeerd in de dns-software BIND van het Internet Systems Consortium en in de lichtgewicht resolver Unbound van NLnet Labs.
Dit systeem werkt, maar omzeilen is ook weer niet heel moeilijk. "Dns is gewoon pakketjes sturen en antwoord krijgen. Dus het is niet heel moeilijk voor malwareschrijvers om zelf een mini-dns-resolvertje te bouwen, zeker als dat maar een beperkte functionaliteit nodig heeft", meldt Jansen. "Dat zie je bijvoorbeeld bij Cutwail. Dat is gelukkig heel makkelijk te herkennen aan het soort pakketjes dat het stuurt, maar je ziet dus ook dat het zelf dns-requests stuurt naar authoritative dsn-servers en niet via de resolver gaat." Met simpelweg al het verkeer naar poort 53 blokkeren wapen je je alleen tegen een deel van dit soort malware.
DRR: werken met automatische allow-listing
DNS Resolution Required, of DRR, garandeert dat geen van de genoemde soorten malware nog langer kan communiceren via netwerken, door alleen verkeer toe te staan van en naar IP-adressen uit dns-antwoorden. Met andere woorden, een client in een netwerk kan standaard geen contact maken met externe IP-adressen, totdat een geautoriseerde dns-resolver antwoord geeft. DRR geeft de dns-firewall vervolgens instructie de poort te openen, zodat het dns-antwoord de client kan bereiken.
/i/2004804136.webp?f=imagenormal)
Dat klinkt vrij eenvoudig en doet denken aan allow-listing. "De basis is ook een soort allow-listing, maar dan geautomatiseerd. Meestal denk je bij toegangslijsten aan lijsten die handmatig of via bestaande lijstjes geconfigureerd worden, maar dat is hier niet het geval. Het idee is dat het hier automatisch gebeurt doordat er gewoon nette dns-requests worden verstuurd. Het heeft wel het meeste nut als je het gebruikt met een resolver die zelf wel block- of allow-listing gebruikt."
"Bij voice-over-ip gaat het mis"
De basis kan dan eenvoudig lijken, de brede uitvoering in de praktijk is dat niet, want er komen al gauw moeilijkheden om de hoek kijken. Jansen: "Een van de grote moeilijkheden is dat het niet algemeen toepasbaar is. Als je bijvoorbeeld voice-over-ip-apparaten neemt, die wisselen onder water ook IP-adressen uit. Daar komt geen dns-request aan te pas en dan gaat het mis doordat het verkeer geblokkeerd wordt." DRR blokkeert alle verkeer dat niet gebruikmaakt van dns om IP-adressen te vinden, waarmee bijvoorbeeld ook peer-to-peernetwerken standaard geblokkeerd worden. En er zijn meer beperkingen.
Zo werkt DRR standaard ook niet in combinatie met DNS over Https of DNS over TLS, omdat een DRR-systeem dns-verkeer moet kunnen inzien en dit dus onversleuteld moet blijven. Het idee was toch juist om technieken als DoH en DoT meer te gaan inzetten om de beveiliging op te schroeven? "Ja, op zich wel", erkent Jansen. "De ene beveiligingstechniek staat de andere soms in de weg. Je ziet dat ook bij intrusion detection, die ook dns-requests monitort en dat gaat ook stuk bij DoH of DoT. Aan de andere kant, er is ook malware die DoH gebruikt. Die werkt dan ook niet, want alle poorten zijn geblokkeerd."
Er zijn oplossingen voor de combinatie met versleuteld dns-verkeer, volgens Caspar Schutijser, die samen met Jansen aan het DRR-project werkt. "Als je per se als client dns met encryptie wilt gebruiken, zou het een idee zijn om je DRR-systeem op de een of andere manier te koppelen aan je eigen dns-resolver, zodat DRR wel weet welke queries er zijn gedaan en je toch encryptie op dns kunt toepassen."
/i/2004804736.webp?f=imagenormal)
Het risico dat DRR zelf een kwetsbaar punt in de keten wordt, achten Jansen en Schutijser niet groot. Jansen: "Alles wat je draait, is natuurlijk een potentiële aanvalsvector. Je moet er wel voor zorgen dat de werking in een DRR-systeem bijvoorbeeld geen buffer overflows bevat." Maar in principe is de werking volgens hem heel simpel, wat de kans op fouten verkleint. Schutijser: "Het prototype was enkele honderden regels code en dan hou ik het aan de hoge kant. We gebruiken dan wel dns-library's waar van alles onder valt, maar de code om die library's aan elkaar te knopen, was niet groot."
Weinig processorkracht, veel queries
Jansen en Schutijser hebben twee prototypes van DRR-systemen gemaakt. Die draaiden op werkstations en op de router van Jansen in een thuisnetwerk. Veel processorkracht vergt het volgens hen niet. Internetbrowsen was wel merkbaar langzamer dan normaal, vanwege de vele dns-queries die hierbij uitgestuurd werden. DRR onderschept alle dns-verkeer en moet firewallregels aanpassen voordat het dns-antwoord bij de client afgeleverd kan worden. Dat kost tijd.
Een shortcut zou zijn om het DNS-antwoord alvast aan de client door te geven en het aanpassen van de firewall ondertussen op de achtergrond uit te voeren. Dat levert volgens Schutijser echter een brakke gebruikerservaring op, omdat de kans dan aanwezig is dat het pakket de client al bereikt heeft voordat het IP-adres op de allow-lijst is gezet, waardoor het verkeer alsnog geblokkeerd zou worden. De prototypesoftware maakt daarom gebruik van de Python-module NetfilterQueue, die pakketjes op basis van een iptables-regel eventjes tegenhoudt. "We denken dat als je iets als IP-sets gebruikt in plaats van iptables of nftables voor de rechtstreekse configuratie, het snelheidsprobleem een heel stuk minder wordt", aldus Jansen.
Dan is er nog het probleem van de aangepaste firewallregels: hoelang moeten de open- en sluitopdrachten van kracht blijven? SIDN Labs bedacht hier time-to-live-waarden voor te gebruiken, zodat de regels slechts een bepaalde periode geldig blijven en de firewall daarna weer sluit. Sommige verbindingen moeten echter langere tijd openblijven. Bij de prototypes is er daarom voor gekozen om TCP-verkeer als voortzetting van een bestaande verbinding altijd toe te staan. Anders zou het DRR-systeem openstaande verbindingen moeten monitoren om deze open te kunnen houden bij een verlopen ttl.
Door de beperkingen die de SIDN-initiatiefnemers zijn tegengekomen, denken ze dat de extra beveiliging van DRR het best tot zijn recht komt bij internet-of-thingstoepassingen en medische apparaten die met internet zijn verbonden. Jansen: "Je zou verder aan industriële scada-beheersystemen kunnen denken, maar dan vooral om te voorkomen dat je systeem nadat het al gehackt is, nog meer narigheid gaat uithalen." Met de verwachting dat het aantal internet-of-thingsapparaten met vele miljoenen gaat toenemen in de komende jaren, zou DRR weleens een schakel in de beveiligingsketen kunnen worden. Daarvoor moet echter nog veel gebeuren. Als het idee omarmd wordt, moeten bijvoorbeeld routerfabrikanten warm gemaakt worden om het mechanisme te implementeren in hun software.
Een vinkje in je routersoftware
"Ik vermoed dat als het opgepikt gaat worden, dat eerst door de fabrikanten van beveiligingsrouters gaat gebeuren. Als we zelf een openbaar prototype maken, zal dat in de vorm van een OpenWRT-package zijn. Misschien dat het dan opgepikt kan worden, maar zover hebben we nog niet vooruitgedacht", aldus Jansen.
Hij vervolgt: "In de ideale situatie wordt het een vinkje in je routersoftware. In het ultieme flexibele scenario wordt het een vinkje in de router- en in je dns-software, want dan kun je het dus wel met DoH en DoT gebruiken. Schutijser: "En mogelijk ook een optie in je routersoftware om per apparaat in te stellen of je het wel of niet wilt. Stel je hebt laptops waarmee je wilt videobellen, maar je hebt ook slimme lampen, dan wil je het misschien alleen voor die lamp doen en niet voor de laptop."
Schutijser: "Als mensen er wat in zien, zou ik ook wel een serieuzer prototype voor apparaten met weinig resources willen maken. Ik heb de huidige prototypes op mijn laptop draaien, maar komende versies zou ik op mijn router willen hebben." De uiteindelijk software zou dan in het ideale geval niet in Python, maar in een lowleveltaal ontwikkeld worden. De huidige software is nog te alfa en SIDN verstrekt deze alleen op verzoek, maar eventuele komende prototypes worden door SIDN direct publiekelijk, open source beschikbaar gesteld, beloven Jansen en Schutijser.