Writable Sys Path +Dll Hijacking Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Якщо ви виявили, що можете записувати в папку системного шляху (зверніть увагу, що це не спрацює, якщо ви можете записувати в папку користувача), можливо, ви зможете підвищити привілеї в системі.
Для цього ви можете зловживати Dll Hijacking, де ви будете викрадати бібліотеку, що завантажується службою або процесом з більшими привілеями, ніж у вас, і оскільки ця служба завантажує Dll, яка, ймовірно, навіть не існує в системі, вона спробує завантажити її з системного шляху, в який ви можете записувати.
Для отримання додаткової інформації про що таке Dll Hijacking перегляньте:
Dll HijackingПерше, що вам потрібно зробити, це виявити процес, що працює з більшими привілеями, ніж у вас, який намагається завантажити Dll з системного шляху, в який ви можете записувати.
Проблема в таких випадках полягає в тому, що, ймовірно, ці процеси вже працюють. Щоб дізнатися, які Dll відсутні, вам потрібно запустити procmon якомога швидше (перед завантаженням процесів). Отже, щоб знайти відсутні .dll, зробіть:
Створіть папку C:\privesc_hijacking
і додайте шлях C:\privesc_hijacking
до системної змінної середовища Path. Ви можете зробити це вручну або за допомогою PS:
Запустіть procmon
і перейдіть до Options
--> Enable boot logging
та натисніть OK
у сповіщенні.
Потім, перезавантажте комп'ютер. Коли комп'ютер перезавантажиться, procmon
почне записувати події якомога швидше.
Після того, як Windows буде запущено, виконайте procmon
знову, він скаже вам, що працює, і запитає, чи хочете ви зберегти події у файл. Скажіть так і збережіть події у файл.
Після того, як файл буде згенеровано, закрийте відкрите вікно procmon
і відкрийте файл подій.
Додайте ці фільтри, і ви знайдете всі Dll, які деякі процеси намагалися завантажити з папки записуваного системного шляху:
Запустивши це на безкоштовній віртуальній (vmware) Windows 11 машині, я отримав такі результати:
У цьому випадку .exe є марними, тому ігноруйте їх, пропущені DLL були з:
Служба | Dll | CMD рядок |
---|---|---|
Планувальник завдань (Schedule) | WptsExtensions.dll |
|
Служба діагностичної політики (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Після того, як я це знайшов, я натрапив на цей цікавий блог, який також пояснює, як зловживати WptsExtensions.dll для підвищення привілеїв. Що ми зараз будемо робити.
Отже, щоб підвищити привілеї, ми збираємося вкрасти бібліотеку WptsExtensions.dll. Маючи шлях і ім'я, нам просто потрібно згенерувати шкідливий dll.
Ви можете спробувати використати будь-який з цих прикладів. Ви можете запустити корисні навантаження, такі як: отримати rev shell, додати користувача, виконати beacon...
Зверніть увагу, що не всі служби запускаються з NT AUTHORITY\SYSTEM
, деякі також запускаються з NT AUTHORITY\LOCAL SERVICE
, які мають менше привілеїв, і ви не зможете створити нового користувача, зловживаючи його дозволами.
Однак, цей користувач має привілей seImpersonate
, тому ви можете використовувати потаточний набір для підвищення привілеїв. Отже, в цьому випадку rev shell є кращим варіантом, ніж спроба створити користувача.
На момент написання служба Планувальник завдань запускається з Nt AUTHORITY\SYSTEM.
Маючи згенерований шкідливий Dll (в моєму випадку я використав x64 rev shell, і я отримав shell назад, але захисник його вбив, оскільки він був з msfvenom), збережіть його в записуваному системному шляху з ім'ям WptsExtensions.dll і перезавантажте комп'ютер (або перезапустіть службу або зробіть все, що потрібно, щоб повторно запустити уражену службу/програму).
Коли служба буде перезапущена, dll має бути завантажено та виконано (ви можете повторно використовувати трюк з procmon, щоб перевірити, чи бібліотека була завантажена, як очікувалося).
Вчіться та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)