FUCK UAC! 10 способів обходу системи User Account Control в Windows

  1. Зміст статті У кожній версії Windows (починаючи з Vista) є стандартний компонент UAC (User Account...
  2. Білий список для чорних капелюхів
  3. Автоматичне підвищення привілеїв
  4. ISecurityEditor
  5. Продовження доступно тільки учасникам
  6. Варіант 2. Відкрий один матеріал

Зміст статті

У кожній версії Windows (починаючи з Vista) є стандартний компонент UAC (User Account Control). Він включений за замовчуванням і не дає користувачеві «вистрілити собі в ногу», запустивши яку-небудь малваре з правами адміністратора. У цій статті ми розповімо, як використовувати «контроль облікових записів» в своїх цілях - наприклад, запустити будь-який код з правами адміністратора або навіть як системний процес.


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

UAC як величезний баг

У хакерської філософії багато запозичено з бойових мистецтв. Наприклад, майстер айкідо практично не атакує сам. Він лише помічає помилки суперника і звертає його зусилля проти нього самого. Так само і прорахунки в захисних системах дозволяють перетворити їх в хакерський інструмент. Зараз ми розберемо кілька способів обходу UAC і навіть його використання для запуску свого коду з підвищеними привілеями. Багато з цих методів вже реалізовані в троянах і дозволяють їм потай впроваджуватися в систему.

Білий список для чорних капелюхів

У всіх версіях Windows для UAC існує так званий білий список - набір системних компонентів, для яких не застосовуються обмежують правила. Тому один з найпоширеніших методів атаки зводиться до спроби знайти будь-які додатки з білого списку і спробувати впровадити в них свою * .dll.

Провести атаку типу DLL hijack порівняно просто, хоча і тут не обходиться без підводних каменів. Вони свої в кожній версії ОС, а також залежать від налаштувань, облікового запису, розрядності ОС, встановлених компонентів і патчів.

Наприклад, в Windows 7/8 (але не 8.1) можна використовувати штатну програму підготовки системи до розгортання sysprep.exe, щоб довантажити свою версію cryptbase.dll або іншої бібліотеки. Для цього досить помістити її поруч з файлами, оскільки він починає шукати і довантажувати DLL'кі зі свого каталогу. Однак при спробі просто скопіювати свій файл в каталог% systemroot% / system32 / sysprep / ми отримаємо повідомлення про помилку.

Однак при спробі просто скопіювати свій файл в каталог% systemroot% / system32 / sysprep / ми отримаємо повідомлення про помилку

Доступ в \ system32 \ заборонений

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

Помістимо cryptbase.dll в архів CAB. Не будемо зупинятися на тому, як зробити цю елементарну операцію. Вона детально описана на сайті Microsoft . Нехай наша бібліотека називається evil.dll і знаходиться в каталозі \ FCKUAC на диску C: \. Тоді за допомогою такої команди ми зробимо «заряджений» архів:

makecab C: \ FCKUAC \ evil.dll C: \ FCKUAC \ evil.cab makecab C: \ FCKUAC \ evil Архів з нашою бібліотекою

Згодуємо цей архів автономному установника оновлень (Windows Update Standalone Installer).

wusa C: \ FCKUAC \ evil.cab / quite / extract:% systemroot% \ system32 \ sysprep \

Він розпакує його в \ system32 \ sysprep \, а «контроль облікових записів» буде мовчати.

Він розпакує його в \ system32 \ sysprep \, а «контроль облікових записів» буде мовчати

Утиліта sysprep як вбудований бекдор

Якщо вмієш програмувати, то можеш запустити sysprep.exe приховано - наприклад, через CreateProcess () з прапором StartupInfo.wShowWindow = SW_HIDE. На приховані вікна сьогодні лаються евристичні аналізатори багатьох антивірусів, але зараз ми говоримо тільки про UAC - йому все одно. Після такого запуску sysprep.exe спробує завантажити і виконати бібліотеку CRYPTBASE.dll, але на її місці виявиться наша, вже містить потрібну нам функціональність. Вона абсолютно легально підніме права нашого коду, і UAC прийме це як належне.

Це відбувається тому, що wusa і sysprep знаходяться в білому списку, а всі програми з цього списку можуть піднімати собі права без участі UAC. Наш же код з довантажувати монтажником бібліотеки успадкує права батьківського процесу sysprep.exe і також буде вважатися довіреною.

exe і також буде вважатися довіреною

Використання sysprep для обходу UAC

Розглянутий вище трюк спільного використання wusa і sysprep являє собою модифікований метод Лео Девідсона (Leo Davidson). Початковий варіант був застосуємо тільки до непропатченних Windows 7 і був описаний ще в 2009 році в розсилці комп'ютерного співтовариства Оксфордського університету. копія наводиться на його сайті , Який через велику кількість подібного коду внесений до списків потенційно небезпечних.

Метод Девідсона в різних модифікаціях вже багато років використовується для впровадження троянів, особливо сімейства Win32 / Carberp . Пік епідемії припав на осінь 2011 року, але спосіб досі працює в наступному типовому сценарії: дії виконуються в 32-бітової версії Windows 7/8 під обліковим записом адміністратора при включеному UAC з настройками за замовчуванням. Простому користувачеві не можна запускати wusa.exe, але багато хто до цих пір сидять під адміном без реальної необхідності. Просто їм ліньки створювати призначені для користувача учеткі і управляти правами доступу навіть через вбудовані засоби.

Метт Гребер (Matt Graeber) уточнює, що даний метод не працює «як є» в Windows 8.1 / 10, оскільки в цих ОС змінені як sysprep.exe, так і сам UAC. Тепер програма підготовки системи до розгортання завантажує DLL тільки з% windir% \ system32 \.

Автоматичне підвищення привілеїв

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

Суть методу в тому, що для обходу UAC в нашій бібліотеці створюється COM-об'єкт IFileOperation. Він дозволяє скопіювати файл куди завгодно (в тому числі в системну директорію \ system32 \ і її підкаталоги), автоматично підвищуючи для цього привілею, так як функція буде мати прапор auto-elevate.

ось приклад використання об'єкта IFileOperation для копіювання файлу в системний каталог.

Метод впровадження своєї бібліотеки в процес explorer.exe розглядається в цьому прикладі .

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

Також його можна згенерувати самому, просто знайшовши в системному каталозі Windows файлів, що містять рядок autoelevate

Створюємо список програм з білого списку UAC

Залежно від використовуваної програми з білого списку і версії Windows можна підмінити ту чи іншу бібліотеку (див. Таблицю).

Стандартні компоненти і підміняти бібліотеки

Методи перебору цих варіантів зібрані в одну PowerShell-утиліту .

ISecurityEditor

Дивно, що більшість методів обходу «контролю облікових записів» були навмисне закладені самими розробниками Windows. Провал «Вісти» маркетологи пов'язали з незручним поведінкою нового компонента, і в «сімці» UAC постаралися зробити менш настирливим. Для цього довелося робити милиці з білого списку і методу автоматичного підвищення привілеїв (без підтвердження користувачем) у сорока з гаком системних програм. До функції autoElevate були написані COM-інтерфейси: документований IFileOperation (який розбирався вище) і недокументовані ISecurityEditor, про використання якого ми поговоримо зараз.

Завдяки вбудованим в UAC Бекдор комп'ютери з Windows 7 заражалися непомітно для користувача. Вони ставали полігоном для малварі і частенько потрапляли в ботнети. Один з них (під назвою Simda) успішно розвивався протягом п'яти років, використовуючи для впровадження коду інтерфейс ISecurityEditor. У Microsoft проблему частково усунули лише в 2015 році. Виправлений ISecurityEditor став працювати тільки з об'єктами файлової системи, зазначеними в константі SE_FILE_OBJECT.

Непропатченних системи зустрічаються досі. Приклад обходу UAC з використанням вразливою версії ISecurityEditor наводиться тут .

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


Ru»?