
Analizando dominios de AD en busca de riesgos de seguridad relacionados con cuentas de usuario.
El proyecto consiste en los repositorios:
Es solo con fines educativos.
Evite usarlo en un dominio de Active Directory (AD) de producción.
Ningún colaborador asume responsabilidad alguna por su uso.
Echa un vistazo a nuestra comunidad Red Team en el canal de Telegram
Para las descripciones visuales, abre los archivos de diagrama usando la herramienta diagrams.net.
La aplicación consiste en:
La Comunidad DC Sonar proporciona funcionalidades para analizar dominios AD en busca de riesgos de seguridad relacionados con cuentas:
Registrar dominio AD para análisis en la aplicación

Ver los estados de los procesos de análisis de dominios

Volcar y hacer fuerza bruta de hashes NTLM de dominios AD configurados para listar cuentas con contraseñas débiles y vulnerables

Analizar cuentas de dominio AD para listar aquellas con contraseñas que nunca caducan

Analizar cuentas de dominio AD por sus hashes de contraseñas NTLM para determinar cuentas y dominios donde se repiten las contraseñas

En progreso ...
Se asume que tienes un Ubuntu Server 22.04 limpio y una cuenta con el nombre de usuario "user".
La aplicación se instalará en /home/user/dc-sonar.
Las próximas versiones quizás tengan una instalación más flexible.
Descarga dc_sonar_NNNN.N.NN-N_amd64.tar.gz desde la última distribución al servidor.
Crea una carpeta para extraer los archivos:
mkdir dc_sonar_NNNN.N.NN-N_amd64
Extrae el archivo descargado:
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Ve a la carpeta con los archivos extraídos:
cd dc_sonar_NNNN.N.NN-N_amd64/
Instala PostgreSQL:
sudo bash install_postgresql.sh
Instala RabbitMQ:
sudo bash install_rabbitmq.sh
Instala las dependencias:
sudo bash install_dependencies.sh
Pedirá confirmación para añadir el repositorio ppa:deadsnakes/ppa. Presiona Enter.
Instala dc-sonar en sí:
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Pedirá información para crear un usuario administrador de Django. Proporciona nombre de usuario, correo y contraseña.
Pedirá información para crear un certificado SSL autofirmado dos veces. Proporciona la información requerida.
Abre: https://localhost
Ingresa las credenciales del usuario administrador de Django configuradas durante el proceso de instalación anterior.
Consulta la información en STYLE_GUIDE.md
En progreso ...
En este caso, configuraremos el entorno para editar código en el anfitrión Windows mientras se ejecuta código Python en el invitado Ubuntu.
Crea una máquina virtual con 2 CPU, 2048 MB de RAM, SSD de 10 GB usando el iso de Ubuntu Server 22.04 en VirtualBox.
Si el instalador de Ubuntu pide actualizar el instalador de Ubuntu antes de la instalación de la VM - acepta.
Elige instalar OpenSSH Server.
Reglas de reenvío de puertos de VirtualBox:
Descarga e instala Python 3.10.5.
Crea una carpeta para el proyecto DC Sonar.
Ve a la carpeta del proyecto usando Git for Windows:
cd '{RUTA_A_LA_CARPETA}'
Sigue los pasos de instalación en Windows para dc-sonar-user-layer.
Sigue los pasos de instalación en Windows para dc-sonar-workers-layer.
Sigue los pasos de instalación en Windows para ntlm-scrutinizer.
Sigue los pasos de instalación en Windows para dc-sonar-frontend.
Sigue los pasos desde "Abrir VirtualBox" hasta "Reiniciar VM", pero añade carpetas compartidas a la VM de VirtualBox con "Auto-mount", como en la imagen inferior:

Después de reiniciar, ejecuta el comando:
sudo adduser $USER vboxsf
Cierra sesión e inicia sesión para la cuenta de usuario en uso.
En el directorio /home/user, puedes usar las carpetas montadas:
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
Instala PostgreSQL en Ubuntu 20.04:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Crea la cuenta de base de datos admin:
sudo -u postgres createuser --interactive
Output:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Crea la cuenta de base de datos 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 la cuenta de base de datos 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 la base de datos back_workers_db:
sudo -u postgres createdb back_workers_db
Crea la base de datos web_app_db:
sudo -u postgres createdb web_app_db
Ejecuta psql:
sudo -u postgres psql
Establece una contraseña para la cuenta admin:
ALTER USER admin WITH PASSWORD '{TU_CONTRASEÑA}';
Establece una contraseña para la cuenta dc_sonar_workers_layer:
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{TU_CONTRASEÑA}';
Establece una contraseña para la cuenta dc_sonar_user_layer:
ALTER USER dc_sonar_user_layer WITH PASSWORD '{TU_CONTRASEÑA}';
Otorga permisos CRUD para la cuenta dc_sonar_workers_layer en la base de datos 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;
Otorga permisos CRUD para la cuenta dc_sonar_user_layer en la base de datos 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;
Sal de psql:
\q
Abre el archivo pg_hba.conf:
sudo nano /etc/postgresql/12/main/pg_hba.conf
Añade la línea de conexión para permitir la conexión desde la máquina anfitriona a PostgreSQL, guarda los cambios y cierra el archivo:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Abre el archivo postgresql.conf:
sudo nano /etc/postgresql/12/main/postgresql.conf
Cambia los parámetros especificados a continuación, guarda los cambios y cierra el archivo:
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Reinicia el servicio de PostgreSQL:
sudo service postgresql restart
Verifica el estado del servicio de PostgreSQL:
service postgresql status
Verifica el archivo de registro si es necesario:
tail -f /var/log/postgresql/postgresql-12-main.log
Ahora puedes conectarte a las bases de datos creadas usando la cuenta admin y un cliente como DBeaver desde Windows.
Instala RabbitMQ usando el script.
Habilita el plugin de administración:
sudo rabbitmq-plugins enable rabbitmq_management
Crea la cuenta admin de RabbitMQ:
sudo rabbitmqctl add_user admin {TU_CONTRASEÑA}
Etiqueta al usuario creado para acceso completo a la interfaz de administración y API HTTP:
sudo rabbitmqctl set_user_tags admin administrator
Abre la interfaz de administración en http://localhost:15672/.
Asegúrate de que tu sistema esté actualizado y los paquetes requeridos instalados:
sudo apt update && sudo apt upgrade -y
Instala la dependencia requerida para añadir PPAs personalizados:
sudo apt install software-properties-common -y
Luego procede y añade el PPA deadsnakes a la lista de fuentes del gestor de paquetes APT como a continuación:
sudo add-apt-repository ppa:deadsnakes/ppa
Descarga Python 3.10:
sudo apt install python3.10=3.10.5-1+focal1
Instala las dependencias:
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
Instala el módulo venv:
sudo apt-get install python3.10-venv
Verifica la versión de python instalada:
python3.10 --version
Output:
Python 3.10.5
Añade las direcciones IP de los Controladores de Dominio a /etc/hosts
sudo nano /etc/hosts
Tenemos que crear el venv en un nivel superior ya que VirtualBox no permite hacerlo en carpetas compartidas.
Ve al directorio home donde se encuentran las carpetas compartidas:
cd /home/user
Sigue los pasos de despliegue para dc-sonar-user-layer en Ubuntu.
Sigue los pasos de despliegue para dc-sonar-workers-layer en Ubuntu.
Sigue los pasos de despliegue para ntlm-scrutinizer en Ubuntu.
Sigue los pasos de configuración para dc-sonar-user-layer en Ubuntu.
Sigue los pasos de configuración para dc-sonar-workers-layer en Ubuntu.
Sigue los pasos de configuración para ntlm-scrutinizer en Ubuntu.
Sigue los pasos de ejecución para ntlm-scrutinizer en Ubuntu.
Sigue los pasos de ejecución para dc-sonar-user-layer en Ubuntu.
Sigue los pasos de ejecución para dc-sonar-workers-layer en Ubuntu.
Sigue los pasos de ejecución para dc-sonar-frontend en Windows.
Abre https://localhost:8000/admin/ en un navegador en el anfitrión Windows y acepta el certificado autofirmado.
Abre https://localhost:4200/ en el navegador en el anfitrión Windows e inicia sesión como el usuario Django creado.
| Nombre | Protocolo | IP del anfitrión | Puerto del anfitrión | IP del invitado | Puerto del invitado |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| Consola de administración de RabbitMQ | TCP | 127.0.0.1 | 15672 | 10.0.2.15 | 15672 |
| Servidor 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 |