Jak uruchomić CMD.exe z lokalnego konta systemowego?

144

Obecnie używam Vista i chciałbym ręcznie wykonać te same operacje, co moja usługa Windows. Ponieważ usługa Windows działa w ramach lokalnego konta systemowego, chciałbym emulować to samo zachowanie. Zasadniczo chciałbym uruchomić CMD.EXE z lokalnego konta systemowego.

Znalazłem informacje w Internecie, które sugerują uruchomienie CMD.exe za pomocą polecenia AT Harmonogramu zadań DOS, ale otrzymałem ostrzeżenie systemu Vista, że ​​„ze względu na ulepszenia zabezpieczeń to zadanie będzie uruchamiane w tym czasie z wyjątkiem, ale nie w trybie interaktywnym”. Oto przykładowe polecenie:

AT 12:00 /interactive cmd.exe

Inne rozwiązanie sugerowało utworzenie dodatkowej usługi systemu Windows za pośrednictwem kontroli usług (sc.exe), która po prostu uruchamia CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

W takim przypadku usługa nie uruchamia się i powoduje wyświetlenie następującego komunikatu o błędzie:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

Trzecią sugestią było uruchomienie programu CMD.exe za pośrednictwem zaplanowanego zadania. Chociaż możesz uruchamiać zaplanowane zadania na różnych kontach, nie sądzę, aby lokalne konto systemowe było jednym z nich.

Próbowałem również użyć Runas, ale myślę, że napotykam te same ograniczenia, które znalazłem podczas uruchamiania zaplanowanego zadania.

Jak dotąd każda z moich prób kończyła się niepowodzeniem. Jakieś sugestie?

Ben Griswold
źródło

Odpowiedzi:

221

Chociaż nie testowałem osobiście, mam dobry powód, by sądzić, że powyższe rozwiązanie AT COMMAND będzie działać w systemach XP, 2000 i Server 2003. Na podstawie testów przeprowadzonych przeze mnie i Bryanta stwierdziliśmy, że to samo podejście nie działa w systemie Vista lub Windows Server 2008 - najprawdopodobniej ze względu na dodatkowe zabezpieczenia i wycofanie przełącznika / Interactive.

Jednak natknąłem się na ten artykuł , który demonstruje użycie PSTools z SysInternals (która została przejęta przez Microsoft w lipcu 2006 roku) I uruchomiła linię poleceń poprzez następujące i nagle został uruchomiony w ramach konta lokalnego administratora jak magia:

psexec -i -s cmd.exe

PSTools działa dobrze. To lekki, dobrze udokumentowany zestaw narzędzi, który zapewnia odpowiednie rozwiązanie mojego problemu.

Podziękowania dla tych, którzy zaoferowali pomoc.

Ben Griswold
źródło
11
Bardziej mi się podoba z -ddodanym, dzięki czemu mogę nadal korzystać z konsoli, z której go uruchomiłem.
SamB
1
Właśnie wypróbowałem system Vista x64 i otrzymałem komunikat „Usługa PsExec działająca w… jest niezgodną wersją”. Próbowano bezpośrednio z \\ live.sysinternals.com \ tools \ psexec i najnowszego pliku binarnego.
Wygląda na
52
  1. Pobierz psexec.exe z Sysinternals .
  2. Umieść go na dysku C: \.
  3. Zaloguj się jako użytkownik standardowy lub administrator i użyj następującego polecenia: cd \ . Spowoduje to umieszczenie Cię w katalogu głównym dysku, w którym znajduje się psexec.
  4. Użyj następującego polecenia: psexec -i -s cmd.exegdzie -i oznacza konto interaktywne, a -s oznacza konto systemowe.
  5. Po zakończeniu polecenia zostanie uruchomiona powłoka cmd. Typ whoami; powie „system”
  6. Otwórz menedżera zadań. Zabij plik explorer.exe.
  7. Z podwyższonego typu powłoki poleceń start explorer.exe .
  8. Po uruchomieniu eksploratora zwróć uwagę na nazwę „system” w pasku menu Start. Teraz możesz usunąć niektóre pliki w katalogu system32, których jako admin nie możesz usunąć lub jako administrator musiałbyś bardzo spróbować zmienić uprawnienia, aby usunąć te pliki.

Użytkownicy, którzy próbują zmienić nazwę lub usunąć pliki systemowe w jakimkolwiek chronionym katalogu systemu Windows, powinni wiedzieć, że wszystkie pliki systemu Windows są chronione przez DACLS, podczas zmiany nazwy pliku należy zmienić właściciela i zastąpić TrustedInstaller, który jest właścicielem pliku, i uczynić każdego użytkownika należy do grupy administratorów jako właściciel pliku, a następnie spróbuj zmienić jego nazwę po zmianie uprawnień, będzie działać i podczas korzystania z Eksploratora Windows z uprawnieniami jądra masz pewne ograniczenia w zakresie dostępu do sieci ze względów bezpieczeństwa i nadal jest to temat badawczy abym odzyskał dostęp

kruk
źródło
Używam tej sztuczki, aby często rozpocząć eksplorację jako użytkownik z wyższym poziomem uprawnień. Zwłaszcza, gdy łączysz się przez VNC z komputerem, na którym trzeba na przykład ustawić ustawienia sieciowe. +1 ode mnie
TPAKTOPA
Ta sztuczka wydaje się teraz nieważna. Mój system operacyjny to Windows 7 SP1. Doszedłem do tego, że zobaczyłem „system” na pasku menu Start. Ale nadal podczas zmiany nazwy pliku w folderze system32 pojawia się komunikat odmowa pozwolenia. Folder system32 jest teraz własnością TrustedInstaller, a nawet lokalne konto systemowe ma tylko specjalne uprawnienia.
Shaohua Li
jeśli spróbujesz zmienić nazwę lub usunąć dowolny plik, który znajduje się w dowolnym chronionym katalogu systemu Windows, którego właścicielem jest TrustedInstaller, Twój bieżący użytkownik musi być właścicielem pliku, zmieniając uprawnienia, a następnie możesz zmienić jego nazwę lub usunąć, Jest to często używane do usuwania slmgr. exe i inne pliki systemowe, aby uzyskać nieograniczony dostęp do wersji trailowej okien bez płacenia za to
raven
10

Znalazłem odpowiedź tutaj , która wydaje się rozwiązać problem poprzez dodanie / k start do parametru binPath. To dałoby ci:

sc create testsvc binpath= "cmd /K start" type= own type= interact

Jednak Ben powiedział, że to nie działa dla niego, a kiedy wypróbowałem go w systemie Windows Server 2008, utworzył proces cmd.exe w systemie lokalnym, ale nie był interaktywny (nie widziałem okna).

Nie sądzę, że jest łatwy sposób na zrobienie tego, o co prosisz, ale zastanawiam się, dlaczego w ogóle to robisz? Czy po prostu próbujesz zobaczyć, co się dzieje, gdy prowadzisz swoją usługę? Wygląda na to, że możesz po prostu użyć logowania, aby określić, co się dzieje, zamiast uruchamiać exe jako system lokalny ...

Bryant
źródło
Cześć Bryant. To rozwiązanie jest zasadniczo zarysowane w pytaniu. Czy to faktycznie działa dla Ciebie? Skutkuje to dla mnie niepowodzeniem. Dzięki.
Ben Griswold,
Bryant, mam usługę, która zarządza instalacją i deinstalacją innego składnika. Chcę zapewnić naszej grupie wsparcia łatwy sposób na „wymuszone” odinstalowanie komponentu, jeśli moja usługa nie wykona swojej pracy. Podczas testowania chciałbym również móc „wymusić” odinstalowanie. Dzięki za pomoc ...
Ben Griswold,
1
@Ben: Czy typ uruchomienia usługi „Wykrywanie usług interaktywnych” jest ustawiony na „Ręczny” lub „Wyłączony”?
Hello71
1
Aby zezwolić na usługi interaktywne dla serwera 2012, HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServicesnależy ustawić na 0 (domyślnie 1)
Ivan Chau,
6

Zalecałbym wypracowanie minimalnego zestawu uprawnień, którego naprawdę potrzebuje Twoja usługa, i korzystanie z niego zamiast zbyt uprzywilejowanego kontekstu systemu lokalnego. Na przykład usługa lokalna .

Usługi interaktywne już nie działają - lub przynajmniej nie wyświetlają już interfejsu użytkownika - w systemach Windows Vista i Windows Server 2008 z powodu izolacji sesji 0 .

Mike Dimmick
źródło
4
Mike, dzięki za odpowiedź. Chociaż zgadzam się z twoją rekomendacją i myślę, że wszyscy skorzystają na twojej odpowiedzi, nie wierzę, że odpowiedziałeś na pytanie.
Ben Griswold,
@Ben Griswold: Wskazuje jednak dokładnie, co sprawia, że ​​stary sposób zawodzi w Vista. +1.
SamB
1
Pytanie brzmi „Jak uruchomić CMD.exe z lokalnego konta systemowego?”
Jaco Pretorius
2
@SamB, i po to są komentarze, gdy masz coś do wniesienia, co w rzeczywistości nie jest odpowiedzią .
Synetech
6

Używanie Secure Desktop do uruchamiania cmd.exejakosystem

Możemy łatwo uzyskać dostęp do jądra CMDw systemie Windows XP / Vista / 7 / 8.1, dołączając debugger:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Uruchom CMDjako administrator

  2. Następnie użyj tego polecenia w Elevated:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Następnie uruchom osk(onscreenkeyboard). Nadal nie działa z poziomem integralności systemu, jeśli sprawdzisz eksplorator procesów, ale jeśli możesz używać OSK w sesji serwisowej, będzie działać jakoNT Authority\SYSTEM

więc pomyślałem, że musisz go uruchomić na Bezpiecznym pulpicie.

Uruchom dowolny plik jako Administrator. Kiedy pojawią się monity UAC, po prostu naciśnij Win+ Ui uruchom, OSKa CMDzamiast tego rozpocznie się . Następnie w podwyższonym wierszu wpisz, whoamia otrzymaszNT Authority\System . Następnie możesz uruchomić Eksploratora z powłoki poleceń systemu i użyć profilu System, ale ze względów bezpieczeństwa masz pewne ograniczenia, co możesz zrobić w sieci z uprawnieniami SYSTEM. Dodam więcej wyjaśnień później, ponieważ odkryłem to rok temu.

Krótkie wyjaśnienie, jak to się dzieje

Działa na Cmd.exelokalnym koncie systemowym bez użyciaPsExec . Ta metoda uruchamia technikę Debugger Trap, która została odkryta wcześniej, cóż, ta technika ma swoje własne zalety, może być używana do przechwytywania sprytnego / złośliwego robaka lub złośliwego oprogramowania w debugerze i uruchamiania innego exe, aby zatrzymać rozprzestrzenianie się lub tymczasowo uszkodzić. tutaj ten klucz rejestru przechwytuje klawiaturę ekranową w natywnym debugerze systemu Windows i zamiast tego uruchamia cmd.exe, ale cmd będzie nadal działać z uprawnieniami zalogowanego użytkownika, jednak jeśli uruchomimy cmd w sesji0, możemy uzyskać powłokę systemową. więc dodajemy tutaj kolejny pomysł, że rozpinamy cmd na bezpiecznym pulpicie. Pamiętaj, że bezpieczny pulpit działa w sesji 0 na koncie systemowym i otrzymujemy powłokę systemową. Więc za każdym razem, gdy uruchamiasz coś tak podwyższonego, musisz odpowiedzieć na monit UAC i zachęty UAC na ciemnym, nieinteraktywnym pulpicie, a kiedy to zobaczysz, musisz nacisnąćWin +Ua następnie wybierz,OSKbędziesz CMD.exedziałać z uprawnieniami systemu lokalnego. Istnieje jeszcze więcej sposobów uzyskania dostępu do systemu lokalnego za pomocąCMD

kruk
źródło
ya jest jeszcze więcej sposobów na uruchomienie cmd jako Elevated with NT Authority Privileges
raven
To jest bardzo miłe. Bardzo dobrze. Nienawidzę polegać na dodatkach innych firm, aby coś zrobić. To bardzo szybkie i łatwe. Trwałe też :-) Jedynym problemem jest to, że musisz uruchamiać wszystkie polecenia w oknie UAC i tylko niektóre aplikacje otwierają się. Na przykład Explorer.exe nie otwiera się. Chcę poeksperymentować, jeśli istnieje inny sposób, aby to wywołać. Chcę mieć możliwość uruchamiania innych aplikacji w natywnym środowisku Windows bez UAC ograniczającego niektóre aplikacje. Świetna rzecz Raven!
KonaRin
3

Alternatywą dla tego jest haker procesu, jeśli uruchomisz jako ... (Interaktywny nie działa dla osób z ulepszeniami bezpieczeństwa, ale to nie ma znaczenia) i kiedy okno się otworzy, umieść usługę w polu typu i umieść SYSTEM w skrzynce użytkownika i wstaw C : \ Users \ Windows \ system32 \ cmd.exe zostaw resztę kliknij ok i boch masz okno z cmd i uruchom jako system teraz wykonaj inne kroki dla siebie, ponieważ sugeruję, że je znasz

James5001
źródło
2

Jest inny sposób. Istnieje program o nazwie PowerRun, który umożliwia uruchomienie podwyższonego cmd. Nawet z prawami TrustedInstaller. Pozwala zarówno na polecenia konsoli, jak i GUI.

Alexander Haakan
źródło
1

jeśli możesz napisać plik wsadowy, który nie musi być interaktywny, spróbuj uruchomić ten plik wsadowy jako usługę, aby zrobić to, co należy zrobić.


źródło
0

Używam RunAsTi narzędzie do uruchamiania jako TrustedInstaller (high przywilej). Narzędzie może być używane nawet w trybie przywracania systemu Windows (tryb wprowadzany przez Shift+ Restart), narzędzie psexec tam nie działa. Ale musisz dodać swoje C:\Windowsi C:\Windows\System32(nie X:\WindowsiX:\Windows\System32 ścieżki ) do PATHzmiennej środowiskowej, w przeciwnym razie RunAsTi nie będzie działać w trybie odzyskiwania, po prostu wydrukuje: AdjustTokenPrivileges for SeImpersonateName: Nie wszystkie uprawnienia lub grupy, do których się odwołujesz, są przypisane do dzwoniącego .

anton_rh
źródło
0

Korzystając z harmonogramu zadań, zaplanuj uruchomienie CMDKEY działającego w systemie z odpowiednimi argumentami / add: / user: i / pass:

Nie musisz niczego instalować.

Paul Harris
źródło