[windows-services] 로컬 시스템 계정으로 CMD.exe를 어떻게 실행합니까?

현재 Vista를 실행하고 있으며 Windows 서비스와 동일한 작업을 수동으로 완료하려고합니다. Windows 서비스가 로컬 시스템 계정으로 실행 중이므로 동일한 동작을 에뮬레이션하고 싶습니다. 기본적으로 로컬 시스템 계정으로 CMD.EXE를 실행하고 싶습니다.

DOS 작업 스케줄러 AT 명령을 사용하여 CMD.exe를 라우 칭하는 정보를 온라인에서 찾았지만 “보안 향상으로 인해이 작업은 제외되었지만 대화식으로는 수행되지 않습니다.”라는 Vista 경고를 받았습니다. 다음은 샘플 명령입니다.

AT 12:00 /interactive cmd.exe

또 다른 솔루션은 CMD.exe 만 시작하는 서비스 제어 (sc.exe)를 통해 보조 Windows 서비스를 만들 것을 제안했습니다.

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

이 경우 서비스가 시작되지 않고 다음과 같은 오류 메시지가 나타납니다.

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

세 번째 제안은 예약 된 작업을 통해 CMD.exe를 시작하는 것입니다. 다양한 계정으로 예약 된 작업을 실행할 수 있지만 로컬 시스템 계정이 그 중 하나라고 생각하지 않습니다.

Runas도 사용해 보았지만 예약 된 작업을 실행할 때와 동일한 제한을 받고 있다고 생각합니다.

지금까지 나의 각 시도는 실패로 끝났다. 어떤 제안?



답변

개인적으로 테스트하지는 않았지만 위에서 언급 한 AT COMMAND 솔루션이 XP, 2000 및 Server 2003에서 작동 할 것이라고 믿을만한 충분한 이유가 있습니다. 내 Bryant의 테스트에 따르면 Vista와 동일한 접근 방식이 작동하지 않는 것으로 나타났습니다. 또는 Windows Server 2008-추가 된 보안 및 / interactive 스위치가 더 이상 사용되지 않기 때문일 수 있습니다.

그러나이 기사 를 통해 SysInternals (2006 년 7 월 Microsoft에 인수 됨) 의 PSTools 를 사용하는 방법을 보여주었습니다 . 다음을 통해 명령 줄을 시작했으며 갑자기 로컬 관리자 계정에서 마술처럼 실행되었습니다.

psexec -i -s cmd.exe

PSTools가 잘 작동합니다. 내 문제에 대한 적절한 해결책을 제공하는 가볍고 잘 문서화 된 도구 세트입니다.

도움을 주신 분들께 감사드립니다.


답변

  1. Sysinternals에서 psexec.exe를 다운로드하십시오 .
  2. C : \ 드라이브에 넣으십시오.
  3. 표준 또는 관리자로 로그온하고 다음 명령을 사용하십시오 cd \.. psexec가있는 드라이브의 루트 디렉토리에 위치합니다.
  4. 다음 명령을 사용하십시오. psexec -i -s cmd.exe여기서 -i는 대화 식용이고 -s는 시스템 계정 용입니다.
  5. 명령이 완료되면 cmd 쉘이 시작됩니다. 유형 whoami; 그것은 ‘시스템’이라고 말할 것입니다
  6. 작업 관리자를 엽니 다. explorer.exe를 종료하십시오.
  7. 관리자 권한 명령 셸 유형 start explorer.exe.
  8. 탐색기가 시작되면 시작 메뉴 표시 줄에 “system”이라는 이름이 표시됩니다. 이제 system32 디렉토리에서 일부 파일을 삭제할 수 있습니다. 관리자는 삭제할 수 없거나 관리자 권한으로 파일을 삭제하기 위해 권한을 변경해야합니다.

Windows의 보호 된 디렉토리에서 시스템 파일의 이름을 바꾸거나 삭제하려는 사용자는 파일 이름을 바꾸는 동안 모든 Windows 파일이 DACLS에 의해 보호된다는 것을 알아야합니다. 소유자를 변경하고 파일을 소유 한 TrustedInstaller를 바꾸고 모든 사용자를 파일의 소유자로 관리자 그룹에 속하고 권한을 변경 한 후 이름을 바꾸려고하면 작동하며 커널 권한으로 Windows 탐색기를 실행하는 동안 보안상의 이유로 네트워크 액세스 측면에서 다소 제한적이며 여전히 연구 주제입니다. 다시 접근 할 수 있도록


답변

찾을 답변 여기에 /를 k binPath 매개 변수에 시작 추가하여 문제를 해결하는 것 같다. 그래서 그것은 당신에게 줄 것입니다 :

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

그러나 Ben은 그에게 효과가 없으며 Windows Server 2008에서 시도했을 때 로컬 시스템에서 cmd.exe 프로세스를 만들었지 만 대화식이 아니 었습니다 (창을 볼 수 없음).

나는 당신이 요구하는 것을 할 수있는 쉬운 방법이 없다고 생각하지만 왜 당신이 그것을하고 있는지 전혀 궁금합니다. 서비스를 실행할 때 무슨 일이 일어나고 있는지 보려고합니까? exe를 로컬 시스템으로 실행하는 대신 로깅을 사용하여 무슨 일이 일어나고 있는지 확인할 수있는 것 같습니다 …


답변

너무 특권이있는 로컬 시스템 컨텍스트가 아니라 서비스에서 실제로 필요한 최소 권한 세트를 해결하는 것이 좋습니다. 예를 들어, 로컬 서비스 입니다.

세션 0 격리 로 인해 대화식 서비스가 더 이상 작동하지 않거나 Windows Vista 및 Windows Server 2008에서 더 이상 UI를 표시하지 않습니다 .


답변

실행 보안 데스크톱을 사용 cmd.exe으로system

CMD디버거를 연결하여 Windows XP / Vista / 7 / 8.1에서 커널 액세스를 쉽게 얻을 수 있습니다 .

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. CMD관리자 권한 으로 실행

  2. 그런 다음 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. 그런 다음 osk(화면 키보드)를 실행하십시오 . 프로세스 탐색기를 통해 확인하면 여전히 시스템 무결성 수준으로 실행되지 않지만 서비스 세션에서 OSK를 사용할 수 있으면 다음과 같이 실행됩니다.NT Authority\SYSTEM

Secure Desktop에서 실행해야한다는 생각이 들었습니다.

모든 파일을 관리자로 시작하십시오. UAC 프롬프트가 나타나면 바로 키를 눌러 Win+ U와 시작 OSK과 시작됩니다 CMD대신. 그런 다음 상승 프롬프트에 whoami당신은 얻을 것이다 NT Authority\System. 그런 다음 시스템 명령 셸에서 Explorer를 시작하고 시스템 프로필을 사용할 수 있지만 보안상의 이유로 SYSTEM 권한을 통해 네트워크에서 수행 할 수있는 작업이 다소 제한되어 있습니다. 나는 1 년 전에 그것을 발견하면서 나중에 더 많은 설명을 추가 할 것입니다.

이것이 어떻게 일어나는지에 대한 간략한 설명

Cmd.exe사용하지 않고 로컬 시스템 계정으로 실행PsExec. 이 방법은 이전에 발견 된 디버거 트랩 기술을 실행합니다.이 기술은 디버거에 교묘하고 악의적 인 웜이나 맬웨어를 포착하고 다른 exe를 실행하여 확산이나 일시적인 손상을 막는 데 사용할 수있는 고유 한 이점이 있습니다. 이 레지스트리 키는 Windows 기본 디버거에서 화면 키보드를 트랩하고 대신 cmd.exe를 실행하지만 cmd는 여전히 로그온 한 사용자 권한으로 실행되지만 session0에서 cmd를 실행하면 시스템 셸을 얻을 수 있습니다. 그래서 우리는 여기에 또 다른 아이디어를 추가합니다. 안전한 데스크탑에서 cmd를 확장합니다. 시스템 계정의 세션 0에서 안전한 데스크탑 실행을 기억하고 시스템 쉘을 얻습니다. 따라서 상승 된 것을 실행할 때마다 대화 형이 아닌 어두운 바탕 화면에서 UAC 프롬프트와 UAC 프롬프트에 응답해야합니다. 일단 표시되면 Win+ U를 누른 다음OSK당신은 얻을 것이다 CMD.exe로컬 시스템 권한으로 실행. 로 로컬 시스템 액세스를 얻는 더 많은 방법이 있습니다CMD


답변

이에 대한 대안은 다음과 같이 실행하면 프로세스 해커입니다 (대화식은 보안 강화 기능이있는 사람들에게는 작동하지 않지만 중요하지 않습니다). 상자가 열릴 때 서비스를 상자 유형에 넣고 시스템을 사용자 상자에 넣고 C : \ Users \ Windows \ system32 \ cmd.exe 나머지는 확인을 클릭하고 cmd가있는 창을 가져 와서 시스템으로 실행하면 시스템을 실행할 때 다른 단계를 수행합니다.


답변

다른 방법이 있습니다. 상승 된 cmd를 실행할 수있는 PowerRun이라는 프로그램이 있습니다. TrustedInstaller 권한이있는 경우에도 마찬가지입니다. 콘솔 및 GUI 명령을 모두 허용합니다.