
Анализ доменов AD на предмет рисков безопасности, связанных с учетными записями пользователей
Проект состоит из репозиториев:
Это только для образовательных целей.
Избегайте использования на рабочем домене Active Directory (AD).
Ни один из участников не несет ответственности за любое его использование.
Посетите наш Telegram-канал сообщества Red Team: Telegram
Для визуального описания откройте файлы диаграмм с помощью инструмента diagrams.net.
Приложение состоит из:
DC Sonar Community предоставляет функциональность для анализа доменов AD на предмет рисков безопасности, связанных с учетными записями:
Регистрация домена AD для анализа в приложении

Просмотр статусов процессов анализа доменов

Дамп и брут NTLM-хешей из заданных доменов AD для выявления учетных записей со слабыми и уязвимыми паролями

Анализ учетных записей домена AD для выявления тех, у кого пароли никогда не истекают

Анализ учетных записей домена AD по их NTLM-хешам паролей для определения учетных записей и доменов, где пароли повторяются

В разработке ...
Предполагается, что у вас есть чистая Ubuntu Server 22.04 и учетная запись с именем пользователя "user".
Приложение будет установлено в /home/user/dc-sonar.
Возможно, следующие релизы будут иметь более гибкую установку.
Скачайте dc_sonar_NNNN.N.NN-N_amd64.tar.gz из последнего дистрибутива на сервер.
Создайте папку для извлечения файлов:
mkdir dc_sonar_NNNN.N.NN-N_amd64
Извлеките скачанный архив:
tar -xvf dc_sonar_NNNN.N.NN-N_amd64.tar.gz -C dc_sonar_NNNN.N.NN-N_amd64
Перейдите в папку с извлеченными файлами:
cd dc_sonar_NNNN.N.NN-N_amd64/
Установка PostgreSQL:
sudo bash install_postgresql.sh
Установка RabbitMQ:
sudo bash install_rabbitmq.sh
Установка зависимостей:
sudo bash install_dependencies.sh
Будет запрошено подтверждение добавления репозитория ppa:deadsnakes/ppa. Нажмите Enter.
Установка самого dc-sonar:
sudo dpkg -i dc_sonar_NNNN.N.NN-N_amd64.deb
Будет запрошена информация для создания администратора Django. Укажите имя пользователя, почту и пароль.
Будет дважды запрошена информация для создания самоподписанного SSL-сертификата. Предоставьте требуемую информацию.
Откройте: https://localhost
Введите учетные данные администратора Django, заданные ранее в процессе установки.
Смотрите информацию в STYLE_GUIDE.md
В разработке ...
В этом случае мы настроим среду для редактирования кода на хосте Windows, при этом код Python будет выполняться на гостевой Ubuntu.
Создайте виртуальную машину с 2 CPU, 2048 MB RAM, 10GB SSD, используя ISO Ubuntu Server 22.04 в VirtualBox.
Если установщик Ubuntu запросит обновление установщика перед установкой ВМ — согласитесь.
Выберите установку OpenSSH Server.
Правила перенаправления портов VirtualBox:
Скачайте и установите Python 3.10.5.
Создайте папку для проекта DC Sonar.
Перейдите в папку проекта, используя Git for Windows:
cd '{PATH_TO_FOLDER}'
Выполните шаги установки для Windows для dc-sonar-user-layer.
Выполните шаги установки для Windows для dc-sonar-workers-layer.
Выполните шаги установки для Windows для ntlm-scrutinizer.
Выполните шаги установки для Windows для dc-sonar-frontend.
Выполните шаги от "Открыть VirtualBox" до "Перезагрузить ВМ", но добавьте общие папки в VirtualBox с опцией "Автоматическое монтирование", как на рисунке ниже:

После перезагрузки выполните команду:
sudo adduser $USER vboxsf
Выполните выход и вход для используемой учетной записи.
В каталоге /home/user вы можете использовать смонтированные папки:
ls -l
Вывод:
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
Установите PostgreSQL на Ubuntu 20.04:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
Создайте учетную запись администратора базы данных:
sudo -u postgres createuser --interactive
Вывод:
Enter name of role to add: admin
Shall the new role be a superuser? (y/n) y
Создайте учетную запись базы данных dc_sonar_workers_layer:
sudo -u postgres createuser --interactive
Вывод:
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
Создайте учетную запись базы данных dc_sonar_user_layer:
sudo -u postgres createuser --interactive
Вывод:
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
Создайте базу данных back_workers_db:
sudo -u postgres createdb back_workers_db
Создайте базу данных web_app_db:
sudo -u postgres createdb web_app_db
Запустите psql:
sudo -u postgres psql
Установите пароль для учетной записи admin:
ALTER USER admin WITH PASSWORD '{YOUR_PASSWORD}';
Установите пароль для учетной записи dc_sonar_workers_layer:
ALTER USER dc_sonar_workers_layer WITH PASSWORD '{YOUR_PASSWORD}';
Установите пароль для учетной записи dc_sonar_user_layer:
ALTER USER dc_sonar_user_layer WITH PASSWORD '{YOUR_PASSWORD}';
Предоставьте разрешения CRUD для учетной записи dc_sonar_workers_layer на базу данных 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;
Предоставьте разрешения CRUD для учетной записи dc_sonar_user_layer на базу данных 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;
Выйдите из psql:
\q
Откройте файл pg_hba.conf:
sudo nano /etc/postgresql/12/main/pg_hba.conf
Добавьте строку для соединения, чтобы разрешить подключение с хост-машины к PostgreSQL, сохраните изменения и закройте файл:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all admin 0.0.0.0/0 md5
Откройте файл postgresql.conf:
sudo nano /etc/postgresql/12/main/postgresql.conf
Измените указанные ниже параметры, сохраните изменения и закройте файл:
listen_addresses = 'localhost,10.0.2.15'
shared_buffers = 512MB
work_mem = 5MB
maintenance_work_mem = 100MB
effective_cache_size = 1GB
Перезапустите службу PostgreSQL:
sudo service postgresql restart
Проверьте статус службы PostgreSQL:
service postgresql status
При необходимости проверьте файл журнала:
tail -f /var/log/postgresql/postgresql-12-main.log
Теперь вы можете подключаться к созданным базам данных с помощью учетной записи admin и клиента, такого как DBeaver, из Windows.
Установите RabbitMQ с помощью скрипта.
Включите плагин управления:
sudo rabbitmq-plugins enable rabbitmq_management
Создайте учетную запись администратора RabbitMQ:
sudo rabbitmqctl add_user admin {YOUR_PASSWORD}
Назначьте созданному пользователю тег для полного доступа к интерфейсу управления и HTTP API:
sudo rabbitmqctl set_user_tags admin administrator
Откройте интерфейс управления по адресу http://localhost:15672/.
Убедитесь, что ваша система обновлена и установлены необходимые пакеты:
sudo apt update && sudo apt upgrade -y
Установите необходимую зависимость для добавления пользовательских PPA:
sudo apt install software-properties-common -y
Затем добавьте PPA deadsnakes в список источников менеджера пакетов APT, как показано ниже:
sudo add-apt-repository ppa:deadsnakes/ppa
Загрузите Python 3.10:
sudo apt install python3.10=3.10.5-1+focal1
Установите зависимости:
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
Установите модуль venv:
sudo apt-get install python3.10-venv
Проверьте версию установленного Python:
python3.10 --version
Вывод:
Python 3.10.5
Добавьте IP-адреса контроллеров домена в /etc/hosts
sudo nano /etc/hosts
Мы должны создать виртуальное окружение на уровень выше, так как VM VirtualBox не позволяет создавать его в общих папках.
Перейдите в домашний каталог, где находятся общие папки:
cd /home/user
Выполните шаги развертывания для dc-sonar-user-layer на Ubuntu.
Выполните шаги развертывания для dc-sonar-workers-layer на Ubuntu.
Выполните шаги развертывания для ntlm-scrutinizer на Ubuntu.
Выполните шаги настройки для dc-sonar-user-layer на Ubuntu.
Выполните шаги настройки для dc-sonar-workers-layer на Ubuntu.
Выполните шаги настройки для ntlm-scrutinizer на Ubuntu.
Выполните шаги запуска для ntlm-scrutinizer на Ubuntu.
Выполните шаги запуска для dc-sonar-user-layer на Ubuntu.
Выполните шаги запуска для dc-sonar-workers-layer на Ubuntu.
Выполните шаги запуска для dc-sonar-frontend на Windows.
Откройте https://localhost:8000/admin/ в браузере на хосте Windows и согласитесь с самоподписанным сертификатом.
Откройте https://localhost:4200/ в браузере на хосте Windows и войдите как созданный пользователь Django.
| Имя | Протокол | IP хоста | Порт хоста | IP гостя | Порт гостя |
|---|
| SSH | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 |
| Консоль управления RabbitMQ | TCP | 127.0.0.1 | 15672 | 10.0.2.15 | 15672 |
| Сервер 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 |