/ COMMAND, POWERSHELL, WINDOWS

Run CMD or Powershell as Administrator

cmd.exe 나 powershell.exe 를 관리자 권한으로 실행하는 방법
(Run cmd.exe or powershell.exe as Administrator)


다음 글은 다양한 방식으로 구현하는 관리자 권한으로 실행하는 방법들 중에서 Microsoft HTML Application Host 프로그램으로 Javascript를 구동하는 방식입니다.

이미지를 클릭하면 원본 크기로 보실 수 있습니다.

cmd.exe 를 실행하는 스크립트

@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF

:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!

MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1

powershell.exe 를 실행하는 스크립트

@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF

:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!

MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('POWERSHELL', '-NoExit -Command Set-Location \"!this!\"', '', 'runas', 1);close();"
EXIT 1

실행결과

  • 관리자로 실행시: 아무런 동작도 하지 않고 종료
  • 관리자가 아니면: 관리자 권한으로 프로그램을 실행

동작원리

  • NET SESSION 명령은 관리자인 경우 세션 목록을 보여준다. 하지만 관리자가 아닌 경우 액세스 거부 오류가 발생한다.
  • ERRORLEVEL 값이 0이면 관리자 권한으로 실행된 것이고 0이 아니면 오류가 발생(즉 관리자 계정이 아닌 경우)한다.
  • HTML 처리 호스트인 MSHTA 프로그램으로 자바 스크립트를 구동
    • ActiveX 컴퍼넌트트 중 쉘 처리 기능을 가진 shell.application 로딩
    • CMD.EXE 혹은 POWERSHELL.EXE 를 실행하면서 현재 디렉토리를 지정

1) 스크립트를 실행하고 권한 승인을 하면 Privilege Escalation

2) 관리자 권한으로 실행된 파워쉘이 짠!!! Powershell.exe

#윈도우, #명령줄, #파워쉘, #파워셸, #MSHTA, #자바스크립트, #액티브엑스