มีไบนารี UAC เดียวหรือไม่


27

มีไบนารี (.exe) ในโฟลเดอร์ System32 ที่รับผิดชอบการทำงานของ Windows UAC หรือไม่ (เช่น, uac.exe) จะเกิดอะไรขึ้นหากไฟล์นั้นถูกลบอย่างแรง Windows จะแตกหรือไม่สามารถบู๊ตได้หรือไม่?

ไม่มีปัญหา XY ที่นี่; ฉันแค่อยากรู้ว่าจะเกิดอะไรขึ้นถ้า UAC ถูกลบออกจากพีซีอย่างเด็ดขาด


1
คุณสามารถปิดการใช้งาน UAC ได้อย่างง่ายดาย UAC เป็นฟังก์ชั่นของเคอร์เนล สิ่งที่คุณต้องการไม่สามารถทำได้
Ramhound

มีไฟล์ win32k.sys technize.net/ และเห็นได้ชัดว่าไฟล์ใน windows ที่ได้รับการติดตั้งล่วงหน้าสามารถจัดการ / เปลี่ยนแปลง .. เพื่อปิดการใช้งาน UAC อีกวิธีหนึ่งสามารถปิดการใช้งาน UAC ในลักษณะปกติแม้ว่าจะไม่ใช่ไฟล์ EXE
barlop

คุณสามารถปิด UAC โดยใช้วิธีการต่างๆเช่นsuperuser.com/questions/1013702/... ฉันคิดว่าถ้าคุณลบวิธีแฮ็กไอชอื่น ๆ คุณจะได้รับผลกระทบเหมือนกันส่วนใหญ่แม้ว่าจะมีข้อผิดพลาดในคำตอบด้านล่างเกี่ยวกับไบนารีที่ขาดหายไป
YetAnotherRandomUser

@barlop, win32k.sys เป็นเพียงด้านเคอร์เนลของระบบย่อยของ Windows กล่าวอีกนัยหนึ่งรหัสหลักที่ใช้โดยทุกสิ่ง ฉันจะไม่แนะนำให้พยายามเปลี่ยนมัน pasotech.altervista.org/windows_internals/Win32KSYS.pdf
ดาร์กฟอลคอนดาร์

@DarkFalcon อาจมี "เคอร์เนลด้านข้างของระบบย่อย windows" มากกว่านั้น และฉันก็ไม่ได้ให้คำแนะนำว่า "เปลี่ยนมัน"! คุณคิดว่าจะมีคนทำอะไร เปิดใน notepad? ฉันไม่เคยแนะนำสิ่งนี้เลย! เปิดโปรแกรมแก้ไข hex หรือไม่ ดีกว่า แต่ฉันไม่ได้แนะนำอย่างใดอย่างหนึ่ง! และไม่มีใครทำอย่างนั้นและเปลี่ยนแปลงอะไรนอกจากพวกเขามีความคิดว่าพวกเขาต้องการเปลี่ยนแปลงอะไรซึ่งจะต้องใช้ทักษะระดับหนึ่ง!
barlop

คำตอบ:


56

UAC เป็นส่วนประกอบหลายองค์ประกอบที่ดำเนินการโดยหลายไบนารี

ควบคุมบัญชีผู้ใช้ (UAC) หมายถึงองค์ประกอบหลายอย่างที่ร่วมกันในรูปแบบสถาปัตยกรรม UAC ฉันจะตรวจสอบสั้น ๆ บางส่วนของพวกเขาพร้อมกับไบนารีที่รับผิดชอบในการดำเนินการของพวกเขา แต่ก่อนอื่นนี่เป็นภาพรวมของสถาปัตยกรรม UAC จากบทความ Microsoft Docs วิธีการควบคุมบัญชีผู้ใช้งาน :

ป้อนคำอธิบายรูปภาพที่นี่

Local Security Authority (LSA) / โทเค็นที่กรอง

แนวคิด "องค์ประกอบแรก" ของ UAC ถูกนำไปใช้โดยระบบย่อย Local Security Authorityซึ่งจัดการการสร้างโทเค็นการเข้าถึงของผู้ใช้ในระหว่างกระบวนการเข้าสู่ระบบ เริ่มต้นด้วย Windows Vista กระบวนการเข้าสู่ระบบได้รับการแก้ไขเพื่อให้เมื่อผู้ดูแลระบบเข้าสู่ระบบด้วย UAC เปิดใช้งานระบบย่อย LSA จะสร้างโทเค็นการเข้าถึงสองสัญญาณแยกกันสำหรับผู้ใช้:

  1. หนึ่งในนั้นที่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบและ
  2. โทเค็นที่สองที่กรองด้วยการเข้าถึงของผู้ใช้มาตรฐาน

ดังที่แสดงไว้ที่นี่กระบวนการนี้แตกต่างจากการเข้าสู่ระบบของผู้ใช้มาตรฐาน:

ป้อนคำอธิบายรูปภาพที่นี่

บริการระบบย่อย LSA อยู่ในlsass.exeกระบวนการ

virtualization

ที่เพิ่มเข้ามาใน Windows 7 และไฟล์รีจิสทรี Virtualizationเป็นส่วนประกอบของ UAC ที่shimsการใช้งานเก่าที่ไม่สอดคล้องกับ UAC แต่จำเป็นต้องมีสิทธิ์ในการดูแลเพื่อให้เข้าถึงการป้องกันพื้นที่หนึ่งของระบบแฟ้มหรือ Registry:

เมื่อแอ็พพลิเคชันการดูแลระบบที่ไม่สอดคล้องกับ UAC พยายามเขียนลงในไดเรกทอรีที่ได้รับการป้องกันเช่น Program Files UAC จะให้มุมมองเสมือนจริงของแอปพลิเคชันกับทรัพยากรที่พยายามเปลี่ยน สำเนาเสมือนจริงถูกเก็บรักษาไว้ในโปรไฟล์ของผู้ใช้

แหล่ง

โดยการเปลี่ยนเส้นทางการเข้าถึงเหล่านี้ไปยังพื้นที่ที่ไม่ต้องการสิทธิ์ผู้ดูแลระบบแอปพลิเคชันเหล่านี้ยังคงทำงานได้แม้จะมีการเปิดใช้งาน UAC ในระบบ

virtualization นี้จะดำเนินการในเคอร์เนล

บริการข้อมูลแอปพลิเคชัน

บริการข้อมูลแอปพลิเคชัน (AIS) อ่านรายการของแอปพลิเคชันและทำงานร่วมกับ UAC Consent Prompt เพื่อตรวจสอบว่าแอปพลิเคชันได้รับอนุญาตให้ดำเนินการด้วยสิทธิ์ระดับสูง (เช่นเริ่มในบริบทของโทเค็นการเข้าถึงระดับผู้ดูแลระบบ . โพสต์บล็อกนี้ให้ภาพรวมที่ดีของบทบาทในกระบวนการ UAC:

AIS อำนวยความสะดวกในการใช้งานแอพพลิเคชั่นแบบอินเทอร์แอคทีฟด้วยสิทธิ์ระดับผู้ดูแลระบบเพิ่มเติม หากบริการนี้หยุดทำงานผู้ใช้จะไม่สามารถเปิดใช้แอปพลิเคชันด้วยสิทธิ์การดูแลระบบเพิ่มเติมที่พวกเขาอาจต้องการ ... เชลล์ตรวจสอบกับบริการนี้เมื่อเปิดตัวแอปพลิเคชัน AIS เป็นส่วนที่อ่านรายการและส่วน 'trustInfo' xml ที่มีข้อกำหนดสำหรับ 'RequestExecutionLevel' ...

นี่คือกราฟิกที่ตามหลังข้อความที่กล่าวถึงโดยละเอียดเกี่ยวกับบทบาทของ AIS ในกระบวนการขอความยินยอมจาก UAC:

ป้อนคำอธิบายรูปภาพที่นี่

เอไอเอสจะถูกนำมาใช้ในการ DLLappinfo.dllsvchost.exeซึ่งจะดำเนินการโดย

แสดงความยินยอม

@ คำตอบของ BenN อธิบายถึงบทบาทสำคัญของ Prompt Prompt (ใน) UAC ที่มีชื่อเสียง สิ่งนี้ถูกนำไปใช้ในconsent.exeและมีหน้าที่รับผิดชอบในการขอความยินยอมจากผู้ใช้หรือหนังสือรับรองของผู้ดูแลระบบเพื่อให้สามารถเปิดตัวแอปพลิเคชันที่ต้องการสิทธิ์ของผู้ดูแลระบบ

Secure Desktop

Secure Desktop คือตำแหน่งที่ UAC แสดงความยินยอมพร้อมท์ตามค่าเริ่มต้น UACBlog ของ Microsoftบอกเราว่ามีอะไรพิเศษเกี่ยวกับเดสก์ท็อปนี้เมื่อเทียบกับ User Desktop:

คุณมักจะโต้ตอบกับ [Secure Desktop] เมื่อคุณเข้าสู่ระบบ Windows เนื่องจาก Logon UI ทำงานบน Secure Desktop ความแตกต่างหลักของ Secure Desktop จาก User Desktop คือกระบวนการที่เชื่อถือได้เท่านั้นที่ทำงานในฐานะระบบได้รับอนุญาตให้ทำงานที่นี่ (เช่นไม่มีสิ่งใดทำงานในระดับสิทธิ์ของผู้ใช้) และเส้นทางที่จะไปยัง Secure Desktop จาก Desktop ผู้ใช้ต้องเชื่อถือด้วย ห่วงโซ่ทั้งหมด

แนวคิดเบื้องหลังการใช้เมื่อขอความยินยอมจากผู้ใช้ในการเรียกใช้แอปพลิเคชันที่มีสิทธิ์ในการยกระดับสูงคือมัลแวร์ไม่สามารถเลียนแบบ Secure Desktop ได้เว้นแต่จะมีสิทธิ์ของผู้ดูแลระบบอยู่แล้ว


สรุป: UAC ไม่ได้เป็นเพียงไบนารีเดียว มันเป็นโครงสร้างของระบบย่อยแบบสาน

ยังมีแง่มุมอื่น ๆ ของสถาปัตยกรรม UAC ที่ไม่ได้กล่าวถึงในที่นี้ แต่สิ่งนี้ควรให้หลักฐานที่เพียงพอสำหรับข้อเท็จจริงที่:

  1. UAC ไม่ได้ดำเนินการในไบนารีเดียว
  2. หากเปิดใช้งานมันเป็นส่วนสำคัญของการปฏิบัติงานด้านการบริหาร

นับตั้งแต่เปิดตัวใน Windows Vistaนั้นได้รวมเข้ากับส่วนสำคัญของระบบปฏิบัติการอย่างลึกซึ้งทำให้ไม่สามารถลบรหัสทั้งหมดที่รับผิดชอบสำหรับ UAC โดยไม่ทำลายสิ่งอื่น ๆ (เช่นความสามารถในการเข้าสู่ระบบ!)

ฉันคิดว่ามันปลอดภัยที่จะบอกว่าถ้าคุณ "ลบ" อย่างมีประสิทธิภาพ "UAC คุณจะต้องทำลาย Windows


1
FWIW technize.net/ … ตามลิงก์นั้นดูเหมือนว่าไฟล์ win32k.sys ดูเหมือนว่าจะมีบทบาทฉันสังเกตเห็นว่า file.exe ระบุว่าเป็น "PE32 + ปฏิบัติการ (ดั้งเดิม) x86-64 สำหรับ MS Windows"
barlop

win32k.sys คือ - เป็นหลัก - ก้อนใหญ่ของเคอร์เนล แน่นอนว่ามันมีบทบาทใน UAC มันเป็น Windows
Roger Lipscombe

25

ตามที่อธิบายไว้อย่างยอดเยี่ยม Twistyมีหลายองค์ประกอบที่ช่วยในการใช้ UAC ส่วนของ UAC ที่ผู้คนคุ้นเคยมากที่สุดคือกล่องโต้ตอบการยกระดับ / การยินยอม:

สิ่งนี้จัดทำโดยconsent.exe"UI ที่ยินยอมสำหรับแอปพลิเคชันการดูแลระบบ" ฉันลองเปลี่ยนชื่อใหม่ใน VM และดูว่าเกิดอะไรขึ้น ตามที่คาดไว้ไม่มีการแจ้งเตือนระดับความสูงปรากฏขึ้นเมื่อใช้ "Run as administrator" - คุณจะได้รับข้อผิดพลาดที่ไม่พบไฟล์ซึ่งโทษสิ่งที่คุณพยายามยกระดับ:

ไม่พบ

กำลังพยายามใช้องค์ประกอบ UI แผงควบคุมใด ๆ ที่ต้องการการยกระดับ (เช่นมีไอคอนรูปโล่) แม้ว่าการเข้าสู่ระบบในฐานะผู้ดูแลระบบล้มเหลวด้วยข้อผิดพลาดที่คล้ายกัน การพยายามเรียกใช้สิ่งต่าง ๆ สำหรับผู้ดูแลจากเมนูเริ่มก่อให้เกิดข้อผิดพลาดที่แตกต่างกันเล็กน้อย:

ไม่มีแอปที่เชื่อมโยง

ขึ้นอยู่กับชุด ACL เมื่อทำการเปลี่ยนชื่อที่ทำลายทุกอย่างมันอาจเป็นไปไม่ได้ที่จะแก้ไขปัญหานี้จากภายในระบบปฏิบัติการเนื่องจากการทำงานของไฟล์อาจต้องมีการยกระดับ (แม้ว่าพวกเขามักจะไม่สร้างกล่องโต้ตอบยินยอม) แม้ว่ากิจกรรมที่คล้ายกับผู้ใช้ทั่วไปจะไม่ลดระดับลง


3
@muru ฉันคาดเดาว่ายินยอม.exeไม่เพียงแค่คืนค่าจริงหรือเท็จ แต่โทเค็นที่จะดำเนินการภายใต้ ซึ่งหมายความว่าคุณไม่สามารถรับจากผู้ใช้ปกติไปยังโทเค็นของผู้ดูแลระบบโดยไม่ต้องตรวจสอบสิทธิ์ในฐานะผู้ดูแลระบบ
Joey

6
@muru Windows ตรวจสอบและแทนที่ไฟล์ระบบจำนวนมากไม่แน่ใจว่าไฟล์นี้มีอยู่หรือไม่ อย่างไรก็ตามจากมุมมองด้านความปลอดภัยประเด็นคือ moot - เพื่อแทนที่ replace.exe คุณต้องมีสิทธิ์ผู้ดูแลระบบในตอนแรกดังนั้นจึงไม่มีการเพิ่มสิทธิพิเศษแม้ว่าจะเป็นไปได้ที่จะเปลี่ยนวิธีที่คุณจินตนาการ
Luaan

3
เพียงรวมไว้ด้วยเพราะความคิดเข้ามาในใจฉัน คุณยังสามารถบู๊ตเครื่องเป็น Linux หรือบางอย่างเพื่อแทนที่ไฟล์ แต่นั่นต้องใช้การเข้าถึงเครื่องซึ่งโดยทั่วไปจะเป็นการเข้าถึงแบบผู้ดูแลระบบด้วย ดังนั้นจึงยังไม่กังวลด้านความปลอดภัย
DeadChex

1
@EricTowers ใช่ แต่เนื่องจากต้องการสิทธิ์ระดับผู้ดูแลระบบในการเปลี่ยนแปลงconsent.exeผู้โจมตีที่สามารถทำสิ่งนั้นได้อยู่ในอีกด้านหนึ่งของเส้นทางสุญญากาศและมีวิธีการทำสิ่งที่ไม่ตรงไปตรงมามากขึ้น
Ben N

1
@TwistyImpersonator คำถามที่น่าสนใจ! การยกระดับเงียบดูเหมือนว่าจะเรียกการยินยอม (ต่อการตรวจสอบการเริ่มต้นกระบวนการ ) เมื่อทำภายใต้บัญชีผู้ดูแลระบบปกติ บัญชีผู้ดูแลระบบภายในไม่ได้อยู่ภายใต้ UAC ดังนั้นโปรแกรมทั้งหมดจะได้รับการยกระดับแล้วและไม่ได้รับความยินยอม คุณสามารถเปลี่ยนพฤติกรรมที่ใช้นโยบายความปลอดภัยนี้
Ben N
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.