Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БІКС 2015_1 / lec_3 BIKS шкідл ПЗ.doc
Скачиваний:
141
Добавлен:
12.02.2016
Размер:
367.62 Кб
Скачать

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, So­laris і 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), потрібно ретельно ознайомитись із законодавством, а також із правилами та обмежеИкями, що діють у конкретній інформаційно-комунікаційній системі (корпоративній мережі, ме­режі провайдера Інтернету).