
Analyse des domaines AD pour les risques de sécurité liés aux comptes utilisateurs
Le projet se compose des dépôts suivants :
C'est uniquement à des fins éducatives.
Évitez de l'utiliser sur le domaine Active Directory (AD) de production.
Aucun contributeur n'assume la responsabilité de son utilisation.
Découvrez notre communauté Red Team chaîne Telegram
Pour les descriptions visuelles, ouvrez les fichiers de diagramme avec l'outil diagrams.net.
L'application se compose de :
La communauté DC Sonar fournit des fonctionnalités pour analyser les domaines AD pour les risques de sécurité liés aux comptes :
Enregistrer un domaine AD à analyser dans l'application

Voir les statuts des processus d'analyse de domaine

Extraire et forcer les hachages NTLM des domaines AD configurés pour lister les comptes avec des mots de passe faibles et vulnérables

Analyser les comptes de domaine AD pour lister ceux dont les mots de passe n'expirent jamais

Analyser les comptes de domaine AD par leurs hachages de mot de passe NTLM pour déterminer les comptes et domaines où les mots de passe se répètent

En cours ...
Il est supposé que vous avez un Ubuntu Server 22.04 propre et un compte avec le nom d'utilisateur « user ».
L'application s'installera dans /home/user/dc-sonar.
Les prochaines versions auront peut-être une installation plus flexible.
Téléchargez dc_sonar_NNNN.N.NN-N_amd64.tar.gz à partir de la dernière distribution sur le serveur.
Créez un dossier pour extraire les fichiers :
mkdir dc_sonar_NNNN.N.NN-N_amd64
Extrayez l'archive téléchargée :
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Allez dans le dossier contenant les fichiers extraits :
cd dc_sonar_NNNN.N.NN-N_amd64/
Installer PostgreSQL :
sudo bash install_postgresql.sh
Installer RabbitMQ :
sudo bash install_rabbitmq.sh
Installer les dépendances :
sudo bash install_dependencies.sh
Il demandera confirmation pour ajouter le dépôt ppa:deadsnakes/ppa. Appuyez sur Entrée.
Installer dc-sonar lui-même :
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Il demandera des informations pour créer un utilisateur administrateur Django. Fournissez le nom d'utilisateur, l'email et le mot de passe.
Il demandera des informations pour créer un certificat SSL auto-signé deux fois. Fournissez les informations requises.
Ouvrir : https://localhost
Saisissez les identifiants de l'utilisateur administrateur Django définis lors du processus d'installation précédent.
Voir les informations dans STYLE_GUIDE.md
En cours ...
Dans ce cas, nous allons configurer l'environnement pour éditer le code sur l'hôte Windows tout en exécutant le code Python sur l'invité Ubuntu.
Créez une machine virtuelle avec 2 CPU, 2048 Mo de RAM, 10 Go de SSD en utilisant l'ISO Ubuntu Server 22.04 dans VirtualBox.
Si l'installateur Ubuntu demande de mettre à jour l'installateur Ubuntu avant l'installation de la VM - acceptez.
Choisissez d'installer OpenSSH Server.
Règles de redirection de ports VirtualBox :
Téléchargez et installez Python 3.10.5.
Créez un dossier pour le projet DC Sonar.
Allez dans le dossier du projet avec Git for Windows :
cd '{PATH_TO_FOLDER}'
Suivez les étapes d'installation Windows pour dc-sonar-user-layer.
Suivez les étapes d'installation Windows pour dc-sonar-workers-layer.
Suivez les étapes d'installation Windows pour ntlm-scrutinizer.
Suivez les étapes d'installation Windows pour dc-sonar-frontend.
Suivez les étapes de « Open VirtualBox » à « Reboot VM », mais ajoutez des dossiers partagés à la VM VirtualBox avec « Auto-mount », comme dans l'image ci-dessous :

Après le redémarrage, exécutez la commande :
sudo adduser $USER vboxsf
Déconnectez-vous et reconnectez-vous avec le compte utilisateur utilisé.
Dans le répertoire /home/user, vous pouvez utiliser les dossiers montés :
ls -l
Output:
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
Installez PostgreSQL sur Ubuntu 20.04 :
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Créez le compte administrateur de la base de données :
sudo -u postgres createuser --interactive
Output:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Créez le compte de base de données dc_sonar_workers_layer :
sudo -u postgres createuser --interactive
Output:
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
Créez le compte de base de données dc_sonar_user_layer :
sudo -u postgres createuser --interactive
Output:
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
Créez la base de données back_workers_db :
sudo -u postgres createdb back_workers_db
Créez la base de données web_app_db :
sudo -u postgres createdb web_app_db
Exécutez psql :
sudo -u postgres psql
Définissez un mot de passe pour le compte admin :
ALTER USER admin WITH PASSWORD '{YOUR_PASSWORD}';
Définissez un mot de passe pour le compte dc_sonar_workers_layer :
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{YOUR_PASSWORD}';
Définissez un mot de passe pour le compte dc_sonar_user_layer :
ALTER USER dc_sonar_user_layer WITH PASSWORD '{YOUR_PASSWORD}';
Attribuez les permissions CRUD pour le compte dc_sonar_workers_layer sur la base de données 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;
Attribuez les permissions CRUD pour le compte dc_sonar_user_layer sur la base de données 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;
Quittez psql :
\q
Ouvrez le fichier pg_hba.conf :
sudo nano /etc/postgresql/12/main/pg_hba.conf
Ajoutez la ligne pour la connexion afin d'autoriser la connexion depuis la machine hôte vers PostgreSQL, enregistrez les modifications et fermez le fichier :
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Ouvrez le fichier postgresql.conf :
sudo nano /etc/postgresql/12/main/postgresql.conf
Modifiez les paramètres spécifiés ci-dessous, enregistrez les modifications et fermez le fichier :
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Redémarrez le service PostgreSQL :
sudo service postgresql restart
Vérifiez l'état du service PostgreSQL :
service postgresql status
Consultez le fichier journal si nécessaire :
tail -f /var/log/postgresql/postgresql-12-main.log
Vous pouvez maintenant vous connecter aux bases de données créées en utilisant le compte admin et un client tel que DBeaver depuis Windows.
Installez RabbitMQ en utilisant le script.
Activez le plugin de gestion :
sudo rabbitmq-plugins enable rabbitmq_management
Créez le compte administrateur RabbitMQ :
sudo rabbitmqctl add_user admin {YOUR_PASSWORD}
Associez l'utilisateur créé pour un accès complet à l'interface de gestion et à l'API HTTP :
sudo rabbitmqctl set_user_tags admin administrator
Ouvrez l'interface de gestion sur http://localhost:15672/.
Assurez-vous que votre système est mis à jour et que les paquets requis sont installés :
sudo apt update && sudo apt upgrade -y
Installez la dépendance requise pour ajouter des PPA personnalisés :
sudo apt install software-properties-common -y
Ensuite, ajoutez le PPA deadsnakes à la liste des sources du gestionnaire de paquets APT :
sudo add-apt-repository ppa:deadsnakes/ppa
Téléchargez Python 3.10 :
sudo apt install python3.10=3.10.5-1+focal1
Installez les dépendances :
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
Installez le module venv :
sudo apt-get install python3.10-venv
Vérifiez la version de Python installé :
python3.10 --version
Output:
Python 3.10.5
Ajoutez les adresses IP des contrôleurs de domaine dans /etc/hosts
sudo nano /etc/hosts
Nous devons créer l'environnement virtuel à un niveau supérieur car VirtualBox ne permet pas de le faire dans les dossiers partagés.
Allez dans le répertoire personnel où se trouvent les dossiers partagés :
cd /home/user
Suivez les étapes de déploiement pour dc-sonar-user-layer sur Ubuntu.
Suivez les étapes de déploiement pour dc-sonar-workers-layer sur Ubuntu.
Suivez les étapes de déploiement pour ntlm-scrutinizer sur Ubuntu.
Suivez les étapes de configuration pour dc-sonar-user-layer sur Ubuntu.
Suivez les étapes de configuration pour dc-sonar-workers-layer sur Ubuntu.
Suivez les étapes de configuration pour ntlm-scrutinizer sur Ubuntu.
Suivez les étapes d'exécution pour ntlm-scrutinizer sur Ubuntu.
Suivez les étapes d'exécution pour dc-sonar-user-layer sur Ubuntu.
Suivez les étapes d'exécution pour dc-sonar-workers-layer sur Ubuntu.
Suivez les étapes d'exécution pour dc-sonar-frontend sur Windows.
Ouvrez https://localhost:8000/admin/ dans un navigateur sur l'hôte Windows et acceptez le certificat auto-signé.
Ouvrez https://localhost:4200/ dans le navigateur sur l'hôte Windows et connectez-vous en tant qu'utilisateur Django créé.
| Nom | Protocole | IP hôte | Port hôte | IP invité | Port invité |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| RabbitMQ management console | 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 |