Dieser Artikel hilft Ihnen, Hinweise auf einen kompromittierten Windows®-Server zu verstehen und zu identifizieren. Dies ist ein sehr allgemeines Dokument, das Sie als Ressource verwenden können, um ein potenzielles Problem aufzuspüren, anstatt einen kompromittierten Server zu beheben.
Arten der Kompromittierung
Dieser Artikel befasst sich mit zwei Arten von Kompromittierung:Anwendungsebene und System- oder Root-Ebene. Diese sind ziemlich schwerwiegend und erfordern oft einen robusten Disaster-Recovery-Plan, um sie abzumildern.
Kompromittierung auf Anwendungsebene
Eine Kompromittierung auf Anwendungsebene tritt auf, wenn ein Dienst oder Benutzer auf niedriger Ebene kompromittiert wird. Typische Kompromisse in dieser Gruppe umfassen die folgenden Probleme:
- Website-Entstellung
- FTP-Tagging
- FTP-Dateimanipulation
- SQL-Injection
Diese Art von Kompromittierung kann Daten auf dem Server verändern. Sie erreichen jedoch niemals Administrator- oder Root-Zugriff auf den Server. In diesen Fällen können Sie die Schwachstelle möglicherweise identifizieren und absichern. Das Sichern einer Schwachstelle auf Anwendungsebene kann beinhalten, einem anonymen Webbenutzer den Schreibzugriff zu entziehen, Viren von einem Server zu entfernen oder eine Anwendung durch verfügbare Patches zu sichern. Um geänderte Dateien zu reparieren, müssen Sie sie aus einer Sicherung wiederherstellen.
Verwaltungs-, System- oder Root-Level-Kompromittierung
Diese Art der Kompromittierung findet statt, wenn ein Angreifer administrativen Zugriff auf das System erhält, und kann die folgenden Probleme beinhalten:
- Kompromittierter Dienst, der als
System
ausgeführt wird ,LocalService
, oderAdministrative
Benutzer - Kompromittiertes Benutzerkonto mit Administratorrechten
- Zugriff durch einen nicht-administrativen Benutzer auf einen Ort, der auf administrative Benutzer beschränkt ist (z. B. Systemverzeichnisse usw.)
- Virus im System- oder Verwaltungsverzeichnis gefunden
- Offenbar schädliche ausgehende Netzwerkaktivitäten
- SQL-Injection (einschließlich Befehlsausführung)
Wichtig: Wenn ein Angreifer diese Zugriffsebene erhält, können Sie keine Änderungen feststellen, die während der Kompromittierung vorgenommen wurden.
Windows-Tools, mit denen Sie nach einer Kompromittierung suchen können
- Aufgabenliste: Befehlszeilentool mit Details zu Prozessen und Diensten im System
- Task-Manager: Grafisches Tool mit Details zu Prozessen, Ressourcenstatistiken und Netzwerkaktivitäten im System
- Ressourcenmanager: Grafisches Tool ähnlich dem Taskmanager aber weitere Details zur Ressourcennutzung bereitstellen
Untersuchen Sie einen kompromittierten Server
Um eine mögliche Kompromittierungssituation zu untersuchen, führen Sie die folgenden Aufgaben aus, die in diesem Abschnitt beschrieben werden:
- Identifizieren Sie die Kompromittierung
- Überprüfen Sie die Prozesse
- Dienste überprüfen
- Überprüfen Sie die Benutzer
Identifizieren Sie die Kompromittierung
Eine hohe anhaltende unerwartete Bandbreitenauslastung ist häufig ein häufiges Symptom. Da Angreifer normalerweise Systeme kompromittieren, die beabsichtigen, einen Netzwerkdienst darauf auszuführen, könnte ein Dienst auf dem System ausgeführt werden, sodass das Abhören eines ungeraden Ports auf einen kompromittierten Server hinweisen könnte.
-
Führen Sie den folgenden Befehl aus, um Netzwerkverbindungen auf TCP zu überprüfen:
NetStat -naop 'TCP'
-
Führen Sie den folgenden Befehl aus, um Netzwerkverbindungen auf UDP zu überprüfen:
NetStat** -naop 'UDP'
-
Um bestimmte Verbindungen zu zählen, führen Sie einen der folgenden Befehle aus:
NetStat** -naop 'TCP' find /c ":<port>"
Hinweis: Das Sysinterne TCP view bietet alternative grafische Tools für diese Überprüfung.
Prüfen Sie die Prozesse
Identifizieren Sie jeden verdächtigen Prozess. Auf einem kompromittierten Server werden wahrscheinlich ein oder mehrere schädliche Prozesse ausgeführt. Sie können diese manchmal daran erkennen, dass sie Tippfehler, Grammatikfehler oder eine verdächtige Beschreibung enthalten.
-
Führen Sie den folgenden Befehl aus, um die auf dem System ausgeführten Prozesse aufzulisten:
Tasklist /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
-
Führen Sie den folgenden Befehl aus, um die als Dienst definierten Prozesse aufzulisten:
Tasklist /svc
-
Führen Sie den folgenden Befehl aus, um einen Schnappschuss des aktuell ausgeführten Prozesses mit derselben Ausgabe wie die Taskmanager-Prozessliste aufzulisten:
Get-Process
-
Führen Sie einen der folgenden Befehle aus, um Prozesse und den Benutzer, unter dem sie ausgeführt werden, aufzulisten:
gwmi win32_process select Name, @{l="User name";e={$_.getowner().user}}
Prüfen Sie die Dienste
Suchen Sie nach Tippfehlern, Grammatikfehlern oder verdächtigen Beschreibungen. Wenn ein Dienst fragwürdig aussieht, untersuchen Sie die Eigenschaften und Abhängigkeiten. Stellen Sie außerdem fest, ob die Datei ausführbar ist. Verwenden Sie die Dienste-GUI um laufende Dienste anzuzeigen.
-
Führen Sie den folgenden Befehl aus, um laufende Dienste aufzulisten:
get-service | where-object {$_.Status -eq "Running"}
Benutzer überprüfen
Um festzustellen, ob ein Server kompromittiert ist, und um eine fehlerhafte Konfiguration schnell zu identifizieren, überprüfen Sie grundlegende Benutzerkonten.
-
Führen Sie den folgenden Befehl aus, um unbekannte oder ungewöhnlich benannte Benutzerkonten durch Auflisten konfigurierter Benutzer zu identifizieren:
net user
-
Führen Sie den folgenden Befehl aus, um unbekannte Benutzer in der lokalen Administratorengruppe durch Auflisten konfigurierter Administratoren zu identifizieren:
net localgroup Administrators
-
Führen Sie den folgenden Befehl aus, um zu sehen, ob ein Gastkonto aktiviert und in der Gruppe Administratoren ist:
net user guest
Tools verfügbar von Microsoft Sysinternals
Weitere Informationen finden Sie in den folgenden Quellen:
- Dokumentation zu Sysinternals
- Live-Link zu sysinternen Tools
- Sophos AntiRootkit
Verwenden Sie die Registerkarte „Feedback“, um Kommentare abzugeben oder Fragen zu stellen. Sie können auch mit uns ins Gespräch kommen.