Kurzfassung: BloodHound ist das Standardwerkzeug, mit dem Angreifer nach dem Erstzugriff die Angriffspfade im Active Directory sichtbar machen. Der Sammler SharpHound trägt dafür in wenigen Minuten das halbe Verzeichnis zusammen: Benutzer, Gruppen, Computer, Berechtigungen, Sitzungen und lokale Admins. Genau diese Breite ist die Spur. Erkennung: teure LDAP-Suchen in Event 1644 auf dem Domain Controller, aufgezählte lokale Gruppen in Event 4798 und 4799, Netzwerk-Sitzungsabfragen über die Named Pipes srvsvc und wkssvc in Event 5145, dazu Sysmon 3 für die Verbindungen zu vielen Hosts. Das Muster ist immer dasselbe: ein Konto berührt in kurzer Zeit auffällig viele Objekte und Systeme. Zwei Sigma-Regeln, Test nur im Lab und Tuning unten. Serie „Angriff erkennen“.
BloodHound erkennen ist die Erkennung, die einen Angriff sichtbar macht, bevor er gefährlich wird. Nach dem ersten kompromittierten Konto steht der Angreifer vor demselben Problem wie ein neuer Administrator: Er kennt das Verzeichnis nicht. Wer ist wo lokaler Admin, welche Gruppe führt über Umwege zu Domain Admin, welches Dienstkonto hat zu viele Rechte? BloodHound beantwortet diese Fragen, indem es die Beziehungen im Active Directory als Graph darstellt und den kürzesten Weg zu den höchsten Rechten einzeichnet. Der Sammler dazu heißt SharpHound. Für ein Blue Team ist das eine gute Nachricht: Diese Aufklärung findet fast immer vor Lateral Movement und Rechteausweitung statt und ist damit ein frühes Signal. Dieser Beitrag aus der Serie „Angriff erkennen“ zeigt aus Verteidigersicht, welche Spuren SharpHound hinterlässt, mit Logquellen, dem gemeinsamen Muster, zwei Sigma-Regeln, dem Test im Lab und den Fehlalarmen, die bei dieser Technik von legitimer Verwaltung kommen.
Was der Angreifer tut
BloodHound selbst ist nur die Auswertung: eine Oberfläche, die aus gesammelten Daten einen Graphen baut und Angriffspfade einzeichnet. Die eigentliche Arbeit macht der Sammler SharpHound auf einem System in der Domäne, meist mit den Rechten eines ganz normalen Benutzerkontos, denn für das Lesen der Verzeichnisstruktur genügen Standardrechte. SharpHound fragt in kurzer Zeit mehrere Datenquellen ab, und jede davon hinterlässt eine andere Spur. In ATT&CK verteilt sich das auf mehrere Techniken der Taktik Discovery, darunter T1087.002 (Domänenkonten), T1069.002 (Domänengruppen), T1482 (Vertrauensstellungen) und T1018 (Remote-Systeme). Die Datenquellen im Überblick, bewusst auf der Ebene des Prinzips:
- LDAP gegen den Domain Controller. Der größte Teil der Sammlung sind breite LDAP-Abfragen, die alle Benutzer, Gruppen, Computer, Organisationseinheiten, Gruppenrichtlinien und deren Berechtigungen auslesen. Das ist dieselbe Schnittstelle, über die auch Verwaltungswerkzeuge arbeiten, nur in einer Breite und Geschwindigkeit, die im Alltag kaum vorkommt.
- Sitzungsabfragen gegen die Hosts. Um zu sehen, welcher Benutzer an welchem Rechner angemeldet ist, fragt der Sammler viele Systeme über das Netz ab, oft die komplette Liste der Computer aus der Domäne. Technisch laufen diese Abfragen über die Named Pipes srvsvc (angemeldete Sitzungen) und wkssvc (interaktiv angemeldete Benutzer).
- Lokale Gruppen über SAMR. Um die lokalen Administratoren jedes Systems zu bestimmen, zählt der Sammler die Mitglieder der lokalen Gruppen auf. Das ist der Schritt, der die wertvollsten Angriffspfade liefert, und zugleich einer der am besten erkennbaren.
- Gruppenrichtlinien und Vertrauensstellungen. Ergänzend liest der Sammler aus, welche Richtlinien wo gelten und welche Domänen einander vertrauen, um auch Pfade über Richtlinien und Domänengrenzen zu finden.
Entscheidend für die Erkennung ist: Keine dieser Abfragen ist für sich verboten oder ungewöhnlich. Auffällig ist allein die Menge und die Breite. Ein einzelnes Konto, das in fünf Minuten das halbe Verzeichnis liest und hunderte Hosts nach Sitzungen fragt, verhält sich nicht wie ein Mensch an der Tastatur.
Welche Logquellen die Technik zeigt
| Datenquelle von SharpHound | Auf dem Domain Controller | Auf den abgefragten Hosts | Im Netz (Zeek) |
|---|---|---|---|
| Breite LDAP-Abfragen | 1644 (teure Suche mit Filter und Client), 4662 für Objektzugriff | – | ldap.log mit Such-Basis und Filter; conn.log Port 389 und 636 |
| Sitzungsabfragen (srvsvc, wkssvc) | – | 5145 auf IPC$ mit der Pipe srvsvc oder wkssvc; 4624 Typ 3 auf vielen Zielen | dce_rpc.log mit den Operationen NetSessionEnum und NetWkstaUserEnum; conn.log Port 445 |
| Lokale Gruppen (SAMR) | – | 4798 (Benutzer) und 4799 (Gruppen) für aufgezählte Mitgliedschaften | dce_rpc.log mit samr-Aufrufen |
| Prozess und Netz auf dem Sammler | – | Sysmon 1 für den Prozess, Sysmon 3 für die Verbindungen zu vielen Hosts, Sysmon 22 für die DNS-Auflösung vieler Namen | – |
Die Tabelle zeigt den wichtigsten Punkt: Die Sammlung erscheint an drei Stellen gleichzeitig, auf dem Domain Controller, auf den Zielsystemen und im Netz. Wer nur den DC anbindet, sieht die LDAP-Breite, aber nicht die Sitzungsabfragen; wer die Clients mit Sysmon erfasst, sieht Prozess und Verbindungen. Die Einzelheiten zu jedem Ereignis stehen in der Referenz zu den Event-IDs.
Das Muster im Log
Drei Fragen trennen eine SharpHound-Sammlung von legitimer Verwaltung, und alle drei drehen sich um Menge statt um Art.
- Die Breite. Eine einzelne LDAP-Abfrage, die alle Objekte einer Klasse zurückgibt, ist selten. Mehrere davon in kurzer Folge von einem Client, der sonst keine breiten Abfragen stellt, sind das Kernsignal. Event 1644 macht genau diese teuren, breiten Suchen sichtbar.
- Die Streuung. Ein Konto, das innerhalb weniger Minuten Sitzungsabfragen an dutzende oder hunderte Hosts schickt, berührt mehr Systeme, als ein Mensch oder ein normaler Arbeitsplatz je anfassen würde. In 5145 erscheint das als viele Zugriffe auf IPC$ mit den Pipes srvsvc und wkssvc von derselben Quelle.
- Die Quelle. Kommt all das von einem gewöhnlichen Client-Konto statt von einem bekannten Verwaltungs- oder Monitoring-Server, ist der Fall klar. Eine Liste der Systeme, von denen breite Verzeichnisabfragen ausgehen dürfen, ist deshalb die wertvollste Vorarbeit und zugleich ein Filter, der fast alle Fehlalarme entfernt.
Jede Frage für sich erzeugt Rauschen durch legitime Werkzeuge; zusammen und mit einer Ausnahmeliste für die bekannten Quellen werden sie trennscharf. Das ist dasselbe Prinzip wie bei der übrigen Aufklärung, nur dass BloodHound alle drei Signale auf einmal erzeugt.
Zwei Sigma-Regeln
Die erste Regel zählt teure LDAP-Suchen pro Client auf dem Domain Controller, die zweite die Sitzungsabfragen über die typischen Named Pipes. Beide sind Korrelationsregeln, weil der einzelne Treffer nichts aussagt und erst die Menge das Signal ist. Die Schwellen sind Startwerte für die eigene Umgebung.
title: Breite LDAP-Aufklaerung ueber teure Suchanfragen (Basisregel)
id: aa974beb-91f0-4131-b4fc-e902a9d824a3
name: expensive_ldap_search_1644
status: experimental
logsource:
product: windows
service: directory-service
definition: 'Log Directory Service auf Domain Controllern, Field Engineering (NTDS Diagnostics 15) auf 5'
detection:
selection:
EventID: 1644
condition: selection
---
title: Breite LDAP-Aufklaerung durch viele teure Suchen von einem Client
id: 4556d8d3-73f3-4822-bd3e-b9d98859b9ee
status: experimental
description: Erkennt auf dem Domain Controller viele teure LDAP-Suchen von einem
Client in kurzer Zeit, ein Muster fuer AD-Aufklaerung mit Werkzeugen wie
SharpHound. Event 1644 liefert unbenannte Datenfelder; der Feldname fuer den
Client haengt von der Ingestion ab und muss angepasst werden.
references:
- https://attack.mitre.org/techniques/T1087/002/
author: blue-team.net
tags:
- attack.discovery
- attack.t1087.002
correlation:
type: event_count
rules:
- expensive_ldap_search_1644
group-by:
- Client
timespan: 10m
condition:
gt: 50
falsepositives:
- Monitoring-, Backup- und Identity-Management-Loesungen mit regelmaessigen breiten Abfragen
level: medium
title: Netzwerk-Sitzungsabfrage ueber srvsvc und wkssvc (Basisregel)
id: 6f0c1e4a-2b7d-4e39-9a8c-1d5f3b6e2c74
name: samr_session_enum_5145
status: experimental
logsource:
product: windows
service: security
definition: 'Objektzugriffsueberwachung Detailed File Share (Audit Detailed File Share)'
detection:
selection:
EventID: 5145
ShareName|endswith: 'IPC$'
RelativeTargetName:
- 'srvsvc'
- 'wkssvc'
condition: selection
---
title: Host-Aufklaerung durch viele Sitzungsabfragen von einem Konto
id: 8d2a7c53-4f91-4b0e-bc62-9e7a1d4f80b5
status: experimental
description: Erkennt ein Konto, das in kurzer Zeit viele Systeme ueber die Named
Pipes srvsvc und wkssvc nach angemeldeten Sitzungen und Benutzern abfragt, das
Sitzungs-Sammelverhalten von SharpHound. Schwelle an die eigene Zahl der
Verwaltungssysteme anpassen.
references:
- https://attack.mitre.org/techniques/T1018/
author: blue-team.net
tags:
- attack.discovery
- attack.t1018
correlation:
type: event_count
rules:
- samr_session_enum_5145
group-by:
- SubjectUserName
timespan: 10m
condition:
gt: 30
falsepositives:
- Inventar- und Monitoring-Loesungen, die Sitzungen zentral abfragen
- Verwaltungsserver mit regelmaessigem Host-Scan
level: high
Eine dritte Erkennung, die hier als Regel fehlt und trotzdem wertvoll ist, sind die aufgezählten lokalen Gruppen in 4798 und 4799: Werden sie auf vielen Hosts in kurzer Zeit vom selben Konto ausgelöst, ist das die SAMR-Sammlung. Wie die Regeln in das eigene SIEM übersetzt werden, steht im Beitrag zu Sigma-Regeln; die Übersetzung nach KQL für Microsoft-Umgebungen im Beitrag zu Kusto.
Der Test
Dafür ist der Domain Controller mit mindestens zwei weiteren Systemen im Homelab gedacht; der Test gehört ausschließlich dorthin, niemals in eine Produktivumgebung. Ziel ist nur zu prüfen, ob die erwarteten Ereignisse entstehen und die Regeln treffen. Ein Durchlauf des Sammlers von einem gewöhnlichen Domänenkonto aus mit einer der üblichen Sammelmethoden genügt. Erwartet werden auf dem Domain Controller eine Häufung von 1644 mit breiten Filtern (sofern Field Engineering gesetzt ist) und 4662; auf den Zielsystemen 5145 mit den Pipes srvsvc und wkssvc sowie 4798 und 4799 für die lokalen Gruppen; auf dem Sammler selbst Sysmon 3 mit Verbindungen zu vielen Hosts. Beide Sigma-Regeln müssen treffen. Atomic Red Team hat für T1087.002 und T1069.002 passende Tests, die die Verzeichnis- und Gruppenaufklärung auch ohne den vollständigen Sammler nachstellen. Ergebnis und Datum in den ATT&CK-Navigator, denn diese Erkennung greift genau in dem Moment, in dem ein Angreifer sich orientiert und noch keinen Schaden angerichtet hat. Deshalb gehört sie in die regelmäßige Purple-Team-Übung.
Fehlalarme und Tuning
- Monitoring und Inventar. Lösungen, die Sitzungen und Hardware zentral erfassen, fragen von Natur aus viele Hosts ab und stellen breite LDAP-Anfragen. Sie laufen von festen Servern in festem Takt; diese Server kommen namentlich in den Filter, nicht die Konten, weil Konten gestohlen werden und Server seltener.
- Identity- und Verwaltungswerkzeuge. Passwort-Tools, HR-Synchronisation und AD-Verwaltung lesen das Verzeichnis breit aus. Auch hier ist der Unterschied die bekannte Quelle und der feste Zeitplan; eine Abweichung davon ist der Alarm.
- Schwachstellen- und Angriffspfad-Scanner im eigenen Auftrag. Wer BloodHound oder vergleichbare Werkzeuge selbst zur Prüfung einsetzt, erzeugt dieselben Spuren. Solche Läufe werden angekündigt, von einem bekannten System gefahren und im Zeitfenster abgeglichen, nicht die Regel abgeschaltet.
- Die Schwellen. Die Werte 50 teure Suchen und 30 Sitzungsabfragen in zehn Minuten sind Startpunkte. In einer großen Umgebung mit vielen Verwaltungsservern liegen sie höher, in einer kleinen niedriger. Sinnvoll ist, zuerst eine Woche mitzuschneiden, die normalen Spitzen anzusehen und die Schwelle knapp darüber zu setzen.
- Die Gegenmaßnahme, die die Regel entlastet. Die SAMR-Fernabfrage lokaler Gruppen lässt sich per Gruppenrichtlinie auf Administratoren einschränken (Network access: Restrict clients allowed to make remote calls to SAM). Danach läuft die lokale-Gruppen-Sammlung eines Standardkontos ins Leere und erzeugt statt verwertbarer Daten einen fehlgeschlagenen Zugriff, was die beste Erkennung von allen ist. Wie sich der Zugang zu privilegierten Wegen grundsätzlich verengen lässt, steht im Beitrag Active Directory härten.
Fazit
BloodHound ist für Angreifer so wertvoll, weil es aus einem unübersichtlichen Verzeichnis eine Landkarte mit eingezeichnetem Weg zum Ziel macht, und es ist für Verteidiger so dankbar, weil das Erstellen dieser Landkarte laut ist. Die breite LDAP-Abfrage in 1644, die Sitzungsabfragen über srvsvc und wkssvc in 5145, die aufgezählten lokalen Gruppen in 4798 und 4799 und die Verbindungen zu vielen Hosts in Sysmon 3 erscheinen alle im selben kurzen Zeitfenster und tragen dieselbe Handschrift: ein Konto, das in Minuten mehr sieht, als ein Mensch je ansehen würde. Wer diese Ereignisse erfasst, ihre Voraussetzungen einrichtet und die beiden Regeln im Lab gegen einen echten Durchlauf prüft, erkennt den Angreifer in der Phase, in der er sich noch orientiert, und für ein Blue Team ist das der früheste und günstigste Zeitpunkt, an dem ein Angriff gestoppt werden kann.