
Mein Weg zur Informationssicherheit begann mit einer überraschenden Entdeckung: „sicher ≠ verschlüsselt“. Diese Aussage sieht jetzt einfach und offensichtlich aus, und im ersten Jahr hat das Bewusstsein für diese Tatsache einen Effekt hervorgebracht, der mit der mentalen Atombombe vergleichbar ist. Die Informationssicherheit wurde angegriffen, indem die Grenzen des Themenbereichs erweitert wurden: Es stellte sich heraus, dass Kryptographie nur eine Verteidigungslinie ist und dass es am Ende auch rechtliche, organisatorische und einfach physische gibt. Einer der theoretischen Aspekte war "Alle Fragen der Informationssicherheit werden durch den Zugang der Probanden zu Objekten beschrieben." Er lernte auswendig, zeichnete die Zugangsmodelle für Berechtigungsnachweise und Ermessensspielräume, erzählte, bestand und vergaß.
Ich bin spezialisiert auf Sicherheitsanalysen von Windows-Anwendungen. Sehr oft nimmt die Untersuchung genau unterschiedlicher Zugriffsrechte einen wesentlichen Teil der Studie ein. Um die Suche nach seltsamen oder falschen Zugriffsrechten zu automatisieren, musste ich die SDDL (Security Descriptor Definition Language) verstehen. Wer möchte lernen, Rechte in Form von SDDL zu lesen (zum Beispiel so etwas wie
O: SYG: SYD: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) ) und machen Sie sich mit meinem Dienstprogramm für die Arbeit mit Deskriptoren in diesem Format vertraut, willkommen bei cat.
SDDL-Format
SDDL ist eine Zeichenfolge mit Beschreibungen der Zugriffsrechte in Textform. Besteht meistens aus drei Teilen: Eigentümer-, Gruppen- und DACL-Zugriffsrechte. Manchmal wird der SACL-Teil hinzugefügt - der Audit-Teil (wenn Aktionen mit dem Objekt den SACL-Regeln entsprechen, wird ein Systemereignis erstellt, das von verschiedenen Systemen leicht verfolgt werden kann). Der Deskriptor sieht folgendermaßen aus:
O: <Eigentümer> G: <Gruppe> D: <DACL-Zugriffsregeln> S: <SACL-Überwachungsregeln>

Somit kann das obige Beispiel wie folgt zerlegt werden:
- O: SY
- G: SY
- D: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA);
Der Eigentümer und die Gruppe können als SID des Benutzers oder der Gruppe des Betriebssystems oder als spezielle Abkürzungen angegeben werden. In diesem Fall ist der Eigentümer und die Gruppe SY beispielsweise das lokale Systemkonto (NT AUTHORITY \ SYSTEM). Die Liste der Abkürzungen (leider nicht vollständig) finden Sie
hier .
Zugriffsregeln bestehen aus der Aufzählung von DACL-Flags und ACE-Zeichenfolgen (Access Control Entries). Eine detaillierte Analyse von ACE wird
hier vorgestellt, wir werden die wichtigste betrachten. Jede ACE-Zeile ist in Klammern eingeschlossen, in denen die Daten durch ein Semikolon getrennt sind.
Von größtem Interesse sind die erste, dritte und letzte Gruppe. Dies ist die Art des Zugriffs (zulässig "A", verboten "D"), eine Liste von Aktionen und der Name des Zugriffsthemas. Die erste DACL-Regel aus dem obigen Beispiel: (A ;; CCLCSWLOCRRC ;;; IU) werden wir im Detail betrachten.

- "A" - die Regel erlaubt Aktionen für das Subjekt;
- "CC", "LC", "SW", "LO", "CR", "RC" - eine Liste der zulässigen Aktionen;
- "IU" - diese Abkürzung bezeichnet die Gruppe "Interaktive angemeldete Benutzer".
Es bleibt zu verstehen, was genau erlaubt ist. Was bedeuten diese mysteriösen "CC", "LC", "SW", "LO", "CR", "RC"?
Hier warten wir auf eine weitere Falle - es ist nicht immer möglich, die Aktion durch Reduktion genau anzuzeigen. Sie sind sozusagen kontextspezifisch. Wenn es sich beispielsweise um die Rechte zum Arbeiten mit Diensten handelt, bedeutet WP "Beenden des Dienstes", wenn es sich um Dateien handelt, dann "Ausführen" und wenn es sich um Ordner handelt, dann "Durchlaufen" (Zugriff auf Dateien in einem Ordner nach Namen, wenn dies nicht möglich ist Listeninhalt). Einige Beschreibungen sind
hier , andere
hier , mit der Welt in einem Thread.
Hey, du hast so viel über DACL-Flags, ACE-Flags und Vererbung verpasstJa, das ist alles sehr wichtig und interessant, aber es ist nicht so häufig. Ich konzentriere mich auf die Masse. Bei einzelnen Erscheinungsformen ungewöhnlicher Flags ist dies im manuellen Modus leichter zu verstehen.
Automatisierung
Die Sysinternals-Dienstprogramme helfen mir wirklich, nämlich
Process Monitor und
Access Check (auch bekannt als procmon und accesschk). Mit der ersten können Sie Datei- und Registrierungszugriffe in Echtzeit anzeigen, und mit der zweiten können Sie Informationen über Sicherheitsbeschreibungen vom Betriebssystem sammeln.
Übrigens sieht im Betriebssystem selbst das Fenster mit den Rechten so aus, wenn jemand nicht gesehen hat:

Leider kann die Ausgabe von accesschk nicht herausgefiltert werden, indem die Anforderung von Rechten auf bestimmte Aktionen eingegrenzt wird. Der Prozessmonitor zeigt nur die tatsächlichen Anrufe zu einem bestimmten Zeitpunkt an und Sie erhalten eine zu genaue Anfrage, die nicht direkt betroffen ist. Außerdem möchte ich ein Memo darüber haben, welche Art von Benutzergruppe
NO oder
NS ist und welche Aktionen hinter CC und RC verborgen sind.
So wurde ein einfaches Dienstprogramm zum Anzeigen und Filtern von SDDL-Datensätzen entwickelt.
Wie man es benutzt
Die Arbeit mit dem Dienstprogramm ist einfach, nur drei Schritte:
- Holen Sie sich SDDL-Datensätze.
- Definieren Sie Regelfilter.
- Bericht anzeigen.

Lesen Sie mehr über jeden Schritt.
SDDL erhalten. Um SDDL-Datensätze abzurufen, können Sie die im Dienstprogramm integrierten Funktionen verwenden (Schaltflächen 1, 2, 3 oder 4) oder die zuvor erhaltene Liste herunterladen (Schaltfläche 5). Bitte beachten Sie, dass die Anforderung von Zugriffsrechten im Namen des Benutzers erfolgt, der den SDDL Viewer gestartet hat. In einigen Situationen lohnt es sich daher, das Programm nicht nur als regulärer Benutzer, sondern auch als Administrator auszuführen. Nun, im Allgemeinen kann das Feld selbst mit SDDL-Zeilen bearbeitet werden - Sie können es zumindest manuell umschreiben.
Die Filterung erfolgt nach zwei Parametern: Benutzergruppen und Zugriffsrechte. Die Liste der Gruppen und Benutzer basiert auf allen in der SDDL genannten Benutzern. Beachten Sie das Kontrollkästchen SIDs übersetzen (6). Wenn es installiert ist, wird die SID von Benutzern und Gruppen nach Möglichkeit in Namen relativ zum aktuellen Computer übersetzt. Die Liste der Rechte ist etwas übersichtlicher angeordnet. Sie müssen die Kategorie der Rechte auswählen (wenn die SDDL mit dem Dienstprogramm selbst gefüllt ist, wird automatisch die erforderliche Kategorie ausgewählt). Außerdem werden die in der SDDL vorhandenen Rechte in der Liste der Rechte deutlicher hervorgehoben.
Der Bericht ist einfach das Ergebnis der Entschlüsselung von SDDL und der Anwendung von Filtern. Sie können detailliertere Informationen zu jeder Zeile erhalten, wenn Sie sie in der Liste auswählen (ja, mit dieser Funktion habe ich einen Gag erhalten, der zu ein
wenig Recherche über .NET-Interna geführt hat ).
Zusammenfassung
Der Quellcode ist auf
github verfügbar. Binärdateien befinden sich ebenfalls im Abschnitt
Release .
Meine Versorgungspläne:
- Fügen Sie den Eingabefeldern von SDDL eine Suche hinzu - dennoch reicht nur das Filtern nicht aus.
- Fügen Sie Startparameter hinzu, mit denen Berichte ohne visuellen Teil erstellt werden können.
- Vielleicht sollten Sie SDDL-Auffüllungen von Prozessen, freigegebenen Ordnern und Druckern hinzufügen?
Ich freue mich über Vorschläge in den Kommentaren.