
Analyse von AD-Domänen auf Sicherheitsrisiken im Zusammenhang mit Benutzerkonten
Das Projekt besteht aus folgenden Repositorys:
Es dient ausschließlich zu Bildungszwecken.
Verwenden Sie es nicht in der Produktions-Active-Directory-Umgebung (AD).
Keiner der Mitwirkenden übernimmt Verantwortung für die Nutzung.
Besuchen Sie unseren Red-Team-Community Telegram-Kanal
Für die visuelle Beschreibung öffnen Sie die Diagrammdateien mit dem Tool diagrams.net.
Die Anwendung besteht aus:
Die DC Sonar Community bietet Funktionen zur Analyse von AD-Domänen auf Sicherheitsrisiken in Bezug auf Konten:
Registrieren einer zu analysierenden AD-Domäne in der App

Status der Domänenanalyseprozesse anzeigen

NTLM-Hashes aus festgelegten AD-Domänen extrahieren und knacken, um Konten mit schwachen und angreifbaren Passwörtern aufzulisten

AD-Domänenkonten analysieren, um solche mit nie ablaufenden Passwörtern aufzulisten

AD-Domänenkonten anhand ihrer NTLM-Passwort-Hashes analysieren, um Konten und Domänen zu ermitteln, in denen Passwörter wiederholt werden

In Arbeit ...
Es wird angenommen, dass Sie ein sauberes Ubuntu Server 22.04 und ein Konto mit dem Benutzernamen „user“ haben.
Die Anwendung wird nach /home/user/dc-sonar installiert.
Zukünftige Versionen werden möglicherweise eine flexiblere Installation bieten.
Laden Sie dc_sonar_NNNN.N.NN-N_amd64.tar.gz von der letzten Distribution auf den Server herunter.
Erstellen Sie einen Ordner zum Extrahieren der Dateien:
mkdir dc_sonar_NNNN.N.NN-N_amd64
Entpacken Sie das heruntergeladene Archiv:
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Wechseln Sie in den Ordner mit den extrahierten Dateien:
cd dc_sonar_NNNN.N.NN-N_amd64/
PostgreSQL installieren:
sudo bash install_postgresql.sh
RabbitMQ installieren:
sudo bash install_rabbitmq.sh
Abhängigkeiten installieren:
sudo bash install_dependencies.sh
Es wird um Bestätigung zum Hinzufügen des Repositorys ppa:deadsnakes/ppa gebeten. Drücken Sie die Enter-Taste.
dc-sonar selbst installieren:
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Es wird nach Informationen zum Erstellen eines Django-Admin-Benutzers gefragt. Geben Sie Benutzername, E-Mail und Passwort an.
Es wird zweimal nach Informationen zum Erstellen eines selbstsignierten SSL-Zertifikats gefragt. Geben Sie die erforderlichen Informationen an.
Öffnen Sie: https://localhost
Geben Sie die Django-Admin-Benutzerdaten ein, die während des vorherigen Installationsprozesses festgelegt wurden.
Siehe Informationen in STYLE_GUIDE.md
In Arbeit ...
In diesem Fall richten wir die Umgebung zum Bearbeiten von Code auf dem Windows-Host ein, während der Python-Code auf dem Ubuntu-Gast ausgeführt wird.
Erstellen Sie eine virtuelle Maschine mit 2 CPUs, 2048 MB RAM, 10 GB SSD unter Verwendung des Ubuntu Server 22.04-ISOs in VirtualBox.
Falls der Ubuntu-Installer vor der Installation der VM ein Update des Ubuntu-Installers verlangt, bestätigen Sie dies.
Wählen Sie die Installation des OpenSSH-Servers.
VirtualBox-Portweiterleitungsregeln:
Laden Sie Python 3.10.5 herunter und installieren Sie es.
Erstellen Sie einen Ordner für das DC Sonar-Projekt.
Wechseln Sie mit Git for Windows in den Projektordner:
cd '{PATH_TO_FOLDER}'
Führen Sie die Windows-Installationsschritte für dc-sonar-user-layer aus.
Führen Sie die Windows-Installationsschritte für dc-sonar-workers-layer aus.
Führen Sie die Windows-Installationsschritte für ntlm-scrutinizer aus.
Führen Sie die Windows-Installationsschritte für dc-sonar-frontend aus.
Führen Sie die Schritte von „Open VirtualBox“ bis „Reboot VM“ aus, fügen Sie jedoch der VM VirtualBox Freigabeordner mit „Auto-mount“ hinzu, wie im Bild unten:

Nach dem Neustart führen Sie folgenden Befehl aus:
sudo adduser $USER vboxsf
Melden Sie sich ab und wieder an für das verwendete Benutzerkonto.
Im Verzeichnis /home/user können Sie die gemounteten Ordner verwenden:
ls -l
Ausgabe:
total 12
drwxrwx--- 1 root vboxsf 4096 Jul 19 13:53 dc-sonar-user-layer
drwxrwx--- 1 root vboxsf 4096 Jul 19 10:11 dc-sonar-workers-layer
drwxrwx--- 1 root vboxsf 4096 Jul 19 14:25 ntlm-scrutinizer
Installieren Sie PostgreSQL auf Ubuntu 20.04:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Erstellen Sie das Datenbank-Admin-Konto:
sudo -u postgres createuser --interactive
Ausgabe:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Erstellen Sie das Datenbankkonto dc_sonar_workers_layer:
sudo -u postgres createuser --interactive
Ausgabe:
Enter name of role to add: dc_sonar_workers_layer
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Erstellen Sie das Datenbankkonto dc_sonar_user_layer:
sudo -u postgres createuser --interactive
Ausgabe:
Enter name of role to add: dc_sonar_user_layer
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Erstellen Sie die Datenbank back_workers_db:
sudo -u postgres createdb back_workers_db
Erstellen Sie die Datenbank web_app_db:
sudo -u postgres createdb web_app_db
Führen Sie psql aus:
sudo -u postgres psql
Legen Sie ein Passwort für das Admin-Konto fest:
ALTER USER admin WITH PASSWORD '{IHR_PASSWORT}';
Legen Sie ein Passwort für das Konto dc_sonar_workers_layer fest:
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{IHR_PASSWORT}';
Legen Sie ein Passwort für das Konto dc_sonar_user_layer fest:
ALTER USER dc_sonar_user_layer WITH PASSWORD '{IHR_PASSWORT}';
Erteilen Sie CRUD-Berechtigungen für das Konto dc_sonar_workers_layer auf der Datenbank back_workers_db:
\c back_workers_db
GRANT CONNECT ON DATABASE back_workers_db to dc_sonar_workers_layer;
GRANT USAGE ON SCHEMA public to dc_sonar_workers_layer;
GRANT ALL ON ALL TABLES IN SCHEMA public TO dc_sonar_workers_layer;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO dc_sonar_workers_layer;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO dc_sonar_workers_layer;
Erteilen Sie CRUD-Berechtigungen für das Konto dc_sonar_user_layer auf der Datenbank web_app_db:
\c web_app_db
GRANT CONNECT ON DATABASE web_app_db to dc_sonar_user_layer;
GRANT USAGE ON SCHEMA public to dc_sonar_user_layer;
GRANT ALL ON ALL TABLES IN SCHEMA public TO dc_sonar_user_layer;
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO dc_sonar_user_layer;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO dc_sonar_user_layer;
Beenden Sie psql:
\q
Öffnen Sie die Datei pg_hba.conf:
sudo nano /etc/postgresql/12/main/pg_hba.conf
Fügen Sie die Zeile für die Verbindung hinzu, um die Verbindung vom Host-Rechner zu PostgreSQL zu erlauben, speichern Sie die Änderungen und schließen Sie die Datei:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Öffnen Sie die Datei postgresql.conf:
sudo nano /etc/postgresql/12/main/postgresql.conf
Ändern Sie die unten angegebenen Parameter, speichern Sie die Änderungen und schließen Sie die Datei:
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Starten Sie den PostgreSQL-Dienst neu:
sudo service postgresql restart
Überprüfen Sie den Status des PostgreSQL-Dienstes:
service postgresql status
Überprüfen Sie bei Bedarf die Log-Datei:
tail -f /var/log/postgresql/postgresql-12-main.log
Jetzt können Sie mit dem Admin-Konto und einem Client wie DBeaver von Windows aus eine Verbindung zu den erstellten Datenbanken herstellen.
Installieren Sie RabbitMQ mit dem Skript.
Aktivieren Sie das Management-Plugin:
sudo rabbitmq-plugins enable rabbitmq_management
Erstellen Sie das RabbitMQ-Admin-Konto:
sudo rabbitmqctl add_user admin {IHR_PASSWORT}
Markieren Sie den erstellten Benutzer für den vollständigen Zugriff auf die Management-UI und die HTTP-API:
sudo rabbitmqctl set_user_tags admin administrator
Öffnen Sie die Management-UI unter http://localhost:15672/.
Stellen Sie sicher, dass Ihr System aktualisiert und die erforderlichen Pakete installiert sind:
sudo apt update && sudo apt upgrade -y
Installieren Sie die erforderliche Abhängigkeit zum Hinzufügen benutzerdefinierter PPAs:
sudo apt install software-properties-common -y
Fahren Sie dann fort und fügen Sie das deadsnakes-PPA wie unten gezeigt zur APT-Paketmanager-Quellenliste hinzu:
sudo add-apt-repository ppa:deadsnakes/ppa
Python 3.10 herunterladen:
sudo apt install python3.10=3.10.5-1+focal1
Installieren Sie die Abhängigkeiten:
sudo apt install python3.10-dev=3.10.5-1+focal1 libpq-dev=12.11-0ubuntu0.20.04.1 libsasl2-dev libldap2-dev libssl-dev
Installieren Sie das venv-Modul:
sudo apt-get install python3.10-venv
Überprüfen Sie die Version des installierten Python:
python3.10 --version
Ausgabe:
Python 3.10.5
Fügen Sie IP-Adressen der Domänencontroller zu /etc/hosts hinzu
sudo nano /etc/hosts
Wir müssen das venv eine Ebene höher erstellen, da VM VirtualBox es uns nicht erlaubt, es in Freigabeordnern zu erstellen.
Wechseln Sie in das Home-Verzeichnis, in dem sich die Freigabeordner befinden:
cd /home/user
Führen Sie die Bereitstellungsschritte für dc-sonar-user-layer auf Ubuntu aus.
Führen Sie die Bereitstellungsschritte für dc-sonar-workers-layer auf Ubuntu aus.
Führen Sie die Bereitstellungsschritte für ntlm-scrutinizer auf Ubuntu aus.
Führen Sie die Konfigurationsschritte für dc-sonar-user-layer auf Ubuntu aus.
Führen Sie die Konfigurationsschritte für dc-sonar-workers-layer auf Ubuntu aus.
Führen Sie die Konfigurationsschritte für ntlm-scrutinizer auf Ubuntu aus.
Führen Sie die Ausführungsschritte für ntlm-scrutinizer auf Ubuntu aus.
Führen Sie die Ausführungsschritte für dc-sonar-user-layer auf Ubuntu aus.
Führen Sie die Ausführungsschritte für dc-sonar-workers-layer auf Ubuntu aus.
Führen Sie die Ausführungsschritte für dc-sonar-frontend auf Windows aus.
Öffnen Sie https://localhost:8000/admin/ in einem Browser auf dem Windows-Host und akzeptieren Sie das selbstsignierte Zertifikat.
Öffnen Sie https://localhost:4200/ im Browser auf dem Windows-Host und melden Sie sich als erstellter Django-Benutzer an.
| Name | Protokoll | Host-IP | Host-Port | Gast-IP | Gast-Port |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| RabbitMQ-Verwaltungskonsole | TCP | 127.0.0.1 | 15672 | 10.0.2.15 | 15672 |
| Django-Server | TCP | 127.0.0.1 | 8000 | 10.0.2.15 | 8000 |
| NTLM-Scrutinizer | TCP | 127.0.0.1 | 5000 | 10.0.2.15 | 5000 |
| PostgreSQL | TCP | 127.0.0.1 | 25432 | 10.0.2.15 | 5432 |