Jeśli Windows cmd.exe jest uruchomiony z podwyższonymi uprawnieniami, czy cokolwiek, co wykonam z jego monitu, również działa z podwyższonymi uprawnieniami?

11

Jeśli moje okno cmd.exe mówi „Administrator” na pasku tytułu, co oznacza, że ​​zostało uruchomione z podwyższonymi uprawnieniami, czy to oznacza, że ​​cokolwiek, co wykonuję z tego okna poleceń, jest również uruchamiane z podwyższonymi uprawnieniami?

W szczególności, jeśli prowadzę coś takiego:

msiexec SomeProgram.msi

czy mój instalator jest uruchamiany z podwyższonymi uprawnieniami, ponieważ został uruchomiony z programu cmd.exe, który działał z podwyższonymi uprawnieniami?

Mówiąc dokładniej: zastanawiam się, czy aplikacje, które prezentują interfejs użytkownika i od razu zwracają monit w oknie cmd.exe, podobnie jak powyższe msiexecwywołanie, działają z podwyższonymi uprawnieniami.

Ian C.
źródło

Odpowiedzi:

16

Tak, działa z podwyższonymi uprawnieniami.

Prosty test:

Możesz to dość łatwo przetestować, otwierając jeden wiersz polecenia z podwyższonym poziomem uprawnień i jednym bez podniesionego poziomu uprawnień. Uruchom polecenie notepad.exew obu przypadkach i spróbuj zapisać pusty plik tekstowy w C:\Windows. Jeden zapisze, jeden rzuci błąd uprawnień.

Szczegółowy test:

Jeśli to nie wystarczy, aby to potwierdzić (naprawdę mnie to nie satysfakcjonowało), możesz użyć AccessChk z SysInternals . Musisz uruchomić to z wiersza polecenia z podwyższonym poziomem uprawnień.

Zacznijmy od sprawdzenia dwóch uruchomionych procesów Notatnika:

Notatnik: ( 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

Jeden działa pod moją nazwą użytkownika domeny, drugi działa pod wbudowaną grupą Administratorów. Ma również wysoki poziom obowiązkowy . Możesz także biegać z -fflagą, aby uzyskać zestawienie uprawnień i tokenów.

Pliki MSIExec i MSI

Myślałem, że może się trochę bardziej skomplikować podczas biegania msiexec. Mam samodzielnego instalatora Google Chrome, który był przydatny do przetestowania.

msiexec.exe uruchamiający instalator Chrome z podwyższonego monitu:

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

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

chrome_installer.exe spawnowany przez MSI:

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

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

Już nie tak cięte i suche! Wygląda na to, że chrome_installer.exeprocesy zostały uruchomione za pośrednictwem usługi MSIServer.


To sprawia, że ​​zastanawiam się, jakie zachowanie mogą mieć inni instalatorzy, więc uruchomiłem Evernote.msi, które miałem pod ręką:

Podwyższony msiexec.exe uruchamiający instalator 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

Ciekawy; jest msiexec.exe, który tym razem jest uruchamiany na poziomie systemu. Użyłem Process Monitora do stwierdzenia, że ​​wyskakujące okno instalacji pochodzi z procesu msiexec na poziomie systemu. Zabicie wysokiego poziomu obowiązkowego zabiło również proces na poziomie systemu.

Plik msiexec.exe bez podniesionego poziomu uprawnień uruchamiający instalator 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

Wygląda na to, że Evernote uzyska dostęp na poziomie systemu w obie strony. Podwójne kliknięcie instalatora daje ten sam wynik.


Wniosek:

Myślę, że całkiem dobrze wykazano, że procesy odziedziczą uprawnienia, chyba że określono inaczej. To nie gwarantuje, że msiexec SomeProgram.msibędzie działać z wysokim obowiązkowym poziomem we wszystkich procesach; może działać na poziomie systemu lub MSIServer. Twój przebieg może się różnić i nie byłbym zaskoczony, widząc wiele przypadków, w których zasady te wydają się „złamane”.

Tanner Faulkner
źródło
2
Oprócz testów empirycznych procesy Windows powinny dziedziczyć uprawnienia po rodzicu.
Bob
Świetny punkt z testem. Próbowałem z cmd.exe, który został uruchomiony z podwyższonymi uprawnieniami i dostaję odmowę zgody na zapisanie pliku, C:\Windowsmimo że uruchomiłem Notatnik z podwyższonego cmd.exe. Czy istnieje sposób na złamanie zasady „powinien dziedziczyć po rodzicu”?
Ian C.
@IanC. Możliwe jest uruchomienie procesu potomnego z mniejszymi uprawnieniami. Powinienem sformułować mój poprzedni komentarz jako „ domyślnie dziedziczyć ”. Zmieniłem odpowiedź, aby uwzględnić te informacje. Notatnik powinien jednak odziedziczyć uprawnienia administracyjne.
Bob
@IanC. Dziwne, zadziałało dla mnie. Czy zdarzyło Ci się spróbować accesschk? Nie jestem pewien, jaka może być różnica.
Tanner Faulkner
11

Domyślnie procesy systemu Windows dziedziczą kontekst bezpieczeństwa po rodzicu:

Listy ACL w domyślnym deskryptorze bezpieczeństwa dla procesu pochodzą z tokena głównego lub personifikacji twórcy.

MSDN na temat bezpieczeństwa procesu i praw dostępu

Możliwe jest jednak odradzanie procesów z mniejszymi uprawnieniami:

Podczas gdy procesy dziedziczą poziom integralności procesu, który go stworzył, poziom integralności można dostosować w momencie tworzenia procesu. Oprócz określania granicy komunikatów okna w technologii izolacji uprawnień interfejsu użytkownika, Obowiązkowa kontrola integralności jest używana przez aplikacje takie jak Windows Explorer, Internet Explorer, Google Chrome i Adobe Reader do izolowania dokumentów od podatnych na atak obiektów w systemie.

Wikipedia na temat obowiązkowej kontroli integralności związanej z tą inną stroną MSDN , również wspomnianą tutaj . Kolejna prezentacja wspomina także o dziedziczeniu procesów.

Jednak uważam, że cmd.exe uruchomi procesy potomne z najwyższym poziomem dziedziczenia uprawnień, jak pokazują testy i odpowiedzi @ Tanner.

Kok
źródło
2

Mogą istnieć dwa sposoby na podniesienie przywilejów wykonanego polecenia:

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(uruchom, runas /showtrustlevelsaby dowiedzieć się, że 0x20000jest to domyślny poziom zaufania użytkownika - działa nawet w przypadku instalowania / uruchamiania programów, które „wymagają” podwyższonych uprawnień - bez faktycznego przyznawania ich podczas uruchamiania jako administrator. Pomyślnie przechodzi test notatnika Tannera ) zgodnie z odpowiedzią SU
  • psexec -l -d msiexec SomeProgram.msiwedług tej odpowiedzi SU (być może są też wymagane niektóre „”, nie testowałem tego, ponieważ runasdziała dla mnie wystarczająco dobrze)
Tobias Kienzler
źródło