Windows-Dienste¶
Was die Dienstkonfiguration aufzeichnet¶
Windows-Dienste und Kerneltreiber werden unter jedem Control Set von SYSTEM konfiguriert. Die Datensätze benennen
die ausführbare Datei/den Treiber oder die Dienst-DLL, Startmodus, Diensttyp, Konto, Ladereihenfolgegruppe, verzögerten
Start, Fehlerverhalten und die Aktionen, die Windows nach einem Fehler ausführt.
Angreifer erstellen oder ändern Dienste für Persistenz, Rechteausweitung, das Laden von Treibern und laterale Bewegung. Legitime Software verwendet genau denselben Mechanismus; daher kommt es auf Pfade, Konten, Signaturen, Erstellungskontext und Laufzeitbelege an.
Bestmögliche Schlussfolgerung: Das geparste Control Set hat den Dienst/Treiber wie dargestellt konfiguriert. Die Konfiguration allein beweist nicht, dass der Dienst erfolgreich gestartet wurde.
Speicherort¶
Sichern Sie SYSTEM mit seinen Transaktionsprotokollen. Ereignis-IDs wie System 7045 und Security 4697 können
die Installation aufzeichnen; Dienststeuerungs- und Prozessereignisse können einen tatsächlichen Start bzw. eine Ausführung belegen.
Hinweise für die Analyse¶
ImagePathkann Umgebungsvariablen, Anführungszeichen, Argumente, Gerätepfade oder einen nicht in Anführungszeichen gesetzten Pfad mit Leerzeichen enthalten. Bewahren Sie ihn exakt, bevor Sie ihn normalisieren.ServiceDllist für Dienste entscheidend, die insvchost.exegehostet werden;ImagePathallein benennt möglicherweise nur den Host.StartType=automaticbeweist nicht, dass der Dienst gestartet wurde oder aktiviert blieb.ObjectNameist das konfigurierte Konto, nicht notwendigerweise der Benutzer, der den Dienst installiert hat.- Treiber und Benutzermodusdienste verwenden unterschiedliche
ServiceType-Flags und Pfadkonventionen. - Fehleraktionen können nach einem Fehler einen Befehl unter dem Dienstkonto ausführen; dies ist eine Persistenz- oberfläche, die leicht übersehen wird.
- Andere Control Sets können eine frühere Konfiguration bewahren; verwenden Sie
IsCurrentControlSet.
Mit Juntei parsen¶
Usage: juntei parse-registry services <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM hives
-f, --file <FILE> Parse one SYSTEM hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--service <NAME> Only this service name
--all-control-sets Parse every ControlSet00N
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry services -f SYSTEM -o services.csv
juntei parse-registry services -f SYSTEM --all-control-sets -t jsonl \
| jq 'select(.FailureCommand != null or (.ImagePath? | test("temp|public"; "i")))'
Ausgabefelder¶
| Feld | Interpretation |
|---|---|
Host, SourcePath |
Systemidentität und Eingabe-Hive. Über Sicherungen hinweg beibehalten. |
ControlSet, IsCurrentControlSet |
Quell-Control-Set und ob Select\Current es benennt. Für Aussagen über den aktiven Zustand das aktuelle bevorzugen. |
ServiceName |
Registry-Schlüssel/interner Dienstname. Starker Ansatzpunkt für Ereignisse und Befehle des Dienststeuerungs-Managers. |
DisplayName, Description |
Für Benutzer sichtbarer Text; kann aus Ressourcenverweisen bestehen oder vom Angreifer kontrolliert sein. |
ImagePath |
Befehl der ausführbaren Datei/des Treibers wie konfiguriert. Anführungszeichen, Argumente, Umgebungsvariablen und Gerätepfade auswerten. |
ServiceDLL |
Von einem Host-Dienst geladene DLL. Bei Diensten mit gemeinsam genutztem Prozess oft die eigentliche Payload. |
StartType, StartValue |
Lesbarer/roher Startmodus: Boot (0), System (1), automatisch (2), manuell (3), deaktiviert (4). |
DelayedAutostart |
Automatischer Dienst startet nach der anfänglichen Bootphase; dennoch zur Persistenz geeignet. |
ServiceType, TypeValue |
Dekodierte/rohe Flags: Kerneltreiber, Dateisystemtreiber, eigener/gemeinsamer Prozess, Benutzerdienst usw. |
ErrorControl |
Stufe der Fehlerbehandlung bei Boot/Start. Vorwiegend betrieblicher Kontext. |
ObjectName |
Konfiguriertes Dienstkonto oder Name des Treiberobjekts. Nicht die Identität des Installierenden. |
Group |
Ladereihenfolgegruppe, besonders wichtig für Boot-/Systemtreiber. |
FailureResetPeriod |
Sekunden, bis der Fehlerzähler zurückgesetzt wird; 4294967295 bedeutet nie. |
FailureCommand |
Für eine Fehleraktion run_command konfigurierter Befehl. Hochwertiges Persistenzfeld. |
FailureActions |
Vollständige dekodierte Aktionsliste (restart, reboot, run_command, none) und Verzögerungen. |
FailureActionType, FailureActionDelayMs |
Erste Aktion, zum Filtern abgeflacht; prüfen Sie auch die vollständige Liste. |
FailureActionsRaw |
Ursprüngliche Bytes, wenn die Dekodierung unvollständig/beschädigt ist. |
KeyLastWrittenUTC |
Letzte Änderung am Dienstschlüssel, nicht notwendigerweise Installations-/Startzeit. |
TransactionLogStatus, LogsApplied |
Kontext der Registry-Wiedergabe. |
Problems |
Typkonflikt, fehlerhafte Fehleraktionsstruktur oder fehlende/unlesbare Felder. |
Untersuchungsstrategie¶
- Prüfen Sie nicht standardmäßige Pfade, beschreibbare Verzeichnisse, ungewöhnliche Konten, neue Schlüsselzeiten und Fehlerbefehle.
- Expandieren Sie Umgebungsvariablen anhand der Konfiguration des betroffenen Hosts, nicht des Analyserechners.
- Prüfen Sie Hash/Signatur der tatsächlichen ausführbaren Datei oder DLL, sofern gesichert.
- Korrelieren Sie Dienstname/-pfad mit den Ereignissen 7045/4697, Prozesserstellung, Prefetch,
$MFTund USN. - Vergleichen Sie aktuelle und nicht aktuelle Control Sets auf geänderte/gelöschte Persistenz.