СОДЕРЖАНИЕ
Лекція 1. Вступ. Категорії інформаційної безпеки. Захист програм.
Абстрактні моделі захисту інформації
Основні положення по розробці ПО
Помилки, що призводять до можливості атак на інформацію
Короткий огляд технології RAID
Переваги і недоліки основних рівнів RAID
1.3 Симетричні криптоалгоритмы
Загальні відомості про блокові шифри
Основи побудови захисту - крок за кроком
Крок 1. Відключення автоматичного запуску CD
Крок 2. Автоматичне оновлення системи
Крок 3. Відключення непотрібних сервісів
Крок 6. Теорія складання паролів
Втім, усе це нісенітниця. Головне - підходите до справи творчо! Включите свою фантазію, бийте хакерів їх же зброєю! Врешті-решт, якщо ви цілий рік писали програму і відноситеся до неї як до своєї дитини - не полінуєтеся витратити пару тижнів на вивчення всіляких систем захисту і, головне, методів їх злому.
""Шкідливі ради", або Як зіпсувати життя хакерові
Отже, чому ваш захист настільки примітивний і може бути легко розкрита? Зазвичай з двох простих причин: по-перше, ви не знаєте, як захисту "ламаються" (після прочитання цього матеріалу, сподіваюся, знаєте). І по-друге: ви не умієте програмувати на асемблері; практично усе захисту, написані на мовах високого рівня, можна обійти в два рахунки. Частіше всього досить буває поміняти всього пару байт.
Ось декілька рад, які, сподіваюся, дозволять вам хоч трохи забезпечити свою програму від злому (щонайменше, початківцями і/або не занадто кваліфікованими хакерами).
Пишіть захист на асемблері.
Ніколи не давайте осмислені імена важливим функціям, типу IsValidSerialNum.
Не попереджайте (відразу) користувача про те, що захист порушений. Краще зробіть це через два-три дня - хакери це ненавидять. Дрібничка, а приємно.
Використовуйте "перехресні" перевірки CRC -кодов ваших EXE - і DLL -файлов.
Робіть паузу (одной-двух секунд цілком вистачатиме) після введення пароля (серійного номері) перед поверненням результату. При цьому підібрати правильний пароль шляхом прямого перебору (за допомогою спеціально написаної програми) буде абсолютно неможливо.
Зберігайте паролі в якому-небудь "незвичайному" місці, наприклад, у властивостях поля бази даних.
Не прив'язуйтеся до системної дати. Обчислюйте поточну дату з часу створення яких-небудь системних файлів, наприклад SYSTEM.DAT або USER.DAT (Windows Registry).
Зберігайте пароль в декількох місцях одночасно.
Не використовуйте "статичні" (тобто жорстко прошиті у вашу програму) строчки тексту для повідомлення користувача про те, що пароль правильний (чи неправильний). Це перше, на що дивиться хакер. Генеруйте ці строчки динамічно, або використовуйте шифрування, хоч би найпростіше.
Використовуйте "дрібні хитрощі" для захисту від дизасемблювання і відладки.
Нарешті, нікому ніколи не розповідайте про те, як побудований ваш захист :)
Усі ці рекомендації узяті з Web -сайта "Fravia' s Page of Reverse Engineering" (fravia.org). Дуже рекомендую, обов'язково зайдіть: тут є чому повчитися. Окрім опису стратегій злому різних защит, ви знайдете немало рад для shareware -программистов, які допоможуть вам написати дійсно хороший захист. І ще: подивитеся, кому і за що там присудили "Most Stupid Protection Award" - отримаєте масу задоволення. Я сподіваюся, що самі в цьому списку ви ніколи не виявитеся. До речі, сайт досить добре оформлений і легкий в навігації; само по собі це не заслуговувало б на увагу, але звернете увагу на логотип "Created with MS - DOS EDIT.COM" (ось тобі, бабуся, і Юрьев день - читай: FrontPage).
Деякі пункти, можливо, вимагають пояснення. Детальніші рекомендації ви зможете знайти усе на тому ж сайті, але від вас знову-таки буде потрібно хороше знання асемблера. Зупинюся лише на пункті 4. Що таке CRC, я думаю, ви знаєте, чи не так? Відразу попереджаю, при обчисленні CRC -кода виконуваного файлу ви зіткнетеся з деякими труднощами: якщо "правильний" CRC зберігається в самому файлі (а саме так і варто робити - якщо він лежить в зовнішньому файлі або в Registry, то його виявлять в момент), то його доведеться якимсь чином враховувати при обчисленнях. Вихід наступний: просто виключите сам CRC -код з обчислень. Як це зробити, детально описано в книзі Лу Гринзоу "Філософія програмування для Windows 95/NT" (видавництво "Символ", 1997 рік). До речі, там же ви знайдете і безліч інших корисних рад, так що рекомендую.
Що стосується захисту від дизасемблерів і відладчиків, то це, чесно кажучи, допомагає не сильно, - кваліфікований хакер все одно вас перехитрить. Як би не був високий ваш професійний рівень, все одно знайдеться хто-небудь сильніше за вас. Проте, ніж більше подібних "примочок" ви використовуєте, тим менше буде круг хакерів, здатних зламати захист. Насправді, фахівців "вищого пілотажу" в області злому не так вже і багато - в усякому разі, менше, ніж ви припускаєте (більшість тих, що вважають себе такими насправді ними не є, як би їм цього ні хотілося). Коли людина починає розбиратися в асемблері як Бог, йому стає не до таких дурощів, як злом чужих програм, - за це, врешті-решт, грошей не платять. Ламати shareware -программы - заняття невдячне, і фахівець високого класу без проблем знайде собі високооплачувану і цікаву роботу до душі.
Лекція 7. Тема: Забезпечення безпеки при роботі в середовищі Windows XP
Операційна система Microsoft Windows XP вийшла на ринок 25-го листопада 2001-го року. Співробітники компанії покладали на неї великі надії і, як виявилось, не помилилися. За заявою самих розробників, новоспечена на той момент XP включала в собі досвід, накопичений за багато років побудови операційних систем.
Як і очікувалося, перед виходом, користувачам було дано безліч обіцянок (приміром, непробивний захист від несанкціонованого доступу, небачену раніше стабільність і "багоустойчивость"), але не усе виявилося настільки вже гладко.
Але досить ліричних відступів, сьогодні на порядку денному - підвищення безпеки операційної системи. Покроковий формат вибраний не з проста - так найпростіше виконувати інструкції, описані в статті.
Купили ви диск, доверху набитий корисним програмним забезпеченням. Принесли додому, вставили в дисковод, автоматично запустився диск, а там - вірус. Щоб цього не сталося, вам треба пройти за наступною адресою в реєстрі - HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesCdrom, і параметру AutoRun присвоїти значення 0. Для редагування реєстру вам треба запустити програму RegEdit, яка запускається так, : Пуск - Виконати - regedit.
Як кожному з нас відомо, досить часто в операційних системах Windows знаходяться помилки і критичні огріхи в безпеці, виправити які слід відразу ж після виходу патча. 2004-й рік, що пішов, зайвий раз це довів, явивши світу декілька глобальних вірусних епідемій.
Тому клікаємо правою кнопкою миші по іконці Мій Комп'ютер, а потім прямуємо по шляху Властивості - Автоматичне Оновлення. Перед нами виникає дилема - або зупинити свій вибір на опції "Автоматично", або зробити активною опцію "Повідомляти, але не завантажувати і не встановлювати їх автоматично".
Дам декілька рекомендацій. Якщо ви власник виділеного інтернет-каналу, і закачувати щодня у фоновому режимі (а саме так відбувається оновлення системи через Windows Update) файлу пристойного розміру не складає великої проблеми, то однозначно ваш вибір - Автоматично.
Іншим же користувачам, а особливо модемним, раджу вибрати "Повідомляти, але не завантажувати і не встановлювати їх автоматично", де гойдати і встановлювати файли ви будете, заздалегідь оцінивши їх важливість, щоб не захаращувати отже слабкий інтернет-канал.
Не знаю навіщо, але Біл Гейтс і співтовариші нагородили в Windows XP таку величезну кількість непотрібних служб, що запускаються автоматично, що не відключити їх - гріх. Але оскільки розмову ми ведемо про безпеку операційної системи, звернемо нашу увагу на системні сервіси, підриваючі наші старання. Для цього пройдемо по дорозі Панель управління - Адміністрування - Служби і займемося роботою.
Нагадаю, як працювати із службами. Кликнувши на одну з них, перед собою ви побачите вікно з чотирма закладками: Загальні, Вхід в систему, Відновлення, Залежності. По суті справи, найбільш важливими є дві: перша і остання. На першій вкладці, "Загальні", ви можете прочитати назву служби, її функції, виконуваний файл, а також виставити тип запуску : авто, вручну, відключене. Оскільки нам належить деактивувати непотрібні системні сервіси, ми виставлятиме тип "відключено". На останній вкладці, "Залежності", ви можете побачити, з якими із служб вибраний вами сервіс знаходиться в залежності, тобто якщо служба відключена або неправильно працює, це може відбитися на залежних від неї сервісах.
Увага: перш ніж почати різке видалення непотрібних служб, я раджу зберегти первинні налаштування, щоб уникнути можливих конфліктів. Для цього треба пройти по HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiсes і кликнувши правою кнопкою, вибрати пункт "Експортувати". Далі зберігаємо дані в *.reg-файл.
Служба видаленого управління реєстром (Remote Registry Service) - дозволяє видалено управляти системним реєстром. Якщо служба зупинена, то редагувати реєстр може тільки локальний користувач. Сподіваюся, зайвих питань не виникає. Ріжемо.
Служба повідомлень (Messenger) - ця служба дозволяє отримувати і відправляти повідомлення. Часто використовується для розиграшів і спаму. Воно вам потрібне? Ріжемо.
Служба терміналів (Terminal Service) - однією з функцій служби є надання послуг Remote Desktop. Поза сумнівом, цей сервіс не є безпечним, тому потребує відключення, що і робимо.
NetMeeting Remote Desktop Sharing - служба дозволяє певним користувачам діставати доступ до робочого столу Windows. Давно ви користувалися Windows NetMeeting? І чи користувалися взагалі? Ріжемо.
Telnet - дозволяє видаленим користувачам працювати з машиною по протоколу Telnet. Якщо ви не користуєтеся цими послугами, відключення станеться непомітно. Ріжемо.
Згідно із статистикою, більшість зловмисників, існуючих в мережі, ламають не певні системи, а шляхом сканування виявляють слабкі точки і роблять свої "брудні" справи. Щоб не стати їх жертвою, вам обов'язково треба встановити брандмауер. У комплекті з XP йде вбудований фаервол, але він не відповідає тим вимогам, які пред'являються хорошим програмним продуктам.
На жаль, тема і формат статті не дозволяє нам провести порівняльне тестування n -ої кількості програм (що ми обов'язково зробимо в майбутньому), але, грунтуючись на своєму досвіді, я можу порадити вам зупинити свій вибір або на Outpost Firewall Free від Agnitum Limited, або на Zone Labs' ZoneAlarm. По своїй функціональності - це схожі продукти, тому вибір за вами.
На думку більшості IT -экспертов, саме халатність користувачів при складанні паролів багато в чому зумовлює хід подій при зломі. Паролі на призначені для користувача акаунти зберігаються у файлі .sam в директорії systemrootsystem32config. Але доступ до файлу під час роботи комп'ютера не має навіть користувач з правами адміністратора.
Локально дістати доступ не складає ніяких труднощів. Мені бачиться два варіанти. Перший - завантажити на дискету альтернативну вісь (Trinux, PicoBSD), здатну читати з розділу NTFS, і прочитати файл. Другий - досить поширена зв'язка Win9x + WinXP, де перша система ставиться для ігор, а друга для роботи. І, природно, щоб уникнути зайвих маніпуляцій, користувачі охоче ставить WinXP на файлову систему FAT32 для діставання доступу до робочих файлів. Що з цього вийде - величезна діра в безпеці.
Паролі в Windows XP шифрується відразу по двох алгоритмах. Перший - LM - Hash, існуючий для аутентифікації в мережах LanMan, другий, - NT - Hash. Алгоритм LM - Hash працює досить безглуздо, чим і користуються програми розшифровки паролів, що зберігаються у файлі .sam. LM - Hash розділяє отриманий пароль на частини по 7 символів (наприклад, якщо пароль з 10 символів, то пароль буде розділений на дві частини - 7 символів і 3), переводить усі символи у верхній регістр, шифрує кожну частину окремо, і два отриманих хэша об'єднує в LM - Hash.
Чи варто говорити про те, що пароль з десяти символом розшифрувати складніше, ніж два, що складаються з 7 і 3 символів? Цій огрехой і користуються програми для злому. Швидко розшифрувавши другу частину, можна скласти загальне враження про пароль, що, погодитеся, погано. Враховуючи вищесказане, пароль з 7 символом буде надійніше 8,9 або 10. Але боротися з цією проблемою можна. Для цього пройдемо по дорозі Панель Управління - Адміністрування - Локальні параметри Безпеки, далі Локальні політики - Параметри безпеки, і шукаємо в списку, що з'явився, опцію "Мережева безпека: рівень перевірки достовірності LAN Manager".
У випадному списку вибираємо "Відправляти тільки NTLM відповідь" і натискаємо на ok. Однією проблемою стало менше.
Спершу відповідайте на питання: ви коли-небудь замислювалися про те, наскільки легко можна вгадати ваш пароль? Якщо так, то добре. А якщо ні, то погано. Своєю халатністю ви тільки спростите роботу зломщика, що поставив мету укласти на лопатки вашу систему. У мережі Інтернет існує величезна кількість програм, що підбирають пароль методом bruteforce (або ж "в лоб"). Підбір може вестися як по словнику, так і за певними правилами, встановленим зломщиком. По-перше, ніколи не використовуйте як паролі ПІБ, дату народження, кличку улюбленого собаки і так далі
Цією інформацією дуже легко оволодіти, наслідуючи звичайну логіку. Якщо людина без розуму від собак, то чом би йому не призначити паролем для доступу до e - mail ім'я свого улюбленого пса? Зловмисник же, упізнавши це, легко представиться в ICQ таким же собаківником, і почне ретельне опитування. А ви, того не підозрюючи, в чисту викладете усю інформацію про себе і свого вихованця.
Пароль треба придумати. І для цього є свій алгоритм, яким я поспішаю поділитися з вами. Візьміть папірець і напишіть будь-яке слово. Потім додайте дві цифри між букв. Залучите до справи знак пунктуації, вставивши його в найнесподіваніше місце. З легко вгадуваного пароля password ми отримали pass2w!ord. Міцний горішок, згодні? Те-то.