
Analisi dei domini AD per i rischi di sicurezza relativi agli account utente
Il progetto è composto dai seguenti repository:
È solo per scopi educativi.
Evita di utilizzarlo su un dominio Active Directory (AD) di produzione.
Né i collaboratori si assumono alcuna responsabilità per qualsiasi uso dello stesso.
Dai un'occhiata al nostro canale Telegram della community Red Team Telegram channel
Per le descrizioni visive, apri i file dei diagrammi utilizzando lo strumento diagrams.net.
L'app è composta da:
La comunità DC Sonar fornisce funzionalità per l'analisi dei domini AD per rischi di sicurezza relativi agli account:
Registra l'analisi del dominio AD nell'app

Visualizza gli stati dei processi di analisi del dominio

Estrai e forza brute degli hash NTLM dai domini AD impostati per elencare gli account con password deboli e vulnerabili

Analizza gli account del dominio AD per elencare quelli con password che non scadono mai

Analizza gli account del dominio AD tramite i loro hash NTLM delle password per determinare account e domini in cui le password si ripetono

In corso ...
Si presuppone che tu abbia un'installazione pulita di Ubuntu Server 22.04 e un account con nome utente "user".
L'app verrà installata in /home/user/dc-sonar.
Le prossime versioni potrebbero avere un'installazione più flessibile.
Scarica dc_sonar_NNNN.N.NN-N_amd64.tar.gz dall'ultima distribuzione sul server.
Crea una cartella per estrarre i file:
mkdir dc_sonar_NNNN.N.NN-N_amd64
Estrai l'archivio scaricato:
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Vai nella cartella con i file estratti:
cd dc_sonar_NNNN.N.NN-N_amd64/
Installa PostgreSQL:
sudo bash install_postgresql.sh
Installa RabbitMQ:
sudo bash install_rabbitmq.sh
Installa le dipendenze:
sudo bash install_dependencies.sh
Verrà chiesto di confermare l'aggiunta del repository ppa:deadsnakes/ppa. Premere Invio.
Installa dc-sonar stesso:
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Verranno richieste le informazioni per la creazione di un utente admin Django. Fornisci nome utente, email e password.
Verranno richieste le informazioni per la creazione di un certificato SSL autofirmato due volte. Fornisci le informazioni richieste.
Aprire: https://localhost
Inserire le credenziali dell'utente admin Django impostate durante il processo di installazione precedente.
Vedi le informazioni in STYLE_GUIDE.md
In corso ...
In questo caso, configureremo l'ambiente per modificare il codice sull'host Windows mentre eseguiamo il codice Python sul guest Ubuntu.
Crea una macchina virtuale con 2 CPU, 2048 MB di RAM, 10GB SSD usando l'iso di Ubuntu Server 22.04 in VirtualBox.
Se l'installer di Ubuntu chiede di aggiornare l'installer prima dell'installazione della VM, accetta.
Scegli di installare OpenSSH Server.
Regole di port forwarding di VirtualBox:
Scarica e installa Python 3.10.5.
Crea una cartella per il progetto DC Sonar.
Vai alla cartella del progetto usando Git for Windows:
cd '{PATH_TO_FOLDER}'
Segui i passaggi di installazione per Windows per dc-sonar-user-layer.
Segui i passaggi di installazione per Windows per dc-sonar-workers-layer.
Segui i passaggi di installazione per Windows per ntlm-scrutinizer.
Segui i passaggi di installazione per Windows per dc-sonar-frontend.
Segui i passaggi da "Open VirtualBox" a "Reboot VM", ma aggiungi le cartelle condivise a VM VirtualBox con "Auto-mount", come nell'immagine sottostante:

Dopo il riavvio, esegui il comando:
sudo adduser $USER vboxsf
Esegui il logout e il login per l'account utente in uso.
Nella directory /home/user, puoi usare le cartelle montate:
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
Installa PostgreSQL su Ubuntu 20.04:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Crea l'account admin del database:
sudo -u postgres createuser --interactive
Output:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Crea l'account del database 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
Crea l'account del database 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
Crea il database back_workers_db:
sudo -u postgres createdb back_workers_db
Crea il database web_app_db:
sudo -u postgres createdb web_app_db
Esegui psql:
sudo -u postgres psql
Imposta una password per l'account admin:
ALTER USER admin WITH PASSWORD '{YOUR_PASSWORD}';
Imposta una password per l'account dc_sonar_workers_layer:
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{YOUR_PASSWORD}';
Imposta una password per l'account dc_sonar_user_layer:
ALTER USER dc_sonar_user_layer WITH PASSWORD '{YOUR_PASSWORD}';
Concedi permessi CRUD per l'account dc_sonar_workers_layer sul database 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;
Concedi permessi CRUD per l'account dc_sonar_user_layer sul database 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;
Esci da psql:
\q
Apri il file pg_hba.conf:
sudo nano /etc/postgresql/12/main/pg_hba.conf
Aggiungi la riga per la connessione per permettere la connessione dalla macchina host a PostgreSQL, salva le modifiche e chiudi il file:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Apri il file postgresql.conf:
sudo nano /etc/postgresql/12/main/postgresql.conf
Modifica i parametri specificati di seguito, salva le modifiche e chiudi il file:
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Riavvia il servizio PostgreSQL:
sudo service postgresql restart
Verifica lo stato del servizio PostgreSQL:
service postgresql status
Controlla il file di log se necessario:
tail -f /var/log/postgresql/postgresql-12-main.log
Ora puoi connetterti ai database creati usando l'account admin e un client come DBeaver da Windows.
Installa RabbitMQ usando lo script.
Abilita il plugin di gestione:
sudo rabbitmq-plugins enable rabbitmq_management
Crea l'account admin di RabbitMQ:
sudo rabbitmqctl add_user admin {YOUR_PASSWORD}
Tagga l'utente creato per l'accesso completo all'interfaccia di gestione e all'API HTTP:
sudo rabbitmqctl set_user_tags admin administrator
Apri l'interfaccia di gestione su http://localhost:15672/.
Assicurati che il sistema sia aggiornato e che i pacchetti richiesti siano installati:
sudo apt update && sudo apt upgrade -y
Installa la dipendenza richiesta per aggiungere PPA personalizzati:
sudo apt install software-properties-common -y
Poi procedi ad aggiungere il PPA deadsnakes alla lista delle sorgenti del gestore pacchetti APT come segue:
sudo add-apt-repository ppa:deadsnakes/ppa
Scarica Python 3.10:
sudo apt install python3.10=3.10.5-1+focal1
Installa le dipendenze:
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
Installa il modulo venv:
sudo apt-get install python3.10-venv
Verifica la versione di Python installato:
python3.10 --version
Output:
Python 3.10.5
Aggiungi gli indirizzi IP dei Domain Controller a /etc/hosts
sudo nano /etc/hosts
Dobbiamo creare il venv a un livello superiore poiché VM VirtualBox non ci permette di farlo nelle cartelle condivise.
Vai alla home directory dove si trovano le cartelle condivise:
cd /home/user
Segui i passaggi di deploy per dc-sonar-user-layer su Ubuntu.
Segui i passaggi di deploy per dc-sonar-workers-layer su Ubuntu.
Segui i passaggi di deploy per ntlm-scrutinizer su Ubuntu.
Segui i passaggi di configurazione per dc-sonar-user-layer su Ubuntu.
Segui i passaggi di configurazione per dc-sonar-workers-layer su Ubuntu.
Segui i passaggi di configurazione per ntlm-scrutinizer su Ubuntu.
Segui i passaggi di esecuzione per ntlm-scrutinizer su Ubuntu.
Segui i passaggi di esecuzione per dc-sonar-user-layer su Ubuntu.
Segui i passaggi di esecuzione per dc-sonar-workers-layer su Ubuntu.
Segui i passaggi di esecuzione per dc-sonar-frontend su Windows.
Apri https://localhost:8000/admin/ in un browser sull'host Windows e accetta il certificato autofirmato.
Apri https://localhost:4200/ nel browser sull'host Windows e accedi come utente Django creato.
| Nome | Protocollo | Host IP | Host Port | Guest IP | Guest Port |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| Console di gestione RabbitMQ | TCP | 127.0.0.1 | 15672 | 10.0.2.15 | 15672 |
| Server Django | 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 |