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ß.
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.
Es gibt zwei verschiedene Arten von DNS-Diensten im Internet. Jeder dieser Dienste handhabt DNS-Abfragen je nach Funktion unterschiedlich.
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.
Schauen wir uns genau an, wie eine DNS-Anfrage abläuft.
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.
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:
Die DNS-Cache-Methode ist jedoch mit einigen Problemen verbunden:
Im Internet werden unterschiedliche Arten von DNS-Caching verwendet:
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:
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.
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:
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.
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:
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!