In der Leitstelle der Certified Security Operations Center GmbH (CSOC) haben wir kürzlich einen schwerwiegenden Vorfall registriert. Einer unserer Kunden wurde Opfer einer SQL-Injection-Attacke. Diese Art von Angriff stellt eine ernsthafte Bedrohung für die Integrität und Sicherheit der Daten des betroffenen Unternehmens dar. In diesem Fall konnte der Cyberangriff erfolgreich abgewehrt werden, doch die Auswirkungen hätten verheerend sein können, wäre der Angriff nicht rechtzeitig erkannt worden. Die SQL-Sprache ist für Programmierer hilfreich, da sie eine effiziente und standardisierte Sprache zur Verwaltung und Abfrage von Datenbanken bietet, welche die Entwicklung datenbankgestützter Anwendungen erleichtert. Eine SQL-Injection hingegen, ist ein Angriff auf diese standardisierte Sprache und kann gravierende Folgen haben. Sie ermöglicht es Angreifern, unautorisierten Zugriff auf die Datenbank zu erlangen und Daten zu manipulieren, zu löschen oder zu stehlen. In unserem heutigen Beitrag wollen wir das Thema genauer beleuchten und Ihnen anhand eines Vorfalls aufzeigen, wo die Gefahren liegen, wie wir die SQL-Injection verifizieren konnten und was unsere Handlungsempfehlungen waren. Ebenfalls möchten wir Ihnen hilfreiche Tipps an die Hand geben, wie man sich vor einem solchen Angriff effektiver schützen kann.
Die SQL-Injection
SQL-Injection ist eine der häufigsten Methoden für Angriffe auf Webanwendungen und -dienste. Dabei werden bösartige SQL-Codefragmente in Benutzereingaben eingefügt und anschließend an die Datenbank übermittelt. Wenn die Eingaben nicht ausreichend validiert oder bereinigt werden, können Angreifer die SQL-Abfragen so manipulieren, dass sie unerwartete Befehle ausführen, Daten stehlen oder die Datenbank beschädigen können.
Eine SQL-Injection wird meist durch ungewöhnliche SQL-Fehlermeldungen, unerwartetes Verhalten der Anwendung und durch verdächtige Eingaben wie zusätzlichen SQL-Code in Eingabefeldern, URLs oder Formularen erkannt. Automatisierte Sicherheitstests und Code-Reviews können ebenfalls auf Schwachstellen hinweisen. Bei dem Vorfall, den die Analysten in unserer Leitstelle entdeckten, wurden ungewöhnliche Befehle identifiziert, die sie dazu veranlassten, genauer hinzusehen.
Bei der Untersuchung des ungewöhnlichen Verhaltens wurden auf dem Host des Kunden zwei Befehle identifiziert:
Der erste Befehl lud die Datei “aq.msi” von der URL “https://ursketz.com/js/aqueille.msi” herunter und speicherte sie im temporären Verzeichnis „C:\Windows\temp“. Dieser Befehl verwendet das Tool “certutil” mit den Optionen “-f” (erzwingen) und “-urlcache” (URL-Cache).
Der zweite Befehl führte die Installation der heruntergeladenen “aq.msi”-Datei im Quiet-Modus (“msiexec /q /i”) aus. Die von den Befehlen verwendete URL „https://ursketz.com/“ sowie die heruntergeladene Datei „aq.msi“ wiesen eine negative Reputation auf. Nach Auswertung der Logs vermuteten wir eine SQL-Injection und führten eine eingehende Analyse durch.
Unseren Analysten mit langjähriger Erfahrung, und einer Expertise für außergewöhnliche Befehle sind die Gefahren bekannt und sie wissen das schnelles Handeln, Schlimmeres verhindern kann.
Bekannte Gefahren
· Datenverlust oder -korruption: Der Angreifer kann Daten in der Datenbank manipulieren, löschen oder einfügen.
· Datenexfiltration: Sensible Informationen wie Benutzererkennung, Passwörter oder persönliche Daten können aus der Datenbank ausgelesen werden.
· Authentifizierungsumgebung: Der Angreifer kann sich als ein anderer Benutzer, einschließlich Administratoren, ausgeben.
· Rechteausweiterung: Der Angreifer kann erweiterte Rechte erlangen und dadurch die umfassende Kontrolle über das System erlangen.
· Zerstörung oder Änderung der Datenbankstruktur: Der Angreifer kann die Struktur der Datenbank ändern, was zu einem Ausfall des Systems führen kann.
Die Sicherheit unserer Kunden hat für uns stets die höchste Priorität, daher erfolgte das Handeln unverzüglich. Zum Schutz des betroffenen Hosts wurde geraten, diesen vorerst herunterzufahren, während weitere Maßnahmen ergriffen wurden, um die Sicherheit des Systems zu gewährleisten. Weitere Auffälligkeiten wurden anschließend auf dem Host nicht festgestellt.
Nach einer gründlichen Analyse des Vorfalls hat sich bestätigt, dass es sich tatsächlich um einen SQL-Injection-Angriff handelte.
Unsere Empfehlungen
· Aufgrund der potenziellen Gefahr für die Integrität der Daten wurde das System des Kunden auf einen früheren Backup-Zustand zurückgesetzt.
· Es wurde empfohlen, das betroffene System zu patchen, um bekannte Sicherheitslücken zu schließen und die Anfälligkeit für ähnliche Angriffe zu verringern.
· Es war entscheidend, die Ursachen für die erfolgreiche Durchführung der SQL-Injection zu identifizieren und zu beheben. Wir empfahlen daher eine eingehende Analyse des Systems, um Schwachstellen zu erkennen und zu beheben, die zu diesem Vorfall geführt haben könnten.
SQL-Injections können grundsätzlich in der Theorie meist mit proaktiven Maßnahmen verhindert werden. Jedoch können die Komplexität der Anwendung, nicht richtig gewartete Systeme, neuartige Angriffstechniken, Mangel an Ressourcen für die nötigen Sicherheitsvorkehrungen oder auch nur eine unachtsame Sekunde eines Menschen in der Praxis Herausforderungen darstellen.
Proaktive Handlungsempfehlungen
· Verwendung von vorbereiteten SQL-Anweisungen (Prepared Statments): Diese trennen SQL-Code von Daten, wodurch keine Daten als ausführbarer SQL-Code interpretiert werden kann.
· Parametrisierte Abfragen: Anfragen werden in Platzhaltern für Eingabewerte erstellt, wodurch die Eingaben als reine Daten behandelt und so SQL-Injection verhindert werden.
· Strikte Validierung und Bereinigung von Benutzereingaben: Durch die Überprüfung und Filterung von Eingaben auf unerwartete oder schädliche Inhalte wird das Risiko von Injections reduziert.
· Nutzung von ORM-Systemen: ORMs abstrahieren die Datenbankzugriffe und generieren sicherere SQL-Abfragen, was die Gefahr von manuellen Fehlern reduziert.
· Minimieren der Datenbankberechtigungen: Benutzerkonten sollten nur die minimal erforderlichen Rechte besitzen, um den Schaden im Fall einer Kompromittierung zu begrenzen.
· Regelmäßige Sicherheitsüberprüfungen der Anwendungen: Durch Penetrationstests und Code-Reviews werden potenzielle Schwachstellen identifiziert und behoben.
· Aktualisieren und Patchen: Stellen Sie sicher, dass alle verwendeten Systeme, einschließlich dem Datenbankmanagement und Frameworks, regelmäßig aktualisiert und gepatcht werden.
· Ausgabecodierung: Kodieren Sie die Ausgabe, um sicherzustellen, dass eingegebene Daten als solche behandelt werden und nicht als ausführbarer Code.
Fazit
Insgesamt ist es essenziell, dass Sicherheitspraktiken nicht nur verstanden, sondern auch konsequent umgesetzt und regelmäßig überprüft werden, um die Integrität und Vertraulichkeit von Daten zu wahren. Der Vorfall unseres Kunden zeigt auf, wie sinnvoll die Anbindung an einen SOC-Dienstleister ist und wie dieser eine entscheidende Bedeutung in der Sicherheitsstrategie eines Unternehmens haben kann. Durch die Kombination aus Technologie, Prozessen und Menschen stellt ein SOC sicher, dass die Sicherheitslage kontinuierlich überwacht und verbessert wird. Doch unabhängig davon kann jeder seinen Teil dazu beitragen, die Cyberwelt sicherer zu machen, egal ob Privatperson, SOC oder Unternehmen. Bleiben Sie wachsam, proaktiv, selbstreflektierend und halten Sie sich stets auf dem neuesten Stand.