BAM: von der SID zum Benutzernamen – Ausführung zuordnen
Wie BAM Programme Konten zuordnet: SID lesen, über ProfileList, SAM oder die Domäne auflösen, bekannte SIDs wie SYSTEM und DWM erkennen und Fallstricke meiden.
TL;DR. Die BAM-Schlüsselnamen sind die Zuordnung: ein Unterschlüssel pro SID unter UserSettings. Lösen Sie SIDs über die ProfileList des SOFTWARE-Hives (Ordnername), den SAM-Hive (Namen lokaler Konten) oder die Domäne (Domänenkonten) auf. Erkennen Sie bekannte SIDs – S-1-5-18 ist LocalSystem, S-1-5-90-0-N sind DWM-Konten, S-1-5-96-0-N Konten des Schriftarttreibers. Und formulieren Sie vorsichtig: BAM ordnet die Ausführung einem Konto zu, nicht einer Person an der Tastatur.
Die Benutzerzuordnung ist der größte Vorteil von BAM gegenüber Prefetch, ShimCache und Amcache, die systemweit gelten. Dieser Artikel zeigt, wie Sie von einer SID zu einem berichtsfähigen Namen kommen und wie weit dieser Name trägt. Die Grundlagen stehen im kompletten BAM/DAM-Leitfaden.
Eine SID lesen
Eine Sicherheitskennung wie S-1-5-21-3623811015-3361044348-30300820-1119 zerfällt so (Microsoft Learn):
| Teil | Wert | Bedeutung |
|---|---|---|
| Revision | 1 | Immer 1 |
| Bezeichnerautorität | 5 | NT Authority |
| Domänenbezeichner | 21-3623811015-3361044348-30300820 | Der Rechner (lokale Konten) oder die Domäne |
| Relative ID (RID) | 1119 | Das Konto innerhalb dieser Domäne |
Zwei Faustregeln aus derselben Dokumentation: RID 500 ist der integrierte Administrator, und SIDs werden innerhalb ihres Geltungsbereichs nie wiederverwendet. Zwei BAM-Schlüssel mit demselben Domänenteil gehören zum selben Rechner oder zur selben Domäne; vergleichen Sie dieses Präfix mit der Rechner-SID, um lokale von Domänenkonten zu unterscheiden.
Namen auflösen
ProfileList (SOFTWARE-Hive)
SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID> hat einen Wert ProfileImagePath, etwa C:\Users\svc_backup. Der letzte Ordner ist meist der Kontoname, und genau den zeigt unser BAM/DAM Parser, sobald Sie den SOFTWARE-Hive hinzufügen: Jede Zeile erhält ein Konto neben ihrer SID (Spalte User in Exporten), und der Kontenfilter zeigt „Name (SID)“.
Der Haken: Microsoft dokumentiert, dass das Umbenennen eines Benutzerkontos den Profilpfad nicht ändert (Microsoft Learn). Der „Profilordnername“ ist also ein starkes Indiz, nicht der maßgebliche Kontoname. In unseren Berichten kennzeichnen wir ihn so.
SAM-Hive (lokale Konten)
Bei lokalen Konten ordnet der Schlüssel SAM\Domains\Account\Users im SAM-Hive jeder RID ihren aktuellen Benutzernamen zu. Stimmt der Domänenteil der BAM-SID mit der Rechner-SID überein, lässt sich die RID dort auflösen. Unser Tool parst SAM nicht; Registry Parser oder die SAM-Plugins von RegRipper tun das.
Die Domäne
Bei Domänenkonten fragen Sie den Domänencontroller (Get-ADUser -Identity <SID>) oder nutzen die Anmeldeereignisse auf dem Host, die SID und Kontonamen enthalten (EVTX Parser für Anmeldungen 4624/4648).
Bekannte SIDs, denen Sie begegnen werden
| SID | Konto | Bezeichnung in unserem Tool | Bedeutung für BAM |
|---|---|---|---|
S-1-5-18 | LocalSystem | SYSTEM | Dem Systemkonto zugeordnete Prozesse |
S-1-5-19 | LocalService | LOCAL SERVICE | Dienstkontext |
S-1-5-20 | NetworkService | NETWORK SERVICE | Dienstkontext |
S-1-5-90-0-N | Window Manager\DWM-N | DWM-N | Virtuelles Konto des Desktop Window Manager für Sitzung N |
S-1-5-96-0-N | Font Driver Host\UMFD-N | UMFD-N | Von fontdrvhost.exe verwendetes Konto |
Die ersten drei stehen in Microsofts Liste der bekannten SIDs; die Formate für DWM und Schriftarttreiber sind in der Referenz Security Identifier und in Boutnarus Notizen zu dwm.exe dokumentiert.
Ein SYSTEM-Schlüssel mit Einträgen außerhalb von System32 verdient Aufmerksamkeit. Im fiktiven Beispiel dieser Website zeigt S-1-5-18 \Windows\Temp\svchost.exe neben dem echten \Windows\System32\svchost.exe – genau die Art Zeile, für die es die Markierung „Systemdatei am falschen Ort“ gibt. Etwas lief als LocalSystem aus einem Temp-Ordner; in einem echten Fall suchten Sie den Dienst oder die geplante Aufgabe, die es gestartet hat (Dienstinstallationen 7045, Schlüssel Services, Aufgaben-XML).
Ein Konto, keine Person
Ein BAM-Eintrag unter der SID X bedeutet, dass der Prozess dem Konto X zugeordnet wurde. Er sagt nicht, wer an der Tastatur saß. Nichts im Eintrag unterscheidet zwischen diesen Situationen, die alle Code unter demselben Konto ausführen:
- Der Benutzer hat das Programm selbst gestartet,
- jemand anderes hat sein Passwort, Token oder seine Sitzung genutzt (RDP,
runas, gestohlene Zugangsdaten), - eine geplante Aufgabe oder ein Dienst, der unter diesem Konto läuft, hat es gestartet,
- ein Fernausführungswerkzeug hat mit diesen Zugangsdaten einen Prozess erzeugt.
Deshalb sollte es im Bericht „unter dem Konto … ausgeführt“ heißen, mit dem Anmeldekontext (interaktiv, RDP, Netzwerk, Dienst) aus den Ereignisprotokollen. Bei Fernanmeldungen helfen SRUM und RDP-Artefakte, die Sitzung einzuordnen.
Dienstkonten und gemeinsam genutzte Konten
Bei Dienstkonten glänzt die BAM-Zuordnung. Ein Backup-Konto, das normalerweise nur einen Agenten ausführt und plötzlich cmd.exe, mstsc.exe und einen Scanner in seinem BAM-Schlüssel zeigt, ist ein klares Zeichen für interaktiven Missbrauch. Die Lateral-Movement-Untersuchung folgt genau diesem Muster mit dem fiktiven Konto svc_backup.
Gemeinsam genutzte Konten (Kiosk, Schulungsraum, generischer Admin) sind das Gegenteil: BAM ordnet alles einer einzigen SID zu. Kombinieren Sie es mit Anmeldeereignissen und Quell-IPs, um Sitzungen zu trennen.
Durchgerechnetes Beispiel mit den Beispieldaten
Die fiktiven Beispiel-Hives hinter der Schaltfläche Beispiel testen enthalten drei BAM-Schlüssel:
| SID | Name aus der ProfileList | Einordnung |
|---|---|---|
S-1-5-21-3623811015-3361044348-30300820-1104 | alice | Normales Konto |
S-1-5-21-3623811015-3361044348-30300820-1119 | svc_backup | Dienstkonto, gleicher Domänenteil |
S-1-5-18 | (bekannt) | LocalSystem, als SYSTEM beschriftet |
Beide S-1-5-21-SIDs teilen den Domänenteil 3623811015-3361044348-30300820 und gehören daher zum selben Rechner oder zur selben Domäne; ihre RIDs 1104 und 1119 unterscheiden die Konten. Ohne SOFTWARE-Hive würde das Tool nur die SIDs zeigen; mit ihm lautet der Kontenfilter alice (S-1-5-21-…-1104) und svc_backup (S-1-5-21-…-1119). Ob es sich um lokale oder Domänenkonten handelt, lässt sich aus diesen beiden Hives allein nicht entscheiden: Vergleichen Sie den Domänenteil mit der Rechner-SID aus dem SAM-Hive oder fragen Sie die Domäne. Die ausführliche Untersuchung nutzt genau diese Zuordnung, um zu zeigen, dass das Dienstkonto und nicht die Benutzerin die Angriffswerkzeuge ausgeführt hat.
Checkliste
- SYSTEM und SOFTWARE laden, damit Namen neben den SIDs erscheinen.
- Den Domänenteil jeder SID mit der Rechner-SID vergleichen: lokal oder Domäne?
- Maßgebliche Namen aus SAM (lokal) oder der Domäne beziehen.
- Bekannte SIDs als eigene Kategorie behandeln; ungewöhnliche Pfade unter
SYSTEMgenau ansehen. - „Unter dem Konto“ formulieren und Anmeldetyp und -quelle aus den Ereignisprotokollen ergänzen.
Alles oben außer SAM- und Domänenabfragen erledigen Sie direkt im BAM/DAM Parser; den vollständigen Ablauf zeigt die Schritt-für-Schritt-Anleitung.
Häufige Fragen
Wie wird aus einer BAM-SID ein Benutzername?
Laden Sie den SOFTWARE-Hive und lesen Sie ProfileList\<SID>\ProfileImagePath: Der letzte Ordner dieses Pfads ist meist der Kontoname. Bei lokalen Konten liefert der SAM-Hive den aktuellen Namen zur RID; bei Domänenkonten fragen Sie die Domäne ab oder sehen in die Anmeldeereignisse.
Beweist ein BAM-Eintrag, dass eine Person das Programm gestartet hat?
Er beweist, dass der Prozess der SID dieses Kontos zugeordnet wurde. Der Eintrag unterscheidet nicht zwischen dem Benutzer, einem Angreifer mit dessen Passwort oder einer Aufgabe bzw. einem Dienst, der unter diesem Konto läuft; den Anmeldekontext liefern die Ereignisprotokolle.