หาก cmd.exe ของ Windows ทำงานด้วยสิทธิ์ยกระดับสิ่งใดที่ฉันเรียกใช้จากพรอมต์ของมันจะทำงานด้วยสิทธิ์ยกระดับหรือไม่


11

หากหน้าต่าง cmd.exe ของฉันระบุว่า "ผู้ดูแลระบบ" ในแถบชื่อเรื่องแสดงว่าเริ่มต้นด้วยสิทธิ์ระดับสูงนี่หมายความว่าอะไรที่ฉันเรียกใช้จากหน้าต่างคำสั่งนี้ก็ทำงานด้วยสิทธิ์ระดับสูงเช่นกัน

โดยเฉพาะถ้าฉันใช้สิ่งที่ชอบ:

msiexec SomeProgram.msi

ตัวติดตั้งของฉันถูกเรียกใช้โดยมีสิทธิ์ในการยกระดับเนื่องจากมีการเรียกใช้จาก cmd.exe ที่ทำงานด้วยสิทธิ์ยกระดับ

โดยเฉพาะอย่างยิ่ง: ฉันสงสัยว่าแอปพลิเคชันที่แสดง UI และส่งคืนพรอมต์ในหน้าต่าง cmd.exe ทันทีเช่นการmsiexecเรียกใช้ด้านบนกำลังดำเนินการด้วยสิทธิ์ระดับสูง

คำตอบ:


16

ใช่มันทำงานด้วยสิทธิ์ระดับสูง

ทดสอบง่าย:

คุณสามารถทดสอบสิ่งนี้ได้อย่างง่ายดายโดยการเปิดพรอมต์คำสั่งที่ยกระดับหนึ่งและไม่ยกระดับ เรียกใช้คำสั่งทั้งในและลองบันทึกแฟ้มข้อความว่างเปล่าให้notepad.exe C:\Windowsหนึ่งจะบันทึกหนึ่งจะโยนข้อผิดพลาดการอนุญาต

การทดสอบอย่างละเอียด:

หากยังไม่พอที่จะยืนยันให้คุณ (มันไม่ได้ตอบสนองฉันจริงๆ) คุณสามารถใช้AccessChkจาก SysInternals คุณจะต้องเรียกใช้จากพรอมต์คำสั่งที่ยกระดับ

เริ่มต้นด้วยการตรวจสอบกระบวนการ Notepad สองกระบวนการที่กำลังทำงานอยู่:

แผ่นจดบันทึก: ( accesschk.exe -v -p notepad)

[11140] notepad.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[11004] notepad.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS

อันหนึ่งทำงานภายใต้ชื่อผู้ใช้โดเมนของฉันส่วนอีกอันกำลังทำงานภายใต้กลุ่มผู้ดูแลระบบ นอกจากนี้ยังมีระดับสูงบังคับ นอกจากนี้คุณยังสามารถเรียกใช้การ-fตั้งค่าสถานะสำหรับรายละเอียดของสิทธิ์และโทเค็น

ไฟล์ MSIExec และ MSI

msiexecผมคิดว่าสิ่งที่อาจได้รับเพียงเล็กน้อยที่ซับซ้อนมากขึ้นเมื่อทำงาน ฉันมีตัวติดตั้งแบบสแตนด์อโลนของ Google Chrome ที่สะดวกในการทดสอบ

msiexec.exe เรียกใช้ตัวติดตั้ง Chrome จากพรอมต์ยกระดับ:

D:\Users\tannerf>accesschk.exe -p msiexec.exe

[10540] msiexec.exe
  RW BUILTIN\Administrators
  RW NT AUTHORITY\SYSTEM

chrome_installer.exe เกิดจาก MSI:

D:\Users\tannerf>accesschk.exe -p chrome_installer.exe

[5552] chrome_installer.exe
     NT AUTHORITY\SYSTEM
     OWNER RIGHTS
  RW NT SERVICE\msiserver

ไม่ตัดและแห้งอีกต่อไป! ดูเหมือนว่าchrome_installer.exeกระบวนการทำงานผ่านบริการ MSIServer


สิ่งนี้ทำให้ฉันสงสัยว่าพฤติกรรมการติดตั้งอื่น ๆ ของฉันอาจเป็นอย่างไรดังนั้นฉันจึงเรียกใช้ Evernote.msi ฉันมีประโยชน์:

msiexec.exe ระดับสูงเปิดตัวตัวติดตั้ง Evernote:

[6916] msiexec.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4652] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

ที่น่าสนใจ; มี msiexec.exe ซึ่งทำงานในระดับระบบในครั้งนี้ ฉันใช้การตรวจสอบกระบวนการเพื่อค้นหาว่าหน้าต่างการติดตั้งจริงที่ปรากฏขึ้นมาจากกระบวนการ msiexec ระดับระบบ การฆ่าในระดับบังคับที่สูงนั้นยังทำให้กระบวนการระดับระบบหยุดทำงานเช่นกัน

msiexec.exe ที่ไม่ใช่แบบยกระดับเรียกใช้ตัวติดตั้ง Evernote:

[7472] msiexec.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4404] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

ดูเหมือนว่า Evernote จะได้รับการเข้าถึงระดับระบบทั้งสองทาง การดับเบิลคลิกที่ตัวติดตั้งมีผลเหมือนกัน


สรุป:

ฉันคิดว่ามันแสดงให้เห็นอย่างชัดเจนว่ากระบวนการจะได้รับอนุญาตเว้นแต่จะระบุไว้เป็นอย่างอื่น ที่ไม่รับประกันmsiexec SomeProgram.msiจะทำงานด้วยระดับบังคับสูงในกระบวนการทั้งหมด มันสามารถทำงานภายใต้ระดับระบบหรือภายใต้ MSIServer ระยะของคุณอาจแตกต่างกันไปและฉันไม่แปลกใจที่จะเห็นหลาย ๆ กรณีที่กฎเหล่านี้ดูเหมือนจะ "แตก"


2
นอกเหนือจากการทดสอบเชิงประจักษ์กระบวนการ Windows ควรได้รับสิทธิ์จากผู้ปกครอง
บ๊อบ

จุดที่ดีกับการทดสอบ ฉันลองใช้จาก cmd.exe ที่เริ่มต้นด้วยสิทธิ์ยกระดับและฉันได้รับอนุญาตปฏิเสธพยายามบันทึกไฟล์ถึงC:\Windowsแม้จะมีการเริ่ม Notepad จาก cmd.exe ยกระดับ มีวิธีการทำลายกฎ "ควรจะสืบทอดจากผู้ปกครอง" หรือไม่
Ian C.

@IanC เป็นไปได้ที่จะเรียกใช้กระบวนการลูกที่มีสิทธิ์น้อยกว่า ฉันควรจะใช้ถ้อยคำความคิดเห็นก่อนหน้าของฉันว่า "ควรจะสืบทอดโดยค่าเริ่มต้น " ฉันได้แก้ไขคำตอบของฉันเพื่อรวมข้อมูลนั้น อย่างไรก็ตาม Notepad ควรมีสิทธิ์ผู้ดูแลระบบสืบทอดมา
บ๊อบ

@IanC มันแปลกสำหรับฉัน คุณลองใช้ accesschk ไหม ไม่แน่ใจว่าความแตกต่างอาจเป็นอะไร
แทนเนอร์ฟอล์กเนอร์

11

โดยค่าเริ่มต้นกระบวนการ Windows จะสืบทอดบริบทความปลอดภัยของตนจากพาเรนต์:

ACLs ในตัวบอกความปลอดภัยเริ่มต้นสำหรับกระบวนการมาจากโทเค็นหลักหรือการรับบทบาทของผู้สร้าง

MSDN เกี่ยวกับความปลอดภัยของกระบวนการและสิทธิ์การเข้าถึง

อย่างไรก็ตามเป็นไปได้ที่จะวางไข่กระบวนการที่มีสิทธิ์น้อยกว่า:

ในขณะที่กระบวนการสืบทอดระดับความสมบูรณ์ของกระบวนการที่เกิดมันระดับความสมบูรณ์สามารถกำหนดเองได้ในเวลาของการสร้างกระบวนการ นอกเหนือจากการกำหนดขอบเขตของข้อความหน้าต่างในเทคโนโลยี User Interface Privilege Isolation แล้ว Mandatory Integrity Control ยังใช้งานโดยแอพพลิเคชั่นเช่น Windows Explorer, Internet Explorer, Google Chrome และ Adobe Reader เพื่อแยกเอกสารจากวัตถุที่มีช่องโหว่ในระบบ

วิกิพีเดียบังคับควบคุมความซื่อสัตย์ที่เกี่ยวข้องกับหน้า MSDN อื่น ๆนอกจากนี้ยังกล่าวถึงที่นี่ อีกงานนำเสนอยังกล่าวถึงกระบวนการสืบทอด

อย่างไรก็ตามฉันเชื่อว่า cmd.exe จะเปิดใช้งานกระบวนการลูกโดยมีการสืบทอดสิทธิ์ในระดับสูงสุดเท่าที่จะทำได้เนื่องจากการทดสอบและคำตอบของ @ Tanner


2

อาจมีสองวิธีในการยกเลิกการยกระดับสิทธิ์ของคำสั่งที่ดำเนินการ:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(ทำงานrunas /showtrustlevelsที่ได้รู้ว่า0x20000เป็น trustlevel ผู้ใช้เริ่มต้น - งานนี้แม้กระทั่งสำหรับการติดตั้ง / การรันโปรแกรมว่า "ต้องการ" ยกระดับสิทธิ์ -. จริงโดยไม่อนุญาตให้พวกเขาเมื่อทำงานเป็นผู้ดูแลระบบนี้ผ่านการทดสอบ Notepad แทนเนอร์ ) ตามคำตอบ SU นี้
  • psexec -l -d msiexec SomeProgram.msiต่อคำตอบ SU นี้ (อาจจำเป็นต้องมี "" ด้วยเช่นกันฉันไม่ได้ทดสอบสิ่งนี้เนื่องจากrunasทำงานได้ดีพอสำหรับฉัน)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.