it-swarm-ko.tech

로컬 시스템 계정으로 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도 사용해 보았지만 예약 된 작업을 실행할 때와 동일한 제한을 받고 있다고 생각합니다.

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

135
Ben Griswold

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

그러나 나는 이것을 article 에서 발견했다. PSTools from SysInternals (2006 년 7 월에 Microsoft에 의해 인수 됨) 다음을 통한 명령 줄과 갑자기 로컬 관리자 계정으로 마술처럼 실행되었습니다.

psexec -i -s cmd.exe

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

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

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

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

43
raven

BinPath 매개 변수에/k start를 추가하여 문제를 해결하는 것으로 보이는 here 답변을 찾았습니다. 그래서 그것은 당신에게 줄 것입니다 :

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

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

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

10
Bryant

보안 데스크톱을 사용하여 cmd.exe을 (를) system

디버거를 연결하여 Windows XP/Vista/7/8.1에서 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"
  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 년 전에 그것을 발견하면서 나중에 더 많은 설명을 추가 할 것입니다.

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

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

6
raven

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

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

6
Mike Dimmick

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

3
James5001

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

2
Alexander Haakan

작업 스케줄러를 사용하여 적절한/add :/user : 및/pass 인수를 사용하여 SYSTEM에서 실행중인 CMDKEY 실행을 예약하십시오.

아무것도 설치할 필요가 없습니다.

0
Paul Harris

RunAsTi 유틸리티를 사용하여 TrustedInstaller (높은 권한)으로 실행합니다. 이 유틸리티는 Windows의 복구 모드 (Shift + Restart를 수행하여 입력 한 모드)에서도 사용할 수 있으며 psexec 유틸리티는 작동하지 않습니다. 그러나 C:\WindowsC:\Windows\System32 (X:\WindowsX:\Windows\System32 아님) 경로를 PATH 환경 변수에 추가해야합니다. 그렇지 않으면 RunAsTi = 복구 모드에서 작동하지 않으며 다음과 같이 인쇄됩니다. SeImpersonateName에 대한 AdjustTokenPrivileges : 참조 된 모든 권한 또는 그룹이 호출자에게 할당되는 것은 아닙니다.

0
anton_rh