
تحليل نطاقات AD للمخاطر الأمنية المتعلقة بحسابات المستخدمين
يتكون المشروع من المستودعات:
إنه لأغراض تعليمية فقط.
تجنب استخدامه على مجال Active Directory (AD) الإنتاجي.
لا يتحمل أي مساهم أي مسؤولية عن أي استخدام له.
اطلع على قناة فريق 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 admin. قدم اسم المستخدم والبريد الإلكتروني وكلمة المرور.
سيطلب معلومات لإنشاء شهادة SSL ذاتية التوقيع مرتين. قدم المعلومات المطلوبة.
افتح: https://localhost
أدخل بيانات اعتماد مستخدم Django admin التي تم تعيينها أثناء عملية التثبيت السابقة.
اطلع على المعلومات في STYLE_GUIDE.md
قيد التطوير ...
في هذه الحالة، سنقوم بإعداد البيئة لتحرير الكود على مضيف Windows أثناء تشغيل كود Python على خادم Ubuntu الضيف.
أنشئ جهازاً افتراضياً بـ 2 CPU و 2048 MB RAM و 10GB SSD باستخدام ملف ISO لنظام Ubuntu Server 22.04 في VirtualBox.
إذا طلب مثبت Ubuntu تحديث مثبت 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.
اتبع الخطوات من "Open VirtualBox" إلى "Reboot VM"، لكن أضف مجلدات مشتركة إلى VM VirtualBox مع خيار "Auto-mount"، كما في الصورة أدناه:

بعد إعادة التشغيل، قم بتشغيل الأمر:
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
ثبت PostgreSQL على Ubuntu 20.04:
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}';
امنح صلاحيات 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
يمكنك الآن الاتصال بقواعد البيانات التي تم إنشاؤها باستخدام حساب المسؤول وعميل مثل 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
ثبت التبعية المطلوبة لإضافة PPAs مخصصة:
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
يجب إنشاء venv على مستوى أعلى لأن 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 |