Purple Knight

Ein lokales Active Directory wird uns auch noch die nächsten Jahre begleiten. Für die Sicherheit der Server und Dienste in der Cloud ist der jeweilige Anbieter zuständig. Aber die Authentifizierung der erfolgt in den meisten Fällen per PHS, PTA oder ADFS und ist damit direkt von der Sicherheit ihres eigenen Active Directory abhängig. Sie sollten diesen Zustand immer mal wieder überprüfen. Es haben sich einige "Best practices" bewährt und Programme wie Ping Castle oder Purple Knight helfen ihnen, diese zu bewerten.

Download, Einrichtung und Start

Sie finden Purple Knight auf der Seite https://www.purple-knight.com/ und der Download ist leicht zu finden. Allerdings möchte der Anbieter (Semperis, www.semperis.com) über ein Formular schon wissen, wer die Software einsetzt. Sicher können Sie hier wilde Daten und auch eine Einmal-Mailadresse eintragen. Ich habe damals meine korrekten Daten angegeben und wurde nie mit Werbung oder Vertriebskontakten belästigt. Eine Firma, die im Beriech Sicherheit unterwegs ist, tut auch gut daran hier seriös zu bleiben.

Sie bekommen dann per Mail einen Downloadlink zugesendet. Im Sep 2022 war die Community Version 2.0 ein ca. 100 MB großes ZIP-Archiv, welches von Hand ausgepackt werden muss.

Eine klassische Installation ist gar nicht erforderlich. Relevant ist die 100 MB große "PurpleKnight.exe", die Sie direkt ohne privilegierte Berechtigungen starten können:

Das bedeutet, dass in einer Windows Umgebung auch ein Mitarbeiter mit "Domain User"-Rechten des Programm sehr einfach starten und die Ergebnisse betrachten kann. Aber "Security by Obscurity" war noch nie ein guter Ratgeber und die bösen Jungs (und Mädels natürlich) haben die gleichen Rechte.

Nach der Betätigung der Lizenzvereinbarung müssen Sie die Zielumgebung definieren. War es früher noch das lokale AD kann die aktuelle Version auch ein AzureAD auslesen und auswerten.

Ich finde den Weg interessant (und sehr gut), denn Semperis für die Verbindung zum AzureAD gewählt hat. Hier wird nicht einfach nach den Zugangsdaten eines "GlobalAdmin" oder eines Benutzers gefragt, mit dem das Tool dann die Verbindung herstellt. Stattdessen müssen Sie als Administrator eine "AppRegistration" vornehmen und dieser App die erforderlichen Rechte zuweisen. Die notwendigen Rechte sind gut beschrieben und beschränken sich wirklich auf "ReadOnly"-Rechte.


Quelle: Create and Configure Application Registration
https://docs.purple-knight.com/community/purpleknight/pk-create-configure-app-registration.htm 

Das gefällt mir, da es dem Prinzip der Minimalen Rechte ("least privilege") folgt.

Für meinen Test reicht mir erst einmal das lokale AD.

Der nächste Schritt dauert etwas länger denn das Hauptprogramm ruft anscheinend im "/Scripts"-Verzeichnis die verschiedenen PowerShell-Skripte mit dem Parameter "-Metadata" auf, damit die Skripte eine JSON-Struktur zurückgeben.

Anhand dieser Informationen baut das Hauptprogramme eine Liste der Checks samt Beschreibung auf, aus denen Sie dann Test selektieren können:

Standardmäßig sind 98 von 99 Test ausgewählt. Bei mir hat Purple Knight den "Zerologon vulnerability" deaktiviert.

Bei Stufe 4: Progress werden im Hintergrund dann wohl die PowerShell-Skripte aufgerufen, um die verschiedenen Prüfungen durchzuführen. Die GUI zeigt den Fortschritt an:

Währenddessen sehen sie im Taskmanager die verschiedenen PowerShell-Instanzen kommen und gehen. 

Nach Abschluss der Tests sehen Sie ein erstes Rating:

Die Ergebnisse landen im OUTPUT-Verzeichnis von PurpleKnight und liegen einmal als XLSX-Datei und als HTML-Datei vor.

Report

Der Bericht ist in mehrere Abschnitte gegliedert und startet mit einem "Overall Score", gefolgt von einer Liste der "Indicator of Exposure" (IOE) nach ihrem Schweregrad. Ich picke hier hier aber erst einmal die Übersicht nach Kategorien heraus, die selbst in meiner kleinen "Familiendomäne" schon einige Überraschungen bietet.

Kurz darunter findet sich dann die Liste der einzelnen möglichen Schwachstellen.

Jeder Eintrag ist mit einem weiterführenden Link verbunden. Exemplarisch habe ich den ersten DCSYNC-IOE herausgepickt:

In meinem Lab/Test ist das ok, da ich hier z.B. das Skript GET-ADChanges entwickelt, habe, welches mit einem Dienstkonto über die DirSync-API ein Change-Tracking macht. In einem produktiven Netzwerk sollten sie natürlich genau wissen, welche Konten dieses sensible Recht haben, denn über die API kann ich mich quasi als "Domain Controller" ausgeben und so auch Kennwort-Hashwerte und jegliche Änderung quasi in Realtime erhalten.

Auch den nächsten Fehler dürften die meisten Firmen erhalten.

Microsoft empfiehlt das regelmäßige Ändern des KRBTGT-Userkennworts zumindest einmal im Jahr. Siehe auch KRBTGT Key Rollover.

Einschätzung

"Danke, Semperis", für die kostenfreie Bereitstellung eines solchen Werkzeugs, um verschiedene "Best Practices" eines lokalen Active Directories und AzureAD zu überprüfen. Ich kann jedem mit Verantwortung für ein Active Directory nur dazu raten, ab uns an mal ein Programm wie Purple Knight oder Ping Castle zu starten. Vielleicht müssen Sie nicht alle "Findings" behandeln aber sie sollten zumindest bewerten, ob die Schwächen für ihre Umgebung relevant sind. Es sollte zumindest ein Weckruf sein, wie einfach jeder Domain-Benutzer ihr lokales Windows Netzwerk lesen und auswerten kann.

Purple Knight erfordert, dass sie aktiv das Programm starten. Es soll nicht verschwiegen werden, dass es für kontinuierliche Überwachungen von Semperis ein kommerzielles Produkt (Directory Services Protector) gibt. Übrigens: Von Microsoft gibt es auch einen "Security Score". Allerdings ist der Service in der Cloud für die verschiedenen Microsoft Cloud-Produkte.

Mein Tipp: Gehen Sie auf www.purpleknight.com.

Weitere Links