Vergangene Woche sind die Webseiten von mehreren deutsche Flughäfen ausgefallen. Man ist sich ziemlich sicher, dass es sich um einen koordinierten Cyberangriff handelte. Jedenfalls möchte ich ein wenig auf solche Angriffe eingehen, um den weniger Wissenden einen kleinen Einblick zu verschaffen. Das könnte durchaus auch für so manchen Hobby Webentwickler interessant sein (die Profis kennen das bestimmt schon alles). Ich kann die Sache natürlich nur kurz ansprechen. Aber ich denke mal: Letztendlich möchte doch jeder wissen, ob im Keller eine Bombe tickt. Weitere Informationen findet ihr in entsprechenden Fachbüchern.
Bei dem durchgeführten Angriff handelte es sich nicht unbedingt um einen “chirurgischen” Eingriff. Dabei kam eher der “Holzhammer” zum Einsatz, d.h. aber nicht zwangsläufig, dass man über eine Hintertür nicht noch mehr erreicht hat.
Wie funktioniert das? Wenn ein Internetnutzer z.B. eine Webseite aufruft, dann wird diese Webseite über einen Computer (Server Rechner) zur Verfügung gestellt. Der Server erhält vom Computer des Anwenders eine Anfrage für den Download eines Dokuments der Webseite. Diese Anfrage enthält sogar weitere Anfragen, z.B. zur Verschlüsselung. Diese Anfragen werden vom Server geprüft und mit einem Ergebniscode bestätigt. Diese Anfragen erfordern auf dem Server natürlich Rechenzeit. Je mehr dieser Anfragen, dann auch gleichzeitig, beim Server eintreffen, desto mehr Rechenzeit bzw. Ressourcen werden auf dem Server benötigt. Diese Ressourcen sind begrenzt und wenn das Limit erreicht ist, dann geht der Server “down” und kann keine Downloads mehr anbieten. Manche Online Spieler kennen das vielleicht (“Login Server sind gerade voll! Bitte warten.”). Der bzw. die Angreifer haben hier allerdings ein Problem. Man benötigt für eine hohe Zahl von Anfragen viele Computer, die Anfragen stellen können. Diese Computer können sehr oft Bot Netze sein. Also Computer, die vom Angreifer übernommen wurden und dann gezwungen werden, einen solchen Angriff durchzuführen. Diese Bot Netze wurden mühsamst vom Angreifer aufgebaut und bei dem Angriff verliert der Angreifer wahrscheinlich einige seiner Bots, weil diese entdeckt wurden. Steckt eine Regierung dahinter, dann sieht es natürlich schon wieder etwas anders aus.
Jetzt kann ein solcher Angriff aber ebenfalls ausgenutzt werden, um den eigentlichen Angriff, z.B. Datendiebstahl, zu vertuschen. Also wird nicht nur der “Hammer” verwendet, sondern auch das Feinwerkzeug.
Ein “chirurgischer” Angriff auf eine Webseite verläuft deutlich graziler. Dafür benötigt man in der Regel bereits weitreichende Programmierkenntnisse. Eine umfangreiche Webseite ist letztlich auch nur ein Programm.
Eine normale Webseite bzw. Homepage besteht aus HTML Seiten. HTML ist eine Beschreibungssprache. Man beschreibt damit den Aufbau eines Dokumentes bzw. in diesem Fall den Aufbau eines Internetdokumentes. Die Darstellung erfolgt im Normalfall im Webbrowser des Internetnutzers. Da hier lediglich ein Dokument beschrieben wird, sind die Angriffsszenarien eingeschränkt. Hauptziel sind in der Regel die verknüpften Ressourcen, z.B. Bilder oder andere Dokumente. Entsprechende Verknüpfungen auf der Webseite können ausgelesen werden. Im Webbrowser gibt es dafür in der Regel die Option “Quelltext anzeigen”. Ein Beispiel: Ihr ladet mehrere Bilder in ein Verzeichnis/Ordner für die Webseite. Ein einziges Bild wird aber nur in die Webseite eingebunden. Was passiert? Ein Angreifer kann den Speicherort des Bildes auslesen und wird versuchen, weitere Dokumente von dort zu laden. Das gelingt ihm auch, weil ihr die Bilder mit “Bild1”, “Bild2” usw. betitelt habt. Es musste beim Angriff lediglich der Dateiname angepasst werden. Profis verwenden deswegen z.B. Zufallsḱennungen. Zufällig erzeugte Zahlen/ Buchstabenkombinationen als Dateinamen und man setzt umfangreiche Zugriffsrechte und man lädt keine Ressourcen auf den Webserver, die nicht benötigt werden..
Die Steigerung zum HTML ist Dynamisches HTML mit Script. Hier hat sich die Verwendung von Javascript weitestgehend durchgesetzt. Javascript ist keine richtige Programmiersprache, aber nahe dran. Aber auch dieses wird in der Regel im Webbrowser des Anwenders ausgeführt. Hier das selbe Problem: Ressourcen können ausgelesen werden! Also kommt nicht auf die Idee eine Anmeldung mit Passwörtern in ein Javascript auszulagern. Ein anderes Problem kann entstehen, wenn die Webseite sehr dynamisch sein soll und bereits eine richtige Webanwendung darstellt. Dann könnten bestimmte Aktionen manipuliert werden und das möchte man nicht immer.
Die Königsdisziplin sind Webseiten mit Server Scripts. Diese Scripts werden direkt auf dem Webserver ausgeführt und der Anwender bekommt das Ergebnis als HTML (evtl. mit Script) im Webbrowser angezeigt. Der Vorteil: Ein Angreifer hat im Normalfall keinen Einblick in die Server Scripts und man kann umfangreiche Webanwendungen bereitstellen. Der Nachteil: Man hat mehr Aufwand und benötigt mehr Ressourcen. Verwendete Programmiersprachen bzw. Scriptsprachen sind oft PHP, Perl, Javascript, Bash, Python, C, Java, .Net.
Aber auch diese Technik birgt ihre Risiken! Sollte ein Angreifer Zugriff auf ein Server Script erlangen, dann hat dieser damit eventuell Schreibzugriff auf dem Server oder man kann sein eigenes Schadprogramm ausführen. Ein einfaches Beispiel:
In Webseiten werden oft Suchfelder verwendet. Man gibt einen Suchbegriff ein, dieser wird vom Server Script bearbeitet und man bekommt dann Ergebnisse mit dem Suchbegriff angezeigt. Jetzt könnte man versuchen, über das Suchfeld ein bisschen HTML oder HTML mit Javascript zu übertragen. Das Server Script bearbeitet dieses eventuell als normalen Suchbegriff, führt euer Programm aus und bindet es dann als Webseitencode in die Ergebnisliste ein, d.h. ihr habt das Server Script dazu gebracht, euer eigenes Programm auszuführen. Und genau solche Sicherheitslücken sucht ein Angreifer, weil man damit manchmal deutlich mehr verändern kann.
Oder manchmal verwendet man Server Scripts, um Daten zu speichern. Da könnte es möglich sein, Zugriff auf die dahinterliegende Datenbank zu erlangen oder sogar auf das System, das die Datenbank bereitstellt. Auch deswegen werden in der Regel in Unternehmen die Webserver grundsätzlich vom Hauptnetzwerk getrennt oder sogar komplett ausgelagert. Außerdem werden die übermittelten Daten im Server Script auf bestimmte Bedingungen geprüft, z.B. ob ein Konsolenbefehl übermittelt wurde oder ob die übermittelte Zeichenkette eine bestimmte Länge überschreitet.
Anonymisiert wird der Angriff durch die Verwendung von Proxy Servern, die von den Angreifern entsprechend eingerichtet werden. Diese Server machen nichts anderes, als Daten weiterzuleiten und Befehle auszuführen. Der Clou dabei ist, dass die Internetadresse/ Zugangspunkt der Angreifer damit verheimlicht werden kann. Anbieter für solche Server findet man sogar in Deutschland. Zum Teil preiswerte Anbieter, die durchaus als unseriös eingestuft werden können. Die Anbieter sind dann oft nur Vermittler für irgendwelche Unternehmen im Ausland und die Server stehen dann zum Beispiel irgendwo in der EU, USA oder irgendwo anders auf der Welt. Als Internetzugriffspunkt verwenden die Angreifer z.B. öffentliche Hotspots oder es kann auch mal ein Smartphone mit mobilem Internet sein. Die Angreifer versuchen auch die Szenarien weitestgehend zu automatisieren, so dass man tatsächlich nur noch den “Button” drücken muss.
***www.router-it.de,Februar'23***