DNS-Rebinding in 2k19 oder wie man wirklich schwitzt, indem man eine Pornoseite besucht


Hallo allerseits! Heute möchten wir über einen alten und fast vergessenen Angriff namens DNS-Rebinding sprechen. Das erste Gespräch darüber begann im Jahr 2007, aber Experten aus dem Bereich der praktischen Informationssicherheit haben es im Zusammenhang mit den Besonderheiten der Durchführung dieses Angriffs sowie mit wenig greifbaren Konsequenzen, wie es damals schien, nicht gebührend berücksichtigt. Heute werden wir versuchen, sie vom Gegenteil zu überzeugen, und Sie insbesondere, indem wir zeigen, dass dieser Angriff in der modernen Welt einen zweiten Wind gefunden hat und nicht mehr so ​​harmlos erscheint.


Was ist DNS-Neubindung?


Betrachten Sie das folgende Schema:



Wir haben einen Computer eines Opfers mit IP 192.168.0.2 im lokalen Netzwerk und einen Router mit der IP-Adresse 192.168.0.1. Das Ziel des Angreifers, der den Server mit der Adresse 13.37.13.37 und dem Domainnamen hacker.com verwaltet (auch unser eigener DNS-Server mit Informationen zur Domain dreht sich auf dem ip-shnik), besteht darin, Zugriff auf den Router im lokalen Netzwerk zu erhalten.


Um die DNS-Rebinding-Technik verwenden zu können, müssen wir das Opfer auf unsere schädliche Website locken. Angenommen, es ist uns gelungen.


Lassen Sie uns nun im Detail untersuchen, wie der Angriff funktioniert.


Zunächst greift der Browser mit einer A-Record-Anfrage auf die DNS-Server zu:



Die Kette der DNS-Server führt zu unserem Server, der wiederum eine Standardantwort mit der wahren IP-Adresse der schädlichen Site ausgibt und auch die TTL angibt, die wir in diesem Fall benötigen 59.



Als Nächstes stellt der Browser eine Standard-HTTP-Anforderung für die empfangene IP.



In der nächsten Phase antwortet der Server mit einer HTML-Seite mit Javascript-Code, der auf unsere eigene Domain zugreift.



Bis die TTL abläuft und sich der Benutzer auf der Site befindet, wird das oben empfangene Javascript ausgeführt. Sobald die TTL beendet ist, fordert der Browser erneut einen A-Datensatz an.



Zu diesem Zeitpunkt wird unser Javascript weiterhin ausgeführt, und der von uns verwaltete DNS-Server antwortet mit einem A-Eintrag mit einer IP-Adresse aus dem lokalen Netzwerk, das der Angreifer erreichen möchte.



Da die Domäne, der Port und das Protokoll unverändert bleiben, wird die SOP nicht verletzt. Infolgedessen greift der Browser auf die Domäne pew.hacker.com zu, klopft jedoch bereits an den begehrten und unerreichbaren Router.



Infolgedessen erhalten wir ruhig eine Antwort vom Router und leiten sie an uns weiter, indem wir die entsprechende Funktionalität in den zuvor geladenen Javascript-Code einbetten.




Fassen wir also Folgendes zusammen:


  • Der Benutzer besucht die Site und erhält eine echte IP-Adresse und eine kurze TTL
  • Auf der Site ruft der Browser dieselbe Domain an, in der sich der Benutzer befindet. Sobald der Cache abläuft, fordert der Browser erneut die Domänen-IP an.
  • Außerdem gibt unser DNS-Server anstelle der tatsächlichen Adresse die IP-Adresse des internen Dienstes (in unserem Fall des Routers) aus.
  • Nachdem die Anforderung über die Domäne an den Router gesendet wurde, wird das Ergebnis von dem vom Benutzer vorinstallierten Javascript an uns gesendet.

Wir haben es herausgefunden! Viele haben möglicherweise eine vernünftige Frage: „Na und?“, Denn für den Betrieb müssen Sie die internen IP-Adressen der Dienste kennen, den Benutzer für eine bestimmte Zeit behalten usw.


Ja, mit dem Aufkommen von Streaming-Diensten, Video-Hosting, guten alten Pornoseiten und anderen Plattformen, auf denen die Leute lange Zeit hängen, hat der Angreifer genug Zeit, um den Angriff auszuführen. Die Adressen sind häufig Standard oder leicht vorhersehbar.


Aber das ist alles in der Theorie, aber was in der Praxis? Wir haben die 4 wichtigsten Bereiche im Jahr 2019 ausgewählt, in denen es Vorfälle im Zusammenhang mit dem DNS-Rebinding-Angriff gab. Dies sind:


  • IoT
  • Krypto-Geldbörsen
  • Desktop-Anwendungen
  • Wolken

Schauen wir uns jedes Thema der Reihe nach an und finden heraus, ob wirklich alles so harmlos ist.


Iot


Google nach Hause



Google Home ist ein intelligenter Assistent von Google. Dieses Gerät verfügt (oder hatte in der Vergangenheit) über eine API, für die keine Authentifizierung zur Steuerung des Geräts erforderlich ist. Es bietet eine Reihe von Funktionen, wie zum Beispiel:


  • Inhalte abspielen
  • Scannen
  • Starten Sie neu
  • Verbindung zu WIFI-Netzen usw.

Beispiel für ein Angriffsszenario: Ein Angreifer kann einen Benutzer dekanonymisieren, indem er die Koordinaten der nächsten WIFI-Punkte ermittelt. Natürlich kann Sie kein VPN retten.


Sonos WLAN-Lautsprecher



Diese Spalten von Sonos rufen einen Webserver im lokalen UPnP-Netzwerk auf, der Zugriff auf eine Reihe interessanter Seiten bietet:


  • 192.168.1.76:1400/support/review - spuckt die Ausgabe einiger UNIX-Befehle aus
  • 192.168.1.76:1400/tools - Ermöglicht das Ausführen einiger UNIX-Befehle

In diesem Fall kann der Angreifer den Befehl traceroute ausführen, um die Topologie des internen Netzwerks zu scannen.


Funkthermostat CT50



Dies ist einer unserer Lieblingsfälle. Dieses Thermostatmodell verfügt auch über eine API ohne Autorisierung und ermöglicht Ihnen folgende Änderungen:


  • Klimamodus
  • Temperatur
  • Hintergrundbeleuchtungsmodus und andere Einstellungen

Infolgedessen kann ein Angreifer seinem Opfer viel Schweiß einbringen, aber im Ernst, ein solcher Angriff auf einen Thermostat, beispielsweise in einer medizinischen Einrichtung, kann zu ziemlich unangenehmen Konsequenzen führen.


Roku TV



Roku-Fernseher haben immer noch das gleiche Problem - eine API ohne Authentifizierung.


Mit der API können Sie:


  • Führen Sie verschiedene Anwendungen aus
  • Inhalte abspielen
  • Führen Sie Suchabfragen auf dem System usw. durch.

In diesem Fall ist das Maximum, das den Benutzer bedroht, das Auslaufen sensibler Daten, was ebenfalls unangenehm ist.


Beliebiger WIFI-Router



Fast jeder hat heute dieses IoT-Gerät. Es ist kein Geheimnis, dass viele normale Benutzer die Standardkennwörter in den Admin-Panels ihrer Router nicht ändern. Mit Hilfe der DNS-Neubindung hindert uns nichts daran, uns mit Standardanmeldeinformationen anzumelden und Zugriff auf das Admin-Panel zu erhalten. Wenn die lokale IP nicht gefunden werden kann, hilft WebRTC.


IoT-Zusammenfassung


Wir heben einige der Funktionen hervor, die die DNS-Neubindung bei der Arbeit mit IoT bietet:


  • Fähigkeit, Benutzer zu dekanonymisieren
  • Möglichkeit zum Scannen eines lokalen Netzwerks
  • Benutzer verspotten
  • Alles, abhängig von der Funktionalität des IoT-Geräts

Krypto-Geldbörsen


Geth


Lassen Sie uns nun über Kryptowährungsbrieftaschen sprechen. Der erste untersuchte Fall ist ein Kunde für Ethereum-Geldbörsen namens Geth. Hier befindet sich die Büchse der Pandora im JSON-RPC-Dienst. Lassen Sie uns zunächst herausfinden, was es ist. JSON-RPC ist ein Remoteprozeduraufrufprotokoll im JSON-Format. Es sieht alles ungefähr so ​​aus:



Die meisten Clients führen diesen Dienst auf localhost: 8545 aus und bieten wiederum eine Reihe interessanter Funktionen wie eth_sendTransaction usw.


Nun ein Beispiel, wie Sie sein Guthaben und seine Brieftaschenadresse ohne Wissen des Benutzers und mithilfe des DNS-Rebinding-Angriffs abrufen können:



EOSIO Keosd Brieftasche


Als nächstes haben wir einen Kunden für EOSIO-Wallets. Keosd selbst startet auf localhost: 8900 und signiert nach Eingabe der Autorisierungsdaten automatisch 15 Minuten lang alle Anwendungsaktionen. Nachdem Sie sich mit der API befasst haben, finden Sie wieder interessante Funktionen. Aus Gründen der Übersichtlichkeit können Sie mithilfe der unten gezeigten Anforderung den öffentlichen Schlüssel des Benutzers abrufen:



Zusammenfassung der Crypto-Geldbörsen:


  • Ein Angreifer kann Benutzergeld stehlen
  • Ein Angreifer kann verschiedene Benutzereinstellungen ändern
  • die Fähigkeit, den Benutzer zu dekanonymisieren

Desktop-Anwendungen


Übertragungsclient


Ich möchte den Block von Vorfällen im Zusammenhang mit Desktop-Anwendungen mit einer relativ sensationellen Sicherheitsanfälligkeit im Transmission-Torrent-Client starten.


Hier liegt das Problem in demselben JSON-RPC, den wir etwas höher untersucht haben. In diesem Fall können Sie die Benutzereinstellungen ändern, z. B. den Ordner zum Herunterladen von Dateien ändern:



Einerseits scheint es nichts Ernstes zu sein, aber wenn Sie anstelle des Ordners die vom Angreifer kontrollierte smb-Freigabe angeben (wenn der Client den Windows-Client verwendet), können Sie den Benutzer-Hash abfangen, der in Zukunft verwendet werden kann.


uTorrent Web Client


Dieser Kamerad hat in seinem Arsenal denselben JSON-RPC-Dienst, mit dem Sie Benutzerkonfigurationsdateien ändern und Dateien herunterladen können.


In diesem Fall ist eine Authentifizierung erforderlich, die Anmeldeinformationen sind jedoch unter http://localhost:19575/users.conf . Wie kann das genutzt werden?


Stellen Sie zunächst die folgende Anfrage:



Nach Erhalt des Tokens ändern wir den Download-Ordner in den Ordner, in dem sich die Programme befinden, die beim Systemstart ausgeführt werden:



Und schließlich geben wir den Befehl zum Herunterladen der erforderlichen Nutzdaten:



Infolgedessen wird evil.exe nach dem nächsten Neustart gestartet.


Minikube


Minikube ist ein Befehlszeilenprogramm zum Konfigurieren und Ausführen eines Single-Mode-Kubernetes-Clusters in einer virtuellen Maschine auf dem lokalen Computer.


Es hängt immer an 192.168.99.100 und die webbasierte Schnittstelle ist an Port 3000 verfügbar. Infolgedessen hat ein Angreifer die Möglichkeit, einen schädlichen Container mit einem freigegebenen Ordner für das Hauptsystem zu erstellen.


Zunächst müssen Sie das csrf-Token erhalten.



Als nächstes müssen Sie einen Container erstellen und dazu die folgende Anfrage senden:



Mal sehen, was er macht. Darin geben wir an, dass wir beim Starten des Containers die Reverse-Shell weiterleiten und auch den Benutzerordner vom Hauptsystem aus einbinden müssen:



Ruby on Rails


Für das Ruby on Rails-Framework gibt es ein Juwel, mit dem Sie Ruby-Code direkt im Browser ausführen können.



Versuchen wir herauszufinden, was wir dafür brauchen.


Zuerst müssen wir zu einer nicht existierenden Seite gehen:



Als nächstes versuchen wir, über den Browser auf die Konsole zuzugreifen:



Nun, schließlich bilden wir eine Anfrage zum Starten der Taschenrechneranwendung (in diesem Beispiel der Vektor für MAC OS X):



Blizzard-Desktop-Anwendung


Nicht nur Entwickler und reguläre Benutzer sind anfällig für Angriffe wie DNS-Rebinding, sondern auch Gamer. Hier tritt erneut ein JSON-RPC-Dienstproblem auf, das in diesem Fall auf localhost an Port 1120 auftritt. Der Dienst ermöglicht es, Aktualisierungen vorzunehmen, Einstellungen zu ändern und andere verschiedene Wartungsoptionen.


In diesem Fall wird die Authentifizierung unterstützt, aber das Übergeben durch Anfordern von localhost ist nicht schwierig:



Als Ergebnis können Sie etwas Ähnliches erreichen:



Weitere Details finden Sie hier .


Zusammenfassung der Desktop-Anwendungen:


  • Ein Angreifer kann RCE auf dem Hauptsystem erhalten (vergessen Sie auch nicht VM Escape).
  • Ein Angreifer kann Zugriff auf vertrauliche Daten usw. erhalten.

Wolken


Nun, und schließlich bleibt das Interessanteste - die Wolken. Unter dem Strich werden Cloud-Dienste häufig zum Hosten von Software verwendet, mit der Benutzer analysiert werden, die auf die Site kommen. Klicken Sie beispielsweise mit einem kopflosen Browser auf den Link in der Referer-Kopfzeile, um die Ressource zu kritzeln, von der aus der Client zur Site gegangen ist. Dieser Angriffsvektor kann auch verwendet werden, da ein kopfloser Browser im Wesentlichen ein vollwertiger Webbrowser ohne grafische Oberfläche ist, der jedoch DOM, JS und alles andere unterstützt.


Was können wir in diesem Fall tun, wenn wir zu unseren Widdern zurückkehren? In der Tat müssen wir für einen Angriff den Benutzer (in diesem Fall den Bot) auf der Seite verzögern. Nun, dafür können wir ein Bild auf der Seite verwenden, das eine Inhaltslänge mehr hat, als es tatsächlich ist. Infolgedessen wird der Bot denken, dass das Bild noch nicht hochgeladen wurde und auf unserer Seite verweilt, und dann verwenden wir unsere Standard-DNS-Rebinding-Technik.


Da wir Anfragen von einem Proxy senden, können wir daher viele lustige Dinge tun. Zum Beispiel:


  • Internes Netzwerk scannen
  • bei internen Diensten anmelden (theoretisch)
  • Autorisierungsdaten von anderen Diensten usw. stehlen.

Gehen wir direkt zu Amazon. AWS EC2 verfügt über Funktionen wie den Instanzmetadatendienst. Damit kann jede EC2-Entität die REST-API unter 169.254.169.254 verwenden, die Informationen zur Instanz anzeigt.


Hier ist beispielsweise eine kurze Liste ähnlicher Dienste für verschiedene Clouds:



Schauen wir uns nun einen Fall an, in dem wir uns AWS hingeben.


Lassen Sie den Bot zunächst eine Anfrage an die API stellen:



In der Antwort können wir vertrauliche Informationen erhalten, z. B. Credits in einem Skript, das beim Starten des Computers ausgeführt wird:



Als nächstes können wir den Namen des Knotens herausziehen, mit dem wir weiter arbeiten werden:



Als nächstes werden wir den folgenden Aufruf mit dem bereits bekannten Namen und - Bingo machen!




Wir haben verschiedene Benutzerinformationen erhalten, z. B. AccessKeyId, SecretAccessKey, Token usw.


Nachdem wir diese Daten erhalten haben, können wir sie für die Autorisierung über den Konsolenclient verwenden:



Das Gesamtergebnis:


Lassen Sie uns die allgemeinen Schwachstellen hervorheben, die wir bei der Verwendung eines DNS-Rebinding-Angriffs festgestellt haben:


  • API ohne Authentifizierung
  • Lokale Dienste ohne Authentifizierung
  • Zu anfordernder Host-Parameter wird ignoriert
  • Verwenden von http anstelle von https

Trotz verschiedener Argumente von Experten auf dem Gebiet der praktischen Informationssicherheit wird ein Angriff dieser Art im Zeitalter von IoT, Cloud-Diensten, Kryptowährungen usw. neu geboren, obwohl der Client auf der Seite des Angreifers verzögert werden muss, weil in der Welt der Online-Kinos Video-Hosting und andere Dienste, die dem Benutzer Inhalte bereitstellen, ist nicht schwer zu tun. Seien Sie daher vorsichtig, wenn Sie in der Online-Welt reisen, einen anderen intelligenten Assistenten kaufen und natürlich bei der Entwicklung.


Quellen:


Source: https://habr.com/ru/post/de439522/


All Articles