{"id":1038,"date":"2009-12-27T23:45:43","date_gmt":"2009-12-27T22:45:43","guid":{"rendered":"http:\/\/www.mitternachtshacking.de\/blog\/1038-26c3-cat-procsysnetipv4fuckups"},"modified":"2018-05-29T22:33:43","modified_gmt":"2018-05-29T21:33:43","slug":"26c3-cat-procsysnetipv4fuckups","status":"publish","type":"post","link":"https:\/\/www.mitternachtshacking.de\/blog\/1038-26c3-cat-procsysnetipv4fuckups","title":{"rendered":"26C3: cat \/proc\/sys\/net\/ipv4\/fuckups"},"content":{"rendered":"<p>Agenda:<\/p>\n<ul>\n<li>Getting into the network<\/li>\n<li>Bypassing internal packet filters<\/li>\n<li>Poisoning the Cache<\/li>\n<\/ul>\n<p>Aus der Agenda h\u00f6rt sich das ein wenig wie &#8222;How to own the network&#8220; an. Das Problem ist aber schon einmal, wie kommt man auf einen internen Server, wenn man nicht gerade einen 0-Day Bug hat den man daf\u00fcr verschwenden will. Ok, man kann es mit Client-side Attacks versuchen, aber die Zuverl\u00e4ssigkeit ist halt nicht zwingend gegeben. Das klingt bei gezielten Angriffen leichter als es ist. Das philosophieren \u00fcber Exploits und Information Gathering mit Emoticons in MSN ist zwar nett, bringt uns aber in der Praxis nicht weiter. Wie viele Leute in den Unternehmen verwenden denn wirklich MSN auf Linux? Geschweige denn, dass man f\u00fcr die verwendete Software dann tats\u00e4chlich einen Fehler mit einem exploitable Bug findet.<\/p>\n<p>Egal. Der n\u00e4chste Schritt ist, den internen Paketfilter zu umgehen. Die Idee geht wie folgt: Um einen Sicherheitsmechanismus in Layer n zu umgehen, muss man Layer n-1 angreifen. Um also einen IP-Paketfilter (Layer 3) zu umgehen, muss man den Devicetreiber in Layer 2 attackieren. Beispielsweise indem man an der MTU rumfummelt, daf\u00fcr bieten sich in Gigabit-Ethernet Jumbo-Frames an. Wenn der Empf\u00e4nger mit Jumbo-Frames nicht umgehen kann, besteht die M\u00f6glichkeit eines Buffer Overflows. Wenn man Gl\u00fcck hat findet man einen Bug im e1000 Linux Ethernet-Treiber der noch nicht gefixt ist.<\/p>\n<p>Jetzt geht es an den Squid-Cache. Squid cached nicht nur Webseiten sondern auch DNS. Und von Dan Kaminsky wissen wir, dass DNS eine komplizierte Sache ist. Da gibt es diverse Probleme mit Sequenznummern und zuf\u00e4lligen Ports. Nur leider verwendet Squid immer noch den gleichen (zwar zuf\u00e4lligen aber solange der Cache l\u00e4uft statischen) Port f\u00fcr alle DNS-Anfragen. Und der l\u00e4sst sich herausfinden. Daf\u00fcr verwendet Fabs einen recht coolen Trick der das Verhalten von Hide-NAT ausnutzt. Jetzt fehlt nur noch die richtige Transaction-ID um falsche DNS-Eintr\u00e4ge in den Cache zu bringen. Und da k\u00f6nnte uns helfen, dass wir bereits Antworten in die Reply-Queue bringen k\u00f6nnen, bevor der Squid eine Frage stellt. Wenn die Queue nicht zu klein w\u00e4re. Wir m\u00fcssen also verhindern, dass der echte DNS-Server die Antwort bekommt, um von innen eine passende Antwort zu spoofen. Daf\u00fcr nutzt man ggf. wieder einen Fehler im Devicetreiber aus, dessen Details im Vortrag zu finden sind.<\/p>\n<p>In Summe hatte ich mir zwar unter dem Vortrag was anderes vorgestellt, die Ideen in den von Fabs vorgestellten Exploits sind jedoch f\u00fcr mich ganz brauchbar. Da kann man noch mehr daraus machen. Und zumindest kann man sich darauf verlassen, dass Fabs Vortr\u00e4ge noch etwas Neues bringen und ab und zu sogar noch zum Lachen sind.<\/p>\n<p>Schade ist nur, dass die Video-Streams des CCC von so furchtbar schlechter Qualit\u00e4t sind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agenda: Getting into the network Bypassing internal packet filters Poisoning the Cache Aus der Agenda h\u00f6rt sich das ein wenig wie &#8222;How to own the network&#8220; an. Das Problem ist aber schon einmal, wie kommt man auf einen internen Server, wenn man nicht gerade einen 0-Day Bug hat den man daf\u00fcr verschwenden will. Ok, man [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,8],"tags":[],"_links":{"self":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/1038"}],"collection":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/comments?post=1038"}],"version-history":[{"count":0,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/1038\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/media?parent=1038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/categories?post=1038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/tags?post=1038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}