DNS tunneling är en metod där en angripare utnyttjar DNS-protokollet för att transportera data som egentligen inte hör hemma i DNS-trafik. Eftersom DNS är en grundläggande funktion i alla nätverk och nästan alltid tillåts passera genom brandväggar, kan denna teknik användas för att kringgå många säkerhetslösningar.
Det som gör attacken särskilt farlig är att den:
- använder ett betrott protokoll (DNS)
- ofta passerar obemärkt genom säkerhetskontroller
- möjliggör både fjärrstyrning och dataexfiltration
I praktiken innebär detta att angriparen skapar en dold kommunikationskanal mellan en infekterad enhet inne i nätverket och en server som angriparen kontrollerar. Denna kanal används både för att skicka ut data från organisationen och för att ta emot instruktioner.
Hur attacken fungerar i praktiken
Låt oss bryta ner processen tydligt:
1. Uppdelning och kodning av data
Processen börjar med att skadeprogrammet på den infekterade enheten tar ett kommando eller en mängd data, till exempel en del av en lösenordsdatabas. Denna information delas upp i mindre delar och kodas, ofta med tekniker som Base32 eller Base64, så att den kan representeras som text.
Ofatst används främst Base32 som är designad så att den använder en begränsad och DNS-vänlig teckenuppsättning. Därför fungerar den bra direkt i domännamn utan att bryta mot standarder.
DNS har ganska strikta regler för vilka tecken som får användas i domännamn. En etikett (t.ex. en subdomän) får i princip bara innehålla:
- bokstäver (a–z)
- siffror (0–9)
- bindestreck (-)
2. Inbäddning i DNS-frågor
Därefter placeras varje kodad del i en DNS-förfrågan. Istället för att skicka data direkt över ett vanligt protokoll, göms informationen i själva domännamnet. En sådan förfrågan kan exempelvis se ut som en till synes märklig underdomän där den kodade datan utgör en del av namnet.
Till exempe koden göms i domännamnet:
dGhpcy5pcw==.attackerdomain.com
3. Vidarebefordran genom DNS-systemet
När denna DNS-förfrågan skickas från klienten kan den lokala DNS-servern inte besvara den, eftersom domänen inte är känd internt. Därför skickas förfrågan vidare enligt den normala DNS-processen, först till en rekursiv DNS-server och därefter vidare ut på internet tills den når den auktoritativa namnserver som angriparen kontrollerar.
4. Mottagning hos angriparen
När förfrågan når angriparens server extraheras den kodade datan från domännamnet. Genom att samla många sådana förfrågningar kan angriparen steg för steg återskapa den ursprungliga informationen. På detta sätt kan data långsamt och diskret föras ut ur nätverket.
5. Svar tillbaka till den infekterade enheten
Kommunikationen sker dock i båda riktningar. Angriparens namnserver kan också svara på DNS-förfrågningarna med kodad information i DNS-svaret. Dessa svar kan innehålla instruktioner som den infekterade enheten avkodar och exekverar. På så sätt skapas en fungerande styrkanal, ofta kallad Command and Control (C2).
Varför DNS tunneling är svår att upptäcka
Det som gör DNS tunneling särskilt problematisk är att trafiken ser legitim ut. DNS används kontinuerligt av alla klienter i ett nätverk, och säkerhetslösningar är ofta konfigurerade för att släppa igenom denna trafik utan djupare inspektion.
Dessutom skickas informationen i små, uppdelade delar och är kodad, vilket gör det svårt att direkt se att något är fel. För en brandvägg eller en enkel övervakningslösning kan trafiken därför framstå som helt normal, trots att den i själva verket innehåller exfiltrerad data eller styrkommandon.
Upptäckt av attacken och skydd
För att upptäcka DNS tunneling räcker det inte att enbart tillåta eller blockera DNS-trafik. Istället behöver man analysera hur trafiken faktiskt ser ut och beter sig över tid.
En viktig indikator är ovanligt långa eller komplexa domännamn, särskilt sådana som verkar slumpmässiga. Även en hög frekvens av DNS-förfrågningar till samma domän kan vara ett tecken på att data skickas i små delar. I vissa fall används också specifika DNS-posttyper, som TXT-poster (textbaserad information kopplad till en domän), för att transportera större mängder data.
Ett effektivt skydd innebär därför att man begränsar vilka DNS-servrar klienter får använda och att man inspekterar DNS-trafik mer noggrant, exempelvis med hjälp av säkerhetsfunktioner i brandväggar eller dedikerade DNS-säkerhetstjänster.
En sådan tjänst är Cisco Umbrella, som kan analysera DNS-förfrågningar i realtid, blockera kända skadliga domäner och identifiera beteenden som tyder på tunneling eller andra DNS-baserade attacker.

Cisco Umbrella fungerar som en molnbaserad säkerhetstjänst som analyserar DNS-förfrågningar i realtid. Istället för att bara vidarebefordra en DNS-förfrågan kontrollerar tjänsten om domänen är känd, misstänkt eller direkt skadlig. Om en användare försöker nå en domän som är kopplad till exempelvis malware, phishing eller command-and-control-servrar, stoppas anslutningen redan innan någon faktisk kommunikation etableras.