
انشر مجال Windows صغيرًا وغير آمن عن قصد ومعرض للخطر لاستخدامه كـ RDP Honeypot بشكل تلقائي بالكامل.
انشر نطاق Windows صغيرًا وغير آمن عمدًا وضعيفًا تلقائيًا بالكامل لـ RDP Honeypot.
يعمل على المحاكاة الافتراضية المستضافة ذاتيًا باستخدام libvirt مع QEMU/KVM (ولكن يمكن تخصيصه بسهولة للحلول السحابية).
يُستخدم لإعداد نطاق Windows صغير من الصفر تلقائيًا (بدون تفاعل المستخدم) بسهولة لغرض اختبار RDP Honeypot.
يتميز بوحدة تحكم في النطاق، وجهاز كمبيوتر سطح مكتب، وخادم Graylog مهيأ لتسجيل إجراءات المهاجمين.
Packer: قم بتنزيل وسائط التثبيت اللازمة وإعداد صور الجهاز الافتراضي الأساسية الآلية دون تدخل.
Terraform: قم بتوفير البنية التحتية للمحاكاة الافتراضية libvirt (الشبكة + الأجهزة الافتراضية) باستخدام صور الجهاز الافتراضي المعدة بواسطة Packer.
Ansible: قم بتكوين البنية التحتية (DC، Desktop، Graylog) تلقائيًا، دون تفاعل المستخدم.
بعد المرور عبر مسار Packer+Terraform+Ansible، يجب أن يكون نطاق Windows المهيأ قيد التشغيل، يمكنك ربط خدمة RDP لسطح المكتب بالإنترنت العام، ودعنا نراقب الأحداث عبر Graylog.
ميزات النظام قيد التشغيل هي:
تحتاج المحاكاة الافتراضية إلى بعض القوة من نظام المضيف:
تم اختباره على مضيف Ubuntu 18.04 LTS.
أولاً، استنسخ المستودع:
git clone https://github.com/tothi/ad-honeypot-autodeploy
cd ad-honeypot-autodeploy
قبل البدء مع Packer، قم بإعداد كلمات المرور الأولية (انتبه لمتطلبات التعقيد):
./init_passwords.sh
الآن قم ببناء الصور الأولية.
cd packer
يجب تنزيل وسائط تثبيت Windows Server 2016 و Ubuntu بواسطة برنامج Packer النصي. يحتاج VirtIO إلى التنزيل بواسطة البرنامج النصي المرفق get-virtio.sh:
./get-virtio.sh
يجب تنزيل Windows 10 يدويًا عن طريق الحصول على رابط تنزيل مؤقت وحفظه في مجلد ISO. يمكن الحصول على رابط التنزيل من هنا. حدد الإصدار الإنجليزي (الدولي) 64 بت واحفظ ISO في ISO/Win10_21H2_EnglishInternational_x64.iso.
لتخطيط مواقع IP على خريطة العالم في Graylog، يلزم قاعدة بيانات MaxMind GeoIP. لسوء الحظ، بسبب شروط الترخيص لا يمكن إعادة توزيعها، لذا يجب تنزيلها يدويًا (بعد التسجيل) من موقع MaxMind. يجب أن تعمل النسخة المجانية GeoLite2، احصل على قاعدة بيانات "GeoLite2 City" بتنسيق MMDB (قم بتنزيل GZIP وفك الضغط) وضعها في resources/GeoLite2-City.mmdb.
إذا لم يكن لديك Packer، احصل على أحدث إصدار من موقع packer.io (قم بتنزيل الملف الثنائي المترجم مسبقًا) أو حاول إضافة مستودع Hashicorp إلى نظام الحزم الخاص بك (مفيد أيضًا لـ Terraform).
إذا كنت تعيد بناء الصور، فلا تنس تنظيف البنيات السابقة:
rm -fr output_*
إذا كنت تريد إعادة تنزيل الصور، قم بإزالة packer_cache:
rm -fr packer_cache
بعد خطوات التحضير هذه، قم بتشغيل بنيات Packer بالتوازي:
./packer-build-all.sh

يجب أن تكون الصور جاهزة في وقت معقول (~20-30 دقيقة حسب قوة أجهزة المضيف).
الآن يمكن نشر البنية التحتية باستخدام Terraform.
احصل على Terraform (>=0.13) إذا لم يكن لديك (انظر إلى طرق التثبيت في Packer أعلاه).
يجب تنزيل موفر Terraform لـ libvirt تلقائيًا من سجل Terraform أثناء مرحلة التطبيق.
ادخل إلى مجلد Terraform:
cd ../terraform
قم بتهيئة دليل العمل (مطلوب فقط للاستخدام الأول):
terraform init
قم ببناء وإطلاق البنية التحتية ("تطبيق التغييرات"):
terraform apply
لاحظ أنه إذا لم يكن المستخدم الذي يقوم بتشغيل terraform apply هو المستخدم الجذر، فإن صلاحيات sudo مطلوبة لتشغيل /usr/sbin/iptables (بدون كلمة مرور).

بعد وقت قصير (~2-3 دقائق)، تكون الشبكة والأجهزة الافتراضية قيد التشغيل. إذا كانت هناك أي فشل، فقد لا يكون terraform destroy كافيًا، وقد يكون من الضروري تعريف الموارد يدويًا.
تحذير: يجب أن تهتم بحماية شبكتك الخاصة. يحتوي تكوين terraform (main.tf) المقدم هنا فقط على قاعدة جدار حماية مخصصة لبيئة الاختبار الخاصة بي (حظر حركة المرور الوجهة 192.168.0.0/16 من شبكة honeypot 192.168.3.0/24).
المرحلة التالية هي مرحلة التكوين.
ادخل إلى مجلد ansible:
cd ../ansible
طريقة التثبيت الموصى بها هي تثبيت أحدث إصدار من Ansible مع بعض التبعيات الإضافية المطلوبة في بيئة Python venv الافتراضية:
python3 -m venv venv
. ./venv/bin/activate
pip3 install -r requirements.txt
للاستخدام لاحقًا، فقط قم بتنشيط venv بواسطة
. ./venv/bin/activate
وقم فقط بـ deactivate إذا لم تعد هناك حاجة إليه في جلستك الحالية.
يجب وضع مفتاح SSH عام باسم ملف id.pub (استخدم ssh-keygen) في مجلد ansible للوصول إلى جهاز Ubuntu Graylog باستخدام المستخدم ubuntu (سيقوم ansible بإضافته إلى ~ubuntu/.ssh/authorized_keys).
يحتوي ملف wordlist.txt على بعض كلمات المرور (الضعيفة عن قصد) لمستخدمي النطاق المملوءين والتي يمكن تخصيصها.
قم بتشغيل مرحلة التكوين:
ansible-playbook -i hosts setup-domain.yml -v

بعد 20-25 دقيقة، كل شيء جاهز.
وفقًا لتكوين شبكة libvirt (NAT)، يمكن للمضيفين الوصول إلى الإنترنت العام (إذا كان نظام المضيف يسمح بذلك).
الوصول إلى المضيفين ممكن من خلال النظام المضيف. عمليًا، استخدام نفق SSH socks و proxychains للوصول إلى RDP أو WinRM أمر مريح للغاية.
على سبيل المثال، إذا كان عنوان IP لمضيف libvirt الخاص بك هو 192.168.0.10، قم بإنشاء نفق socks يستمع على localhost:5000 بواسطة
ssh 192.168.0.10 -D5000 -NTv
وقم بالوصول إلى سطح مكتب Windows 10 (باستخدام ملف /etc/proxychains.conf مناسب مهيأ للنفق :5000):
proxychains xfreerdp /v:192.168.3.112 /u:administrator
أو، الوصول إلى واجهة الويب Graylog التي تستمع على :9000 محليًا على خادم Graylog Ubuntu عبر SSH ProxyJump ونفق إعادة توجيه مخصص:
ssh -J 192.168.0.10 [email protected] -NTv -L9000:127.0.0.1:9000
ثم افتح الرابط http://localhost:9000 وستصل إلى واجهة الويب Graylog.
لتفعيل فخ RDP (honeypot)، فقط اسمح بالوصول العام إلى 192.168.3.112:3389 (على سبيل المثال مع بعض تكوينات إعادة توجيه المنفذ على جهاز التوجيه وقواعد iptables على الجهاز المضيف؛ البرنامج النصي المساعد الخاص بي هو rdp_public.sh) واستمر في مراقبة Graylog. ;)
| اسم المضيف | عنوان IP | نظام التشغيل | الدور |
|---|
| dc1 | 192.168.3.100 | Windows Server 2016 | Domain Controller |
| desktop12 | 192.168.3.112 | Windows 10 (الإصدار 2004) | Domain Member Workstation |
| graylog | 192.168.3.191 | Ubuntu 18.04 LTS | Graylog Server |
| kali | 192.168.3.192 | Kali Rolling (2022.3) | Offensive Operations |