
سكربت Bash يلف أدوات Active Directory للعد التلقائي، فحص الثغرات، الاستغلال، وتفريغ كلمات المرور عبر LDAP و RPC و Kerberos و SMB.
linWinPwn هو سكربت bash يغلّف عددًا من أدوات Active Directory لأغراض التعداد (LDAP، RPC، ADCS، MSSQL، Kerberos، SCCM)، وفحوصات الثغرات (noPac، ZeroLogon، MS17-010، MS14-068)، وتعديلات الكائنات (تغيير كلمة المرور، إضافة مستخدم إلى مجموعة، RBCD، Shadow Credentials) واستخراج كلمات المرور (secretsdump، lsassy، nanodump، DonPAPI). يبسّط السكربت استخدام عدد كبير من الأدوات: impacket، bloodhound، netexec، enum4linux-ng، ldapdomaindump، lsassy، smbmap، kerbrute، certipy، silenthound، bloodyAD، DonPAPI وغيرها الكثير.
قم بعمل Git clone للمستودع وثبّت المتطلبات باستخدام سكربت install.sh
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
بدلاً من ذلك، استخدم صورة Docker الجاهزة من Docker Hub
docker pull lefayjey/linwinpwn:latest
# Add linWinPwn_docker to PATH
echo -e "docker run --rm --init -it --net=host -v \$(pwd):/opt/lwp-output lefayjey/linwinpwn:latest \$@" | sudo tee "/usr/local/sbin/linWinPwn_docker"
sudo chmod 755 /usr/local/sbin/linWinPwn_docker
# Run linWinPwn_docker (output to host's current directory)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <domain> -u <user> -p <password> --auto
أو قم بالبناء من المصدر
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
يمكن تنفيذ سكربت linWinPwn في الوضع التفاعلي (الافتراضي)، أو في الوضع الآلي (التعداد فقط).
1. الوضع التفاعلي (الافتراضي) - افتح القائمة التفاعلية لتشغيل الفحوصات بشكل منفصل
linWinPwn -t <Domain_Controller_IP> [-d <AD_domain> -u <AD_user> -p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]> -o <output_dir>]
2. الوضع الآلي - باستخدام المعامل --auto، شغّل أدوات التعداد (بدون استغلال أو تعديلات أو استخراج كلمات المرور)
عند استخدام الوضع الآلي، يتم إجراء فحوصات مختلفة بناءً على طريقة المصادقة.
linWinPwn -t <Domain_Controller_IP> --auto [-o <output_dir>]
linWinPwn -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] --auto
Auto config - قم بمزامنة NTP مع DC الهدف وأضف مدخلًا إلى /etc/hosts قبل تشغيل الوحدات
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - استخدم LDAPS بدلاً من LDAP (المنفذ 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - فرض استخدام مصادقة Kerberos بدلاً من NTLM (عند الإمكان)
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - تمكين جميع مخرجات verbose وdebug
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - اختر واجهة شبكة المهاجم
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - اختر الأهداف المراد فحصها (DC، All، IP=IP_or_hostname، File=./path_to_file)
linWinPwn -t <Domain_Controller_IP> --targets All
linWinPwn -t <Domain_Controller_IP> --targets DC
linWinPwn -t <Domain_Controller_IP> -T IP=192.168.0.1
linWinPwn -t <Domain_Controller_IP> -T File=./list_servers.txt
Custom wordlists - اختر قوائم كلمات مخصصة للمستخدمين وكلمات المرور
linWinPwn -t <Domain_Controller_IP> -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
linWinPwn -t <Domain_Controller_IP> -P /usr/share/seclists/Passwords/xato-net-10-million-passwords.txt
يمكن أن يكون linWinPwn مفيدًا بشكل خاص عندما يكون لديك وصول إلى بيئة Active Directory لفترة محدودة فقط، وترغب في أن تكون أكثر كفاءة في عملية التعداد وفي جمع الأدلة. بالإضافة إلى ذلك، يمكن أن يحل linWinPwn محل استخدام أدوات التعداد على Windows بهدف تقليل عدد الآثار التي يتم إنشاؤها (مثل أوامر PowerShell، وأحداث Windows، والملفات التي يتم إنشاؤها على القرص)، وتجاوز بعض برامج مكافحة الفيروسات أو EDRs. يمكن تحقيق ذلك من خلال إجراء remote dynamic port forwarding عبر إنشاء نفق SSH من مضيف Windows (مثل جهاز VDI أو محطة عمل أو حاسوب محمول) إلى جهاز Linux بعيد (مثل حاسوب اختبار اختراق أو VPS)، وتشغيل linWinPwn مع proxychains.
على مضيف Windows، شغّل باستخدام PowerShell:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
على جهاز Linux، قم أولاً بتحديث /etc/proxychains4.conf ليتضمن socks5 127.0.0.1 1080، ثم شغّل:
linWinPwn_proxychains -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] [--auto]