Як мені довелося стати хакером
Малобюджетні сайти.
Просування веб-сайту.
Як мені довелося стати хакером
Все почалося навесні 1997 року, у той момент, коли ми закінчували бетатестування спеціалізованого пакета для роботи Internet-провайдера, одним із компонентів якого була система створення дзеркал Web-серверів. Оскільки це був єдиний компонент, який не був протестований на той момент, ми вирішили завантажити його якимось складним завданням. Для реалізації стрес-тесту вирішено було зробити великого сайту, що знаходиться на іншому кінці світу. Провівши необхідні налаштування програми і запустивши процес створення дзеркала на виконання, я почав блукати цим сервером і буквально відразу зрозумів, що якщо його адміністратор про що- або й думав, то тільки не про безпеку. Перший удар показав, що не встановлені необхідні латки для Internet Information Server і Windows NT Server, а скрипти і CGI-програми знаходилися в каталозі, що надає не тільки право на виконання, але і право на читання, - іншими словами, не були виконані елементарні правила, про які попереджає Microsoft. Отже, я додав точку до URL: http://www.server.com/mainscript.idc Побачене потрясло мене до глибини душі. Навіть помилка сервера не могла призвести до появи даного. результату, якби Web-майстер правильно (згідно з рекомендаціями Microsoft) налаштував права для каталогу зі скриптами. Мені було б відмовлено у доступі і все.
Ну а якби адміністратор хоч іноді звертав увагу на новини, пов'язані з Windows NT, він встановив би спеціальну латку для IIS 3.0, яка допомогла б зовсім уникнути проблем: я побачив би повідомлення. І все ж головна проблема адміністратора полягала в тому , що я зміг легко дізнатисяпароль користувача sa, тобто адміністратора Microsoft SQL Server. Якби в системі була встановлена інтегрована система безпеки, поля username і password ігнорувалися б. Але це був саме адміністратор бази даних із порожнім паролем. Ну хто змусив його виконувати всі скрипти з доступом до бази даних від імені sa?! Я вже не говорю про те, що він не змінив пароль відразу після установки SQL Server. Тоді я вирішив допомогти недбайливому і відправив йому повідомлення з коротким викладом суті проблеми, а коротше кажучи, повідомив про відсутність безпеки як такої. (Для довідки – подальша перевірка показала, що даний сайт, по-перше, є комерційним, а по-друге, користується певною популярністю – на описаний момент у його базі даних було зареєстровано 74 342 номери кредитних карток.) Ось що він відповів:
Відповідь мене дуже розчарувала. Адміністратор не бачив проблеми і не розумів, що відкритий пароль може призвести до непоправних наслідків. Я намагався йому пояснити, що він не правий, але невдовзі зрозумів, що словами тут не допоможеш. І тоді я запросив дозвіл на досвід з його сервера.
Тепер отримаємо відомості про зону та поштовий сервер:
А може там знайдуться й інші комп'ютери, які можуть представляти для нас інтерес? Команда ls є скороченням від list:
Невже він розумніший, ніж я думав? Гаразд, перевірю всю його мережу, може, виявлю щось ще?
Прекрасно - одна машина є звичайним сервером в домені EEG1, а друга - або PDC, або BDC 2 та ще й адміністратор зайшов на комп'ютер з консолі. Спробуємо підключитися до сервера \\pluto:
Start? Run та \\pluto.server.com
У всіх підручниках з Windows NT написано – вимкніть користувача Guest! Підключитись до офісного принтера могоопонента було справою однієї хвилини; ще за хвилину принтер роздрукував коротке послання про те, що я приступив до роботи і не треба хвилюватися - всі наші домовленості в силі.
Покінчивши з базовим дослідженням мережі, я написав йому досить розгорнутий звіт про виконану роботу, перерахував усі машини, на яких відкрито Guest, порекомендував йому перейменувати користувача Administrator і дав ще кілька рекомендацій. Через кілька днів я отримав листа, в якому адміністратор випробуваного сервера зізнавався у відсутності добре поставленої системної політики безпеки та пообіцяв вислати зароблений приз найближчими днями.
Я вже почав поступово забувати про цей випадок, коли раптом отримав від нього тривожний лист: він просив продовжити виявлення дірок у його захисті, приділивши при цьому особливу увагу пошуку можливостей входу до бази даних Microsoft SQL Server користувачів його сайту. Як ви розумієте, інформація такого роду чимало коштує для його конкурентів, і він побоювався за її збереження у разі серйозної атаки хакера.
Проникнення в MS SQL Server
Досить швидко я переконався, що пароль sa не був змінений (вже чотири дні адміністратор знає про дірку і все ще не спромігся її закрити!). Справа залишалася за малим - увійти до бази SQL Server як sa (або хоча б як guest).
З минулого сеансу у мене збереглися записи та список усіх серверів у його мережі. Довелося записати їх у файл LMHOST:
дати команду , яка перевантажує кеш NetBT, та почати шукати машину, на якій стоїть MS SQL Server. Я пройшовся по всіх машинах, де був дозволений Guest, але на жодній не було встановлено MS SQL Server. Схоже, що його встановлено на PDC або BDC, а там Guest вимкнено за замовчуванням. Що ж робити? Потрібен вхід, будь-який вхід, аби досервер з SQL Server. Що ж, доведеться ще трохи подумати. Подивимося, що є на тих серверах, куди пускають користувачів Guest. В одному з каталогів лежить файл drwtsn32.log (цей файл створюється при збоях програм). Для більшості користувачів він некорисний, але знаюча людина часом може дещо з неї витягти. Ну, хто побачив? А я бачу ім'я домену, ім'я користувача і швидше за все пароль для входу в цю систему. Перевіримо: приєднуємося до сервера, куди раніше ми не могли увійти під ім'ям Guest, пробуємо ім'я EEG1\HCAPSUser1 та пароль grk***. Ось ми і в мережі, настав час пробувати MS SQL Server Enterprise Manager. Зареєструвалися? Успішно! Що ж, ось я і адміністратор – правда, не домену, а лише бази даних, але всьому свій час. Подивимося базу користувачів 3 .
select * from tblMember
xp_cmdshell 'net user Andrey mypassword /add /domain'
Відтепер у домені EEG1 є користувач Andrey із паролем mypassword. Тепер час зробити його адміністратором: xp_cmdshell 'net group Andrey /add /domain' Ось я і адміністратор домену. Можу зробити дуже багато - наприклад, до будь-якого накопичувача в системі:
Start? Run та \\priny\c$
Так ось він, Web-сервер та його вихідні файли! Ну що ж, покладемо маленький файл hack.htm у кореневий каталог Web-сервера. Нічого б цього не сталося, якби адміністратор:
Як ви, мабуть, вже зрозуміли, я отримав повну владу в домені EEG1. Важко тільки без консолі управління мені подобається бачити екран іншого комп'ютера.
Півцарства за консоль!
На жаль (а може, і на щастя), у Windows NT немає сервера Telnet, тому просто так підключитися до консолі не можна навіть у текстовому режимі. Але вихід є – RemotellyPossible/32, моя улюблена програма для віддаленого керування комп'ютером.Вона має масу можливостей, у тому числі можливість віддаленої установки та абсолютну прозорість для того, на чий комп'ютер я її встановив. На екрані немає жодних відомостей про те, що я його бачу - це зручно для керівника підрозділу, який хоче знати, чим зайняті його співробітники. Ця програма працює виключно швидко, і з сервером на іншому краю світу можна працювати з нормальним часом реакції - іноді просто не помічаєш, що це інша машина.
Тепер я можу робити із нею практично все.
1) NetBT - NetBIOS over TCP/IP - дозволяє працювати з програмами, що використовують NetBIOS, поверх протоколу TCP IP. Для машин, підключених до Internet, Microsoft рекомендує відключити цей сервіс. Так, про всяк випадок.
3) Microsoft SQL Server – унікальна програма. За її допомогою дуже зручно переглядати об'єкти бази даних, особливо коли ви стали її адміністратором. Та й назва таблиці дуже інформативна.