أساسيات تصعيد امتيازات Windows

قررت لنفسي ولأولئك الذين سيجدون أنه من المفيد جمع كل ما أعرفه ، لكنني لا أتذكر هذا الموضوع في هذه المقالة. مشاركة النصائح. المصدر الرئيسي لهذه المقالة هو هذا .

لقد ترجمت بحرية وأضفت القليل من نفسي ، وهو ما جمعته وتعلمته من مصادر أخرى.

بشكل عام ، إليك بعض الطرق لمساعدتنا في تحقيق هدف تصعيد الامتياز.

نقطة البداية لهذه المقالة القصيرة هي غلاف (حساب) غير مميز. ربما استخدمنا برمجية إكسبلويت أو نفذنا هجومًا وحصلنا على هذه القذيفة.

في الأساس ، في البداية ، نحن لا نفهم الآلة: ما تقوم به ، وما هي الأشياء المتصلة بها ، ومستوى الامتيازات التي لدينا ، أو حتى ما هو نظام التشغيل.

أولاً ، نحتاج إلى الحصول على المعلومات التي نحتاجها لنفهم أين نحن وما لدينا:

systeminfo | findstr /B /C:" " /C:" " 

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

بعد ذلك ، من المهم معرفة اسم الجهاز واسم المستخدم الذي نتصل به.

  • اسم المضيف هو اسم المستخدم.
  • echo٪ username٪ - username.

بعد ذلك ، دعنا نرى ما لا يزال المستخدمون في هذا المضيف ونحصل على معلومات أكثر تفصيلاً حول المستخدمين.

  • صافي المستخدمين - مستخدمين آخرين
  • net user user1 - معلومات تفصيلية عن المستخدم ، حيث user1 هو اسم المستخدم الخاص بك.

بعد تلقي معلومات حول الحساب ، سنرى معلومات حول تفاعل الشبكة لهذا المضيف.

أولاً ، ألق نظرة على الواجهات المتاحة وجدول التوجيه.

  • ipconfig / all - معلومات حول الواجهات المتاحة.
  • توجيه المسار - جدول التوجيه
  • arp -A - جدول إدخالات arp

بعد ذلك ، سنرى اتصالات الشبكة النشطة وقواعد جدار الحماية.

  • netstat -ano - اتصالات شبكة نشطة.

-a - يعرض التشغيل باستخدام هذه المعلمة جميع اتصالات TCP النشطة ، بالإضافة إلى منافذ TCP و UDP التي يستمع إليها النظام ؛
-n - تسمح لك المعلمة بإظهار اتصالات TCP النشطة مع العناوين وأرقام المنافذ ؛
-o - نفس المفتاح السابق ، يعرض اتصالات TCP النشطة ، ولكن تتم إضافة رموز العملية إلى الإحصائيات ، فمن الممكن بالفعل تحديد التطبيق الذي يستخدم الاتصال بالضبط.

  • تظهر حالة جدار الحماية netsh - حالة جدار الحماية
  • netsh إظهار جدار الحماية التكوين - تكوين جدار الحماية

أخيرًا ، نفحص بإيجاز ما يعمل على مضيف مُخترق: المهام المجدولة والعمليات الجارية وتشغيل الخدمات وبرامج التشغيل المثبتة.

 schtasks /query /fo LIST /v 

أين
/ query - عرض بيانات حول جميع المهام المجدولة ،
/ fo LIST - إخراج القائمة.
/ v - تفاصيل مهمة الطباعة.

يربط الأمر التالي العمليات الجارية مع الخدمات قيد التشغيل.

 tasklist /SVC 

أين
/ SVC - خدمات رسم الخرائط لكل عملية.

انظر أيضًا قائمة بتشغيل خدمات Windows.

 net start 

من المفيد أيضًا رؤية معلومات حول محركات النظام المخترق.

 DRIVERQUERY 

بعد ذلك ، أود أن أذكر عن الأمر الأكثر فائدة لـ Windows - wmic. يتم استخدام الأمر WMIC (Windows Management Instrumentation Command) للحصول على معلومات حول الأجهزة والنظام ، وإدارة العمليات ومكوناتها ، وتغيير الإعدادات باستخدام إمكانيات Windows Management Instrumentation (Windows Management Instrumentation أو WMI). وصف جيد .

لسوء الحظ ، لا تسمح بعض تكوينات Windows بالوصول إلى WMIC بشكل افتراضي إذا لم يكن المستخدم عضوًا في مجموعة المسؤولين (وهي فكرة جيدة حقًا). لم يسمح أي إصدار من XP بالوصول إلى WMIC من حساب غير مميز.

في المقابل ، مكّن Windows 7 Professional و Windows 8 Enterprise المستخدمين ذوي الامتيازات المنخفضة لاستخدام WMIC بشكل افتراضي.

كالعادة - معلمات البرنامج:

 wmic /? 

برنامج جيد لجمع المعلومات من خلال wmic.

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

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

كقاعدة ، هذه هي الدلائل التالية:

  • c: \ sysprep.inf
  • c: \ sysprep \ sysprep.xml
  • ٪ WINDIR٪ \ Panther \ Unattend \ Unattended.xml
  • ٪ WINDIR٪ \ Panther \ Unattended.xml

لكن الأمر يستحق التحقق من النظام بأكمله.

تحتوي هذه الملفات على كلمات مرور بنص واضح أو ترميز BASE64.
أمثلة:

Sysprep.inf - كلمة المرور بنص واضح.

"

Sysprep.xml - كلمة مرور مشفرة باستخدام base64.

"

Unattended.xml - كلمة مرور مشفرة باستخدام base64.



أيضًا ، بالنسبة إلى المضيفين المتصلين بالمجال ، يمكنك البحث عن ملف Group.xml ، الذي يحتوي على كلمة مرور مشفرة AES256 ، ولكن يمكن فك تشفيرها ، لأن يتم نشر المفتاح على msdn (https://msdn.microsoft.com/en-us/library/cc422924.aspx) ومصادر أخرى. ولكن هذا هو الحال إذا تم استخدام سياسة إنشاء مستخدمين محليين على المضيفين أو ، على سبيل المثال ، تعيين كلمة مرور لمسؤول محلي.

على سبيل المثال ، لدي هنا:



بعد فتحه ، نبحث عن معلمة "cpassword".



بعد ذلك ، تحتاج إلى فك تشفير هذا التسلسل. نستخدم ، على سبيل المثال ، CrypTool . أولاً ، فك شفرة Base64.
ميزات Base64 هي أن طوله يجب أن يكون مضاعفًا لـ 4. لذلك ، فإننا نعتبر الكتل المكونة من 4 ، وإذا لم تكن هناك أحرف كافية في الكتلة الأخيرة ، فإننا نضيف الأحرف المفقودة بـ "=".
حصلت على 2 "=".



بعد ذلك نقوم بفك تشفير. باستخدام المفتاح أعلاه.



نزيل النقاط الإضافية التي تفصل بين الأحرف ونحصل على كلمة المرور.

بالإضافة إلى Group.xml ، إليك بعض ملفات تفضيلات السياسة الأخرى التي قد تحتوي على مجموعة إضافية من سمات cPassword:

  • Services \ Services.xml
  • ScheduledTasks \ ScheduledTasks.xml
  • طابعات \ Printers.xml
  • محركات \ Drives.xml
  • DataSources \ DataSources.xml

ومع ذلك ، كلنا نحب الحلول الآلية ، حتى نتمكن من الوصول إلى خط النهاية في أسرع وقت ممكن. هناك خياران رئيسيان هنا ، اعتمادًا على نوع القشرة / الوصول لدينا. هناك وحدة metasploit يمكن تنفيذها من خلال جلسة محددة (https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp) أو يمكنك استخدام Get-GPPPassword ، وهو جزء من PowerSploit .

حسنًا ، التالي. سنبحث عن معلمة التسجيل الغريبة "AlwaysInstallElevated". يسمح هذا الخيار للمستخدمين غير المميزين بتثبيت ملفات .msi من NT AUTHORITY \ SYSTEM.

لكي نتمكن من استخدام هذا ، يجب أن نتحقق من تثبيت مفتاحي التسجيل ، وإذا كان الأمر كذلك ، يمكننا الحصول على shell SYSTEM. تحقق:

 reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated 

 reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated 

يتضمن Metasploit وحدة خاصة مستغلة / windows / local / always_install_elevated ، والتي تنشئ ملف MSI مع ملف قابل للتنفيذ خاص مدمج فيه ، والذي يتم استخراجه وتنفيذه بواسطة المثبت بامتيازات النظام. بعد تنفيذه ، يتوقف ملف msi عن التثبيت لمنع تسجيل الإجراءات في النظام. بالإضافة إلى ذلك ، إذا بدأت التثبيت باستخدام مفتاح التبديل / quiet ، فلن تحصل حتى على خطأ.

حسنًا ، بعض أوامر البحث المفيدة على النظام:

سيبحث الأمر أدناه في نظام الملفات عن أسماء الملفات التي تحتوي على كلمات رئيسية محددة. يمكنك تحديد أي عدد من الكلمات الرئيسية.

 dir /s *pass* == *cred* == *vnc* == *.config* 

عند البحث عن أنواع ملفات محددة حسب الكلمة الرئيسية ، يمكن لهذا الأمر توليد الكثير من المخرجات.

 findstr /si password *.xml *.ini *.txt 

وبالمثل ، يمكن استخدام الأمرين أدناه لتجميع التسجيل للكلمات الرئيسية ، في هذه الحالة ، "كلمة المرور".

 reg query HKLM /f password /t REG_SZ /s 

 reg query HKCU /f password /t REG_SZ /s 

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

سوف نتحقق من الكثير من حقوق الوصول ، accesschk.exe ، وهي أداة من Microsoft Sysinternals Suite ، ستساعدنا في ذلك. يحتوي Microsoft Sysinternals على العديد من الأدوات الرائعة. يمكن تنزيل الحزمة من موقع Microsoft technet على الويب (https://docs.microsoft.com/ru-ru/sysinternals/downloads/sysinternals-suite).

يمكننا التحقق من مستوى الامتياز المطلوب لكل خدمة باستخدام accesschk.

يمكننا أن نرى الأذونات التي يمتلكها كل مستخدم.



يمكن لـ Accesschk التحقق تلقائيًا مما إذا كان لدينا حق الوصول إلى خدمة Windows بمستوى مستخدم معين. كقاعدة ، كمستخدم لديه امتيازات منخفضة ، نريد التحقق من "المستخدمين". تأكد من التحقق من مجموعات المستخدمين التي تنتمي إليها.

-c الاسم خدمة Windows ، على سبيل المثال ssdpsrv (حدد "*" لعرض كافة الخدمات)
-د فقط معالجة الدلائل
-e عرض مستويات التكامل المحددة بشكل صريح فقط (Windows Vista فقط)
-k الاسم هو مفتاح تسجيل ، على سبيل المثال ، hklm \ software
-n عرض الكائنات التي ليس لها قواعد وصول فقط
-p يتم تحديد الاسم أو معرف العملية (PID) كاسم ، على سبيل المثال cmd.exe (حدد "*" كاسم لعرض جميع العمليات)
-q حذف رأس
-r طباعة الكائنات التي لها حق الوصول للقراءة فقط
-s المعالجة العودية
-v طباعة معلومات تفصيلية
-w سرد الكائنات التي لها حق الوصول للكتابة فقط



هناك أيضًا أمر آخر مثير للاهتمام:

 autorunsc.exe -a | findstr /n /R "File\ not\ found" 

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

بعد ذلك ، نعتبر نقطتي ضعف:

أولا: تكرار نتائج المنشور الذي كتبه بارفيز من GreyHatHacker ؛ "رفع الامتيازات من خلال استغلال أذونات المجلد الضعيفة" (http://www.greyhathacker.net/؟p=738).

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

عادةً ، يستخدم تطبيق Windows مسارات بحث محددة مسبقًا للعثور على ملف dll ، وسيتحقق من هذه المسارات بترتيب معين. عادة ما يحدث اختطاف دلل عن طريق وضع دلس الخبيثة على طول أحد هذه المسارات. يمكن إصلاح هذه المشكلة من خلال الإشارة إلى المسارات المطلقة للتطبيق إلى دلل المطلوبة.

ترتيب بحث دلل:

  1. الدليل الذي يتم تشغيل التطبيق منه
  2. دليل نظام 32 بت (C: \ Windows \ System32)
  3. دليل نظام 16 بت (C: \ Windows \ System)
  4. دليل Windows (C: \ Windows)
  5. دليل العمل الحالي (CWD)
  6. الدلائل في متغير بيئة PATH (النظام ثم المستخدم)

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

نظرًا لأن dll غير موجود ، ينتهي بنا الأمر بالانتقال عبر جميع مسارات البحث. كمستخدم لديه مستوى امتياز منخفض ، ليس لدينا فرصة كبيرة لوضع ملف ضار في العناصر 1-4 ، 5. ولكن إذا كان لدينا حق الوصول إلى أي من الأدلة ، فإن فرصنا في الفوز كبيرة.

دعونا نرى كيف يعمل في الممارسة العملية ، على سبيل المثال سنستخدم خدمة IKEEXT (وحدات مفتاح IPSec IKE و AuthIP الرئيسية) التي تحاول تنزيل wlbsctrl.dll.

أي دليل في "C: \" سيوفر حق الوصول للكتابة للمستخدمين المصادق عليهم ، وهذا يمنحنا فرصة.

 C:\Users\user1\Desktop> accesschk.exe -dqv "C:\Python27" 

 C:\Python27 Medium Mandatory Level (Default) [No-Write-Up] RW BUILTIN\Administrators FILE_ALL_ACCESS RW NT AUTHORITY\SYSTEM FILE_ALL_ACCESS R BUILTIN\Users FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE SYNCHRONIZE READ_CONTROL RW NT AUTHORITY\Authenticated Users FILE_ADD_FILE FILE_ADD_SUBDIRECTORY FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE FILE_WRITE_ATTRIBUTES FILE_WRITE_EA DELETE SYNCHRONIZE READ_CONTROL 

 C:\Users\user1\Desktop> icacls "C:\Python27" 

 C:\Python27 BUILTIN\Administrators:(ID)F BUILTIN\Administrators:(OI)(CI)(IO)(ID)F NT AUTHORITY\SYSTEM:(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(ID)F BUILTIN\Users:(OI)(CI)(ID)R NT AUTHORITY\Authenticated Users:(ID)C NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(ID)C 

و - وصول كامل.
(OI) - الميراث بواسطة الأشياء.
(CI) - الميراث بالحاويات.
(IO) - الميراث فقط.
(NP) - حظر توزيع الميراث.
(I) - ترث الأذونات من الحاوية الرئيسية.

قبل متابعة الإجراء ، يجب عليك التحقق من حالة خدمة IKEEXT. في هذه الحالة ، يمكننا أن نرى أنه تم ضبطه على "AUTO_START"!

 sc qc IKEEXT 

 [SC] QueryServiceConfig SUCCESS SERVICE_NAME: IKEEXT TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k netsvcs LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : IKE and AuthIP IPsec Keying Modules DEPENDENCIES : BFE SERVICE_START_NAME : LocalSystem 

الآن نعلم أن لدينا الشروط اللازمة ، ويمكننا إنشاء دلل الخبيثة واعتراض القشرة!

نستخدم Metasploit -> msfvenom ، على سبيل المثال.



بعد نقل evil.dll إلى جهاز الكمبيوتر الهدف لدينا ، كل ما علينا القيام به هو إعادة تسميته إلى wlbsctrl.dll ونقله إلى "C: \ Python27". بمجرد القيام بذلك ، نحتاج إلى الانتظار بصبر حتى يتم إعادة تشغيل الجهاز (أو يمكننا محاولة فرض إعادة التشغيل) ، وسوف نحصل على غلاف النظام.

 copy evil.dll C:\Python27\wlbsctrl.dll 

بعد ذلك ، يبقى فقط انتظار إعادة تشغيل النظام.

بالنسبة لمثالنا الأخير ، سننظر في المهام المخطط لها. سأصف المبدأ ، لأنه قد يكون لجميع الحالات حالات مختلفة.

نجد العملية ، الخدمة ، التطبيق الذي أطلقه برنامج جدولة المهام من SYSTEM.
نتحقق من حقوق الوصول إلى المجلد حيث يقع هدفنا.

 accesschk.exe -dqv "__" 

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

يمكن ترميزه اختياريا.



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

يجب أن يعطينا هذان المثالان فكرة عن نقاط الضعف التي يجب البحث عنها عند التفكير في أذونات الملفات والمجلدات. سيستغرق الأمر بعض الوقت لمعرفة جميع مسارات المسار المزدوج لخدمات Windows والمهام المجدولة ومهام التشغيل التلقائي.

أخيرًا ، بعض النصائح لاستخدام accesschk.exe.

البحث عن كافة الأذونات الضعيفة للمجلدات الموجودة على القرص.

 accesschk.exe -uwdqs Users c:\ accesschk.exe -uwdqs "Authenticated Users" c:\ 

البحث عن كافة الأذونات الضعيفة للملفات الموجودة على القرص.

 accesschk.exe -uwqs Users c:\*.* accesschk.exe -uwqs "Authenticated Users" c:\*.* 

مثل كل شيء.

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


All Articles