28. Dezember 2007
Im Vortrag „Automatic Memory Management“ ging es um automatisches Speichermanagement also Garbage Collection und die Frage ob es sinnvoll ist, den Speicher z.B. in einem C-Programm mittels malloc() und free() selbst zu verwalten oder das einem automatischen Prozess zu überlassen. Insgesamt eher eine Frage für Programmiersprachenentwickler und weniger für Hacker.
Hannes stellte dabei die verschiedenen Garbage Collection Ansätze vor, im einzelnen:
- Reference Counting
- Mark and Sweep
- Mark and Compact
- Copying GC
- Generational GC
- Incremental GC
- Memory Pool System
Und die Vorteile in der Systemsicherheit, insbesondere
- keine Memory Leaks
- keine Double-Free Bugs
Sein Fazit war, wenn man etwa den vierfachen RAM zur Verfügung hat, den das System zum normalen Ablauf braucht, dann ist Garbage Collection effizient, wenn der verfügbare RAM etwa dem benötigten entspricht und GC daher sehr oft laufen muss, ist eine manuelle Allokierung und Freigabe effizienter.
It’s so nasty, nasty, nasty … und die Virtuellen Maschinen wie Java werden in Zukunft sicher mehr. Die beiden Österreicher Roland Lezuo und Peter Molnar haben sich in ihrem Vortrag „Just in Time Compilers – breaking a VM“ intensiv mit der Cacao OpenSource JavaVM beschäftigt und eine Reihe von Möglichkeiten gefunden, aus den Beschränkungen der Virtual Maschine auszubrechen und außerhalb der Kontrolle eines Security Reference Monitors beliebigen Programmcode auszuführen.
Die meisten Lücken die in Cacao gefunden wurden sind Integer Overflows und alle sind wohl Programmierfehler, z.B. wenn 32bit-Code für 64bit-Systeme kompiliert wird und die größeren Integer nicht berücksichtigt. Ein weiteres Problem kann darin liegen, dass die Entwickler des JIT-Compilers von den Eigenschaften der Programmiersprache ausgehen und nicht von den Möglichkeiten im verwendeten Bytecode. Ein Angriff bestand deshalb darin, speziell angepassten Bytecode zu erzeugen, der eine Schwäche des JIT-Compilers nutzt.
Die Gefahr dieser Angriffe ist durchaus real, in praktisch allen Browsern werken inzwischen eine Vielzahl von Vitual Maschines. Java, Flash, Silverlight, … und es werden eher mehr. Fukami ist an dem Thema Flash ja schon seit geraumer Zeit dran.
In diesem Vortrag ging es um die aktuelle Entwicklung in der Quantenkryptographie, hauptsächlich quantenkryptographische Schlüsselverteilung. Die Präsentation wurde in Form einer Diskussions- und Vortragsrunde von einer Gruppe Physiker gehalten, die sich mit Quantenkryptographie beschäftigt.
Eine Einführung in die Verschlüsslung zeigt die typischen Probleme, Schlüsselaustausch bei symmetrischer Verschlüsselung und Berechnung des Private Key aus dem Public Key bei Verwendung des RSA-Algorithmus (mit geringer Schlüssellänge). Anschließend wird auf die physikalischen Eigenschaften von Photonen, insbesondere ihre Polarisierung und die Polarisationsfilter eingegangen. Wichtig war der Hinweis aus die Unschärferelation von Heisenberg, die sich nicht umgehen lässt (auch nicht, wenn man clever ist). Zur Kodierung wird in den meisten Implementierungen das BB84 Protokoll verwendet.
Das eigentliche Problem der Quantenkryptographie liegt auch nicht in der Physik an sich sondern in fehlerhaften Implementierungen. Die Hersteller dieser Geräte versprechen, da die Physik absolut sicher ist, sind das natürlich auch die Geräte und diese Annahme ist leider falsch. Genau wie AES ein (ausreichend) sicherer Algorithmus ist, kann der Algorithmus fehlerhaft implementiert werden und einem Angreifer (z.B. über einen Side-Channel Angriff) Zugriff auf den Enryption-Key erlauben. Gegen das Quantenkryptographische System lassen sich beispielsweise Timing Channel Attacken ausführen.
Sehr spannend war, dass die Jungs das komplette selbstgebaute Gerät aus Singapur nach Deutschland gebracht haben um es live vorzuführen. Meine persönliche Meinung ist jedoch, dass die Quantenkryptographie noch etwas mehr verspricht, als die konkreten Implementierungen tatsächlich halten können. Außer für spezielle (z.B. militärische) Anwendungen macht der Einsatz der Quantenkryptographie noch keinen wirklichen Sinn.
Der Vortrag über die absurden bzw. nicht-intuitiven Seiten der Mathematik von Anoushirvan Dehghani war zwar kurz aber sehr amüsant. Er sprach einige Aspekte an, die mathematisch zwar beweisbar, sich dem normalen menschlichen Denken jedoch nur eingeschränkt erschließen:
- Gabriels Horn
- Efrons intransitive Würfel
- Penney-Ante Münzwerfen
- Das berühmte Ziegenproblem
- Das Triell
Die meisten dieser Mathematischen Spielereien sind aus diversen Zeitschriften und Büchern ja bereits allgemein bekannt, Anoushirvan hat sie jedoch leicht verständlich in seinen Proceedings (PDF) zusammengefasst.
Was mir ein wenig fehlte war ein konkretes Fazit aus dem sich eventuell praktische Anwendungen erschließen (außer vielleicht, bei einem Gewinnspiel mit drei Toren das Tor zu wechseln, wenn der Moderator eine Niete öffnet).
Bei Schere, Stein, Papier gibt es z.B. ein paar interessante psychologische Aspekte. So wird statistisch die Schere am wenigsten gewählt, man hat mit Papier als die größte Gewinnchance. Außerdem konnte eine Untersuchung zeigen, dass Menschen dazu neigen genau die Figur zu wählen, die ihre vorher gewählte Figur besiegt hätte. Wenn man gegen unerfahrene Spieler konsequent psychologisch spielt, erhöht man ebenfalls seine Gewinnchance.
So, es ist kurz vor drei im großen Saal und die Flugdrohnen, alles Quadrocopter, haben das Feld übernommen. Da gab es auf dem letzten Congress ja einen Vortrag zum Thema. Zwischen zwei und vier der kleinen Flieger schweben hier durch den großen Saal, auch wenn es ab und an heftige Abstürze gibt. Aber die sind ganz schön schnell die Teile und können locker auch eine kleine Kamera tragen. Einige sind farbig beleuchtet, das sieht echt eindrucksvoll aus.
Insgesamt fällt mir aber auf, dass es deutlich weniger Vorträge sind als letztes Jahr. Statt vier Räume werden nur noch drei belegt, auch wenn das Programm ansonsten randvoll ist. Die Qualität der Vorträge, zumindest aus technischer Hackersicht, hat ebenfalls abgenommen. Mehr und mehr beherrscht Politik wie z.B. die Wahlcomputer oder Privacy-Aspekte (z.B. Tor) die Agenda. Für den dritten Tag finde ich gerade mal vier Vorträge die mich interessieren. Naja, wenigstens geht es morgen (eigentlich ja schon heute) nochmal ordentlich mit zwei Vorträgen von FX zur Sache. Wenn das so weitergeht, brauche ich nächstes Jahr jedenfalls nicht mehr alle vier Tage in Berlin verbringen. Dann gucke ich mir die wenigen Sachen einfach im Videostream an.
Fefe freut sich, dass Heise seinen (und den von Constanze Kurz und Andreas Bogk) Vortrag zum Bundestrojaner prominent erwähnt. Den Vortrag hab ich leider nicht geschafft, auf der A9 war heute mal wieder die Hölle los. Allein an vier Unfällen bin ich vorbeigekommen und in der früh war wegen eines LKWs bei Schleiz sogar komplett gesperrt. Egal, das gibt es sicher auf Video zum Angucken.
Morgen geh ich dafür mal mit der Kamera hier durch und mache das ein oder andere Foto von der Veranstaltung.
Nachtrag:
Hier der Streaming-Link.
Na gut, auch bedingt durch den Kommentar des Prof. persönlich bin ich natürlich in seinen Vortrag „I can count every star in the heavens above but I have no heart I can’t fall in love …“ gegangen … eine Show die wirklich sehenswert war.
Johannes Grenzfurthner hat einen sehr vollständigen Abriss des Themas Computer in der Musik geliefert, von Ulli Bäer über Juliane Werding und Peter Schilling bis zu France Gall war alles dabei. Am Schluss tanzte er sehenswert zu Rockmusik über die Bühne (hat sogar meine Freundin fasziniert die per Videostream zugesehen hat). Gut, er hat seine Zeit gnadenlos überzogen, fast so schlimm wie Thomas Gottschalk bei Wetten dass!
Aber zwei Fragen habe ich noch, Herr Prof.:
- We are all stupid computer nerd assholes?
- Wo war der Beitrag von Monochrom zu Computern in der Popmusik? Genau, der hier!
Ach ja, und gibt es eigentlich auch eine Liste der ganzen Lieder?
27. Dezember 2007
Dan Kaminsky war natürlich auch wieder da und hat in seinem Vortrag zu DNS Rebinding die Themen vom Camp wieder aufgewärmt. Ich will das gar nicht alles wiederholen. Wenigstens stand nicht mehr Black Hat auf den Folien. Lediglich ein paar Notizen für mich selbst:
Browser-Angriffe:
- XSS
- XSRF
- DNS Rebinding (Princeton Attack, Dan Bonek, RSnake)
- Same Origin Policy
DNS Rebinding Angriff:
- Browser lädt Seite mit Flash von Server www.mydomain.com
DNS für www. mydomain.com ergibt: 212.18.45.xx mit TTL=1
- Browser lädt xmlsocket-Policy von Server www.mydomain.com, die Port 22 erlaubt
DNS für www. mydomain.com ergibt: 212.18.45.xx mit TTL=1
- Flash im Browser öffnet verbindung zu www.mydomain.com:22
DNS für www.mydomain.com ergibt 192.168.1.1 mit TTL=1
Und das ist alles innerhalb der „Same Origin Policy“ erlaubt.
Außerdem zum DNS-Rebinding nochmal die DNS-Tricks:
- Temporal (TTL)
- Spatial (mehrere IP-Adressen für eine Antwort)
- Ridiculous (verwendet CNAME)
Das CNAME-Verfahren geht so:
- der Browser stellt eine Anfrage nach www1.domain.de
- der DNS-Server antwortet mit einem DNS-Paket, das zwei Antworten enthält:
www1.domain.de CNAME www.domain.de
www.domain.de A 10.0.0.1
- der Browser stellt eine Anfrage nach www2.domain.de
- der DNS-Server antwortet mit einem DNS-Paket, das wieder zwei Antworten enthält:
www2.domain.de CNAME www.domain.de
www.domain.de A 10.0.0.2
- Obwohl der Client vorhin die Information hatte, dass www.domain.de auf 10.0.0.1 abbildet, wird diese Information im Cache direkt durch die zweite Antwort überschrieben.
Eigentlich ganz einfach 🙂
Ach ja, HaXe muss ich mir auch mal angucken.
Vom Vortrag „Programming DNA“ habe ich nur die letzte Viertelstunde mitbekommen. Die skizzierte Vorstellung, dass DNA-Sequenzer und DNA-Printer irgendwann für jeden zu haben sind und daher jeder sich seine Organismen selbst basteln kann sind jedoch gleichzeitig faszinierend und erschreckend.
Eine DNA-Synthese kostet heute nach seinen Angaben rund 45.000 USD und man bekommt vielleicht 20.000 Basen Maximallänge (weil die chemischen Reaktionen keine 100% Sicherheit haben sondern ab und an fehlschlagen) mit 50% Sicherheit korrekt zusammengebaut. In 10 Jahren kann das vielleicht noch 2.000 USD kosten und in 20 Jahren vielleicht nur noch so viel wie ein Papierausdruck.
Das wirft zwei interessante, vom Vortragenden gestellte Fragen auf:
- „Will there be biological hackers?“
- „Will there be a biological hacker community?“
Hab ich das falsche studiert? Hätte ich Biochemie (damals in Tübingen mit Numerus Clausus von 1.2) statt Informatik nehmen sollen? Irgendwie ist mir die eine Blade Runner Szene dabei vor Augen gestanden, in der ein Replikantenentwickler von Roy bedroht wird, weil der seine Lebensspanne erfahren will.
Ok, da haben ein paar Jungs ein Smartcard-basiertes Zugangskontrollsystem gebastelt und versucht, da etwas Anonymität hineinzubekommen. Kernproblem war, der Zugang sollte günstig sein und da fällt ein Schließsystem natürlich aus. Günstige Karten bekommt man ja schon für 50 Cent und wenn man sich die Elektronik selbst bastelt kommt man mit wenigen Euro auch hin.
Das Problem ist jedoch die Anonymität … wie will man verlorene Karten sperren wenn der Zugang anonym ist. Die Fragestellung war sowieso daneben. „Wenn ich einen Schlüssel benutze weiß das hinterher auch keiner“ sagte einer der beiden in dem Vortrag. Das hat aber nichts damit zu tun, dass ich beispielsweise bei einem Schließsystem weiß, wer welchen Schlüssel hat sondern damit, dass nichts protokolliert wird.
Das Problem mit den verlorenen, sperrbaren und doch anonymen Karten haben sie quasi durch Pseudonyme gelöst. Dabei gibt es dann „Gruppenpseudonyme“, d.h. mehrere Leute verwenden identisch bezeichnete Karten und erreichen so „quasi-anonymen“ Zugriff, weil die Kartennutzungen nicht mehr einem einzelnen Anwender zugeordnet werden kann. Und notfalls sperrt man halt die ganze Gruppe. Erinnert mich irgendwie an die Privacy-Card von FoeBuD.
Jedenfalls hat mich das ganze nicht beeindruckt. Weder die Idee noch die Implementierung, da kann man mehr und klügeres daraus machen. Und dann sind die zwei und ein paar weitere auch noch mit peinlichen Sweatshirts mit diesem komischen AnonAccess-Logo aufgetreten. War das eine Werbeshow oder was? Ich dachte das Labor ist ein gemeinnütziger Verein?
Der Vortrag von Thorsten Holz zum Storm Worm war wieder sehr interessant. Der Storm Worm (auch Peacomm, Nuwar, Zhelatin) war der am meisten in den Medien erwähnte Wurm 2007 und ist sehr agressiv in der Verteilung durch Spam. Im Schnitt zwischen 2-5% des Spam-Aufkommens wird inzwischen durch den Storm Worm verursacht. Teilweise wurde die Anzahl der infizierten Rechner auf 1,8 Millionen geschätzt. Thorsten hat das etwas relativiert.
Die Spam-Mails des Storm Worm locken auf Webseiten, die zum einen Browser-Exploits gegen Firefox und Internet Explorer einsetzen, andererseits zum Download von EXE-Files animieren, die dann den eigentlichen Schadcode auf dem Rechner installieren. Das Binary wiederum ist stark obfuscated (wurde von Frank Boldewin analysiert) und implementiert das Overnet Peer-to-Peer Protokoll zur Kommunikation.
In diesem Peer-to-Peer Netzwerk suchen die infizierten Clients nach bestimmten Hashes (die vom Datum und der Zeit abhängen, weshalb der Wurm die Clients per NTP synchronisiert) und findet mit Hilfe dieser Hashes die Kommandos (z.B. DDoS oder Spam-Versand) die auszuführen sind. Rechner mit privaten IPs fungieren nur als Angriffsnode, Rechner mit offiziellen IPs übernehmen Funktionen von Control-Nodes und können Web- und DNS-Server laufen lassen.
Clients authentisieren sich gegenüber dem Controller mit einem einfachen Challenge-Response, wobei Challenge XOR Response immer den Wert 0x3ED9F146 ergeben muss. Die Kommunikation selbst ist Zlib-komprimiert aber (bisher) nicht verschlüsselt (aktuelle Versionen setzen einfache XOR-Verschlüsselung mit festen Werten aber keine starke Kryptographie ein).
Mit Hilfe des KadC-Crawlers, der das komplette Overnet in ca. 20-40 Sekunden abfragen kann, hat Thorsten die Größe des Storm Worm Netzes geschätzt: Die Obergrenze ergibt sich durch 45-80 tausend Peers, 420 tausend Overnet IDs verteilt auf 1,7 Mill. verschiedene IP-Adressen, davon jedoch einige legitime Overnet-Peers die nicht Storm Worm infiziert sind. Die Untergrenze ergibt sich durch die Controller, ca. 5-6 tausend Bots mit Webservern, etwa 30 tausend Peers die Storm Worm Hashes suchen. Die real infizierte Zahl dürfte irgendwo dazwischen liegen auch wenn sicher immer wieder viele infizierte Rechner gerade nicht im Internet aktiv sind.
Gegen das Peer-to-Peer Netz des Storm Worm kann man nicht so viel tun … es gibt Eclipsing, d.h. Man-in-the-Middle-Angriffe bei denen man versucht die Hash-Suche durch falsche Antworten zu beeinflussen und Polluting, d.h. man versucht so viel Schrott mit gleichem Hash zu platzieren, dass die Bots keine regulären Befehle mehr entgegen nehmen können. Beides funktioniert nur eingeschränkt.
Das Storm Worm Netz verfügt über clevere Entwickler:
- Bei mehrfachem Download des Binaries vermutet der Webserver einen Virenscanner-Hersteller und führt einen DDos-Angriff gegen die IP-Adresse durch
- Es gibt viele Drive-by-Download Angriffe
- Das Binary selbst wird alle Minute neu verpackt mit jeweils neuer Prüfsumme um Virenscanner zu irritieren
- Die Javascript Drive-by-Angriffe werden jede Minute mit einem neuen XOR-Key kodiert, ebenfalls um Virenscanner zu irritieren
- Die Größe des Binaries schwankt je nach Funktion und Packer zwischen 70 und 150 KB
- Das Botnetz verwendet Fast-Flux Domains mit einer TTL von z.B. 5 Sekunden. Dadurch zeigt ein Webserver immer wieder auf neue IP-Adressen.
Das ist schon sehr nahe an einem effizienten Wurm.
In der Zukunft erwartet Thorsten starke Verschlüsselung, veränderte Kommunikation, z.B. NNTP damit Kommandos leichter an die Clients geschickt werden können und anonymisierte Kommunikation z.B. mittels Tor. Er vermutet übrigens, dass Verschlüsselung nur deshalb noch nicht weit in Würmern verbreitet ist, weil es so einfach ist viele tausend Rechner zu infizieren, dass sich der Aufwand gar nicht lohnt.
Ach ja … und er hat ein Blog.