Freitag, 19. März 2010

Die Kunst der Exploitentwicklung

Exploits sind Programme, welche es ermöglichen Sicherheitslücken auszunutzen. Diese Tätigkeit ist eine Art Kunst und Wissenschaft zugleich. Eine Kunst, weil es Kreativität erfordert und Wissenschaft, weil es beim praktischen Entwickeln von Exploits andauernd zur Entdeckung neuer Möglichkeiten kommt. Einige Phrack-Artikel zum Thema Exploit-Development zeigen diese Entwicklung beim Exploits schreiben. Die Phasen einer Exploits-Entwicklung sind grob zusammengefasst folgende:

* Reproduzierbarkeit der Schwachstelle. Wird meistens mit einem Proof of Concept Code realisiert,
welcher die Schwachstelle triggert.

* Danach wird das ganze in einem Debugger analysiert. Dabei sucht man einfach nach allen gängigen Möglichkeiten um das was man überschreiben kann zum ausführen von Code zu verwenden.

* Bei einem Speicherschutz, welcher das direkte hineinhüpfen in den Shellcode verhindert müssen alternativen gesucht werden wie Return into Library oder ähnliches.

* Ab diesem Zeitpunkt fängt die Kreativität an. Beim praktischen Exploiten in realen Umgebungen funktionieren die meisten Standardprinzipien nicht mehr, welche man aus diversen Papers kennt.

* Deshalb wird individuell alles was man hat an Instructions, Code, Libraries, individuelle Speicherstruktur des aktuellen Zustandes usw. durchforstet um Techniken zu realisieren um trotzdem Code ausführen zu können.

* Oft sind zufällig ret, jmp oder ähnliche Instructions vorhanden, welche aneinandergekettet es auf Umwegen ermöglichen trotzdem etwas auszuführen. Auch verschiedene Fähigkeiten des Betriebssystemes, der CPU oder des Programmes können genutzt werden (SEH zum Beispiel).

* Meistens muss man den Shellcode noch so anpassen, dass er auch nützliche Daten enthält, weil oft Zeichen während des Programmablaufes verändert werden. Das alles in Kombination macht es zu einer Kunst und Wissenschaft zugleich.

* In der Praxis wird dann alles Schritt für Schritt mit dem Debugger durchgestept um letztendlich zu etwas funktionierendem zu kommen.

* Für kompliziertere Exploits muss man sich oft etwas neues ausdenken. Die vielen Papers bieten zwar einiges an Anregung. Die Praxis braucht aber trotzdem meist ein individuelles vorgehen.

* Exploit coden kann man nicht lernen wie andere Dinge, weil es Kreativität erfordert und so etwas nicht auswendig gelernt werden kann bzw. reine Übung dafür ausreicht.

Gut organisierte kriminelle Organisationen mit Hackern haben solche Leute angestellt, welche nach Zero-Day Sicherheitslücken suchen und diese auch in der Praxis einsetzen. Das Talent so etwas zu realisieren besitzen nur wenige. Schätzungsweise sind es um die 1000 Hacker mit solchen Fähigkeiten. Man kann davon ausgehen das zirka ein Drittel davon ihr Wissen für kriminelle Akte nutzen bzw. ihre Entwicklungen an andere kriminelle weitergeben. Das bedeutet es gibt eine Blackhat-Hacker Elite welche eine große Gefahr darstellt. Ein so ein einziger Exploit verpackt in einen Wurm zur Gewinnung von Botnets und dergleichen kann unzählige Millionen Euro/Dollar schaden anrichten.

0 Kommentare:

Kommentar veröffentlichen