Jika Windows cmd.exe berjalan dengan privilege yang ditinggikan, apa pun yang saya jalankan dari prompt juga dijalankan dengan privilege yang ditinggikan?

11

Jika Jendela cmd.exe saya mengatakan "Administrator" di bilah judul, menunjukkan itu dimulai dengan hak istimewa yang ditingkatkan, apakah ini berarti apa pun yang saya jalankan dari jendela perintah ini juga dijalankan dengan hak istimewa yang ditingkatkan?

Khususnya, jika saya menjalankan sesuatu seperti:

msiexec SomeProgram.msi

Apakah installer saya dijalankan dengan privilege yang ditinggikan karena dijalankan dari cmd.exe yang berjalan dengan privilege yang ditinggikan?

Lebih khusus: Saya bertanya-tanya apakah aplikasi yang menyajikan UI dan mengembalikan prompt di jendela cmd.exe segera, seperti msiexecpanggilan di atas, sedang dijalankan dengan hak istimewa yang ditinggikan.

Ian C.
sumber

Jawaban:

16

Ya, itu mengeksekusi dengan privilege yang ditinggikan.

Tes sederhana:

Anda dapat menguji ini dengan mudah dengan membuka satu command prompt yang ditinggikan dan satu yang tidak ditinggikan. Jalankan perintah notepad.exedi keduanya, dan cobalah menyimpan file teks kosong ke C:\Windows. Satu akan menghemat, satu akan melemparkan kesalahan izin.

Tes menyeluruh:

Jika itu tidak cukup untuk mengonfirmasi itu untuk Anda (itu tidak benar-benar memuaskan saya), Anda dapat menggunakan AccessChk dari SysInternals. Anda harus menjalankan ini dari prompt perintah yang ditinggikan.

Mari kita mulai dengan memeriksa dua proses Notepad yang sedang berjalan:

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

Satu berjalan di bawah nama pengguna domain saya, yang lain berjalan di bawah grup bawaan Administrator. Ini juga memiliki tingkat wajib yang tinggi . Anda juga dapat menjalankan dengan -fbendera untuk penguraian hak istimewa dan token.

File MSIExec dan MSI

Saya pikir hal-hal mungkin menjadi sedikit lebih rumit ketika berlari msiexec. Saya memiliki penginstal mandiri Google Chrome yang mudah untuk diuji.

msiexec.exe meluncurkan penginstal Chrome dari prompt yang tinggi:

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

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

chrome_installer.exe dihasilkan oleh MSI:

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

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

Tidak lagi dipotong dan kering! Sepertinya chrome_installer.exeproses dijalankan melalui layanan MSIServer.


Ini membuat saya bertanya-tanya perilaku apa yang mungkin dimiliki oleh installer lain, jadi saya menjalankan Evernote.msi yang saya miliki:

Peningkatan msiexec.exe meluncurkan penginstal 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

Menarik; ada msiexec.exe yang berjalan di bawah level sistem saat ini. Saya menggunakan Monitor Proses untuk menemukan bahwa jendela instal aktual yang muncul berasal dari proses msiexec tingkat sistem. Membunuh level wajib yang tinggi juga membunuh proses level sistem.

Msiexec.exe tidak terangkat meluncurkan installer 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

Sepertinya Evernote akan mendapatkan akses tingkat sistem dengan cara apa pun. Mengklik dua kali penginstal memiliki hasil yang sama.


Kesimpulan:

Saya pikir itu menunjukkan dengan cukup baik bahwa suatu proses akan mewarisi izin kecuali ditentukan lain. Itu tidak menjamin msiexec SomeProgram.msiakan berjalan dengan tingkat wajib tinggi di semua proses proses; itu bisa berjalan di bawah level sistem atau di bawah MSIServer. Jarak tempuh Anda mungkin bervariasi, dan saya tidak akan terkejut melihat banyak contoh di mana aturan ini tampaknya "dilanggar".

Tanner Faulkner
sumber
2
Terlepas dari pengujian empiris, proses Windows seharusnya mewarisi izin dari orang tua.
Bob
Poin bagus dengan tes ini. Saya mencobanya dari cmd.exe yang dimulai dengan izin yang ditinggikan dan saya mendapat izin yang ditolak untuk mencoba menyimpan file C:\Windowswalaupun telah memulai Notepad dari cmd.exe yang tinggi. Apakah ada cara untuk melanggar aturan "yang seharusnya diwariskan dari induk"?
Ian C.
@IanC. Dimungkinkan untuk menjalankan proses anak dengan lebih sedikit keistimewaan. Saya seharusnya mengatakan komentar saya sebelumnya sebagai "seharusnya mewarisi secara default ". Saya telah mengubah jawaban saya untuk memasukkan informasi itu. Namun, Notepad seharusnya memiliki hak administratif yang diwarisi.
Bob
@IanC. Aneh, itu berhasil untuk saya. Apakah Anda kebetulan mencoba accesschk? Tidak yakin apa bedanya.
Tanner Faulkner
11

Secara default, proses Windows akan mewarisi konteks keamanannya dari induk:

ACL di deskriptor keamanan default untuk suatu proses berasal dari token utama atau peniruan identitas pencipta.

MSDN tentang keamanan proses dan hak akses

Namun, dimungkinkan untuk menelurkan proses dengan hak istimewa yang kurang:

Sementara proses mewarisi tingkat integritas dari proses yang melahirkannya, tingkat integritas dapat disesuaikan pada saat pembuatan proses. Selain untuk menentukan batas pesan jendela dalam teknologi User Interface Privilege Isolation, Mandatory Integrity Control digunakan oleh aplikasi seperti Windows Explorer, Internet Explorer, Google Chrome dan Adobe Reader untuk mengisolasi dokumen dari objek yang rentan dalam sistem.

Wikipedia tentang Kontrol Integritas Wajib terkait dengan halaman MSDN ini , juga disebutkan di sini . Presentasi lain juga menyebutkan proses pewarisan.

Namun, saya percaya cmd.exe akan meluncurkan proses anak dengan tingkat tertinggi hak istimewa yang mungkin, seperti yang ditunjukkan pengujian dan jawaban @ Tanner.

Bob
sumber
2

Mungkin ada dua cara untuk membatalkan hak istimewa dari perintah yang dieksekusi:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(jalankan runas /showtrustlevelsuntuk mengetahui bahwa itu 0x20000adalah tingkat kepercayaan pengguna default - ini bahkan berfungsi untuk menginstal / menjalankan program yang "memerlukan" hak istimewa yang ditingkatkan - tanpa benar-benar memberikannya ketika dijalankan sebagai admin. Ini melewati tes notepad Tanner ) sesuai jawaban SU ini
  • psexec -l -d msiexec SomeProgram.msiper jawaban SU ini (mungkin beberapa "" juga diperlukan, saya tidak menguji ini karena runasberfungsi cukup baik untuk saya)
Tobias Kienzler
sumber