Fr 24. Aug 14:54:38 CEST 2007

DNS Rebinding

Ja, ich greife mal das leidige Thema dns Rebinding auf, weil die eigentlich sehr simple aber auch sehr wirkungsvoll sind.
Die Idee dahinter ist wenn eine Anfrage nach foo.com gestellt wird, zunächst ein JavaScript auszuliefern, das dann weitere Anfragen nach foo.com stellt, in der Zwischenzeit wurde aber der DNS Record umgestellt wurde und somit auf eine völlig andere Seite zeigt die man damit ausspionieren kann. Mann kommt somit an Webseiten heran an die man sonst nicht hinkommt in dem man die IP Adresse dann einfach auf den Zielhost umsetzt, z.bsp. 192.168.1.1 o.ä.
Das ganze ist ja noch relativ unspektakulär weil man nur an Webseiten herankommt (was für Spionage meistens reicht), und nicht an irgenwelche Datenbaken o.ä., dazu benötigt man Socket zugriff was man mit JavaScript ja nicht hat. Naja, aber es gibt ja Browser Plugins, und manche Browser Plugins erlauben auch Netzwerkzugriffe, z.Bsp. Flash und Java. Und mit diesen Plugins ist es möglich beliebige Sockets zu öffnen. Dadurch kann man dann wunderbar auf Datenbanken/Veraltete Dienste o.ä. zugreifen und angreifen. Aber man kann das ganze auch zu positiven Zwecken einsetzen, ala Offene Proxies, Tor Nodes, o.ä. Da man Sockets hat (bei java auch udp) sind der eigenen Kreativität keine Grenzen gesetzt, ala VoIP Spamming, File sharing, freie DNS Server..
So, und jetzt ist die Frage wie kann man sich dagegen schützen:
  1. Das einfachste ist man surft ohne Javascript und zieht es konsequent durch und benutzt keine Plugins o.ä. sprich Youtube/Google Maps... ade -> nicht praktikabel
  2. Um zu verhindern das auf Interne Dienste die im LAN stehen zugegriffen werden kann reicht es DNS Antworten zu verwerfen die auf eine Interne IP zeigen. Dafür gibt es dnswall. Das ganze schützt aber nur die Internen Dienste und nicht das man mit seinem Browser plötzlich in einem BotNetz aktiv ist.
  3. Der Browser läuft unter anderen Benutzerrechten und darf nur auf Port 80/443 zugreifen, bzw. man setzt diese Policy mit selinux oder grsecurity durch, und darf nicht aufs Interne Netz zugreifen, sondern dies geschieht mit einem anderen Browser (wenn man selinux/grsecurity einsetzt) oder läuft mit den normalen Benutzerrechten, wodurch er auf das interne Netz zugreifen darf.
  4. Es gibt eine Firefox Extension das JavaScript beobachtet und Zugriff auf die Internen IPs verhindert.
So, und fuer alle die jetzt in Panik verfallen sind unter crypto.stanford.edu/dns/ gibt es weitere Informationen.

Posted by Ulrich Dangel | Permanent Link | Categories: Stuff