Die Live-Session fand am 5. Juli 2012 um 10:00 Uhr wie immer auf unserer Live-Session-Portalseite statt.
Die Online-Kriminalität nimmt rasant zu und kriminelle Hacker stellen jedes Jahr neue Rekorde auf. Doch nicht nur die schiere Menge ist besorgniserregend, sondern insbesondere auch die Qualität der Angriffe auf IT-Systeme: Sie sind deutlich zielgerichteter und komplexer geworden. Um die eigenen Daten erfolgreich zu schützen, sind regelmäßige IT-Sicherheitsüberprüfungen unverzichtbar.
In dieser Live-Session diskutieren ein Security-Experte von //SEIBERT/MEDIA/SYSTEMS und Martin Seibert, warum Penetrationstests an (Web-)Anwendungen empfehlenswert und notwendig sind, welche Ziele sie haben und wie sie ablaufen.
Aufzeichnung der Sendung
Dieses Video downloaden (MP4, 156 MB)
Notwendigkeit
IT-Sicherheit als kontinuierlicher Prozess
Kryptographie-Experte Bruce Schneier:
Security is a process, not a product.
- Wer IT-Sicherheit als fortlaufenden Prozess versteht, kann seine Daten auch erfolgreich schützen.
- Ein Ende des Katz-und-Maus-Spiels zwischen den Cyber-Dieben auf der einen und den Unternehmen auf der anderen Seite ist nicht in Sicht. Wer diesen Fakt akzeptiert, Sicherheit als langfristigen Prozess sieht und sich stets mit den neuen Bedrohungen weiterentwickelt, hat seine Informationen bestmöglich vor Kriminellen geschützt.
- Blog-Artikel IT-Sicherheit als kontinuierlichen Prozess verstehen
- Blog-Artikel IT-Sicherheit wie den Brandschutz regelmäßig üben
Rechtsvorschriften
- Gesetzgebung: Sicherheitssysteme müssen nicht nur vorhanden, sondern auch wirksam sein.
- Es gibt umfangreiche Rechtsvorschriften im Hinblick auf
- Maßnahmen zur Sicherung handels- und steuerrechtlich relevanter Informationen
- Handhabung von personenbezogenen Daten
- Einrichtung von und Anforderungen an sog. Interne Kontrollsysteme
- Nur durch das reine Vorhandensein interner Sicherheitssysteme ist ein Unternehmen rechtlich offenbar noch nicht auf der sicheren Seite. Vielmehr verlangt die Gesetzgebung, dass Betreiber sicherstellen, dass die eigenen Sicherheitssysteme auch tatsächlich wirken und somit den rechtlichen Vorschriften genügen.
- Weitere Infos: Blog-Artikel Warum Unternehmen Penetrationstests durchführen sollten (und eigentlich auch müssen)
Ablauf
Öffentlich zugängliche Informationen sammeln
Footprinting
Footprinting: Informationsbeschaffung, die einem (professionellen) Angriff stets vorausgeht. Es erfolgt noch kein direkter Zugriff auf die Systeme und Anwendungen – stattdessen werden öffentlich zugängliche Daten gesammelt.
Typische Informationsquellen:
- Die Whois-Datenbank der zuständigen Regional Internet Registry
- Die in den DNS-Servern hinterlegten Informationen
- Frei verfügbare Webdienste wie etwa ServerSniff
- Websites des Unternehmens, soziale Netzwerke und ähnliches
Auswertung
Konzentration auf den bzw. die DNS-Server, die für das System bzw. die Website zuständig sind:
- Gibt es mindestens zwei unabhängige DNS-Server?
- Ist der Server auf dem neuesten Stand oder verwundbar?
- Kann der komplette Zoneninhalt von jedermann ermittelt werden?
Weitere typische Risiken sind Subdomains und “Vertipper-Domains”:
- Gibt es versteckte Subdomains, auf denen kritische Dienste laufen, und sie diese Dienste ausreichend geschützt?
- Gibt es Domain-Namen, die dem der Webseite ähnlich sind, dem Kunden aber nicht gehören?
Überprüfung des Serversystems mit den darauf laufenden Anwendungen
Portscan
- Portscan: Serverdienste finden und Versionen identifizieren
- Portscanner mit Nmap: Suche nach offenen Ports bzw. Diensten, die von außen erreichbar sind.
Dieser Scan kann Hinweise u.a. auf die folgenden Fragen geben, die für einen Angreifer sehr wertvoll für die gezielte Vorbereitung von Angriffen sein können:
- Welche Server bieten welche Dienste an?
- Welche Rolle ist den jeweiligen Systemen zugedacht (Mail-, Datei- oder Web-Server)? * Lässt sich ermitteln, welche Software hinter den Portnummern steckt und in welcher Version sie betrieben wird?
Kritische Dateien und Verzeichnisse finden
- Simulation eines Zugriffs mit eingeschränkten Rechten
- Suche nach folgenden Schwachstellen im System:
- Veraltete Systempakete, die dringend aktualisiert werden müssen
- SUID-Dateien, die sich mit erweiterten Rechten ausführen lassen
- Dateien und Verzeichnisse, die für jedermann schreibbar sind
- Kritische Dateien und Verzeichnisse, die für jedermann lesbar sind
Überprüfung des Webservers auf Konfigurationsfehler und Sicherheitslücken
- Kontrollierter Angriff, der einen sehr genauen Eindruck von der Standfestigkeit der Systeme verschafft
- Weitere manuelle Untersuchungen:
- Verrät der Webserver seine Version, geladene Module und ähnliches?
- Welche HTTP-Methoden sind aktiviert? Nur die, die gebraucht werden, oder unnötig viele?
- Werden Anfragen protokolliert? Sind die kritischen Informationen in den Log-Dateien verschleiert?
Lücken in Web-Anwendungen finden
Fehler in Web-Applikationen aufdecken
Analyse der Anwendungen, die auf dem Server laufen: CMS, Administrationsoberflächen, Seite mit Suchfunktion und Datenbankanbindung etc.
- Application Discovery: Finden von Anwendungen, die von außen erreichbar und potenziell angreifbar sind (Reverse IP Lookup, Google-Suche nach vergessenen Verzeichnissen, Durchprobieren typischer Subdomain- und Ordner-Namen)
- Suche im Quellcode der Anwendung nach Kommentaren und auskommentiertem Code
- Datei robots.txt: Ausfindig-Machen von Pfaden, die von der Google-Indizierung ausgeschlossen sind
Fehler in der Authentifizierung und im Session-Management
Analyse u.a. der folgenden Fragen:
- Werden die Login-Daten ausschließlich verschlüsselt übertragen und wurde das Cookie-Attribut secure gesetzt, um MITM-Angriffe zu unterbinden?
- Ist es möglich, auf private Informationen auch ohne Anmeldung Zugriff zu erhalten, wenn man die Seite direkt aufruft oder Parameter manipuliert?
- Ist eine Passwort-Vergessen-Funktion vorhanden und kann diese nicht zum Kapern des Kontos missbraucht werden kann, weil sie allgemeingültige Fragen stellt?
- Werden CAPTCHAs eingesetzt, um Bots auszubremsen, und ist sichergestellt, dass die Bilder bzw. Fragen schwer genug und ihre IDs stets eindeutig sind?
- Gelingt es, bereits generierte Session-IDs einem anderen Nutzer zuzuspielen und von diesem authentifizieren zu lassen (Session-Fixation-Attacke)?
- Setzt jeder Request innerhalb der Anwendung ein individuelles Token voraus, um einen Angreifer an der Durchführung von CSRF-Angriffen zu hindern?
Injection-Schwachstellen finden
- Local und Remote File Inclusion zum Einbinden von Programmcode
- SQL-Injection zum Auslesen und Manipulieren der Datenbank
- Command und Code Injection zum direkten Ausführen von Befehlen