Видалене проникнення: стан DOS і переповнювання буфера
У
цьому розділі ми трохи поговоримо про те, як може розгортатися ситуація в тому випадку, якщо зломщикові не вдасться підібрати пароль до системи, що цікавить його. У таких випадках у нього є декілька можливостей. Перша з них полягає в пошуку прихованого недоліку архітектура NT, якій можна було б скористатися для видаленого проникнення і діставання доступу до системи. Друга полягає в генерації стану DOS (DOS — відмова в обслуговуванні), — останньої надії неудачливого зломщика.
Видалене переповнювання буфера
Про Windows NT ходять легенди, що в ній існують численні секретні "лазівки", за допомогою яких можна отримати статус адміністратора будь-якої видаленої системи. Насправді в даний час відомо лише декілька подібних недоліків, які за певних умов можуть дати подібний ефект, проте всі вони відносяться до додатків, а не до самої системи Windows NT. Чим це пояснюється, чи то відносною "молодістю" NT, чи то архітектурою, закладеною в неї розробниками Microsoft, — це спірне питання.
З погляду видаленого проникнення найтяжчі наслідки здатна викликати помилка переповнювання буфера (buffer overflow). Докладніше переповнювання буфера розглядатиметься в розділі 14, а зараз для продовження обговорення досить сказати, що переповнювання буфера виникає тоді, коли програми не здатні адекватно відстежувати довжину даних, що вводяться. У таких випадках надмірні дані записуються поверх частини стека центрального процесора. Якщо це відбудеться не випадково, а в результаті передачі як надмірні дані відповідних команд, то новий код може привести до виконання операцій, підібраних висококваліфікованим програмістом. Одній з найбільш значущих статей, присвячених проблемі переповнювання буфера, є робота Алефа Вана (Aleph One) Smashing the stack for fan and profit. Її можна знайти за адресою
http://phrack.infonexus.com/archive.html. До інших статей про переповнювання буфера системи Windows відносяться Tao of Windows Buffer Overflow хакера Ділдога (Dildog), Win32 Buffer Overflows Барнабі Джека (Barnaby Jack) в Phrack 55, а також статті членів групи CIS (Cerberus Information Security).
Переповнювання
буфера можна віднести до одного з двох основних класів: видалене і локальне. Для досягнення локального переповнювання потрібний доступ до консолі, і його зазвичай можуть здійснити лише інтерактивні користувачі. Видалене переповнювання буфера є набагато небезпечнішим. Такою можливістю можуть скористатися зломщики, що мають нульові привілеї на цільовому комп'ютері і мережі, що знаходяться на будь-якому вузлі. Як правило, видалене переповнювання буфера пов'язане з розміщенням на цільовій системі "корисного вантажу" (тобто коди, поміщеної в стек центрального процесора), що згодом дозволяє зломщикові
задовольнити практично будь-які свої бажання. У таблиці. 5.3 приведені деякі найбільш відомі публікації про помилки переповнювання буфера системи NT і інших програмних продуктів компанії Microsoft.
Теоретично,
враховуючи величезний об'єм і складність початкової коди Windows NT, в нім повинно існувати досить багато вад подібного роду. Проте, як видно з таблиці. 5.3, між двома виданнями цієї книги практично не з'явилося нових хакреських програм, що викликають переповнювання буфера самої операційної системи Nt/2000. В той же час, як видно з таблиці. 5.3, служби
(IIS) і додатки (Outlook) системи Windows є достатньо уразливими. Тому не варто розраховувати на абсолютну захищеність операційної системи: все зростаючий потік досліджень проблеми переповнювання буфера Win32 у будь-який момент може привести до прориву оборони.
Таблиця 5.3. Деякі публікації про виявлені помилки
переповнювання буфера Windows
Мішень і розробники програми злому
|
Адреса URL
|
Принцип дії
|
Netmeeting 2x, група хакерів Cult of the Dead Cow (cdc)
|
http://www.cultdeadcow.com/ cdc_files/cdc-351
|
Перевірка концепції, що зводиться до
завантаження графічного файлу з вузла cdc
|
NT RAS, група Cerberus Information Security (CIS)
|
http://www. infowar.co.uk/ mnemonix/ntbufferoverruns.htm
|
Відкриття вікна командного рядка з
привілеями System
|
winhlp32, група CIS
|
http://www.infowar.со.uk/ mnemonix/ntbufferoverruns.htm
|
Запуск командного файлу з привілеями System
|
Iishack, компанія єєує
|
http://www.eeye.com
|
Виконання заданої коди на Web-сервере, що
працює під управлінням NT US
|
Oracle Web Listener 4.0, група CIS
|
http://www.cerberus-infosec. co.uk/advowl.html
|
Видалене виконання команди з привілеями
System
|
Outlook GMT, лабораторія Underground Security Systems Research (USSR)
|
http: //www.ussrback.com/labs50.html
|
Переповнювання буфера за рахунок виконання
заданої коди при синтаксичному аналізі електронного повідомлення
|
Контрзаходи: захист від переповнювання буфера
Кращою відповіддю на
атаки із застосуванням переповнювання буфера є професійне програмування. Згадувані вище статті надають досвідченому програмістові деякі ідеї, реалізація яких дозволить уникнути подібної загрози при написанні додатків (при їх вивченні стане в нагоді знання мови З і низькорівневої мови програмування Assembler). Проте оскільки створення програмних продуктів, подібних до системи Windows, виконується практично без безпосередньої участі користувачів, то відповідальність за усунення виявлених проблем повинна лягати на плечі групи розробників.
Для дозволу проблеми переповнювання буфера можуть використовуватися різні програмні продукти. Одним з найновіших засобів цієї категорії є програма Bowall Андрея Колішака (Andrey Kolishak). Програма Bowall запобігає переповнюванню буфера двома способами.
- Заміщає бібліотеки DLL їх двійковими
копіями, в які включені процедури моніторингу викликів потенційно
уразливих функцій (наприклад, strcpy, wstrcpy, strncpy, wstrncpy,
strcat, wcscat, strncat, wstrncat, memcpy, memmove, sprintf, swprintf,
scanf, wscanf, gets, getws, fgets, fgetws). Після цього виклики таких
функцій перевіряються на предмет цілісності повертаної адреси стека
(stack return address).
- Обмежує виконання функцій динамічних бібліотек з сегменту даних і стека (data and stack memory).
Заміщення системних
бібліотек, що динамічно підключаються, для запобігання переповнюванню буфера є декілька кардинальним, проте все ж таки такий підхід, очевидно, гідний уваги.
Програма entercept від компанії Clicknet Software Corp. є системою запобігання вторгненням, яка може використовуватися як оболонка ядра системи NT, яка забезпечує моніторинг всіх викликів. Це додаток добре підходить для виявлення і запобігання відомим атакам, направленим на переповнювання буфера.
За адресою http://immunix.org/ можна отримати покращувану версію компілятора GNU З (gcc) Stackguard. З його допомогою можна генерувати виконувані файли, які стійкіші до руйнування стека, чим звичайні програми. Це досягається шляхом приміщення слова-ознаки (canary word) за адресою повернення при виклику функції. Якщо після завершення виконання функції це слово-ознака виявилося іншим, значить, була зроблена спроба переповнювання буфера. При цьому програма, скомпільована за допомогою Stackguard, поміщає відповідний запис в системний журнал. Оскільки в розглянутому випадку потрібне використання компілятора gcc, то описаний підхід непридатний в системі NT. Проте, можливо, деякі з читачів все ж таки надихнуть...
Згодом для
усунення подібних атак буде потрібно кардинальні зміни в програмних моделях (наприклад, мова Java, в якій відсутні внутрішні структури, що зачіпають при цьому) або в самій архітектурі центральних процесорів.
Відмова в обслуговуванні (DOS)
Атаки, що приводили до генерації стану DOS, були надзвичайно популярні в 1997-1998 роках, що пояснюється появою численних утиліт, призначених для пошкодження стека Tcp/ip на самих різних платформах. Деякі з них були направлені виключно на систему Windows. Ми не витрачатимемо час на опис всіх використовуваних при цьому недоліків реалізації стека протоколів Tcp/ip, оскільки всі вони вже усунені в пакетах оновлення. Крім того, обговоренню атак DOS присвячений цілий розділ (див. розділ 11, а також частина розділу 4, де були розглянуті методи запобігання подібним погрозам для платформи Win 9х).
Генерація стану відмови в обслуговуванні не завжди переслідує мету викликати роздратування мережевого адміністратора. Часто такий підхід використовується для того, щоб добитися перезавантаження системи і автоматичного запуску необхідних утиліт. Як ви побачите пізніше, вивчення коди численних файлів завантаження Windows NT є одним з ефективних методів проникнення в систему.
Контрзаходи: запобігання стану Dоs
Установка найостаннішого сервісного пакету (при написанні книги — версії 6а) дозволяє захистити систему NT від більшості відомих способів генерації стану DOS. Крім того, стежите також за появою проміжних пакетів оновлення, особливо, якщо вони відносяться безпосередньо до стека протоколів Tcp/ip систем Nt/2000, tcpip.sys. (Природно, оновлення використовуваної операційної системи до Win 2000 дозволяє досягти того ж результату.) Багато серйозних атак DOS, зв'язаних із застосуванням засобів land, newtear і ООВ, стали недоступними після
установки проміжних пакетів оновлення, що з'явилися після Sp3. Звичайно, оновлення до Win 2000 є самим кращим сервісним пакетом, в якому знайшли віддзеркалення всі випущені раніше пакети оновлення.
Для отримання докладнішої інформації про ключі системного реєстру, за допомогою яких від атак DOS можна захистити сервери Internet під управлінням Windows, читайте розділ 6.
Ми
рекомендуємо познайомитися також з іншими програмними продуктами, направленими на запобігання атакам DOS на стек Tcp/ip, таких як teardrop, land, OOB і так далі Вони детально розглядаються в розділі 12.
Модулі
оновлення, що з'явилися після сервісного пакету Sp3, дозволяють усунути загрозу атак DOS із застосуванням таких засобів, як snork і пгрс (обом утилітам потрібний доступ до портів з номерами 135-139).
Тепер знову повернемося до обговорення прийомів отримання статусу адміністратора.
Розширення привілеїв
Припустимо, що спроба підбору пароля
увінчалася
успіхом — у ваших руках реєстраційне ім'я і пов'язаний з ним пароль користувача сервера, що цікавить вас, NT, що не має прав адміністратора. В світі NT крок, що полягає в діставанні доступу до системи як один з її користувачів, не дивлячись на всю його складність, є порівняно простим. Подальші кроки зажадають набагато більших знань, винахідливості і везіння. Так, наприклад, існують засоби, що дозволяють розширити повноваження, відповідні призначеному для користувача обліковому запису. Проте, як вже наголошувалося, цим засобами не можна скористатися, володіючи правами лише звичайного користувача NT, оскільки такий користувач за умовчанням не має права інтерактивної реєстрації. Проте якщо системний адміністратор допустив декілька серйозних промахів, за допомогою цих засобів зломщик зможе розширити свої повноваження.
У цьому розділі ми приведемо основні принципи розширення повноважень облікового запису звичайного користувача до рівня облікового запису Administrator. В ході розгляду ми торкнемося також деяких можливостей по використанню тих або інших засобів для виконання несанкціонованих операцій як з видаленого комп'ютера, так і з локальної консолі.
Збір інформації
Якщо
зломщикові вдалося оволодіти обліковим записом користувача, адміністратора, що не володіє правами, то єдиною реальною можливістю, якій йому залишилося скористатися, є подальший збір інформації, яка дозволить розширити привілеї. В процесі збору таких даних використовуються багато методів інвентаризації, які вже згадувалися в розділі 3. Аналізуючи всі отримані відомості, зломщик може дістати доступ до критичних ресурсів. Ось деякі із засобів і прийомів для збору важливих даних.
- Утиліта srvinfo з набору NTRK може
використовуватися для пошуку спільно використовуваних ресурсів. При
цьому важливими джерелами інформації є теки %systemroot%system32 і
\repair, а також доступні для запису теки Web- або FTP-сервера.
- Стандартна утиліта пошуку системи Windows
може використовуватися для пошуку рядок виду password у файлах .bat або
файлах сценаріїв.
- Утиліту regdmp з набору NTRK або команда Connect Network Registry редактора системного реєстру можна спробувати застосувати для діставання доступу до різних частин системного реєстру.
Цей процес висмоктування (hoovering) інформації зі всіх "закутків" отримав своє визначення в англійській мові по назві виробника популярних пилососів.
Контрзаходи: захист від збору інформації
Для перевірки ступеня захищеності системи від діяльності подібного роду краще всього спробувати виконати описані дії самостійно. Для цього реєструйтеся на видаленому комп'ютері під ім'ям звичайного користувача і перевірте, чи вдасться такому користувачеві виконати описані вище операції. Автоматизувати процес пошуку можна з використанням команд find і findstr системи NT.
Далі ми опишемо деякі механізми, за допомогою яких зломщик може додати себе в групу
Administrators.
Утиліта getadmin
getadmin — це невелика програма, написана Костянтином Соболевим (Konstantin Sobolev), яка додає користувача в локальну групу Administrators. Вона використовує низькорівневу процедуру ядра NT для установки глобального прапора, що дозволяє дістати доступ до будь-якого запущеного процесу, а потім за допомогою прийому, званого впровадження в DLL (DLL injection), вставити спеціальний виконуваний код в який-небудь процес, який володіє привілеєм додавання користувачів в групу Administrators. (Як правило, як такий процес вибирається winlogon, який використовує обліковий запис System). Докладніша інформація про утиліту getadmin і її виконуваний код можна знайти за адресою
http://www.ntsecurity.net/security/getadmin.htm.
Потужність утиліти getadmin декілька затьмарює той факт, що вона має бути запущена локально. Оскільки більшість користувачів за умовчанням не можуть реєструватися на сервері NT локально, ця утиліта, як правило, може допомогти тільки в створенні фіктивних членів різних вбудованих груп Operators (Account, Backup, Server і так далі) і використовуваному за умовчанням обліковому запису сервера
Internet IUSR._имя_машины за наявності відповідних привілеїв. Проте якщо зловмисники вже мають такий рівень привілеїв на вашому сервері, то утиліта getadmin не зможе посилити ситуацію, оскільки вони і без її допомоги мають доступ до всіх необхідних ресурсів.
Утиліта getadmin запускається з командного рядка таким чином: getadmin імя_пользователя. Перш ніж скористатися отриманими привілеям, новий користувач, доданий в групу Administrators, спочатку повинен
завершити поточний сеанс роботи. (Для того, щоб переконатися, що користувач отримав права адміністратора, досить спробувати запустити утиліту windisk. Це зможе здійснити тільки член групи Administrators.)
Контрзаходи: захист від використання ynunnugetadmin
Вада, на якій грунтується принцип роботи утиліти getadmin, виправлена в додатковому модулі оновлення до сервісного пакету SP
3. Цей модуль входить також у всі згодом випущені сервісні пакети. Згідно деяким джерелам, модернізована версія утиліти getadmin, названа crash4, здатна обійти виправлення, якщо вона буде запушена перед getadmin. Проте немає яких-небудь підтверджень, що цей прийом є працездатним.
У
зв'язку з тим, що для виконання більшості потенційно небезпечних операцій в системі NT на видаленому комп'ютері потрібні привілеї адміністратора, отримати якусь користь із застосування getadmin при видаленому підключенні достатньо проблематично. Для цього необхідний збіг двох подій: зломщик повинен мати доступ до якого-небудь каталога, відкритого для запису, а також право виконання програм, що містяться в цьому каталозі. Як можна добитися такого результату, ви дізнаєтеся трохи нижче.
Утиліта sechole
Утиліта sechole надає ті ж можливості, що і getadmin: вона добаштяєт поточного користувача в локальну групу адміністраторів. Оновлена версія цієї утиліти secholed поміщає користувача в групу адміністраторів домена.) Проте для виконання тих же дій, що і getadmin, ця утиліта використовує інші механізми. Як відзначають Прасад Дабак (Prasad Dabak), Сандіп Фадк (Sandeep Phadke) і Мілінд Бору (Milind Borate), sechole модифікує в оперативній пам'яті код виклику процедури Openprocess, і це дозволяє їй успішно підключатися до привілейованого процесу, незалежно від того, чи має вона для цього відповідні дозволи. Після успішного підключення вона працює так само, як і утиліта getadmin, виконуючи код усередині процесу-носія, і додає поточного користувача у вказану групу Administrators. Повний код і докладний опис можна знайти на Web-узле NT Security за адресою http://www.ntsecurity.net/security/sechole.htm.
Подібно getadmin, утиліта sechole має бути запущена локально. Проте, якщо на цільовому вузлі запущений сервер IIS компанії Microsoft і, окрім цього, виконуються і деякі додаткові умови, sechole можна запустити і видалено, додавши використовуваний за умовчанням обліковий запис користувача Internet 1ізк_імя_машини в групу Administrators або Domain Admins. Ось опис того, як це можна здійснити.
Видалений запуск утиліти sechole
Розглянемо приклад застосування основного підходу, використовуваного при нападі на Web-серверы, який в різних формах застосовується в Internet. Успішність такої атаки залежить від того, чи існує каталог US-сервера, доступний для запису і запуску програм. На щастя, компанія Microsoft "надала" багато каталогів з такими дозволами, використовуваними за умовчанням.
Віртуальні каталоги сервера 1is, представлені в таблиці. 5.4, помічені як доступні для виконання. Відповідні їм фізичні каталоги (також перераховані в таблиці. 5.4.) за умовчанням мають дозволи Read, Write, Execute і Delete (RWXD).
Після аналізу заданих за умовчанням дозволів стає очевидно, що сервером може бути виконаний будь-який помилковий виконуваний файл, розташований в будь-якому з цих каталогів. У зломщика є лише одна перешкода: видалено помістити в який-небудь з цих каталогів необхідний виконуваний файл.
Насправді це зовсім не важко, як може показатися на перший погляд. Для цих цілей можна скористатися відкритими для сумісного використання розділами жорсткого диска, невдало організованими каталогами FTP, які перекривають каталоги, представлені в таблиці. 5.4. Для вирішення поставленого завдання можна скористатися також недостатньо захищеними командами видаленого управління (наприклад, telnet), методами PUT протоколу HTTP або навіть засобами авторизації в Web, що надаються додатком Frontpage.
Припустимо, що зломщикові вдалося скористатися якій-небудь з перерахованих можливостей і успішно завантажити утиліту sechole і пов'язані з нею бібліотеки DLL в один з каталогів, представлених в таблиці. 5.4. І що тепер? Оскільки ця програма запускається з командного рядка, то зломщикові необхідно помістити в той же каталог і командний інтерпретатор (у системі NT командний інтерпретатор, cmd.exe, знаходиться в каталозі
%windir%\system32).
Таблиця
5.4. Віртуальні каталоги сервера US, дозволи Execute, що мають
за умовчанням, до відповідні їм фізичні каталоги
Віртуальний каталог
|
Фізичне розташування
|
/W3svc/l/root/msadc
|
C \program f iles\common\system\msadc
|
/ W3 SVC /1/root/news
|
C \InetPub\News
|
/W3svc/l/root/mail
|
C \InetPub\Mail
|
/W3 Svc/1/root/ cgi -bin
|
C \InetPub\wwwroot\cgi-bin
|
/W3 Svc/1/root/ scripts
|
C \InetPub\scripts
|
/W3svc/1/root/ iisadmpwd
|
З \WINNT\System32\inetsrv\iisadmpwd
|
/W3svc/l/root/_vti_bin
|
(Відсутній, якщо не встановлені розширення Frontpage)
|
/W3svc/l/root/_vti_bin/ vti_adm
|
(Відсутній, якщо не встановлені розширення Frontpage)
|
/W3svc/l/root/_vti_bin/_vti_aut
|
(Відсутній, якщо не встановлені розширення Frontpage)
|
Проте не поспішатимемо. Вище вже згадувалося, що утиліта sechole додає користувача в локальну або доменну групу адміністраторів. Якщо ж вона була запущена за допомогою web-броузера, то в групу адміністраторів буде доданий обліковий запис 1ізп_імя_машини. А це не дуже добре, оскільки цьому обліковому запису призначається випадковий пароль, який зломщикові доведеться підбирати при видаленій реєстрації. Як же в групі адміністраторів створити новий обліковий запис користувача з паролем, який вибрав сам зломщик? Це просто здійснити за допомогою вбудованої команди net localgroup. Створіть простий командний файл (наприклад, з ім'ям adduser.bat) з наступним рядком:
net user mallory qpensesame /add && net localgroup administrators mallory /add
Після
того, як в необхідний каталог поміщені утиліта sechole, пов'язані з нею бібліотеки, що динамічно підключаються, командний інтерпретатор cmd.exe і файл adduser.bat, для його запуску зломщикові досить ввести відповідну адресу
URL в web-броузере, підключеному до видаленого комп'ютера. У прикладі, показаному на мал. 5.4, утиліта sechole була поміщена у віртуальний каталог /wssvc/i/root/scripts (тобто у фізичний каталог C:\inetpub\scripts), а потім запущена за допомогою відповідної адреси URL.
Мал. 5.4. Злом видаленої системи за допомогою утиліти sechole
Далі замість того щоб реєструватися з використанням облікового запису IUSR, пароль якого поки невідомий, зломщик додасть нового користувача за допомогою файлу сценарію adduser.bat, запущеного в броузере з використанням наступної складної адреси
URL.
http://192.168.202.154/scripts/cmd.exe?/c%20c:\inetpub\scripts\adduser.bat
Підрядок %20 інтерпретується Web-сервером як символ пропуску, що приводить до перетворення адреси URL в команду, яка виконається на видаленому вузлі (команда cmd /с передаватиме команди, що містяться у файлі adduser.bat, командній оболонці).
Тепер, коли обліковий запис IUSR внесений до групи адміністраторів і доданий новий користувач з привілеями адміністратора, зломщик став "власником" Web-сервера.
Контрзаходи: захист від застосування утиліти sесhо1е
Існує два прості методи захисту як від утиліти sechole, так і від видаленого виконання команд в Web. По-перше, встановите найостанніший сервісний пакет (6а або новіший). Для систем, на яких встановлений сервісний пакет Sp5, можна скористатися модулем оновлення. Докладнішу інформацію можна отримати в статті KB Q190288. Потім, незалежно від того, чи хвилює вас проблема sechole чи ні, забороните доступ для запису в каталоги сервера Internet, в яких містяться виконувані файли (див. таблиці. 5.4). Для цього найпростіше заблокувати доступ до портів TCP і UDP сервера з номерами 135-139 і, таким чином, виключити доступ до спільно використовуваних ресурсів Windows. Якщо доступ з використанням протоколу SMB заблокований, обов'язково переконаєтеся в тому, відключений також доступ на запис по протоколу FTP.
Ще один метод вирішення проблеми полягає у відключенні дозволів Execute для віртуального Web-сервера. Вони можуть встановлюватися глобально в групі параметрів Application Settings у вкладці Home Directory діалогового вікна властивостей Default Web Site Properties, доступ до якого можна отримати за допомогою консолі управління Microsoft (мал. 5.5).
Властивості
інших каталогів можна встановити окремо, в стандартному вікні властивостей, яке з'являється на екрані після клацання правою кнопкою миші на відповідній піктограмі у вікні провідника Windows. У вікні властивостей, що відкрилося, перейдіть у вкладку Web Sharing і клацніть на кнопці Edit Properties (див. мал. нижчий).
Мал. 5.5. Вкладка Ноте Directory діалогового вікна властивостей віртуального Web-сервера, на якій відключені дозволи Execute
Після клацання на кнопці Edit Properties на екрані з'явиться діалогове вікно, показане на наступному малюнку.
Менш відомий спосіб розширення привілеїв, що забезпечується утилітою besysadm, з'явився після випуску сервісного пакету Service Pack 5. Інформацію про відповідний модуль оновлення можна знайти за адресою http://www. microsoft.cam/technet/eecurity/bullatin/ms99-006.asp
Помилкові запити до портів LPC
Таку
можливість виявила група дослідників RAZOR (http://razor. bindview.com) і надала авторам перевірочний код, який, проте, не був відкритий для широкого використання. У приведеному коді ілюструється вада однієї з функцій інтерфейсу з портами LPC (Local Procedure Call — локальний виклик процедур), який дозволяє потокам і процесам на локальному вузлі взаємодіяти один з одним. Зазвичай порти LPC забезпечують інтерфейс між потоком сервера і клієнтнимі потоками, які генерують запити на використання служб. Крім того, порти LPC виконують перевірку легітимності клієнта. Проте зломщик, у якого є можливість створити обидва потоки, і сервери і клієнт. може обійти таку перевірку і пов'язати клієнтний потік з будь-яким користувачем, що навіть має привілеї SYSTEM.
Скористаємося утилітою
hk від групи RAZOR і додамо в групу адміністраторів користувача mallory, що входить до складу групи Backup operators і що має дозвіл на інтерактивну реєстрацію.
По-перше, за допомогою утиліти whoami з пакету NTRK переконаємося, що користувач mallory дійсно належить до групи Backup Operators, а не адміністраторів.
С:\>whoami
[Group 1] =
"Iis47\none"
[Group 2] = "Everyone"
[Group 3] - "Builtin\users" [Group 4] = "Builtinxbackup
Operators"
Крім того, упевнимося в тому, що користувач Mallory не може додати себе п групу адміністраторів самостійно.
C:\>net looalgroup administrators mallory /add
System error 5 has occurred.
Access is denied
Тепер скористаємося командою net use спільно з утилітою hk.
C:\>hk net localgroup administrators mallory /add
Isass pid & tid are: 47 - 48
Ntlmpersonateclientofport succeeded
Launching line was: net localgroup administrators mallory /add
Who do you want to be today?
Тепер Мелорі (Mallory) належить до групи адміністраторів, як видно з приведеного лістингу.
C:\>net localgroup administrators
Alias name administrators
Comment Members can fully administer the computer/domain
Members ------------------------- Administrator
mallory
The command completed successfully.
Застосовуйте модулі оновлення!
Компанія
Microsoft випустила модуль оновлення сервісного пакету Sp6a, який змінює виклик функції перевірки достовірності, що входить до складу програмного інтерфейсу з портами LPC. Цей модуль оновлення можна знайти в бюлетені
Ms00-003 компанії Microsoft за адресою http://www.microsoft.com/technet/security/bulletin/ms00-003.asp.
Не
зайвим буде ще раз повторити, що це модуль оновлення сервісного пакету Sp6a. Багато організацій вважають за краще чекати випуску наступного сервісного пакету. Така позиція досить безрозсудна, оскільки до того, як компанія Microsoft випустить сервісний пакет Sp7, комп'ютери таких компаній залишаються уразливими для зломщиків. Якщо Sp7 ніколи не вийде в світ, ця ситуація не зміниться до тих пір, поки не буде виконано оновлення до Win 2000. Отже краще всього скористатися модулями оновлення!
Тепер перейдемо до розгляду деяких інших методів, за допомогою яких зломщик може запустити утиліти getadmin, sechole, besysadm, hk і інші програми, призначені для розширення привілеїв.
"Троянські коні" і параметри реєстру
Основний принцип розширення привілеїв полягає в тому, щоб ввести в оману інших користувачів (краще всього адміністратора) і виконати код, який дозволить обліковому запису зломщика отримати привілеї суперкористувача. Аналогічний підхід полягає у впровадженні якої-небудь коди, яка буде виконана при настанні деякої звичайної події в системі (наприклад, в процесі перезавантаження). Обидві з цих стратегій, а також методи боротьби з ними, обговорюються нижчим.
Багато
хто з описаних нижче методів набагато глибше і повніше освітлює на сторінках прекрасного Web-узла Security Bugware, які можна знайти за адресою
http://oliver.efri.hr/-crv/security/bugs/NT/getadmt#].html де # — числа від 2 до 7.
"Троянські коні" і розширення привілеїв
"Троянський кінь" (Trojan horse) — це програма, яка надає деякі корисні функції, проте насправді призначена для скритного виконання зловмисних або руйнівних дій (для отримання докладнішої інформації читайте розділ 14). Від однієї тільки думки про можливості, що відкриваються при перейменуванні стандартних утиліт NT, голова йде довкруги! Наприклад, замість програми regedit.exe зломщик може помістити в каталог winnt\system32 командний файл regedit.cmd. Коли нічого непідозрюючий адміністратор введе в командному рядку regedit, щоб виконати якісь операції з системним реєстром, буде запущений командний файл. Зазвичай з його допомогою виконується той або інший варіант наступної команди. net localgroup administrators <користувач> /add
Таким чином, адміністратор власноручно вніс обліковий запис зломщика до групи Administrators.
Контрзаходи: захист від "троянських коней"
Хоча пропоновані
контрзаходи і не забезпечують стовідсоткового захисту, все ж таки будьте уважні при запуску додатків. Звертайте увагу на різні аномалії (наприклад, вікно командного рядка, що швидко промайнуло, у момент виклику повноцінної програми Windows).
При виявленні "троянських коней" можуть виявитися корисними деякі засоби. До них відносяться вбудовані утиліти, наприклад dir, яка при використанні параметра /с виводить розмір файлів, а при вказівці параметра /т також час його створення, останнього доступу і останньої модифікації. Команду dir використовувати набагато краще, ніж провідник Windows, оскільки вона не змінює тимчасові параметри файлів. Можна скористатися також могутніми комерційними програмами захисту файлової системи, наприклад програмою Tripwire від компанії Tripewire, Inc. (див. таблиці. 5.2). Ця програма створює для файлів зашифровані контрольні суми, так що з її допомогою можна виявити будь-які зміни.
Підсистема захисту файлів системи Win 2000 (WFP — Windows File Protection) забезпечує зберігання резервних копій близько шестисот важливих файлів в каталозі %windir% і запобігає їм від перезапису.
Оскільки
"троянських коней" дуже важко виявити (особливо ті з них, які виконують модифікацію самого ядра NT), варто підтримувати максимальні запобіжні засоби. А саме, створюйте резервні копії своїх даних, встановлюйте заново операційну систему і всі застосування тільки з перевірених носіїв інформації. Деякі з найбільш підступних "троянських коней", званих наборами rootkit, будуть розглянуті нижче в даному розділі.
Параметри реєстру, що забезпечують виконання програм
Ще одним хорошим методом прихованого запуску командного файлу є використання спеціальних значень в системному реєстрі NT. Залежно від дозволів користувача, під ім'ям якого зломщик проник в систему,
йому можуть бути доступні деякі з таких параметрів системного реєстру. Пам'ятаєте, що видалений доступ до системного реєстру можуть отримати тільки адміністратори, а на консолі сервера можуть реєструватися лише декілька користувачів з вбудованих облікових записів NT. Тому вірогідність того, що зломщикові вдасться скористатися описаним тут способом, дуже мала. Йому повезе тільки у тому випадку, коли використовувана їм обліковий запис входить до групи Server Operators. У таблиці. 5.5 перераховані деякі параметри системного реєстру і дозволу, встановлені для них за умовчанням, якими можуть скористатися зломщики для запуску програм.
Таблиця
5.5. Параметри системного реєстру, які можна використовувати для виклику
програм, що розширюють привілеї користувача
Параметр
|
Дозволи за умовчанням
|
Значення,
що дозволяє запуск
|
Hklm\software\microsoft\windows\ Currentversion\run
|
Everyone: Set Value
|
[будь-яке]
|
HKLMX SOFTWARE \Microsoft\Windows\ Currentversion \RunOnce
|
Server Operators: Set Value
|
[будь-яке]
|
HKLMX SOFTWARE \Microsoft\Windows\ Cur rent Version \RunOnceEx
|
Everyone: Set Value
|
[будь-яке]
|
HKLMX Software\microsoft\windowsnt\ Currentvers i on \ Aedebug
|
Everyone: Set Value
|
Debugger
|
HKLMX Software\microsoft\windowsnt\ Currentver si on Xwinlogon
|
Server Operators: Set Value
|
Userinit
|
Захист параметрів системного реєстру
З використанням редактора системного реєстру regedt32 для цих параметрів необхідно задати наступні дозволи.
- CREATOR OWNER: Full control
- Administrators: Full Control
- SYSTEM: Full control
- Everyone: Read
Подібне налаштування може вплинути на працездатність деяких застосувань. Тому спочатку упевніться, що внесені зміни не відбилися на функціональності системи. Крім того, не забувайте про те, що описані вище параметри системного реєстру часто використовуються для прихованого запуску додатків під час завантаження, про що детальніше ви дізнаєтеся нижче в даному розділі.
Декілька завершальних слів про розширення привілеїв
Тепер у вас не викликає сумнівів той факт, що розширити привілеї надзвичайно складно. Єдине, що може допомогти зломщикові, — це грубі помилки в налаштуванні системи або ж діставання доступу до облікового запису, який і так володіє достатньо високими привілеями (наприклад, є членом групи Server Operators). Далі ми розглянемо самий гірший (з погляду безпеки) сценарій -— зломщик дістав доступ до системи на рівні адміністратора.
|