"Das größte Problem bei der Netzwerkverteidigung ist, dass Verteidiger in Listen denken. Angreifer denken in Vektoren. Solange das so ist, gewinnen die Angreifer."
John Lambert
Das Zitat ist 10 Jahre alt und noch immer brandaktuell – aber was bedeutet es?
Es ist eine Aufforderung, unser Netzwerk durch die Augen eines Hackers zu sehen. Angreifer sehen einen Haufen Endpunkte, die durch gegenseitige Abhängigkeiten und zentralisierte Management-Tools miteinander verbunden sind.
Credentials (Zugangsdaten) geben dir Zugriff auf die Endpunkte.
Admin-Credentials geben dir Macht über die Endpunkte.
Auf diesen Endpunkten gespeicherte Credentials geben dir noch mehr Zugriffe und noch mehr Macht.
Daraus resultiert dann ein Vektor – ein Angriffspfad.
Angreifer springen von einem Vektor zum Nächsten
Hacker brauchen in Netzwerken entweder Schwachstellen oder Zugangsdaten, um sich zwischen den Endpunkten fortzubewegen. Wenn der erste Eintrittspunkt zum Beispiel ein normaler Office-Client in der Finanzabteilung ist, dann ist der Bewegungsradius zunächst sehr begrenzt. Wenn sich aber dort jemand vom Service-Desk für den IT-Support mit Admin-Credentials anmeldet, können sie gestohlen und auf anderen Clients wiederverwendet werden. Das können welche aus anderen Abteilungen sein, aber auch Clients aus der globalen IT, die wiederum Zugriff auf zentrale Steuerungs-Dienste wie Active Directory, File-Server oder Mail-Server haben.
Wenn Angreifer an Master-Secrets kommen, also an kryptografische Schlüssel auf Domain Controllern oder die Root Certificate Authority, können sie auch Credentials fälschen. Das verschafft ihnen natürlich einen massiven Vorteil, um sich ungehemmt auszubreiten. Game Over!
Folge den Credentials, nicht irgendwelchen Listen
Zentrale Systeme wie Active Directory, Software-Verteilung (SCCM) und Endpoint Protection (Anti-Virus) verwalten den Großteil deiner Endpunkte im Netzwerk. Damit die Systeme ihre Arbeit machen können, brauchen sie bestimmte Rechte. Diese Rechte werden über Service-Accounts bereitgestellt.
Wenn du nur einen einzigen Service-Account für die Verteilung der Software auf allen Clients verwendest, dann reicht es, wenn ein Angreifer lediglich einen Client kompromittiert, um automatisch Zugriff auf alle zu erhalten. Verwendest du pro Client eigene Zugangsdaten, dann könnten Hacker deinen Server für die Software-Verteilung kompromittieren, um die Kontrolle über alle Clients zu erhalten.
Hier ein paar Beispiele, wie die Rechte über das Active Directory indirekt vergeben werden:
- Client-Management: Der Domain Admin meldet sich von seinem Office-Client (E-Mail, Office, Internet) auf den Domain Controllern an. Die Admin-Credentials werden lokal verarbeitet (er gibt das Passwort ein) und sind im Arbeitsspeicher verfügbar. Die Client-Admins können den Arbeitsspeicher auslesen und werden so zu Domain Admins.
- Software-Verteilung: Wenn Updates über die Software-Verteilung auf den Domain Controllern verteilt werden, dann sind die Software-Paketierer automatisch auch Domain Admins, denn sie können dort beliebigen Code ausführen.
- Server-Backup: Wenn die Domain Controller vom Backup-Dienst gesichert werden, dann liegt die Active Directory Datenbank mit allen Passwort-Hashes auf den Backup-Servern. Die Backup-Admins sind dann auch Domain Admins. Das Active Directory selbst hat auch Service Accounts, die automatisch nicht geändert werden. Das heißt, selbst ein 5 Jahre altes Backup würde zur totalen Kompromittierung führen.
Was tun, Fisch? Wir haben doch keine Wahl, Fisch!
Wir müssen lernen umzudenken, was den Umgang mit Credentials betrifft, ohne die IT bei der Arbeit zu behindern.
Selbst wenn du 100.000 Endpunkte in deinem Netzwerk hast, sind es immer nur eine Handvoll, die alle Systeme zentral verwalten. Die IT ist es gewohnt, ihre Systeme nach Teams, Aufgaben und Abteilungen zu managen. Aber wenn es um Cybersecurity geht, reicht das nicht. Wir müssen uns fragen: "Wo werden Credentials verarbeitet?" und "Wer kann darüber verfügen?"
- Tipp #1: Verwende so viele "lokale Credentials" wie möglich. Clients und Server kannst du in per LAPS super managen. "Virtuelle Accounts" gibt es seit Server 2008 R2 und fast niemand kennt sie. Damit kannst du lokale Dienste isolieren.
- Tipp #2: Domain Admins dürfen sich nirgendwo, außer auf Domain Controllern anmelden. Das kannst du über "Authentication Policies" einfach steuern. Hast du Service Accounts die Domain Admins sind? Falls ja, weg damit! Es gibt effektiv keinen Grund, uneingeschränkte Berechtigungen zu delegieren. Das kannst du im Active Directory sehr einfach und sehr granular umsetzen.
- Tipp #3: Vermeide "Super Credentials" – also alle Service Accounts und Berechtigungsgruppen, die du auf eine relativ große Anzahl an Endpunkten verteilst. Müssen deine Server-Admins wirklich ständig auf hunderten, oder sogar tausenden Servern Berechtigungen haben? Konzepte wie "Just in Time Access" haben hier enorme Vorteile.
Tools wie Bloodhound können dir bei der Analyse helfen. Die sind auf den ersten Blick nicht unbedingt einfach zu verstehen, aber wenn du dich ein wenig mit ihnen beschäftigst, kriegst du das bestimmt hin. Falls du Hilfe brauchst, sprich mich gerne an.
Fazit
Es ist zwar wichtig, alle Systeme zu betreuen, abzusichern und zu aktualisieren, aber dabei darfst du das "Wie" nicht aus den Augen verlieren. Credentials sind wie eine Schattengesellschaft, die sich unbemerkt über deine IT-Systeme ausbreiten.
Sichere IT passiert nicht einfach so, schon gar nicht in verwobenen Strukturen, man muss sie sich MACHEN.