بيت · أمان · مطلوب رفع حقوق الوصول. رفع امتيازات المستخدم في نظام التشغيل Windows

مطلوب رفع حقوق الوصول. رفع امتيازات المستخدم في نظام التشغيل Windows

تتطلب العديد من البرامج رفع الحقوق عند بدء التشغيل (أيقونة درع بجوار الأيقونة)، ولكن في الواقع، حقوق المسؤول ليست مطلوبة لتشغيلها العادي (على سبيل المثال، قمت يدويًا بمنح الحقوق اللازمة للمستخدمين لدليل البرنامج في ProgramFiles و فروع التسجيل التي يستخدمها البرنامج). وفقًا لذلك، عند تشغيل مثل هذا البرنامج كمستخدم بسيط، إذا تم تمكين التحكم في حساب المستخدم على الكمبيوتر، فستظهر مطالبة UAC وسيُطلب من المستخدم إدخال كلمة مرور المسؤول. لتجاوز هذه الآلية، يقوم الكثيرون ببساطة بتعطيل UAC أو منح حقوق مسؤول المستخدم على الكمبيوتر عن طريق إضافته إلى مجموعة المسؤولين المحليين. وبطبيعة الحال، كلتا الطريقتين غير آمنتين.

لماذا قد يحتاج التطبيق العادي إلى حقوق المسؤول

قد يحتاج البرنامج إلى حقوق المسؤول لتعديل ملفات معينة (السجلات والتكوينات وما إلى ذلك) في المجلد الخاص به في C:\Program Files (x86)\SomeApp). بشكل افتراضي، ليس لدى المستخدمين حقوق لتحرير هذا الدليل، لذلك، للتشغيل العادي لمثل هذا البرنامج، تكون حقوق المسؤول مطلوبة. لحل هذه المشكلة، تحتاج إلى تعيين حقوق التغيير/الكتابة يدويًا للمستخدم (أو مجموعة المستخدمين) لمجلد البرنامج كمسؤول على مستوى NTFS.

ملحوظة. في الواقع، فإن ممارسة تخزين بيانات التطبيق المتغيرة في الدليل الخاص بها ضمن ملفات C:\Program غير صحيحة. من الأصح تخزين بيانات التطبيق في ملف تعريف المستخدم. لكن هذه مسألة كسل وعدم كفاءة المطورين.

تشغيل برنامج يتطلب حقوق المسؤول من مستخدم قياسي

لقد وصفنا سابقًا كيف يمكنك استخدام معلمة RunAsInvocer. ومع ذلك، هذه الطريقة ليست مرنة بما فيه الكفاية. يمكنك أيضًا استخدامه مع حفظ كلمة مرور المسؤول /SAVECRED (غير آمن أيضًا). دعونا نفكر في طريقة أبسط لإجبار أي برنامج على التشغيل بدون حقوق المسؤول (وبدون إدخال كلمة مرور المسؤول) مع تمكين UAC (4.3 أو المستوى 2).

على سبيل المثال، لنأخذ أداة تحرير التسجيل - رجديت.exe(وهو موجود في الدليل C:\windows\system32). عند تشغيل regedit.exe، تظهر نافذة UAC، وما لم تؤكد رفع الامتيازات، فلن يبدأ محرر التسجيل.

لنقم بإنشاء ملف على سطح المكتب تشغيل كغير admin.batمع النص التالي:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

الآن لإجبار التطبيق على التشغيل بدون حقوق المسؤول وقمع مطالبة UAC، ما عليك سوى سحب ملف exe المطلوب إلى ملف الخفافيش هذا على سطح المكتب.

بعد ذلك، يجب أن يبدأ محرر التسجيل دون ظهور مطالبة UAC. افتح مدير العمليات وأضف عمودًا مرتفعة(مع أذونات أعلى)، سترى أن النظام لديه عملية regedit.exe بحالة غير مرتفعة (تعمل مع حقوق المستخدم).

حاول تحرير أي معلمة في فرع HKLM. كما ترون، تم رفض الوصول لتحرير التسجيل في هذا الفرع (هذا المستخدم ليس لديه حقوق الكتابة إلى فروع تسجيل النظام). ولكن يمكنك إضافة المفاتيح وتحريرها في فرع التسجيل الخاص بالمستخدم - HKCU.

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

تشغيل التطبيق باسم غير admin.bat

تعيين مسار التطبيق = "C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

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

محرر سجل ويندوز الإصدار 5.00


@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

بعد ذلك، لتشغيل أي تطبيق دون حقوق المسؤول، ما عليك سوى تحديد العنصر "" في قائمة السياق.

__COMPAT_LAYER متغير البيئة ومعلمة RunAsInvocer

يتيح لك متغير البيئة __COMPAT_LAYER ضبط مستويات توافق مختلفة للتطبيقات (علامة التبويب التوافقفي خصائص ملف exe). باستخدام هذا المتغير، يمكنك تحديد إعدادات التوافق التي يجب تشغيل البرنامج بها. على سبيل المثال، لتشغيل التطبيق في وضع التوافق مع Windows 7 وبدقة 640 × 480، قم بتعيين:

اضبط __COMPAT_LAYER=Win7RTM 640x480

من بين خيارات المتغير __COMPAT_LAYER التي تهمنا، نسلط الضوء على المعلمات التالية:

  • RunAsInvocer- إطلاق تطبيق بامتيازات العملية الأصلية دون طلب UAC.
  • RunAsHighest- تشغيل التطبيق بالحد الأقصى من الحقوق المتاحة للمستخدم (يظهر طلب UAC إذا كان المستخدم لديه حقوق المسؤول).
  • شغلها كمسؤول- قم بتشغيل التطبيق باستخدام حقوق المسؤول (تظهر مطالبة AUC دائمًا).

أولئك. لا توفر المعلمة RunAsInvocer حقوق المسؤول، ولكنها تحظر فقط مظهر نافذة UAC.

حملات المستخدم العامة(التحكم في حساب المستخدم) هي تقنية للتحكم في الحساب ظهرت لأول مرة في ويندوز فيستاوكبار السن. تمنع هذه التقنية البرامج من تنفيذ الإجراءات التي تتطلب حقوق المسؤول. عندما يقوم البرنامج بمثل هذه الإجراءات، يتم تعليق عمله ويتم تقديم نافذة طلب للمستخدم على سطح المكتب المحمي (بحيث يكون من المستحيل الضغط على الزر "موافق" برمجيًا). على سبيل المثال، إذا كان برنامجك يحتاج إلى إجراء تغييرات على مفتاح التسجيل HKEY_LOCAL_MACHINE، فسوف تحتاج إلى حقوق المسؤول.
لحل هذه المشكلة، يمكنك استخدام تنفيذ ملف البيان في المشروع، والذي سيقرأه نظام التشغيل ويحدد تلقائيًا المعلمات اللازمة للإطلاق.
دعونا نفكر في إدخال ملف البيان في التطبيق " نموذج ويندوز" للقيام بذلك، افتح Visual Studio (يتم استخدام الإصدار 2012 في هذا المثال) وقم بإنشاء مشروع " نموذج ويندوز" يفتح " مكتشف الحل(Solution Explorer) الذي يوفر عرضًا منظمًا للمشاريع وملفاتها، انتقل إلى القائمة منظر» - « مكتشف الحل" انقر بزر الماوس الأيمن على " مكتشف الحل" حسب اسم المشروع وحدد من قائمة السياق، " يضيف» - « إنشاء عنصر...».

نافذة جديدة ستفتح " إضافة عنصر جديد -..."ابحث عن عنصر Visual C# المسمى" ملف بيان التطبيق"، حدده وانقر فوق" يضيف».

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

لتكوين الحقوق اللازمة لتشغيل التطبيق، تحتاج إلى تحديد مستوى الأمان ووصف العنصر " requestExecutionLevel" لا يحتوي هذا العنصر على عناصر فرعية وله السمات التالية:
1) مستوى- مطلوب. يضبط مستوى الأمان الذي يتطلبه التطبيق. القيم التالية متاحة لهذه السمة:
  • asInvocer- يبدأ التطبيق بحقوق العملية الأم. وهذا يعني أنه إذا قمت بتشغيل برنامج من تطبيق يعمل بالفعل بحقوق المسؤول، فسوف يتمتع تلقائيًا بنفس الحقوق. هذا الوضع موصى به من قبل Microsoft في معظم الحالات. أولئك. هذه هي تلك البرامج التي لا تتطلب حقوق المسؤول؛
  • أعلى مستوى متاح— يتم تشغيل التطبيق بحقوق أعلى من تلك التي يتمتع بها المستخدم الحالي. يتم تشغيل Regedit.exe وMmc.exe بهذه الحقوق؛
  • requireAdministrator- حقوق المسؤول الكاملة مطلوبة. أولئك. مطلوب للتطبيقات التي لا يمكن تشغيلها بدون حقوق المسؤول.

تثبيت التطبيقات " انقر مرة واحدة"" ممكن فقط مع القيمة "asInvocer". أي قيمة أخرى لن تسمح بالتثبيت.

2) uiAccess- خياري. يشير إلى ما إذا كان التطبيق يتطلب الوصول إلى عناصر واجهة المستخدم المحمية لتنفيذ ميزات إمكانية الوصول. القيم المتوفرة " حقيقي" و " خطأ شنيع"، القيمة الافتراضية هي" خطأ شنيع". معنى " حقيقي" يجب أن يحتوي على تطبيقات موقعة فقط ويتم تشغيله من المجلدين "\Program Files\" و"\windows\system32\". في أغلب الأحيان، لا يكون هذا ضروريًا.
لكي يطلب البرنامج رفع الحقوق إلى مستوى المسؤول عند بدء التشغيل، استبدل السمة " مستوى" القيمة الافتراضية " asInvocer" على " requireAdministrator».

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

للتحقق من أذونات التطبيق الخاص بك، يمكنك استخدام القائمة أدناه.
string s = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator)؟ "المسؤول" : "مستخدم عادي"; إذا كان لديك تطبيق وحدة التحكم، فإن مبدأ التشغيل هو نفسه.

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

شكرا، انا اعرف))))))))))))))))))

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

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

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

لذلك، حالتي مماثلة. كيف "أخبر" النظام أن البرنامج يجب أن يعمل بحقوق مرتفعة؟ في هذه الحالة، سيتم تشغيله بواسطة مستخدم من مجموعة "المستخدم"/"المستخدم القوي".

يمكن فعل ذلك عن طريق تشغيل البرنامج كـ "مهمة مجدولة" كمستخدم مختلف. سيكون كل شيء على ما يرام - حتى أنه يبدأ، ولكن لا يتم عرض الواجهة الرسومية (نوافذ البرنامج) على سطح مكتب المستخدم...

تناقض مفهوم؟؟؟ لقد قدمت مثالاً أعلاه - المهمة قياسية تمامًا لأي نظام تشغيل. لا أريد حل المشكلة باستخدام أدوات الطرف الثالث (غير مضمنة في نظام التشغيل Windows Vista). لقد قمت بالفعل بتعطيل UAC - على أي حال، يعمل التطبيق بشكل صحيح فقط مع حقوق المسؤول، وهذا هو الأمر - محدد.... لا يبدو من الممكن تضمين هذا المستخدم في مجموعة "المسؤولين" المحلية لأسباب أمنية .

فيما يتعلق بالسيناريو - ل اهرب مثلهناك علامة تسمح لك بتذكر كلمة المرور، ولكن في هذه الحالة سيكون المستخدم قادرا على التشغيل أيالبرنامج مع حقوق المسؤول.

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

أود أن أصدق أنه ليس كل شيء سيئًا للغاية.

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

مقدمة

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

خيارات

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

من المسؤول إلى النظام، أو ما يعرفه الجميع

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

الساعة 13:01 /cmd التفاعلي

الشيء الثاني الذي يتبادر إلى الذهن هو إضافة خدمة ستقوم بتشغيل الملف المطلوب / تنفيذ الأمر:

@echo off @break off العنوان root Cls echo إنشاء الخدمة. sc create evil binpath= "cmd.exe /K start" type= own type=تفاعل > nul 2>&1 echo بدء الخدمة. sc start evil > nul 2>&1 echo في وضع الاستعداد... ping 127.0.0.1 -n 4 > nul 2>&1 echo إزالة الخدمة. صدى صوت. sc حذف الشر > nul 2>&1

الطريقة الثالثة هي استبدال الأداة المساعدة للنظام C:\windows\system32\sethc.exe، على سبيل المثال، cmd. إذا قمت بتسجيل الخروج بعد ذلك وقمت بالضغط على مفتاح Shift عدة مرات، فستظهر وحدة تحكم تتمتع بحقوق النظام.

أما بالنسبة للطرق الآلية، فإن Metasploit ونظام getsystem الخاص به يتبادر إلى الذهن على الفور. الخيار البديل هو PsExec من Sysinternals (psexec -i -s -d cmd.exe).

سنذهب بطريقة مختلفة

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

البحث عن أوراق الاعتماد

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

المنشآت غير المراقبة

في حالة التثبيت التلقائي، يظل الملف Unattending.xml، وهو أمر مثير للاهتمام للغاية بالنسبة لنا، على العميل، والذي يوجد عادةً إما في %WINDIR%\Panther\Unattend\ أو في %WINDIR%\Panther\ ويمكنه قم بتخزين كلمة مرور المسؤول بنص واضح. من ناحية أخرى، للحصول على هذا الملف من الخادم، لا تحتاج حتى إلى أي مصادقة. ما عليك سوى العثور على خادم "Windows Deployment Services". للقيام بذلك، يمكنك استخدام البرنامج النصي المساعد/scanner/dcerpc/windows_deployment _services من Metasploit. على الرغم من أن خدمات نشر Windows ليست الطريقة الوحيدة لإجراء عمليات التثبيت التلقائية، إلا أن الملف Unattending.xml يعتبر معيارًا، لذلك يمكن اعتبار اكتشافه ناجحًا.

جي بي بي

غالبًا ما تحتوي ملفات XML لتفضيلات نهج المجموعة على مجموعة من بيانات الاعتماد المشفرة التي يمكن استخدامها لإضافة مستخدمين جدد وإنشاء مشاركات وما إلى ذلك. ولحسن الحظ، فإن طريقة التشفير موثقة، بحيث يمكنك بسهولة الحصول على كلمات المرور في شكلها النقي. علاوة على ذلك، فقد قام فريق Metasploit بالفعل بكل شيء من أجلك - فقط استخدم الوحدة /post/windows/gather/credentials/gpp.rb. إذا كنت مهتمًا بالتفاصيل، فكل المعلومات الضرورية متوفرة على هذا الرابط.

حقوق المستخدم

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

AlwaysInstallElevated

في بعض الأحيان يسمح المسؤولون للمستخدمين العاديين بتثبيت البرامج بأنفسهم، عادةً من خلال مفاتيح التسجيل التالية:

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

HKCU\SOFTWARE\Policies\Microsoft\Window s\Installer\AlwaysInstallElevated

يخبرون النظام أنه يجب تثبيت أي ملف MSI بامتيازات مرتفعة (NT AUTHORITY\SYSTEM). وبناء على ذلك، باستخدام ملف تم إنشاؤه خصيصًا، يمكنك مرة أخرى تنفيذ الإجراءات نيابة عن النظام وترقية امتيازاتك.

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

التشغيل التلقائي مفقود

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

Autorunsc.exe -a | findstr /n /R "الملف\ غير\ موجود"

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

سحر الاقتباسات

نعم، نعم، لا يمكن لعلامات الاقتباس أن تلعب فقط مزحة قاسية في استعلامات SQL، مما يسمح بالحقن، ولكنها تساعد أيضًا في رفع الامتيازات. المشكلة قديمة جدًا ومعروفة منذ زمن العهد الجديد. النقطة المهمة هي أن المسارات إلى الملفات القابلة للتنفيذ لبعض الخدمات ليست محاطة بعلامات اقتباس (على سبيل المثال، ImagePath=C:\Program Files\Common Files\Network Associates\McShield\McShield.exe)، وتوجد أحرف مسافات في الملف. طريق. في هذه الحالة، إذا قام المهاجم بإنشاء ملف يضيف مسؤولين جدد إلى النظام أو ينفذ بعض الإجراءات الأخرى، ويطلق عليه اسم C:\Program Files\common.exe، فسيكون شائعًا عند بدء الخدمة في المرة التالية. exe الذي سيتم تشغيله، وسيتم أخذ الجزء المتبقي من المسار كوسيطة (وسائط). من الواضح أن المستخدم الذي لا يتمتع بالامتيازات لن يتمكن من وضع أي شيء في ملفات البرنامج، ولكن قد يكون الملف القابل للتنفيذ للخدمة موجودًا في دليل آخر، أي أن المستخدم ستتاح له الفرصة للانزلاق في ملفه الخاص.

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

تحصل خدمة Wmic على الاسم واسم العرض واسم المسار ووضع التشغيل |findstr /i "auto" |findstr /i /v "c: \windows\\" |findstr /i /v """

صحيح أن هذا سيتطلب امتيازات المسؤول في نظام XP، لذا من الأفضل استخدام الطريقة التالية هناك: احصل على قائمة الخدمات - استعلام sc، ثم انظر إلى المعلومات الخاصة بكل خدمة - sc qc Servicename .

كل ذلك حسب الخطة

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

الحيل مع الأذونات

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

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

هناك قيد آخر وهو أنه لا يُسمح للبشر العادي بالكتابة إلى جذر قرص النظام. ومع ذلك، على سبيل المثال، في نظام XP، عند إنشاء دليل جديد في جذر القرص، تتلقى مجموعة BUILTIN\Users أذونات FILE_APPEND_DATA وFILE_WRITE_DATA (حتى لو كان مالك المجلد مسؤولًا):

BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(وصول خاص:) FILE_APPEND_DATA BUILTIN\Users:(CI)(وصول خاص:) FILE_WRITE_DATA

في "السبعة" يحدث نفس الشيء تقريبًا، فقط مجموعة المستخدمين المعتمدين هي التي تحصل على الإذن. كيف يمكن أن يصبح هذا السلوك مشكلة؟ كل ما في الأمر هو أن بعض التطبيقات تقوم بتثبيت نفسها خارج الأدلة المحمية، مما يجعل من السهل استبدال ملفاتها القابلة للتنفيذ. على سبيل المثال، حدث مثل هذا الحادث مع Metasploit Framework في حالة تثبيته متعدد المستخدمين. تم إصلاح هذا الخطأ في الإصدار 3.5.2، وتم نقل الأداة المساعدة إلى ملفات البرنامج.


كيفية البحث عن مثل هذه الدلائل/الملفات

إن العثور على دليل بأذونات غير صحيحة هو بالفعل نصف المعركة. ومع ذلك، يجب عليك أولا العثور عليه. للقيام بذلك، يمكنك استخدام الأداتين التاليتين: AccessChk وCacls/ICacls. للعثور على الدلائل "الضعيفة" باستخدام AccessChk، ستحتاج إلى هذه الأوامر:

Accesschk.exe -uwdqs users c:\ accesschk.exe -uwdqs "المستخدمون المعتمدون" c:\

للبحث عن الملفات ذات الأذونات "الضعيفة"، استخدم ما يلي:

Accesschk.exe -uwqs المستخدمين c:\*.* accesschk.exe -uwqs "المستخدمون المعتمدون" c:\*.*

يمكن فعل الشيء نفسه باستخدام Cacls/ICacls:

Cacls "c:\ملفات البرنامج" /T | مستخدمو Findstr

الحيل مع الخدمات

هناك خيار آخر للارتقاء في النظام وهو الاستفادة من التكوينات الخاطئة وأخطاء الخدمة. كما تبين الممارسة، ليس فقط الملفات والمجلدات، ولكن أيضا الخدمات التي تعمل في النظام يمكن أن يكون لها أذونات غير صحيحة. لاكتشاف ذلك، يمكنك استخدام الأداة المساعدة AccessChk من Mark Russinovich المعروف:

Accesschk.exe –uwcqv *

سيكون من المشجع للغاية رؤية إذن SERVICE_ALL_ACCESS للمستخدمين المعتمدين أو المستخدمين المتميزين. ولكن يمكن أيضًا اعتبار ما يلي نجاحًا كبيرًا:

  • SERVICE_CHANGE_CONFIG - يمكننا تغيير الملف القابل للتنفيذ للخدمة؛
  • WRITE_DAC - يمكن تغيير الأذونات، مما يؤدي إلى الحصول على إذن SERVICE_CHANGE_CONFIG؛
  • WRITE_OWNER - يمكنك أن تصبح المالك وتغيير الأذونات؛
  • GENERIC_WRITE - يرث الأذونات SERVICE_CHANGE_CONFIG؛
  • GENERIC_ALL - يكتسب أذونات SERVICE_CHANGE_CONFIG.

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

كيفية زيادة؟

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

SC مراقبة الجودة upnphost

لنقم بتكوينه باستخدام نفس الأداة المساعدة:

Sc config vulnsrv binpath= "net user john hello /add &&net localgroup Administrators john /add" type=تفاعل sc config upnphost obj= ".\LocalSystem" كلمة المرور=“”

كما ترون، في المرة التالية التي تبدأ فيها الخدمة، بدلاً من الملف القابل للتنفيذ، سيتم تنفيذ الأمر net user john hello /add && net localgroup Administrators john /add، مما يضيف مستخدمًا جديدًا john بكلمة المرور hello إلى النظام. كل ما تبقى هو إعادة تشغيل الخدمة يدويًا:

صافي توقف upnphost صافي بدء upnphost

هذا كل السحر.

ما هي النتيجة؟

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

سنتحدث اليوم عن تصعيد امتيازات Windows. سوف تتعلم كيف يمكن للمهاجم تصعيد الامتيازات وكيفية حماية نفسك من ذلك.

جميع المعلومات هي لأغراض إعلامية فقط. ولا يتحمل محررو الموقع ولا كاتب المقال المسؤولية عن الاستخدام غير السليم له.

رفع الامتيازات مع BeRoot

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

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

مقبض تسجيل الدخول الثانوي

هناك خدعة أخرى مثيرة للاهتمام تتضمن استخدام خدمة تسجيل الدخول الثانوي. تتيح لك هذه الخدمة تشغيل البرامج ووحدات التحكم الإدارية لـ Microsoft وعناصر لوحة التحكم كمسؤول، حتى لو كان المستخدم الحالي ينتمي فقط إلى مجموعة المستخدمين أو Power Users. النقطة المهمة هي أن هذه الخدمة لا تقوم بمسح المقابض عند إنشاء عمليات جديدة.

ما يهمنا هو أن جميع إصدارات Windows تقريبًا (x32 وx64) معرضة لهذه الثغرة الأمنية: من Vista إلى Windows 2012 Server. ولكن هناك أيضًا قيود: لتصعيد الامتيازات بنجاح، يجب أن يكون لدى النظام PowerShell 2.0 أو أعلى مثبتًا، بالإضافة إلى اثنين أو أكثر من مراكز وحدة المعالجة المركزية. يحتوي Metasploit Framework على وحدة خاصة للاستغلال/windows/local/ms16_032_ Secondary_logon_handle_privesc.

استخدامه يعني أن لدينا بالفعل جلسة مترجم، والتي يجب أن نحددها في المعلمات: ضبط الجلسة 1. حسنًا، في حالة الاستغلال الناجح، سيكون لدينا جلسة أخرى بامتيازات مرتفعة.

\ pentestlab > قائمة wmic qfe | ابحث عن "3139914"

خاتمة

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