
Analisando domínios AD para riscos de segurança relacionados a contas de usuário
O projeto consiste nos seguintes repositórios:
É apenas para fins educacionais.
Evite utilizá-lo em um domínio Active Directory (AD) de produção.
Nenhum contribuidor assume qualquer responsabilidade pelo seu uso.
Confira nosso canal do Telegram da comunidade Red Team canal do Telegram
Para descrições visuais, abra os arquivos de diagrama usando a ferramenta diagrams.net.
O aplicativo consiste em:
O DC Sonar Community fornece funcionalidades para analisar domínios AD em busca de riscos de segurança relacionados a contas:
Registrar análise de domínio AD no aplicativo

Veja os status dos processos de análise de domínio

Despeje e force hashes NTLM de domínios AD definidos para listar contas com senhas fracas e vulneráveis

Analise contas de domínio AD para listar aquelas com senhas que nunca expiram

Analise contas de domínio AD por seus hashes de senha NTLM para determinar contas e domínios onde as senhas se repetem

Em andamento ...
Assume-se que você tenha um Ubuntu Server 22.04 limpo e uma conta com o nome de usuário "user".
O aplicativo será instalado em /home/user/dc-sonar.
As próximas versões talvez terão uma instalação mais flexível.
Baixe o dc_sonar_NNNN.N.NN-N_amd64.tar.gz da última distribuição para o servidor.
Crie uma pasta para extrair os arquivos:
mkdir dc_sonar_NNNN.N.NN-N_amd64
Extraia o arquivo baixado:
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Vá para a pasta com os arquivos extraídos:
cd dc_sonar_NNNN.N.NN-N_amd64/
Instale o PostgreSQL:
sudo bash install_postgresql.sh
Instale o RabbitMQ:
sudo bash install_rabbitmq.sh
Instale as dependências:
sudo bash install_dependencies.sh
Isso solicitará confirmação para adicionar o repositório ppa:deadsnakes/ppa. Pressione Enter.
Instale o dc-sonar em si:
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Isso solicitará informações para criar um usuário administrador do Django. Forneça nome de usuário, email e senha.
Isso solicitará informações para criar um certificado SSL autoassinado duas vezes. Forneça as informações necessárias.
Abra: https://localhost
Insira as credenciais do usuário administrador do Django configuradas durante o processo de instalação anterior.
Veja as informações em STYLE_GUIDE.md
Em andamento ...
Neste caso, configuraremos o ambiente para editar código no Windows host enquanto o código Python é executado no Ubuntu guest.
Crie uma máquina virtual com 2 CPUs, 2048 MB de RAM, SSD de 10GB usando o ISO do Ubuntu Server 22.04 no VirtualBox.
Se o instalador do Ubuntu solicitar a atualização do instalador antes da instalação da VM - concorde.
Escolha instalar o OpenSSH Server.
Regras de encaminhamento de porta do VirtualBox:
Baixe e instale o Python 3.10.5.
Crie uma pasta para o projeto DC Sonar.
Vá para a pasta do projeto usando Git for Windows:
cd '{PATH_TO_FOLDER}'
Siga as etapas de instalação no Windows para dc-sonar-user-layer.
Siga as etapas de instalação no Windows para dc-sonar-workers-layer.
Siga as etapas de instalação no Windows para ntlm-scrutinizer.
Siga as etapas de instalação no Windows para dc-sonar-frontend.
Siga as etapas desde "Abrir VirtualBox" até "Reiniciar VM", mas adicione pastas compartilhadas ao VirtualBox VM com "Montagem automática", como na imagem abaixo:

Após reiniciar, execute o comando:
sudo adduser $USER vboxsf
Faça logout e login na conta de usuário em uso.
No diretório /home/user, você pode usar as pastas 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
Instale o PostgreSQL no Ubuntu 20.04:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Crie a conta de banco de dados admin:
sudo -u postgres createuser --interactive
Output:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Crie a conta de banco de dados 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
Crie a conta de banco de dados 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
Crie o banco de dados back_workers_db:
sudo -u postgres createdb back_workers_db
Crie o banco de dados web_app_db:
sudo -u postgres createdb web_app_db
Execute o psql:
sudo -u postgres psql
Defina uma senha para a conta admin:
ALTER USER admin WITH PASSWORD '{YOUR_PASSWORD}';
Defina uma senha para a conta dc_sonar_workers_layer:
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{YOUR_PASSWORD}';
Defina uma senha para a conta dc_sonar_user_layer:
ALTER USER dc_sonar_user_layer WITH PASSWORD '{YOUR_PASSWORD}';
Conceda permissões CRUD para a conta dc_sonar_workers_layer no banco de dados 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;
Conceda permissões CRUD para a conta dc_sonar_user_layer no banco de dados 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;
Saia do psql:
\q
Abra o arquivo pg_hba.conf:
sudo nano /etc/postgresql/12/main/pg_hba.conf
Adicione a linha para a conexão permitir a conexão da máquina host ao PostgreSQL, salve as alterações e feche o arquivo:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Abra o arquivo postgresql.conf:
sudo nano /etc/postgresql/12/main/postgresql.conf
Altere os parâmetros especificados abaixo, salve as alterações e feche o arquivo:
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Reinicie o serviço PostgreSQL:
sudo service postgresql restart
Verifique o status do serviço PostgreSQL:
service postgresql status
Verifique o arquivo de log se necessário:
tail -f /var/log/postgresql/postgresql-12-main.log
Agora você pode se conectar aos bancos de dados criados usando a conta admin e um cliente como DBeaver do Windows.
Instale o RabbitMQ usando o script.
Ative o plugin de gerenciamento:
sudo rabbitmq-plugins enable rabbitmq_management
Crie a conta de admin do RabbitMQ:
sudo rabbitmqctl add_user admin {YOUR_PASSWORD}
Marque o usuário criado para acesso total à interface de gerenciamento e API HTTP:
sudo rabbitmqctl set_user_tags admin administrator
Abra a interface de gerenciamento em http://localhost:15672/.
Certifique-se de que seu sistema esteja atualizado e os pacotes necessários instalados:
sudo apt update && sudo apt upgrade -y
Instale a dependência necessária para adicionar PPAs personalizados:
sudo apt install software-properties-common -y
Em seguida, prossiga e adicione o PPA deadsnakes à lista de fontes do gerenciador de pacotes APT conforme abaixo:
sudo add-apt-repository ppa:deadsnakes/ppa
Baixe o Python 3.10:
sudo apt install python3.10=3.10.5-1+focal1
Instale as dependências:
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
Instale o módulo venv:
sudo apt-get install python3.10-venv
Verifique a versão do python instalado:
python3.10 --version
Output:
Python 3.10.5
Adicione os endereços IP dos Controladores de Domínio ao /etc/hosts
sudo nano /etc/hosts
Temos que criar o venv em um nível acima, pois o VirtualBox VM não nos permite fazê-lo em pastas compartilhadas.
Vá para o diretório home onde as pastas compartilhadas estão localizadas:
cd /home/user
Siga as etapas de implantação para dc-sonar-user-layer no Ubuntu.
Siga as etapas de implantação para dc-sonar-workers-layer no Ubuntu.
Siga as etapas de implantação para ntlm-scrutinizer no Ubuntu.
Siga as etapas de configuração para dc-sonar-user-layer no Ubuntu.
Siga as etapas de configuração para dc-sonar-workers-layer no Ubuntu.
Siga as etapas de configuração para ntlm-scrutinizer no Ubuntu.
Siga as etapas de execução para ntlm-scrutinizer no Ubuntu.
Siga as etapas de execução para dc-sonar-user-layer no Ubuntu.
Siga as etapas de execução para dc-sonar-workers-layer no Ubuntu.
Siga as etapas de execução para dc-sonar-frontend no Windows.
Abra https://localhost:8000/admin/ em um navegador no Windows host e aceite o certificado autoassinado.
Abra https://localhost:4200/ no navegador no Windows host e faça login como o usuário Django criado.
| Nome | Protocolo | IP do Host | Porta do Host | IP do Convidado | Porta do Convidado |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| Console de gerenciamento 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 |