Nếu một cmd.exe Windows đang chạy với các đặc quyền nâng cao thì bất cứ điều gì tôi thực hiện từ dấu nhắc của nó cũng chạy với các đặc quyền nâng cao?


11

Nếu Cửa sổ cmd.exe của tôi nói "Quản trị viên" trong thanh tiêu đề, cho biết nó đã được bắt đầu với các đặc quyền nâng cao, điều này có nghĩa là bất cứ điều gì tôi thực hiện từ cửa sổ lệnh này cũng được chạy với các đặc quyền nâng cao?

Cụ thể, nếu tôi chạy một cái gì đó như:

msiexec SomeProgram.msi

trình cài đặt của tôi có được chạy với các đặc quyền nâng cao không vì nó được thực thi từ cmd.exe đang chạy với các đặc quyền nâng cao?

Cụ thể hơn: Tôi tự hỏi liệu các ứng dụng có giao diện người dùng và trả về lời nhắc trong cửa sổ cmd.exe ngay lập tức, như msiexeccuộc gọi ở trên, đang thực thi với các đặc quyền nâng cao.

Câu trả lời:


16

Vâng, nó thực hiện với các đặc quyền nâng cao.

Bài kiểm tra đơn giản:

Bạn có thể kiểm tra điều này khá dễ dàng bằng cách mở một dấu nhắc lệnh nâng và không nâng. Chạy lệnh notepad.exetrong cả hai và thử lưu tệp văn bản trống vào C:\Windows. Một sẽ lưu, một sẽ ném một lỗi quyền.

Kiểm tra kỹ lưỡng:

Nếu điều đó không đủ để xác nhận điều đó cho bạn (nó không thực sự làm tôi hài lòng), bạn có thể sử dụng AccessChk từ SysIternals. Bạn sẽ cần chạy nó từ một dấu nhắc lệnh nâng cao.

Hãy bắt đầu bằng cách kiểm tra hai quy trình Notepad đang chạy:

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

Một cái đang chạy dưới tên người dùng tên miền của tôi, cái kia đang chạy trong nhóm tích hợp Quản trị viên. Nó cũng có một mức độ bắt buộc cao . Bạn cũng có thể chạy với -fcờ để phân tích các đặc quyền và mã thông báo.

Tệp MSIExec và MSI

Tôi nghĩ mọi thứ có thể phức tạp hơn một chút khi chạy msiexec. Tôi có trình cài đặt độc lập Google Chrome rất tiện để kiểm tra.

msiexec.exe khởi chạy trình cài đặt Chrome từ dấu nhắc nâng cao:

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

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

chrome_installer.exe được sinh ra bởi MSI:

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

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

Không cắt và khô nữa! Có vẻ như một chrome_installer.exequy trình đã được chạy qua dịch vụ MSIServer.


Điều này khiến tôi tự hỏi những trình cài đặt khác có thể có hành vi gì, vì vậy tôi đã chạy Evernote.msi tôi có ích:

Nâng cao msiexec.exe khởi chạy trình cài đặt 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

Hấp dẫn; lần này có một msiexec.exe chạy dưới cấp hệ thống. Tôi đã sử dụng Process Monitor để thấy rằng cửa sổ cài đặt thực sự bật lên xuất phát từ quá trình msiexec ở cấp hệ thống. Giết mức bắt buộc cao cũng giết chết quá trình cấp hệ thống.

Msiexec.exe không nâng cao khởi chạy trình cài đặt 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

Có vẻ như Evernote sẽ có quyền truy cập cấp hệ thống. Bấm đúp vào trình cài đặt có cùng kết quả.


Phần kết luận:

Tôi nghĩ rằng nó đã chứng minh khá rõ rằng một quy trình sẽ kế thừa các quyền trừ khi có quy định khác. Điều đó không đảm bảo msiexec SomeProgram.msisẽ chạy với mức bắt buộc cao trong tất cả các quy trình xử lý; nó có thể chạy dưới cấp hệ thống hoặc dưới MSIServer. Số dặm của bạn có thể thay đổi và tôi sẽ không ngạc nhiên khi thấy nhiều trường hợp các quy tắc này dường như bị "phá vỡ".


2
Ngoài thử nghiệm theo kinh nghiệm, các quy trình của Windows được cho là kế thừa các quyền từ cha mẹ.
Bob

Điểm tuyệt vời với bài kiểm tra. Tôi đã thử nó từ một cmd.exe đã được bắt đầu với quyền nâng cao và tôi bị từ chối khi cố lưu tệp vào C:\Windowsmặc dù đã bắt đầu Notepad từ cmd.exe nâng cao. Có cách nào để phá vỡ quy tắc "được cho là thừa kế từ cha mẹ" không?
Ian C.

@IanC. Có thể chạy một tiến trình con với ít đặc quyền hơn. Tôi nên đặt câu bình luận trước đó của tôi là "được cho là kế thừa theo mặc định ". Tôi đã sửa đổi câu trả lời của tôi để bao gồm thông tin đó. Tuy nhiên, Notepad nên được thừa hưởng đặc quyền quản trị.
Bob

@IanC. Odd, nó làm việc cho tôi. Bạn đã tình cờ thử accesschk? Không chắc sự khác biệt có thể là gì.
Tanner Faulkner

11

Theo mặc định, các quy trình Windows sẽ kế thừa bối cảnh bảo mật của chúng từ cha mẹ:

Các ACL trong bộ mô tả bảo mật mặc định cho một quy trình xuất phát từ mã thông báo chính hoặc mạo danh của người tạo.

MSDN về bảo mật quy trình và quyền truy cập

Tuy nhiên, có thể sinh ra các quy trình với ít đặc quyền hơn:

Trong khi các quy trình kế thừa mức toàn vẹn của quy trình sinh ra nó, mức toàn vẹn có thể được tùy chỉnh tại thời điểm tạo quy trình. Cũng như để xác định ranh giới cho các thông báo cửa sổ trong công nghệ Cách ly đặc quyền giao diện người dùng, Kiểm soát toàn vẹn bắt buộc được sử dụng bởi các ứng dụng như Windows Explorer, Internet Explorer, Google Chrome và Adobe Reader để cách ly tài liệu khỏi các đối tượng dễ bị tổn thương trong hệ thống.

Wikipedia về Kiểm soát toàn vẹn bắt buộc liên quan đến trang MSDN khác này , cũng được đề cập ở đây . Một bài trình bày khác cũng đề cập đến quá trình kế thừa.

Tuy nhiên, tôi tin rằng cmd.exe sẽ khởi chạy các tiến trình con với mức kế thừa đặc quyền lớn nhất có thể, như thử nghiệm và câu trả lời của @ Tanner cho thấy.


2

Có thể có hai cách để nâng cao các đặc quyền của lệnh được thực thi:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(chạy runas /showtrustlevelskhi biết rằng 0x20000là trustlevel người dùng mặc định - ngay cả các công trình này để cài đặt / chạy chương trình mà "đòi hỏi" quyền cao -. mà không thực sự cấp chúng khi chạy như admin này đi kiểm tra notepad Tanner của ) theo câu trả lời này SU
  • psexec -l -d msiexec SomeProgram.msitheo câu trả lời SU này (có thể một số "" cũng được yêu cầu, tôi đã không kiểm tra điều này vì nó runashoạt động đủ tốt cho tôi)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.