لا يتوقف Windows UAC أبدًا عن الدهشة ، أو كيفية اكتشاف شخص من الداخل

صورة

مرحبا بالجميع! أنا متأكد من أنك سمعت عن أوجه القصور في تقنية Windows UAC ، ولكن في الآونة الأخيرة ، ظهرت تفاصيل عن الثغرة الأمنية الغريبة ، التي تسمح العملية لمستخدم غير محسّن بزيادة الامتيازات إلى أقصى حد. في Jet CSIRT ، لم نترك هذه الحالة دون مراقبة ، نظرًا لأن نقاط الضعف الخاصة بميزة Privalge Escalation تكتسي أهمية خاصة لأي فريق مراقبة واستجابة لـ IS. تحت خفض - وصفا للضعف ، وطرق الكشف والحماية.

تفاصيل الضعف


اكتشف الباحث إدواردو براون برادو من فريق مبادرة زيرو داي ثغرة محلية في تصاعد الامتيازات في مكون Windows Certificate Dialog الذي ينتج عن المعالجة غير الصحيحة لامتيازات المستخدم. تسمح مشكلة عدم الحصانة برفع امتيازات المستخدم إلى أقصى حد ممكن من النظام وتجاوز جميع آليات الحماية من Windows. يحدث هذا عند استخدام آلية Windows UAC ، عندما يتفاعل المستخدم مع مكون Secure Desktop عن طريق فتح مربع حوار بدء تشغيل الملف نيابة عن المسؤول.

صورة

ما هو جوهر الضعف؟ تحتوي شهادة الملف القابل للتنفيذ على حقل رقمي اختياري "معرف السياسة" بتنسيق معرف الكائن الخاص بـ Microsoft (OID).

صورة

يعرّف ملف رأس Wintrust.h هذا الحقل بأنه SPC_SP_AGENCY_INFO_OBJID. على الرغم من أن الغرض منه موثق بشكل سيئ ، فمن المرجح أن يتم تحليله عند فتح نافذة تحتوي على تفاصيل الشهادة. عندما يتم تقديم هذا الحقل بالتنسيق الصحيح ، فسيتم عرض الحقل "مصدر حسب" كارتباط تشعبي مع القيمة المأخوذة من سمة SpcSpAgencyInfo.

صورة

عند النقر فوق ارتباط مع الحقل الصادر بواسطة ، يفتح Internet Explorer بأذونات SYSTEM. ستكون العملية الرئيسية لذلك هي عملية approx.exe. يتم تشغيله أيضًا بأقصى الامتيازات ، وفي سياق هذا السياق يبدأ مربع حوار UAC. وفقًا لذلك ، يصبح من الممكن تشغيل ملف تعسفي (cmd.exe ، powershell.exe) من قائمة المتصفح باستخدام حقوق SYSTEM الموروثة.

صورة

نظرًا لأن PoC لإثبات استغلال مشكلة عدم الحصانة (يتم توفير الفيديو أدناه) ، اقترح الباحث استخدام الأداة المساعدة HTML Help ActiveX Control ، والتي تحتوي الشهادة على الميزات الموضحة أعلاه.

في الوقت نفسه ، من الممكن توقيع أي ملف قابل للتنفيذ بهذه الطريقة ، على سبيل المثال ، باستخدام powerhell cmdlet Set-AuthenticodeSignature. أولاً ، تحتاج إلى إنشاء شهادة مرجع شهادات الجذر الموقعة ذاتياً وشهادة نهائية باستخدام الأداة المساعدة makecert من Windows SDK. يتم إعطاء التعليمات هنا .

تلقت مشكلة عدم الحصانة المعرف CVE-2019-1388 و CVSS 7.8. تأثرت جميع إصدارات نظام التشغيل من نظام التشغيل Windows 7 إلى نظام التشغيل Windows Server 2019. وبعد تثبيت التصحيح ، يتوقف عرض الحقل الصادر في تفاصيل الشهادة كارتباط تشعبي.

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


كيفية الكشف


للكشف عن استغلال الثغرة الأمنية على الأنظمة الأساسية لنظام التشغيل Windows x 64 ، نستخدم قاعدة الارتباط في نظام SIEM في نظام SIEM الذي يراقب سلسلة الأحداث (على العقدة المراقبة ، يجب أولاً تمكين تدقيق بدء تشغيل العملية باستخدام نهج المجموعة المناسب أو استخدام الأداة المساعدة Sysmon من Sysinternals):

  1. الكشف عن بداية عملية constent.exe بامتيازات SYSTEM (رمز الحدث 4688 ).
  2. الكشف عن بداية العملية C: \ Program Files \ iexplore.exe مع حقوق SYSTEM ، حيث تعمل الموافقة.exe بمثابة العملية الأصل.
  3. الكشف عن بداية العملية C: \ Program Files (x86) \ iexplore.exe بامتيازات SYSTEM ، حيث تعمل C: \ Program Files \ iexplore.exe كعملية الأصل.

    صورة
  4. الكشف عن بدء تشغيل shell (cmd.exe ، powershell.exe) بامتيازات SYSTEM ، حيث تعمل C: \ Program Files (x86) \ iexplore.exe كعملية الأصل.

    صورة
  5. معرّف العملية C: \ Program Files (x86) \ iexplore.exe من المطالبة 3 والمعرف C: \ Program Files (x86) \ iexplore.exe كعملية الأصل من الفقرة السابقة هي نفسها.

دعنا نعطي مثالًا على قاعدة الارتباط الموضحة في الجانب FortiSIEM.

المصطلحات المستخدمة



تفاصيل شروط موافقة launch.exe



التفاصيل IEx64 إطلاق الشرط



التفاصيل شروط إطلاق IEx86



تفاصيل شروط إطلاق cmd.exe ، powershell.exe



FortiSIEM كود المصدر لقواعد الارتباط
<rules><DataRequest advanced="true" custId="1" type="Rule"> <Name>UAC Privilege Escalation through Secure Desktop</Name> <Description>   UAC Secure Desktop CVE-2019-1388</Description> <Remediation/> <CustomerScope groupByEachCustomer="true"> <Include>1</Include> <Exclude/> </CustomerScope> <PatternClause window="300"> <SubPattern id="148021654" name="Consent_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName CONTAIN "consent.exe" AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021655" name="IE_x64_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND procName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND parentProcName CONTAIN "consent.exe" OR user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procId,user,parentProcName,procName</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021664" name="IE_x86_Execution"> <SingleEvtConstr>eventId = 4688 AND procName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND parentProcName REGEXP (".*Files\\\\Internet.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>procName,parentProcName,procId,user</GroupByAttr> </SubPattern> <Operator rank="0" type="FOLLOWED_BY"/> <SubPattern id="148021656" name="Cmd_Execution"> <SingleEvtConstr>eventType = "Win-Security-4688" AND ( procName CONTAIN "cmd.exe" OR procName CONTAIN "powershell.exe" ) AND parentProcName REGEXP (".*\\(x86\\)\\\\.*\\\\iexplore\\.exe$") AND user IN ("","SYSTEM")</SingleEvtConstr> <GroupEvtConstr>COUNT(*) >= 1</GroupEvtConstr> <GroupByAttr>user,parentProcName,procName,parentProcId</GroupByAttr> </SubPattern> <GlobalConstr>IE_x86_Execution.procId = Cmd_Execution.parentProcId</GlobalConstr> </PatternClause> <IncidentDef eventType="UAC_Privilege_Escalation_through_Secure_Desktop" eventTypeGroup="PH_SYS_EVENT_PH_RULE_SEC" fireFreq="900" severity="7"> <ArgList>procName=Cmd_Execution.procName,parentProcName=Cmd_Execution.parentProcName,user=Cmd_Execution.user</ArgList> </IncidentDef> <DynWatchListDef/> <userRoles> <roles custId="0"></roles> </userRoles> <TriggerEventDisplay> <AttrList>phRecvTime,eventType,reptDevName,reptDevIpAddr,destIpAddr,destName,user,parentProcId,parentProcName,procId,procName,rawEventMsg</AttrList> </TriggerEventDisplay> </DataRequest> </rules> 


نشر الباحث فلوريان روث قاعدة سيجما لاكتشاف محاولات استغلال هذه الثغرة الأمنية. ومع ذلك ، نظرًا للقيود اللغوية ، وباستخدام القاعدة ، من الممكن اكتشاف حدث إطلاق Internet Explorer فقط بامتيازات SYSTEM ومعالجة الوصل للعملية الأصل دون الكشف اللاحق عن عمليات إطلاق shell. لا يمكن تتبع سلسلة الأحداث الضرورية وفقًا للشروط الموضحة أعلاه (1-5) باستخدام أدوات Sigma ، ولهذا السبب اضطررنا لتطوير قاعدة خاصة بنا.

كيف تحمي نفسك


1. قم بتثبيت تصحيح Microsoft بتاريخ ١٢ نوفمبر للحصول على إصدار نظام التشغيل المقابل.

2. إذا تعذر تثبيت التصحيح للقضاء على هذه الثغرة الأمنية ، يجب عليك استخدام:

  • قواعد AppLocker التي تحظر إطلاق قذائف cmd.exe و powershell.exe للحسابات المضمنة في مجموعة Users (يجب أن تأخذ في الاعتبار الأدوات المساعدة والتقنيات التي تتحايل على AppLocker المدرجة في LOLBINS ) ؛
  • IPS المستندة إلى المضيف باستخدام أنظمة فئة EPP ، EDR (تحتاج إلى تكوين قواعد الوصول التي تمنع العملية iexplore.exe من الوصول إلى cmd.exe ، powershell.exe).

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


All Articles