كيف يمكنك تشغيل CMD.exe ضمن حساب النظام المحلي؟

StackOverflow https://stackoverflow.com/questions/77528

  •  09-06-2019
  •  | 
  •  

سؤال

أقوم حاليًا بتشغيل نظام التشغيل Vista وأرغب في إكمال نفس العمليات يدويًا مثل خدمة Windows الخاصة بي.نظرًا لأن خدمة Windows تعمل ضمن حساب النظام المحلي، فأنا أرغب في محاكاة نفس السلوك.في الأساس، أرغب في تشغيل CMD.EXE ضمن حساب النظام المحلي.

لقد عثرت على معلومات عبر الإنترنت تقترح على cmd.exe باستخدام جدولة مهمة DOS في Command ، لكنني تلقيت تحذيرًا من Vista بأنه "بسبب التحسينات الأمنية ، سيتم تشغيل هذه المهمة في ذلك الوقت باستثناء ولكن ليس تفاعليًا". هذا أمر عينة:

AT 12:00 /interactive cmd.exe

اقترح حل آخر إنشاء خدمة Windows ثانوية عبر التحكم في الخدمة (sc.exe) الذي يقوم فقط بتشغيل CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

في هذه الحالة، تفشل الخدمة في البدء وينتج عنها رسالة الخطأ التالية:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

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

لقد حاولت استخدام Runas أيضًا، ولكن أعتقد أنني أواجه نفس القيود التي وجدتها عند تشغيل مهمة مجدولة.

وحتى الآن، انتهت كل محاولاتي بالفشل.أي اقتراحات؟

هل كانت مفيدة؟

المحلول

على الرغم من أنني لم أختبره شخصيًا، إلا أن لدي سببًا وجيهًا للاعتقاد بأن حل AT COMMAND المذكور أعلاه سيعمل مع أنظمة التشغيل XP و2000 وServer 2003.وفقًا للاختبار الذي أجراه واختبار Bryant، فقد حددنا أن نفس الأسلوب لا يعمل مع نظام التشغيل Vista أو Windows Server 2008 - على الأرجح بسبب الأمان الإضافي وإهمال المفتاح /interactive.

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

psexec -i -s cmd.exe

يعمل برنامج PSTools بشكل جيد.إنها مجموعة أدوات خفيفة الوزن وموثقة جيدًا توفر حلاً مناسبًا لمشكلتي.

شكرا جزيلا لأولئك الذين عرضوا المساعدة.

نصائح أخرى

  1. قم بتنزيل psexec.exe من Sysinternals.
  2. ضعه في محرك الأقراص C:\.
  3. قم بتسجيل الدخول كمستخدم قياسي أو إداري واستخدم الأمر التالي: cd \.يؤدي هذا إلى وضعك في الدليل الجذر لمحرك الأقراص لديك، حيث يوجد psexec.
  4. استخدم الأمر التالي: psexec -i -s cmd.exe حيث -i مخصص للتفاعلية و-s مخصص لحساب النظام.
  5. عند اكتمال الأمر، سيتم إطلاق cmd shell.يكتب whoami;سيقول "النظام"
  6. افتح مدير المهام.قتل Explorer.exe.
  7. من نوع shell Command مرتفع start explorer.exe.
  8. عند تشغيل المستكشف، لاحظ اسم "النظام" في شريط قائمة البداية.يمكنك الآن حذف بعض الملفات الموجودة في دليل system32 والتي لا يمكنك حذفها كمسؤول أو كمسؤول، سيتعين عليك أن تحاول جاهداً تغيير الأذونات لحذف هذه الملفات.

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

وجدت إجابة هنا والذي يبدو أنه يحل المشكلة عن طريق إضافة /k start إلى معلمة binPath.لذلك من شأنه أن يوفر لك:

sc create testsvc binpath= "cmd /K start" type= own type= interact

ومع ذلك، قال بن إن ذلك لم ينجح معه، وعندما جربته على Windows Server 2008، قام بإنشاء عملية cmd.exe ضمن النظام المحلي، لكنها لم تكن تفاعلية (لم أتمكن من رؤية النافذة).

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

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

لم تعد الخدمات التفاعلية تعمل - أو على الأقل، لم تعد تعرض واجهة المستخدم - على نظامي التشغيل Windows Vista وWindows Server 2008 بسبب الجلسة 0 العزلة.

البديل لذلك هو قرصنة العمليات إذا بدأت العمل كـ...(التفاعلية لا تعمل للأشخاص الذين لديهم تحسينات الأمان ولكن هذا لن يهم) وعندما يفتح المربع وضع الخدمة في نوع المربع ووضع النظام في مربع المستخدم ووضع c: windows system32 cmd.exe اترك الباقي انقر فوق موافق و boch لديك نافذة مع CMD عليها وتشغيلها كأصنعة الآن القيام بالخطوات الأخرى لنفسك لأن أنا أقترح أن تعرفها

استخدام سطح المكتب الآمن للتشغيل cmd.exe مثل system

يمكننا الحصول على وصول النواة من خلال CMD في نظام التشغيل Windows XP/Vista/7/8.1 بسهولة عن طريق إرفاق مصحح الأخطاء:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. يجري CMD كمسؤول

  2. ثم استخدم هذا الأمر في مرتفعة:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. ثم اركض osk (لوحة المفاتيح على الشاشة).لا يزال لا يعمل بمستوى سلامة النظام إذا قمت بالتحقق من خلال مستكشف العمليات، ولكن إذا كان بإمكانك استخدام OSK في جلسة الخدمة، فسيتم تشغيله كـ NT Authority\SYSTEM

لذلك خطرت لي فكرة أنه يجب عليك تشغيله على Secure Desktop.

ابدأ أي ملف كمسؤول.عندما تظهر مطالبات UAC، فقط اضغط يفوز+ش وابدأ OSK وسوف تبدأ CMD بدلاً من.ثم في الموجه المرتفع، اكتب whoami وسوف تحصل NT Authority\System.بعد ذلك، يمكنك تشغيل Explorer من واجهة أوامر النظام واستخدام ملف تعريف النظام، لكن ما يمكنك القيام به على الشبكة من خلال امتيازات النظام محدود إلى حد ما لأسباب أمنية.سأضيف المزيد من الشرح لاحقًا حيث اكتشفته قبل عام.

شرح موجز لكيفية حدوث ذلك

جري Cmd.exe ضمن حساب النظام المحلي دون استخدام PsExec.تعمل هذه الطريقة على تشغيل تقنية Debugger Trap التي تم اكتشافها مسبقًا، حسنًا، هذه التقنية لها فوائدها الخاصة، حيث يمكن استخدامها لاحتجاز بعض الفيروسات المتنقلة أو البرامج الضارة الماكرة/الخبيثة في مصحح الأخطاء وتشغيل ملف exe آخر بدلاً من ذلك لإيقاف الانتشار أو حدوث ضرر مؤقت.هنا يقوم مفتاح التسجيل هذا باحتجاز لوحة المفاتيح التي تظهر على الشاشة في مصحح أخطاء Windows الأصلي ويقوم بتشغيل cmd.exe بدلاً من ذلك ولكن سيظل cmd يعمل مع امتيازات المستخدمين الذين قاموا بتسجيل الدخول، ولكن إذا قمنا بتشغيل cmd في session0 فيمكننا الحصول على نظام shell.لذلك نضيف هنا فكرة أخرى، حيث نقوم بتوسيع cmd على سطح مكتب آمن، وتذكر تشغيل سطح المكتب الآمن في الجلسة 0 ضمن حساب النظام، ونحصل على System Shell.لذا، كلما قمت بتشغيل أي شيء على أنه مرتفع، يجب عليك الإجابة على مطالبة UAC ومطالبات UAC على سطح المكتب المظلم وغير التفاعلي وبمجرد رؤيته، عليك الضغط على يفوز+ش ثم حدد OSK ستحصل CMD.exe يعمل ضمن امتيازات النظام المحلي.هناك المزيد من الطرق للوصول إلى النظام المحلي CMD

هناك طريقة أخرى.يوجد برنامج يسمى PowerRun يسمح بتشغيل cmd مرتفع.حتى مع حقوق TrustedInstaller.فهو يسمح لكل من أوامر وحدة التحكم وواجهة المستخدم الرسومية.

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

انا استعمل ال RunAsTi فائدة لتشغيل كما موثوق به للتحميل (امتياز عالي).يمكن استخدام الأداة المساعدة حتى في وضع الاسترداد لنظام Windows (الوضع الذي تدخله عن طريق القيام بذلك Shift+Restart)، ال com.psexec الأداة المساعدة لا تعمل هناك.ولكن عليك إضافة الخاص بك C:\Windows و C:\Windows\System32 (لا X:\Windows و X:\Windows\System32) الطرق إلى PATH متغير البيئة، وإلا RunAsTi لن يعمل في وضع الاسترداد، سيتم فقط طباعة: AdjustTokenPrivileges لـ SeImpersonateName:لا يتم تعيين كافة الامتيازات أو المجموعات المشار إليها للمتصل.

باستخدام برنامج جدولة المهام، قم بجدولة تشغيل CMDKEY ضمن SYSTEM مع الوسائط المناسبة لـ /add:/مستخدم:و/ تمرير:

لا حاجة لتثبيت أي شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top