Hacker-Attacken und andere Bedrohungen



URL-Spoofing

Fährt der Benutzer mit der Maus über einen Link auf einer Webseite, so wird unten in der Statuszeile des Browsers der URL angezeigt, auf den der Link verweist. Oft wird JavaScript verwendet, um den in der Statuszeile angezeigten Text zu manipulieren. Man klickt also einen Link an, den man für vertrauenswürdig hält, obwohl er auf eine völlig andere Webseite verweist.

Wenn man mit der rechten Maustaste auf den Link klickt, sollte in der Regel das Kontext-Menü erscheinen. Dort muss man den Punkt "Eigenschaften" anwählen, um den eigentlichen Verweis zu sehen.

Diese Manipulation der Statuszeile ist relativ einfach von jedem Webmaster durchzuführen. Gefährlicher ist jedoch das Manipulieren der Adresszeile, denn auch das ist möglich. Viele potentielle Angreifer versenden E-Mails, die Links beinhalten, die angeblich zu der Seite einer Bank verweisen. Die aufgerufene Seite scheint für den User auch die seiner Bank zu sein, schließlich stimmt ja die Adresszeile. Doch eigentlich befindet sich der User auf einem völlig anderen URL. Nicht selten, wird der User gebeten, seine Kontonummer und seine Geheimzahl anzugeben. Die Geheimzahl sollte man prinzipiell nicht in ein Online-Formular eintragen, außerdem würde keine seriöse Bank ihre Kunden dazu auffordern. Die Veränderung der Statuszeile, die durchaus auch eine gewünschte Funktion seien kann, um z.B. Informationen über den Link anzugeben, beruht nicht auf einer Sicherheitslücke des Browsers, sondern lässt sich durch die Browserkonfiguration deaktivieren. Die Manipulation der Adresszeile beruht dagegen auf Sicherheitslücken, die bei heutigen Browsern weitestgehend gepatcht seien sollten.


Cross-Site Scripting (XSS)

Cross-Site Scripting ist eine Attacke, die dazu führt, dass beliebiger Code auf einem System ausgeführt warden kann. Dazu werden präparierte Hyperlinks verwendet, die vom User explizit angeklickt werden müssen. Allerdings sind diese Hyperlinks meist durch URL-Spoofing oder andere Kodierungsverfahren getarnt, sodass der User den Link als vertrauenswürdig interpretiert.

Es handelt sich also um eine Manipulation von Benutzereingaben, die an eine Webanwendung übergeben werden. Der Angreifer versucht so schädlichen Code in eine Webanwendung einzubetten, der dann clientseitig ausgeführt wird. Dies funktioniert dann, wenn die Anwendung bzw. der Webbrowser den als Parameter mit dem URL übergebenen Code nicht ausreichend überprüft.

Allerdings gibt es auch Angriffs-Szenarien, bei denen versucht wird, den schädlichen Code serverseitig auszuführen. So kann z.B. eine Sicherheitslücke im Webserver dazu ausgenutzt werden, Programmcode von einem anderen Server zu laden und auszuführen. Da Webanwendungen in Scriptsprachen wie PHP oder Perl programmiert sind, werden die Benutzereingaben oft über die GET-Methode übergeben. Das bedeutet, dass die Variablen vom ausgefüllten HTML-Formular an den URL angehängt werden und so dem Script zur Verarbeitung bereitgestellt werden.
Schützen kann sich der Anwender nur durch aktuelle Patches seiner Internetsoftware bzw. seines Browsers.


SQL-Injection

Verwendet eine Webanwendung eine Datenbank, z.B. sieht man häufig die Kombination von Apache, MySQL und PHP, so kann ein Angreifer durch Manipulation von Parametern die SQL-Anweisungen modifizieren. Dies kann dann zu falschen Daten führen, oder es können Daten gelöscht werden. Prinzipiell ist allerdings auch das Ausführen beliebigen Codes möglich.


IP-Spoofing

Beim IP-Spoofing werden IP-Pakete so modifiziert, dass sie vom Zielhost akzeptiert werden. Diese Angriffsmethode wird häufig verwendet um Firewalls zu umgehen. Die Firewall ist so konfiguriert, dass sie IP-Paktete verwirft, wenn sie keine vertrauenswürdige Quell-Adresse beinhalten. Wird das IP-Paket jedoch so verändert, dass die Quelladresse akzeptiert wird, wird das Paket durchgelassen.

Diese Art von Angriff ist am effektivsten, wenn zwischen den Maschinen in einem Netzwerk Vertrauensbeziehungen bestehen. In manchen Firmennetzen ist es durchaus üblich, dass interne Systeme sich gegenseitig vertrauen, so dass ein Benutzer sich ohne Benutzernamen und Passwort einloggen kann, wenn er von einer anderen internen Maschine auf das Netzwerk zugreift und daher bereits auf einem anderen Rechner eingeloggt ist.

Packetfilter oder Firewalls höherer Schichten bieten einen guten Schutz. Nicht ausreichend ist eine einfache Desktop-Firwall auf Portfillter Ebene.


Man-in-the-middle

Bei dieser Attacke versucht ein Angreifer, den Datenverkehr zwischen zwei Hosts zu belauschen. Oft erhofft er sich so an Passwörter oder Schlüssel zu kommen, die er für seine Zwecke gebrauchen kann. Angriffspunkte bieten sich in einem Netzwerk genug, vor allem im Internet. Ein IP-Paket wird auf seinem Weg zum Zielhost über mehrere Knotenpunkte geroutet. Prinzipiell kann es also an jedem Punkt bzw. an jedem Router mitgelesen werden.

So genannte Sniffer werten die Pakete direkt aus.

Meist liegt die größte Gefahr allerdings im lokalen Netzwerk. In geswitchten Umgebungen ist diese Attacke eigentlich kaum eine Bedrohung, da die Pakete immer nur über einen Port weitergeleitet werden. Kommen jedoch noch Hubs zum Einsatz, kann im Prinzip jeder im LAN jedes Paket mitlesen.

Schutz gegen Man-in-the-middle Attacken bieten also Switches oder verschlüsselte Verbindungen z.B. SSH oder SSL.


Brute Force

Brute Force ist nichts weiter als ein Begriff, für den Versuch, ein ein Passwort manuell zu knacken. Ist z.B. der Remotedesktop einer Workstation freigegeben, so kann sich im Prinzip jeder im Netzwerk auf dem System anmelden. Standardmäßig gibt es einen User "Administrator" bzw. "root" bei Unix / Linux Systemen. Gibt man diesen Benutzernamen an, so braucht man nur noch das Passwort zu ermitteln. Kennt der Angreifer den Besitzer des Computers, so wird er z.B. dessen Geburtsdatum versuchen, oder den Namen der Frau oder des Mannes. Ein Brute Force Angriff ist also das Erraten des Passwortes.

Schützen kann man sich am besten, indem man sichere Passwörter verwendet und nur die notwendigen Dienste im Netzwerk freigibt. Nicht jeder Rechner muss die Möglichkeit eines Remote-Logins bieten.

Siehe auch: Richtlinien für ein sicheres Passwort


Denial of Service (DoS)

Eine DoS Attacke dient dem Angreifer dazu, ein System lahm zu legen. Dazu wird z.B. ein Webserver mit so vielen Anfragen bombardiert, dass das System zum Absturz geführt wird, da es überlastet ist. Auch wenn das System nicht abstürzt, sollten zumindest die aktiven Dienste so ausgelastet sein, dass sich niemand mehr mit dem Server verbinden kann.

Der Angreifer beabsichtigt also nicht in das System einzudringen, sondern will einfach nur dessen Dienste stoppen. Da http-Anfragen an einen Webserver legitim und vor allem nichts Außergewöhnliches sind, ist es schwer dem Angreifer eine Attacke nachzuweisen.

Als Gegenmaßnahme hilft nur eine ordentliche Serverkonfiguration, auf die hier nicht näher eingegangen werden soll. Es ist jedoch klar, dass die Anfragen von einem System kommen, daher darf der Webserver nur eine begrenzte Anzahl an Afragen von einem Client zulassen.


Distributed Denial of Service (DDoS)

Die DDoS Attacke ist im Gegensatz zur DoS Attacke weitaus gefährlicher und schwieriger zu verhindern. D.h. einen DDoS Angriff völlig zu verhindern ist eigentlich kaum möglich. Hier werden die Anfragen nicht nur von einem System, sondern von unzählbar vielen Systemen gestellt. Das ist eine Situation, die für einen Server kaum als Angriff zu erkennen ist, außer durch den enormen Anstieg an Traffic.

Meistens werden Würmer verwendet, die dann sämtliche Systeme im Internet befallen und sich von dort auch weiter verbreiten. Ist der Wurm so programmiert, dass er zu einem bestimmten Zeitpunkt eine DoS-Attacke ausführt, dann tun dies alle infizierten Systeme zur gleichen Zeit. Diesen Vorgang bezeichnet man dann als DDoS-Attacke.

Um solche Angriffe zu verhindern müssen alle für Sicherheit sorgen, die eine Anbindung ans Internet haben. D.h. also jeder Anwender muss auch dafür sorgen, dass sein System nicht zu solchen Zwecken missbraucht werden kann.