문제

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

나는 명령의 DOS 작업 스케줄러를 사용하여 CMD.Exe를 lauching하는 것을 제안하는 온라인 정보를 찾았지만 "보안 향상으로 인해이 작업은 상호 작용하지는 않지만이 작업이 실행되지 않을 것"이라는 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 스위치가 더 이상 사용되지 않기 때문일 것입니다.

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

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를 교체해야 하며 모든 사용자를 DACLS와 같은 사용자로 만들어야 합니다. 파일 소유자로 관리자 그룹에 속해 있으며 권한을 변경한 후 이름을 바꾸려고 하면 작동할 것입니다. 커널 권한으로 Windows 탐색기를 실행하는 동안 보안상의 이유로 네트워크 액세스 측면에서 다소 제한되며 여전히 연구 주제입니다. 내가 다시 액세스할 수 있도록

답변을 찾았습니다 여기 binPath 매개변수에 /k start를 추가하면 문제가 해결되는 것 같습니다.그러면 다음이 제공됩니다.

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

그러나 Ben은 그것이 자신에게는 효과가 없다고 말했으며 Windows Server 2008에서 시도했을 때 로컬 시스템에서 cmd.exe 프로세스를 생성했지만 대화형이 아니었습니다(창을 볼 수 없었습니다).

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

너무 권한이 높은 로컬 시스템 컨텍스트보다는 서비스에 실제로 필요한 최소 권한 집합을 찾아 이를 사용하는 것이 좋습니다.예를 들어, 지역 서비스.

대화형 서비스는 Windows Vista 및 Windows Server 2008에서 더 이상 작동하지 않거나 적어도 더 이상 UI를 표시하지 않습니다. 세션 0 격리.

이에 대한 대안은 다음과 같이 실행되는 경우 프로세스 해커입니다.(인터랙티브는 보안 향상을 가진 사람들에게는 작동하지 않지만 중요하지 않습니다) 및 Box가 열리면 서비스를 상자 유형에 넣고 시스템을 사용자 상자에 넣고 C : Users Windows System32 CMD. 그리고 Boch 당신은 cmd가있는 창이 있고 시스템으로 실행됩니다. 이제 당신이 그들을 알고 있기 때문에 다른 단계를 직접 수행합니다.

보안 데스크탑을 사용하여 실행 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 프롬프트가 나타나면 다음을 누르세요. 이기다+ 그리고 시작 OSK 그리고 시작될 거야 CMD 대신에.그런 다음 상승된 프롬프트에 다음을 입력합니다. whoami 그리고 당신은 얻을 것이다 NT Authority\System.그 후에는 시스템 명령 셸에서 탐색기를 시작하고 시스템 프로필을 사용할 수 있지만 보안상의 이유로 SYSTEM 권한을 통해 네트워크에서 수행할 수 있는 작업이 다소 제한됩니다.자세한 설명은 1년 전에 발견한 것이므로 나중에 추가하겠습니다.

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

달리기 Cmd.exe 사용하지 않고 로컬 시스템 계정에서 PsExec.이 방법은 이전에 발견된 디버거 트랩 기술을 실행합니다. 이 기술에는 디버거에서 일부 교활하고 악의적인 웜이나 맬웨어를 트랩하고 대신 다른 exe를 실행하여 확산을 막거나 일시적인 손상을 입히는 데 사용할 수 있는 고유한 이점이 있습니다.여기서 이 레지스트리 키는 Windows 기본 디버거에서 화면 키보드를 트랩하고 대신 cmd.exe를 실행하지만 cmd는 로그온한 사용자 권한으로 계속 실행됩니다. 그러나 session0에서 cmd를 실행하면 시스템 쉘을 얻을 수 있습니다.그래서 여기에 보안 데스크탑의 cmd를 확장하는 또 다른 아이디어를 추가합니다. 보안 데스크탑이 시스템 계정의 세션 0에서 실행되고 시스템 쉘을 얻는다는 것을 기억하십시오.따라서 관리자 권한으로 무엇이든 실행할 때마다 어두운 비대화형 데스크톱에서 UAC 프롬프트와 UAC 프롬프트에 응답해야 하며 일단 표시되면 키를 눌러야 합니다. 이기다+ 그런 다음 선택 OSK 당신은 얻을 것이다 CMD.exe 로컬 시스템 권한으로 실행 중입니다.다음을 사용하여 로컬 시스템에 액세스할 수 있는 더 많은 방법이 있습니다. CMD

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

대화형이 필요하지 않은 배치 파일을 작성할 수 있는 경우 해당 배치 파일을 서비스로 실행하여 필요한 작업을 수행해 보십시오.

나는 RunAsTi 다음으로 실행할 유틸리티 신뢰할 수 있는 설치 프로그램 (높은 특권).이 유틸리티는 Windows의 복구 모드(다음을 수행하여 입력하는 모드)에서도 사용할 수 있습니다. Shift+Restart), psexec 유틸리티가 작동하지 않습니다.하지만 당신은 당신의 C:\Windows 그리고 C:\Windows\System32 (아니다 X:\Windows 그리고 X:\Windows\System32) 경로 PATH 환경 변수, 그렇지 않으면 RunAsTi 복구 모드에서는 작동하지 않으며 다음과 같이 인쇄됩니다. SeImpersonateName에 대한 adjustTokenPrivileges:참조된 모든 권한이나 그룹이 호출자에게 할당되는 것은 아닙니다..

작업 스케줄러를 사용하여 /add의 적절한 인수를 사용하여 SYSTEM에서 실행되는 CMDKEY 실행을 예약합니다./사용자:그리고 /패스:

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top