
AD 도메인을 분석하여 사용자 계정과 관련된 보안 위험을 식별합니다.
프로젝트는 다음 저장소로 구성됩니다:
교육 목적으로만 사용하십시오.
프로덕션 Active Directory(AD) 도메인에서 사용하지 마십시오.
기여자는 이를 사용함으로써 발생하는 어떤 책임도 지지 않습니다.
저희 레드 팀 커뮤니티 텔레그램 채널을 확인하세요.
시각적 설명을 보려면 diagrams.net 도구를 사용하여 다이어그램 파일을 여십시오.
앱은 다음으로 구성됩니다:
DC Sonar 커뮤니티는 계정과 관련된 보안 위험에 대해 AD 도메인을 분석하는 기능을 제공합니다:
앱에 AD 도메인 분석 등록

도메인 분석 프로세스 상태 확인

설정된 AD 도메인에서 NTLM 해시를 덤프 및 무차별 대입하여 취약한 비밀번호를 가진 계정 목록 생성

AD 도메인 계정을 분석하여 비밀번호가 만료되지 않는 계정 목록 생성

NTLM 비밀번호 해시를 기준으로 AD 도메인 계정을 분석하여 비밀번호가 반복되는 계정 및 도메인 확인

준비 중 ...
깨끗한 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 인증서 생성을 위한 정보를 두 번 요청합니다. 필요한 정보를 제공하세요.
이전 설치 과정에서 설정한 Django 관리자 사용자 자격 증명을 입력하세요.
STYLE_GUIDE.md에서 정보를 확인하세요.
준비 중 ...
이 경우 Windows 호스트에서 코드를 편집하고 Ubuntu 게스트에서 Python 코드를 실행하기 위한 환경을 설정합니다.
VirtualBox에서 Ubuntu Server 22.04 ISO를 사용하여 CPU 2개, RAM 2048MB, 10GB SSD의 가상 머신을 생성합니다.
Ubuntu 설치 프로그램이 VM 설치 전에 Ubuntu 설치 프로그램 업데이트를 요청하면 동의합니다.
OpenSSH 서버 설치를 선택합니다.
VirtualBox 포트 전달 규칙:
다운로드하여 Python 3.10.5를 설치하세요.
DC Sonar 프로젝트 폴더를 생성합니다.
Git for Windows를 사용하여 프로젝트 폴더로 이동:
cd '{PATH_TO_FOLDER}'
dc-sonar-user-layer의 Windows 설치 단계를 수행하세요.
dc-sonar-workers-layer의 Windows 설치 단계를 수행하세요.
ntlm-scrutinizer의 Windows 설치 단계를 수행하세요.
dc-sonar-frontend의 Windows 설치 단계를 수행하세요.
단계를 "Open VirtualBox"부터 "Reboot VM"까지 수행하되, 아래 그림과 같이 "Auto-mount"로 VM VirtualBox에 공유 폴더를 추가하십시오:

재부팅 후 다음 명령 실행:
sudo adduser $USER vboxsf
사용 중인 사용자 계정으로 로그아웃 및 로그인을 수행하십시오.
/home/user 디렉토리에서 마운트된 폴더를 사용할 수 있습니다:
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
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service
관리자 데이터베이스 계정 생성:
sudo -u postgres createuser --interactive
Output:
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
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
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
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
관리자 계정에 비밀번호 설정:
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}';
dc_sonar_workers_layer 계정에 back_workers_db 데이터베이스에 대한 CRUD 권한 부여:
\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;
dc_sonar_user_layer 계정에 web_app_db 데이터베이스에 대한 CRUD 권한 부여:
\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
이제 Windows에서 DBeaver와 같은 클라이언트를 사용하여 admin 계정으로 생성된 데이터베이스에 연결할 수 있습니다.
스크립트를 사용하여 RabbitMQ를 설치하세요.
관리 플러그인 활성화:
sudo rabbitmq-plugins enable rabbitmq_management
RabbitMQ 관리자 계정 생성:
sudo rabbitmqctl add_user admin {YOUR_PASSWORD}
생성된 사용자에게 전체 관리 UI 및 HTTP API 액세스를 위한 태그 지정:
sudo rabbitmqctl set_user_tags admin administrator
http://localhost:15672/에서 관리 UI를 엽니다.
시스템이 업데이트되고 필요한 패키지가 설치되었는지 확인하세요:
sudo apt update && sudo apt upgrade -y
사용자 정의 PPA 추가에 필요한 종속성 설치:
sudo apt install software-properties-common -y
그런 다음 아래와 같이 deadsnakes PPA를 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
Output:
Python 3.10.5
도메인 컨트롤러의 IP 주소를 /etc/hosts에 추가
sudo nano /etc/hosts
VM VirtualBox가 공유 폴더에서 가상 환경을 만들 수 없도록 허용하지 않으므로 상위 레벨에 venv를 생성해야 합니다.
공유 폴더가 있는 홈 디렉토리로 이동:
cd /home/user
Ubuntu에서 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에 대한 실행 단계를 수행하십시오.
Windows에서 dc-sonar-frontend에 대한 실행 단계를 수행하십시오.
Windows 호스트의 브라우저에서 https://localhost:8000/admin/을 열고 자체 서명 인증서에 동의합니다.
Windows 호스트의 브라우저에서 https://localhost:4200/을 열고 생성된 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 |