- •6.1. Класифікація шкідливого програмного забезпечення
- •6.2. Програмні закладки
- •6.2.1. Функції програмних закладок
- •6.2.2. Шпигунські програми
- •6.2.3. «Логічні бомби»
- •6.2.4. Люки — утиліти віддаленого адміністрування
- •6.2.5. Несанкціонована робота з мережею
- •6.2.6. Інші програмні закладки
- •6.3. Комп'ютерні віруси
- •6.3.1. Файлові віруси
- •6.3.2. Завантажувальні віруси
- •6.3.3. Макровіруси
- •6.3.4. Скриптові віруси
- •6.3.5. Захист від комп'ютерних вірусів
- •6.4. Мережні хробаки
- •6.4.1. Класифікація мережних хробаків
- •6.4.2. Хробак Морріса
- •6.4.3. Сучасні мережні хробаки
- •6.5. «Троянські коні»
- •6.5.1. Соціальна інженерія
- •3DNow!(tm) mobile emulator for *games* .
- •Internet Accelerator
- •Internet accelerator, ssl security update #7. Internet Cracker
- •Virtual sex mobile engine from Russian hackers!
- •6.5.2. Класифікація «троянських коней»
- •6.5.3. Шпигунські троянські програми
- •6.5.4. Троянські інсталятори
- •6.5.5. «Троянські бомби»
- •6.6. Спеціальні хакерські утиліти
- •6.6.1. Засоби здійснення віддалених атак
- •6.6.2. Засоби створення шкідливого програмного забезпечення
- •6.6.3. Створення засобів атак
6.6.2. Засоби створення шкідливого програмного забезпечення
Утиліти, призначені для полегшення написання комп'ютерних вірусів і для їх вивчення із зловмисною метою (дають змогу розібратися, як вірус працює, і зробити свій — кращий), дістали назву VirTool.
Є спеціальні утиліти-конструктори, за допомогою яких із заготовлених блоків (із заданих функцій) можна складати нові комп'ютерні віруси і «троянців». Відомі конструктори вірусів для DOS і Windows і такі, що допомагають створювати макровіруси. За допомогою таких конструкторів можна згенерувати вихідні тексти вірусів, об'єктні модулі та безпосередньо заражені файли.
Деякі конструктори мають віконний інтерфейс, в якому за допомогою меню можна обрати: тип вірусу та тип об'єктів, які цей вірус намагатиметься вразити; протидію налагодженню; наявність поліморфізму; внутрішні текстові рядки; ефекти, що супроводжуватимуть роботу вірусу тощо. Інші конструктори не мають такого інтерфейсу і зчитують інформацію про тип вірусу з конфігураційного файлу.
Є також утиліти, які забезпечують реалізацію окремих функцій вірусів. Наприклад, програми, що використовують для шифрування інших шкідливих програм, щоб приховати їхній вміст від антивірусної перевірки (FileCryptor або Роїу-
Cryptor). Є ще поліморфні генератори (PolyEngine), основна функція яких — шифрування тіла вірусу іта генерування відповідного розшифрувальника.
6.6.3. Створення засобів атак
Останнім часом спостерігається тенденція розвитку систем, призначених для спрощення та прискорення процесу розроблення експлойтів і середовищ їх тестування та моделювання. Поява таких систем привела до значного скорочення часу між випуском повідомлення про вразливість і появою відповідного експлойта. Розглянемо одну з таких систем — Metasploit Framework (MSF) [68]. Ця система з відкритим вихідним кодом являє собою середовище для створення, тестування і використання експлойтів, що дає змогу тестувати системи на проникнення, розробляти shell-код і досліджувати вразливості.
Структура системи Metasploit Framework
Більшу частину системи Metasploit Framework написано мовою Perl, а деякі додаткові компоненти — мовами С, Асемблер и Python. Спочатку MSF була розрахована на UNIX-системи, але сьогодні це — мультиплатформна система, що функціонує як під керуванням Linux, *BSD, MacOS X, так і під керуванням Windows (версія для Windows використовує полегшену версію емулятора Cygwin, що впливає на швидкодію MSF).
Ядро MSF є системою пов'язаних сутностей — експлойтів, генераторів пор-по-слідовностей (послідовностей команд nop (no operation), які дають змогу передати керування на код зловмисника), генераторів корисного навантаження (у контексті розроблення експлойтів корисним навантаженням називають такий код зловмисника, який виконується в результаті успішного використання вразливості) та кодерів. Експлойт належить до Perl-класу і відповідає за використання вразливості та передання керування на корисне навантаження (shell-код). Конкретний екземпляр експлойта параметризується екземпляром генератора пор-послідовностей, генератора корисного навантаження і кодера.
У версії MSF 2.4 для платформи х86 є два генератори пор-послідовностей -Рех и OptyNop2, здатних генерувати послідовності інструкцій, що не змінюють стан процесу в широкому діапазоні. Як параметри nop-генераторів можна вказувати регістри процесора, які можна змінювати, збільшуючи в такий спосіб ентропію отримуваних послідовностей. Це разом із динамічним генеруванням пор-послідовностей дає змогу суттєво знизити ймовірність детектування системами виявлення атак, які здебільшого відстежують серії байтів 0x90 та інші поширені серії nop-байт. Генератор Рех генерує однобайтові пор-інструкції, що знижує ентропію послідовності, але спрощує її створення, a OptyNop2 генерує багатобайтові інструкції, які буде інтерпретовано саме як інструкції типу nop, незалежно від того, в яке місце послідовності буде вказувати ЕІР.
Система MSF надає широкий вибір корисного навантаження для експлойтів. Корисні навантаження в MSF існують для операційних систем *BSD, Linux, Solaris і Windows, для архітектур х8б, PowerPC і SPARC. Для більшості систем існують shell-коди запуску довільної команди, додавання користувача з правами адміністратора, зв'язування командної оболонки з портом тощо. Для окремих систем є специфічні shell-коди, що забезпечують впровадження виконуваних модулів ELF для Linux, завантаження багатофункціонального компонента Meter-preter, впровадження DLL-модулів, завантаження та виконання елементів керування ActiveX і сервера VNC для ОС Windows.
Для генерування корисного навантаження, яке не може містити певних байтів, у MSF передбачено набір різних кодерів для архітектур х86, PowerPC і SPARC. Наприклад, у мові С код не може містити нульових байтів для роботи з рядковими функціями. Кодери призначені для роботи з будь-якими бінарними послідовностями, що дає змогу використовувати їх незалежно від виду корисного навантаження. У результаті кодування розмір shell-коду природно зростає; такий побічний ефект ще більше ускладнює детектування системою виявлення атак. Серед прикладів кодерів можна назвати різноманітні XOR-кодери і два алфавітно-цифрових кодери — Alpha2 і PexAlphaNum. Система кодування в MSF дає змогу обирати найліпший кодер, а також встановлювати набір заборонених байтів і максимальну довжину повідомлення.
Інтерфейс користувача
Взаємодію користувача з ядром системи забезпечують три інтерфейси — інтерактивний консольний інтерфейс msfconsole, інтерфейс командного рядка msfcli та веб-інтерфейс msfweb.
Інтерфейс msfconsole — стандартний і найбільш розвинений інтерфейс (в основу якого покладено інтерфейс readline). Він надає функціональність, подібну до інших readline-інтерфейсів (наприклад, bash і gdb), — різноманітні доповнення, історію команд тощо. Так само, як і решта схожих інтерфейсів, msfconsole дає змогу переглядати інформацію про наявні експлойти і shell-коди, обирати конкретний експлойт і корисне навантаження для атаки, задавати їх параметри, перевіряти систему на вразливість тощо. Також msfconsole (на відміну, наприклад, від веб-інтерфейсу) дозволяє додавати нові MSF-сумісні експлойти, змінювати параметри середовища, на кшталт настроювання журналів реєстрації, опцій соке-тів, параметрів налагодження та інших.
Інтерфейс командного рядка msfcli дає можливість за допомогою сценаріїв автоматизувати процес тестування експлойта. Він також може стати у пригоді, коли користувач немає змоги чи бажання застосовувати інтерактивний інтерфейс. Цей інтерфейс інколи використовують як доповнення до msfconsole для автоматизації задач. Тоді настроювання змінних середовища доцільно виконувати в msfconsole, а також використовувати його повторно в інтерфейсі командного рядка.
Інтерфейс msfweb - це прикладна програма, що запускається на окремому веб-сервері та підтримує функції основного інтерфейсу msfconsole. У ньому можна обрати конкретний експлойт, задати його параметри, зокрема параметри корисного навантаження, кодера и генератора nop-послідовності. Цей інтерфейс використовують для середовищ командного тестування на проникнення, але він більш зручний для демонстрацій, Веб-інтерфейс msfweb на комп'ютерах під керуванням
Windows через окремі особливості архітектури системи працює значно повільніше, ніж на UNIX-машинах.
Утиліти MSF для створення експлойтів
Написання MSF-сумісного експлойта завершується створенням певного класу мовою Perl. Після цього експлойт можна вбудовувати в систему і використовувати на кшталт тих, що постачаються разом із MSF. Розробник експлойтів, використовуючи наявний у MSF набір утиліт, за допомогою звичайного мережного повідомлення може, наприклад, викликати переповнення буфера, виконати деякий фіксований код, незважаючи на обмеження, що має експлойт MSF. Утиліти MSF використовують для створення повідомлень (задля визначення адреси повернення), створення дампа пам'яті процесу і пошуку в ньому команд певного типу, створення shell-коду, його кодування тощо.
Визначати зміщення в атакуючому повідомленні в MSF можна за допомогою набору сценаріїв мовою Perl. Один із них — утиліта patternCreate.pl, що дає змогу генерувати послідовності байтів, в яких кожні чотири послідовні байти унікальні. Ці повідомлення використовують із метою визначення зміщень для адрес повернення і стану регістрів на момент зриву стека.
Визначати адреси повернення для ОС Windows можна, користуючись базою опкодів, розташованою на сайті розробників [68], яка містить понад 10 млн адрес інструкцій для різних версій Windows і дозволяє віднайти необхідні інструкції в поширених DLL-модулях (ntdll.dll, kernerl.dll, user32.dll). Ця система шукає не лише стандартні інструкції на кшталт jmp esp, вона здійснює пошук за класами опкодів (наприклад, еах => еір) і типами інструкцій (наприклад, jmp reg, call гед, push reg/ret), а також конкретних інструкцій (наприклад, call [es^ + 20]), якиХтімістить більше трьохсот. До складу MSF також входять утиліта для створення дампу процесу memdump.exe та утиліта командного рядка msfpescan для пошуку інструкцій у виконуваних файлах формату РЕ і дампах memdump. Аналогічну функціональність (хоча й менш уживану) реалізовано в утиліті msfelf-scan; її передбачено для ОС з виконуваними файлами у форматі ELF.
Для роботи з корисними навантаженнями і кодерами передбачено дві утиліти — msfpayload і msfencode. Перша дає змогу задати параметри і згенерувати конкретний shell-код. Дані, що виводить утиліта, подано у вигляді, зручному для інтерпретації компілятором С або інтерпретатором Perl, проте їх можна вивести й у «сирому» вигляді. У цьому випадку використовують утиліту msfencode для кодування shell-коду. Як уже зазначалося, за допомогою цієї утиліти можна обрати потрібний кодер і встановити обмеження на максимальну довжину повідомлення, а також на набір заборонених байтів.
Система MSF — доволі досконалий інструмент, який значно спрощує процедуру розроблення засобів атак (експлойтів), дає змогу підвищити їхню якість і ускладнити їх детектування системами виявлення атак. На перший погляд, цю систему можна визнати злочинною і спрямувати зусилля на її викорінення (як і решти таких систем). Але, як показує досвід минулих років, такі заходи в Інтернеті неефективні. Однією з причин такої неефективності є те, що Інтернет -мережа інтернаціональна, і тому той, кого в одній країні вважають злочинцем, в іншій може бути добропорядним громадянином або навіть національним ге-роєм. В одній країні автора комп'ютерного вірусу засуджують на довгі роки ув'язнення (наприклад, тривалий термін ув'язнення і штраф у 400 тис. доларів отримав у США розробник мережного хробака Melissa), а в іншій - випускають на волю (наприклад, автора відомого Чорнобильського вірусу - :'гіівдЄннокорей-ського сіудента — не було засуджено, оскільки на нього не надходило скарг від співгромадян). Спроба загнати в підпілля будь-яких розробників засобів, які за деякими ознаками можна вйажати шкідливими або навіть злочинними, найімовірніше, матиме своїм результатом лише ескалацію протидії за принципом кі-бертероризму.
Але головне полягає в іншому. Засоби розроблення, тестування і моделювання атак, як і більшість засобів, що використовують або могли б використати злочинці, також є корисними, а часто — навіть необхідними для тих, хто бореться за те, щоб програмне забезпечення було більш надійним, стійким до різних зовнішніх впливів і не мало вразливостей (розробників програмного забезпечення, тестувальни-ків, експертів із комп'ютерної безпеки, адміністраторів). Іще раз наголошуємо -зброя небезпечна завжди, але результат її застосування (або просто наявності) залежить від того, в чиїх вона руках. Найгірший варіант, який можна собі уявити, -це коли в руках злочинців є зброя, а у тих, хто від злочийіцв захищає, її немає.
Слід зауважити, що останнім часом у країнах Європи впроваджують зміни до законодавча, які мають посилити відповідальність користувачів комп'ютерних систем. Зокрема, протиправним вважається не лише застосування небезпечних програмних засобів, а й наявність їх на комп'ютері користувача. Перш ніж застосовувати такі програмні засоби (до них належать засоби, розглянуті у цьому розділі та різні мережні сканери, про які йтиметься у розділі 18), потрібно ретельно ознайомитись із законодавством, а також із правилами та обмежеИкями, що діють у конкретній інформаційно-комунікаційній системі (корпоративній мережі, мережі провайдера Інтернету).
