
SeImpersonate 권한을 Named Pipe 가장을 통해 악용하는 Windows 권한 상승 도구로, SYSTEM 액세스를 위해 여러 실행 방법(CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell)을 지원합니다.
우선 - @splinter_code 및 @decoder_it의 RoguePotato에 감사드립니다. 이 코드는 이에 크게 기반합니다.
이것은 SeImpersonate 권한을 통해 SYSTEM을 얻기 위한 또 다른 Potato입니다. 하지만 이것은 다음과 같은 점에서 다릅니다.
CreateProcessWithTokenW만 사용하는 것이 아닙니다. 대신 CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser 및 BindShell 중에서 선택할 수 있습니다.따라서 이 프로젝트는 NamedPipe 서버를 열고, 연결하는 모든 사용자를 가장한 후 위에서 언급한 옵션 중 하나를 수행할 수 있습니다. 향후 새로운 SYSTEM 인증 트리거가 게시되더라도 이 도구를 권한 상승에 계속 사용할 수 있습니다. 이 경우 다른 파이프 이름을 사용하면 됩니다.
예시:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
기본값으로 60초 (THEAD_TIMEOUT을 통해 변경 가능) 동안 SYSTEM 계정 또는 다른 계정이 인증하도록 할 수 있습니다. 예를 들어 패치되지 않은 MS-EFSRPC 함수를 통해 수행할 수 있습니다. 기본적으로 MultiPotato는 MS-EFSRPC와 함께 사용하기 위해 \\.\pipe\pwned/pipe/srvsvc 파이프 이름을 수신합니다. 다른 SYSTEM 인증 트리거의 경우 -p 매개변수를 통해 이 값을 조정할 수 있습니다.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
물론 유효한 낮은 권한 사용자로 원격 시스템에서 PetitPotam.py를 트리거로 사용하는 것도 가능합니다.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
그리고 다음과 같이 트리거합니다.
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
중요: MS-RPRN 테스트에서는 localhost 또는 127.0.0.1을 대상으로 사용할 수 없었으며, 네트워크 IP 주소 또는 FQDN이어야 합니다. 또한 이 기능이 작동하려면 프린터 서비스가 활성화되어 있어야 합니다.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
최근에 SQL 인젝션과 XP_CMDShell을 통해 MSSQL 서버를 장악한 침투 테스트가 있었습니다. 하지만 모든 공개된 Potato들이 이 대상 시스템에서 서비스 계정에서 SYSTEM으로 권한을 상승시키는 데 실패했습니다. SYSTEM 인증 트리거가 문제가 아니었습니다. 대신 CreateProcessWithTokenW가 항상 NTSTATUS 코드 5 - 액세스 금지 - 로 실패했습니다. 이것은 저에게는 이해가 되지 않았고, 에지 케이스일 수 있습니다. 그 이유 중 하나는 로컬 엔드포인트 보호가 SYSTEM을 가장한 후 프로세스 생성을 차단했을 수 있다는 것입니다.
따라서 대안을 찾아보았고, 트위터에서 몇몇 사람들에게 물어보았습니다. 다시 한 번 @splinter_code에게 감사드리며, CreateProcessAsUserW를 통해 수행하는 방법을 설명해 주었고, 이는 장악된 MSSQL 서버에서 SYSTEM C2 콜백을 얻는 데 잘 작동했습니다.