Werbung

Dienstag, 22. November 2011

Hacken für Noobs

Heut hab ich mich auf die Vorlesung "Netzwerksecurity" gefreut, wo wir einen Gastbeitrag von einem IT-Security-Chef von EON zu hören bekamen.
Deshalb hab ich gleich mein Netbook gezückt und hab mir brav Notizen gemacht, weil ich mir dachte, das könnte ein cooler Blogeintrag werden. Doch leider hat er das Thema nur für Laien erklärt und so würde ich auch empfehlen, den Beitrag nur als Hack-Noob zu lesen, nicht dass ich hier Erwartungen schüre, die ich nicht einhalten kann ;) 

Wichtig ist vor allem, das gesamte System sicher zu halten und nicht nur einen Bereich bis zum abwinken zu schützen, so helfen bei einem Login keine RSA-Tokens, wenn man im Gegenzug den Server ganz einfach hacken kann. Deshalb muss es immer ein allumfassendes Security-Konzept geben.

Erschreckend ist, dass die Kiddy-Attacken auch heute noch erfolgreich sind, sogar auf großen Unternehmensseiten oder Regierungsseiten.

Methode 1: Cross-Site Scripting
Hier versucht ihr in einem Textfeld wie einem Suchfenster, Loginfenster etc. Javascript aufzurufen.
Klappt das, könnt ihr in einer scheinbar sicheren Seite, wie z.B einem Bankportal eure eigene Seite, wie einen gefakten Login-Bereich anzeigen lassen. 

So gaukelt es den User vor, er wäre auf der richtigen Seite. Jetzt müsst ihr die Leute nur noch auf die Seite locken und sie dazu bringen ihre Logindaten einzugeben und schon habt ihr eine einwandfreie und für den Laien nicht zu erkennende Pishing-Seite gebastelt.

Beispiel 2: Session Cookie:
Man kann aber auch anstatt die reinen Mitgliederdaten einfach das Session-Cookie pishen. Durch einen Modifizierten Javascriptcode, den ihr per Cross-Site Scripting eingebaut habt, überträgt man nach dem Klicken auf Absenden einfach den Session Cookie auf den eigenen Server und schon kann man sich mit dem Cookie auf der Seite einloggen, ohne Benutzernamen und Passwort zu kennen.

Bei beiden Methoden wird jedoch noch eine Möglichkeit gebraucht, die User auf die modifizierte Seite zu locken. Oft gelingt das mit professionell gestalteten Spam- bzw. Pishingmails. Deshalb sind die Preise für noch genutzte Email Adressen, besser noch mit Interessensangaben so hoch.

Gegenmaßnahmen: 
Als User müssen Sie natürlich immer vorsichtig sein. Als Programmierer sollte man die Eingabe vor dem Ausführen überprüfen und ggf. nicht zulassen. Man muss aber darauf achten, wo man die Eingabe überprüft. Es hilft nichts, wenn man sie bei der Forumlareingabe überprüft und verhindert. Aber wenn man dann per Parameter den Javascript-Code ausführen lässt es wieder funktioniert.


Methode 2: SQL-Injection:
Auch sehr beliebt bei Hacker-Kiddys ist die SQL-Injection weil sie recht einfach ist, aber dafür sehr sehr mächtig.
Auch hier ist der Angriffspunkt Formularfelder.

Man muss sich das so vorstellen, bei einer Suche wird der Suchbegriff in einem Parameter übergeben, der dann wiederum eine SQL-Abfrage einleitet. Wenn ich diesen Parameter einfach um ein paar SQL- Argumente erweitre, habe ich meine eigene SQL-Abfrage, die mir sogar Ergebnisse liefert.

So könnt ihr, wenn ihr ganz fies seid, sogar den "Drop-Table" Befehl ausführen und der Tabelle lebe wohl sagen.

Der Clou an der SQL-Injection ist, dass man sämtliche Firewalls dadurch umgeht, weil sie denken die Anfrage ist rechtens und man so das Sicherheitssystem so ad absurdum führt.

Methode 3: Parameter Manipulation
Hier muss man dem ausführenden Server einfach nur vorgaukeln, dass ich die rechte habe mit ihm zu kommunizieren. Das funktioniert mit bestimmten Tools, denn man muss versuchen mit dem Server zu kommunizieren und dann die Fehlermeldung abfangen, woran der Server erkennt, dass ich nicht der vertraute Server bin.
Dann diesen Parameter einfach setzten (z.B Header, eine Prüfsumme etc...) und schon ist man der beste Freund des Servers und kann mit ihm treiben was man möchte.


Warum werden Anwendungen unsicher?

Software wird oft von Leuten geordert, die sich mit der Materie nur sehr bescheiden auskennen. Deshalb wird oft der günstigste Anbieter gewählt. Dadurch entsteht auf Anbieterseite natürlich auch ein enormer Kostendruck, der sich dann oft auf die Sicherheit des Tools ausschlägt.
Fürs Controlling ist es bei diesen Aufträgen auch ziemlich schwer Messbare Qualitätskriterien im Vorfeld zu erstellen, die dann auch bei der Anbieterwahl angewendet werden.

Die Entwickler stehen zunehmend unter Zeitdruck. Meistens steht der Fertigstellungstermin schon vorm Programmierstart fest. Ist am Ende keine Zeit mehr übrig, wird oft an den Sicherheitschecks gespart.

Karriere Pfade:
Die Leute dies können, werden hoch befördert und programmieren nicht mehr. Die neuen machen gleich wieder die Anfängerfehler.

Fazit:
Die Vorlesung war sehr unterhaltsam, er hat das sehr gut erklärt. Auch mit eigenen Erfahrungen, anscheinend macht er das auch gerne als Hobby daheim. Sein Vortragsstil war auch sehr angenehm. Aber für IT-ler war das halt absolute Low-Kost. Jeder, der mal fünf Minuten die Seite seines Kumpels versucht hat zu "hacken" wird diese zwei Methoden angewandt haben.
Jedoch muss ich zugeben, ich hab meine Seiten auch nicht immer drauf getestet, ob das geht. Einmal wurde sogar eine mal durch die SQL-Injection geschädigt ... Im Wesen des IT-lers liegt halt doch der faule Nerd, der lieber irgend ein Geek-Stuff macht, anstatt sich aufs Wesentliche zu konzentrieren.

Ich würd ja in Zukunft gerne öfters mal so Vorlesungen als Blogeintrag machen, aber so oft kommt das nicht vor :D
Aber mich würds freuen, wenn ihr mir Feedback gebt, ob ihr sowas grundsätzlich interessant fändet ;)

Kommentare: