ACLs - DACLs/SACLs/ACEs
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9d7ebbf8&sv=1)
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Zugriffskontrollliste (ACL)
Eine Zugriffskontrollliste (ACL) besteht aus einer geordneten Menge von Zugriffskontrolleinträgen (ACEs), die die Schutzmaßnahmen für ein Objekt und dessen Eigenschaften festlegen. Im Wesentlichen definiert eine ACL, welche Aktionen von welchen Sicherheitsprinzipalen (Benutzern oder Gruppen) auf einem bestimmten Objekt erlaubt oder verweigert sind.
Es gibt zwei Arten von ACLs:
Discretionary Access Control List (DACL): Gibt an, welche Benutzer und Gruppen Zugriff auf ein Objekt haben oder nicht haben.
System Access Control List (SACL): Regelt die Überwachung von Zugriffsversuchen auf ein Objekt.
Der Prozess des Zugriffs auf eine Datei umfasst die Überprüfung des Sicherheitsdeskriptors des Objekts durch das System gegen das Zugriffstoken des Benutzers, um zu bestimmen, ob der Zugriff gewährt werden soll und in welchem Umfang, basierend auf den ACEs.
Wichtige Komponenten
DACL: Enthält ACEs, die Benutzern und Gruppen Zugriffsberechtigungen für ein Objekt gewähren oder verweigern. Es ist im Wesentlichen die Haupt-ACL, die die Zugriffsrechte diktiert.
SACL: Wird zur Überwachung des Zugriffs auf Objekte verwendet, wobei ACEs die Arten von Zugriff definieren, die im Sicherheitsereignisprotokoll protokolliert werden. Dies kann von unschätzbarem Wert sein, um unbefugte Zugriffsversuche zu erkennen oder Zugriffsprobleme zu beheben.
Systeminteraktion mit ACLs
Jede Benutzersitzung ist mit einem Zugriffstoken verbunden, das sicherheitsrelevante Informationen für diese Sitzung enthält, einschließlich Benutzer-, Gruppenidentitäten und Berechtigungen. Dieses Token enthält auch eine Anmeldesicherheit-ID (SID), die die Sitzung eindeutig identifiziert.
Die Local Security Authority (LSASS) verarbeitet Zugriffsanforderungen für Objekte, indem sie die DACL auf ACEs überprüft, die mit dem Sicherheitsprinzipal übereinstimmen, der auf den Zugriff zugreift. Der Zugriff wird sofort gewährt, wenn keine relevanten ACEs gefunden werden. Andernfalls vergleicht LSASS die ACEs mit der SID des Sicherheitsprinzipals im Zugriffstoken, um die Zugangsberechtigung zu bestimmen.
Zusammengefasster Prozess
ACLs: Definieren Zugriffsberechtigungen durch DACLs und Überwachungsregeln durch SACLs.
Zugriffstoken: Enthält Benutzer-, Gruppen- und Berechtigungsinformationen für eine Sitzung.
Zugriffsentscheidung: Wird durch den Vergleich der DACL-ACEs mit dem Zugriffstoken getroffen; SACLs werden zur Überwachung verwendet.
ACEs
Es gibt drei Haupttypen von Zugriffskontrolleinträgen (ACEs):
Access Denied ACE: Dieser ACE verweigert ausdrücklich den Zugriff auf ein Objekt für bestimmte Benutzer oder Gruppen (in einer DACL).
Access Allowed ACE: Dieser ACE gewährt ausdrücklich den Zugriff auf ein Objekt für bestimmte Benutzer oder Gruppen (in einer DACL).
System Audit ACE: Innerhalb einer System Access Control List (SACL) positioniert, ist dieser ACE verantwortlich für die Erstellung von Prüfprotokollen bei Zugriffsversuchen auf ein Objekt durch Benutzer oder Gruppen. Er dokumentiert, ob der Zugriff erlaubt oder verweigert wurde und die Art des Zugriffs.
Jeder ACE hat vier kritische Komponenten:
Die Sicherheitskennung (SID) des Benutzers oder der Gruppe (oder deren Hauptname in einer grafischen Darstellung).
Ein Flag, das den ACE-Typ identifiziert (Zugriff verweigert, erlaubt oder Systemaudit).
Vererbungsflags, die bestimmen, ob untergeordnete Objekte den ACE von ihrem übergeordneten Objekt erben können.
Eine Zugriffsmaske, ein 32-Bit-Wert, der die gewährten Rechte des Objekts angibt.
Die Zugriffsbestimmung erfolgt durch die sequentielle Überprüfung jedes ACE, bis:
Ein Access-Denied ACE ausdrücklich die angeforderten Rechte für einen Treuhänder im Zugriffstoken verweigert.
Access-Allowed ACE(s) ausdrücklich alle angeforderten Rechte für einen Treuhänder im Zugriffstoken gewähren.
Nach der Überprüfung aller ACEs, wenn kein angefordertes Recht ausdrücklich erlaubt wurde, wird der Zugriff implizit verweigert.
Reihenfolge der ACEs
Die Art und Weise, wie ACEs (Regeln, die sagen, wer auf etwas zugreifen kann oder nicht) in einer Liste namens DACL angeordnet sind, ist sehr wichtig. Dies liegt daran, dass das System, sobald es den Zugriff basierend auf diesen Regeln gewährt oder verweigert, aufhört, die restlichen zu überprüfen.
Es gibt eine beste Möglichkeit, diese ACEs zu organisieren, und sie wird als "kanonische Reihenfolge" bezeichnet. Diese Methode hilft sicherzustellen, dass alles reibungslos und fair funktioniert. So geht es für Systeme wie Windows 2000 und Windows Server 2003:
Zuerst alle Regeln, die speziell für dieses Element erstellt wurden, vor die, die von woanders stammen, wie einem übergeordneten Ordner.
In diesen spezifischen Regeln die, die "nein" (verweigern) sagen, vor die, die "ja" (erlauben) sagen.
Für die Regeln, die von woanders stammen, beginnen Sie mit denjenigen aus der nächsten Quelle, wie dem übergeordneten, und gehen Sie dann von dort zurück. Wiederum "nein" vor "ja."
Diese Anordnung hilft auf zwei große Arten:
Sie stellt sicher, dass, wenn es ein spezifisches "nein" gibt, es respektiert wird, egal welche anderen "ja"-Regeln vorhanden sind.
Sie ermöglicht es dem Eigentümer eines Elements, das letzte Wort darüber zu haben, wer Zugang erhält, bevor irgendwelche Regeln von übergeordneten Ordnern oder weiter zurück in Kraft treten.
Durch diese Vorgehensweise kann der Eigentümer einer Datei oder eines Ordners sehr präzise festlegen, wer Zugang erhält, und sicherstellen, dass die richtigen Personen Zugang haben und die falschen nicht.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fwww.ntfs.com%2Fimages%2Fscreenshots%2FACEs.gif&width=768&dpr=4&quality=100&sign=7b958cad&sv=1)
So geht es bei dieser "kanonischen Reihenfolge" darum, sicherzustellen, dass die Zugriffsregeln klar und gut funktionieren, spezifische Regeln zuerst zu setzen und alles auf intelligente Weise zu organisieren.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9d7ebbf8&sv=1)
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
GUI-Beispiel
Dies ist die klassische Sicherheitseinstellung eines Ordners, die die ACL, DACL und ACEs zeigt:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-2fbc178d70483f43f342bb107df16b3bf9b0c7cb%252Fclassicsectab.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4d1ad39&sv=1)
Wenn wir auf die Erweitert-Taste klicken, erhalten wir weitere Optionen wie Vererbung:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-6cf439dc1c168bceb635170f0f9a576d6abd1107%252Faceinheritance.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9444b43a&sv=1)
Und wenn Sie einen Sicherheitsprinzipal hinzufügen oder bearbeiten:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-d4a366bde367ca5b3d6254e3870d259f75ed8250%252Feditseprincipalpointers1.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=87b5fc20&sv=1)
Und zuletzt haben wir die SACL im Überwachungs-Tab:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-44da0e04faa93bbc00457bf204318a34a3e4bc14%252Faudit-tab.jpg%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=e3116f3&sv=1)
Erklärung der Zugriffskontrolle auf vereinfachte Weise
Bei der Verwaltung des Zugriffs auf Ressourcen, wie einen Ordner, verwenden wir Listen und Regeln, die als Zugriffskontrolllisten (ACLs) und Zugriffskontrolleinträge (ACEs) bekannt sind. Diese definieren, wer auf bestimmte Daten zugreifen kann oder nicht.
Zugriff für eine bestimmte Gruppe verweigern
Stellen Sie sich vor, Sie haben einen Ordner namens Kosten, und Sie möchten, dass jeder darauf zugreifen kann, außer dem Marketingteam. Durch die korrekte Einrichtung der Regeln können wir sicherstellen, dass dem Marketingteam ausdrücklich der Zugriff verweigert wird, bevor allen anderen der Zugriff erlaubt wird. Dies geschieht, indem die Regel, die den Zugriff für das Marketingteam verweigert, vor der Regel platziert wird, die den Zugriff für alle erlaubt.
Zugriff für ein bestimmtes Mitglied einer verweigerten Gruppe erlauben
Angenommen, Bob, der Marketingleiter, benötigt Zugriff auf den Kostenordner, obwohl das Marketingteam im Allgemeinen keinen Zugriff haben sollte. Wir können eine spezifische Regel (ACE) für Bob hinzufügen, die ihm Zugriff gewährt, und sie vor der Regel platzieren, die den Zugriff für das Marketingteam verweigert. Auf diese Weise erhält Bob Zugriff, trotz der allgemeinen Einschränkung für sein Team.
Verständnis der Zugriffskontrolleinträge
ACEs sind die einzelnen Regeln in einer ACL. Sie identifizieren Benutzer oder Gruppen, geben an, welcher Zugriff erlaubt oder verweigert wird, und bestimmen, wie diese Regeln auf Unterelemente angewendet werden (Vererbung). Es gibt zwei Haupttypen von ACEs:
Generische ACEs: Diese gelten allgemein und betreffen entweder alle Arten von Objekten oder unterscheiden nur zwischen Containern (wie Ordnern) und Nicht-Containern (wie Dateien). Zum Beispiel eine Regel, die Benutzern erlaubt, den Inhalt eines Ordners zu sehen, aber nicht auf die darin enthaltenen Dateien zuzugreifen.
Objektspezifische ACEs: Diese bieten eine genauere Kontrolle, indem sie Regeln für spezifische Arten von Objekten oder sogar einzelne Eigenschaften innerhalb eines Objekts festlegen. Zum Beispiel könnte in einem Verzeichnis von Benutzern eine Regel es einem Benutzer erlauben, seine Telefonnummer zu aktualisieren, aber nicht seine Anmeldezeiten.
Jeder ACE enthält wichtige Informationen wie, auf wen die Regel zutrifft (unter Verwendung einer Sicherheitskennung oder SID), was die Regel erlaubt oder verweigert (unter Verwendung einer Zugriffsmaske) und wie sie von anderen Objekten vererbt wird.
Wichtige Unterschiede zwischen ACE-Typen
Generische ACEs sind für einfache Zugriffskontrollszenarien geeignet, bei denen dieselbe Regel auf alle Aspekte eines Objekts oder auf alle Objekte innerhalb eines Containers zutrifft.
Objektspezifische ACEs werden für komplexere Szenarien verwendet, insbesondere in Umgebungen wie Active Directory, wo Sie möglicherweise den Zugriff auf spezifische Eigenschaften eines Objekts unterschiedlich steuern müssen.
Zusammenfassend helfen ACLs und ACEs, präzise Zugriffskontrollen zu definieren, um sicherzustellen, dass nur die richtigen Personen oder Gruppen Zugriff auf sensible Informationen oder Ressourcen haben, mit der Möglichkeit, die Zugriffsrechte bis auf die Ebene einzelner Eigenschaften oder Objekttypen anzupassen.
Layout der Zugriffskontrolleinträge
ACE-Feld | Beschreibung |
---|---|
Typ | Flag, das den Typ des ACE angibt. Windows 2000 und Windows Server 2003 unterstützen sechs Typen von ACE: Drei generische ACE-Typen, die an alle sicherbaren Objekte angehängt sind. Drei objektspezifische ACE-Typen, die für Active Directory-Objekte auftreten können. |
Flags | Eine Reihe von Bit-Flags, die Vererbung und Überwachung steuern. |
Größe | Anzahl der Bytes an Speicher, die für den ACE zugewiesen sind. |
Zugriffsmaske | 32-Bit-Wert, dessen Bits den Zugriffsrechten für das Objekt entsprechen. Bits können entweder ein- oder ausgeschaltet werden, aber die Bedeutung der Einstellung hängt vom ACE-Typ ab. Wenn beispielsweise das Bit, das dem Recht entspricht, Berechtigungen zu lesen, eingeschaltet ist und der ACE-Typ Verweigern ist, verweigert der ACE das Recht, die Berechtigungen des Objekts zu lesen. Wenn dasselbe Bit eingeschaltet ist, der ACE-Typ jedoch Erlauben ist, gewährt der ACE das Recht, die Berechtigungen des Objekts zu lesen. Weitere Details zur Zugriffsmaske erscheinen in der nächsten Tabelle. |
SID | Identifiziert einen Benutzer oder eine Gruppe, deren Zugriff durch diesen ACE kontrolliert oder überwacht wird. |
Layout der Zugriffsmaske
Bit (Bereich) | Bedeutung | Beschreibung/Beispiel |
---|---|---|
0 - 15 | Objektspezifische Zugriffsrechte | Daten lesen, Ausführen, Daten anhängen |
16 - 22 | Standardzugriffsrechte | Löschen, ACL schreiben, Eigentümer schreiben |
23 | Kann auf Sicherheits-ACL zugreifen | |
24 - 27 | Reserviert | |
28 | Generisch ALLE (Lesen, Schreiben, Ausführen) | Alles darunter |
29 | Generisch Ausführen | Alle Dinge, die notwendig sind, um ein Programm auszuführen |
30 | Generisch Schreiben | Alle Dinge, die notwendig sind, um in eine Datei zu schreiben |
31 | Generisch Lesen | Alle Dinge, die notwendig sind, um eine Datei zu lesen |
Referenzen
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-78abb7891633b1e8147b4e743e4f00af375d3cd6%252Fimage%2520%2848%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9d7ebbf8&sv=1)
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Last updated