Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безпека.docx
Скачиваний:
163
Добавлен:
31.08.2019
Размер:
6.2 Mб
Скачать

6.6.2. Засоби створення шкідливого програмного забезпечення

Утиліти, призначені для полегшення написання комп'ютерних вірусів і для їх вивчення із зловмисною метою (дають змогу розібратися, як вірус працює, і зро­бити свій — кращий), дістали назву VirTool.

Є спеціальні утиліти-конструктори, за допомогою яких із заготовлених блоків (із заданих функцій) можна складати нові комп'ютерні віруси і «троянців». Відомі конструктори вірусів для DOS і Windows і такі, що допомагають створювати макровіруси. За допомогою таких конструкторів можна згенерувати вихідні тек­сти вірусів, об'єктні модулі та безпосередньо заражені файли.

Деякі конструктори мають віконний інтерфейс, в якому за допомогою меню можна обрати: тип вірусу та тип об'єктів, які цей вірус намагатиметься вразити; протидію налагодженню; наявність поліморфізму; внутрішні текстові рядки; ефек­ти, що супроводжуватимуть роботу вірусу тощо. Інші конструктори не мають та­кого інтерфейсу і зчитують інформацію про тип вірусу з конфігураційного файлу.

Є також утиліти, які забезпечують реалізацію окремих функцій вірусів. На­приклад, програми, що використовують для шифрування інших шкідливих про­грам, щоб приховати їхній вміст від антивірусної перевірки (FileCryptor або Poly-

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 є системою пов'язаних сутностей — експлойтів, генераторів nор - послідовностей (послідовностей команд nop (no operation), які дають змогу передати керування на код зловмисника), генераторів корисного навантаження (у контексті розроблення експлойтів корисним навантаженням називають такий код зловмисника, який виконується в результаті успішного використання вразливості) та кодерів. Експлойт належить до Perl-класу і відповідає за використання вразливості та передання керування на корисне навантаження (shell-код). Конкретний екземпляр експлойта параметризується екземпляром генератора nop - послідовностей, генератора корисного навантаження і кодера.

У версії MSF 2.4 для платформи х86 є два генератори пор-послідовиостей Рех и OptyNop2, здатних генерувати послідовності інструкцій, що не змінюють

стан процесу в широкому діапазоні. Як параметри пор-генераторів можна вказувати регістри процесора, які можна змінювати, збільшуючи в такий спосіб ентропію отримуваних послідовностей. Це разом із динамічним генеруванням nop - послідовностей дає змогу суттєво знизити ймовірність детектування системами

виявлення атак, які здебільшого відстежують серії байтів 0x90 та інші поширені серії пор-байт. Генератор Рех генерує однобайтові пор-інструкції, що знижує ентропію послідовності, але спрощує її створення, a OptyNop2 генерує багатобайтові інструкції, які буде інтерпретовано саме як інструкції типу nop, незалежно від того, в яке місце послідовності буде вказувати ЕІР.

Система MSF надає широкий вибір корисного навантаження для експлойтів Корисні навантаження в MSF існують для операційних систем *BSD, Linux, So

laris і Windows, для архітектур х86, 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. У ньому можна обрати конкретний експлойт, задати його параметри, зокрема параметри корисно­го навантаження, кодера и генератора nор - послідовності. Цей інтерфейс викори­стовують для середовищ командного тестування на проникнення, але він більш зручний для демонстрацій. Веб-інтерфейс 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 reg, push reg/ret), а також конкретних інструкцій (наприклад, call [esi + 20]),

яких містить більше трьохсот. До складу MSF також входять утиліта для створення дампу процесу memdump.exe та утиліта командного рядка msfpescan для пошуку інструкцій у виконуваних файлах формату РЕ і дампах memdump. Ана­логічну функціональність (хоча й менш уживану) реалізовано в утиліті msfelf- scan; її передбачено для ОС з виконуваними файлами у форматі ELF.

Для роботи з корисними навантаженнями і кодерами передбачено дві утиліти msfpayload і msfencode. Перша дає змогу задати параметри і згенерувати конкрет­ний shell-код. Дані, що виводить утиліта, подано у вигляді, зручному для інтер­претації компілятором С або інтерпретатором Perl, проте їх можна вивести й у «сирому» вигляді. У цьому випадку використовують утиліту msfencode для кодуван­ня shell-коду. Як уже зазначалося, за допомогою цієї утиліти можна обрати по­трібний кодер і встановити обмеження на максимальну довжину повідомлення, а також на набір заборонених байтів.

Система MSF — доволі досконалий інструмент, який значно спрощує проце­дуру розроблення засобів атак (експлойтів), дає змогу підвищити їхню якість і ускладнити їх детектування системами виявлення атак. На перший погляд, цю систему можна визнати злочинною і спрямувати зусилля на її викорінення (як і решти таких систем). Але, як показує досвід минулих років, такі заходи в Інтернеті неефективні. Однією з причин такої неефективності є те, що Інтернет мережа інтернаціональна, і тому той, кого в одній країні вважають злочинцем,

в іншій може бути добропорядним громадянином або навіть національним ге­роєм. В одній країні автора комп'ютерного вірусу засуджують на довгі роки ув'яз­нення (наприклад, тривалий термін ув'язнення і штраф у 400 тис. доларів отри­мав у США розробник мережного хробака Melissa), а в іншій — випускають на волю (наприклад, автора відомого Чорнобильського вірусу — південнокорейського студента — не було засуджено, оскільки на нього не надходило скарг від співгромадян). Спроба загнати в підпілля будь-яких розробників засобів, які за деякими ознаками можна вважати шкідливими або навіть злочинними, найімо­вірніше, матиме своїм результатом лише ескалацію протидії за принципом кібертероризму.

Але головне полягає в іншому. Засоби розроблення, тестування і моделювання атак, як і більшість засобів, що використовують або могли б використати злочинці, також є корисними, а часто — навіть необхідними для тих, хто бореться за те, щоб програмне забезпечення було більш надійним, стійким до різних зовнішніх впли­вів і не мало вразливостей (розробників програмного забезпечення, тестувальників, експертів із комп'ютерної безпеки, адміністраторів). Іще раз наголошуємо — зброя небезпечна завжди, але результат її застосування (або просто наявності) за­лежить від того, в чиїх вона руках. Найгірший варіант, який можна собі уявити, — це коли в руках злочинців є зброя, а у тих, хто від злочинців захищає, її немає.

Слід зауважити, що останнім часом у країнах Європи впроваджують зміни до законодавства, які мають посилити відповідальність користувачів комп'ютерних систем. Зокрема, протиправним вважається не лише застосування небезпечних програмних засобів, а й наявність їх на комп'ютері користувача. Перш ніж засто­совувати такі програмні засоби (до них належать засоби, розглянуті у цьому роз­ділі та різні мережні сканери, про які йтиметься у розділі 18), потрібно ретельно ознайомитись із законодавством, а також із правилами та обмеженнями, що діють у конкретній інформаційно-комунікаційній системі (корпоративній мережі, ме­режі провайдера Інтернету).

Висновки

1. Класифікацію шкідливого програмного забезпечення здійснюють за різними ознаками; найважливішими серед них є такі:

♦ спосіб розповсюдження: яким чином засіб потрапляє на комп'ютер і дома­гається

своєї активізації;

♦ яка мета функціонування засобу, тобто які саме шкідливі дії він здійснює.

2. За механізмами розповсюдження можна виокремити такі класи шкідливого програмного забезпечення:

  • класичні комп'ютерні віруси;

  • мережні хробаки;

  • «троянські коні»;

  • спеціальні засоби — інструменти зловмисників.

3. Програми або окремі їх функції, які протягом тривалого часу функціонують у комп'ютерній системі, приховуючи своє існування від користувача, називають програмними закладками. Програмні закладки можуть бути впроваджені вірусом, «троянським конем», мережним хробаком або безпосередньо користувачем-зловмисником. В окремих випадках програмні закладки впроваджують адміністратори для виявлення злочинної діяльності користувачів або для керування комп'ютерами користувачів.

4. Типові шкідливі функції програмних закладок:

  • перехоплення і передавання інформації (перехоплювачі паролів, шпигунські програми);

  • порушення функціонування систем («логічні бомби»: знищення інформації, зловмисна модифікація інформації, блокування системи);

♦ модифікація програмного забезпечення, впровадження шкідливих функ­цій (люки, інтернет-клікери, проксі-сервери, дзвінки на платні ресурси, організація DoS- і DDoS-атак);

♦ психологічний тиск на користувача (реклама, лихі жарти і містифікації).

  1. Впровадження програмних закладок віддаленого керування може бути здійснено спеціалізованими мережними хробаками. У результаті їхньої діяльності формується мережа комп'ютерів, на яких впроваджена певна утиліта віддаленого керування — так званий бот. Мережу, якою централізовано керує зловмис­ник, називають ботнетом (мережа ботів). Керування може здійснюватися через IRC-канал, веб-сайт, на якому зловмисник розміщує команди для заражених машин, або навіть через спеціальну Р2Р-мережу.

  2. Класичні комп'ютерні віруси — один із найпоширеніших різновидів шкідливого програмного забезпечення. Для них є характерним, по-перше, здатність самостійно відтворюватися, тобто розмножуватися, а по-друге, спосіб, у який вірус потрапляє до системи і примушує користувача себе запустити. Вірус використовує в ролі носія інший програмний код, який він модифікує таким чином, щоб впровадити в нього свою копію. У результаті замість необхідного користувачу програмного коду починає виконуватися код вірусу.

  3. Основні технології виявлення вірусів (та інших шкідливих програм):

♦ пошук сигнатур (характерних ознак відомих вірусів) у файлах, службових структурах даних файлової системи і в оперативній пам'яті комп'ютера;

♦ евристичний аналіз, коли впровадження шкідливого коду визначається за наявністю підозрілих операцій;

♦ контроль незмінності об'єктів, які з найбільшою ймовірністю можуть бути атаковані вірусами.

  1. Програмні засоби, що дістали назву мережних хробаків, здатні самостійно, без втручання користувача, розповсюджуватися у комп'ютерній мережі, передаючи свій програмний код на інші комп'ютери і запускаючи його. Як правило, мережні хробаки, як і комп'ютерні віруси, здатні розмножуватися.

9. Головною ознакою, за якою розрізняють типи мережних хробаків, є спосіб їх розповсюдження — яким чином хробак передає свою копію на віддалені ком­п'ютери. Решта ознак — це способи запуску копії хробака на комп'ютері, мето­ди його впровадження в систему та характеристики, притаманні іншим типам шкідливого програмного забезпечення (вірусам і «троянським коням») — по­ліморфізм, прихованість тощо.

10. Програми, які дістали назву «троянські коні», привертають до себе увагу ко­ристувачів своїм привабливим зовнішнім виглядом, що змушує їх запустити таку програму. Але ці програми містять у собі шкідливі функції, а дуже часто — руйнівні. Класичний «троянський кінь» не містить у собі функцій доставлян­ня програми на комп'ютер-жертву.

11. Є небезпечні програмні засоби, які використовують цілком свідомо (тому во­ни ніяк не приховують своєї присутності в системі). До таких засобів належать засоби підготовки та здійснення атак, які полюбляють застосовувати поруш­ники, а також сервісні та службові програми, які у разі їх некомпетентного ви­користання здатні завдати значної шкоди системі.

Контрольні запитання та завдання

  1. За якими головними ознаками доцільно класифікувати шкідливе програмне забезпечення?

  2. Які класи шкідливого програмного забезпечення можна виділити за меха­нізмами їх розповсюдження?

  3. Що таке програмні закладки? Наведіть класифікацію програмних закладок.

  4. Яким чином може здійснюватися керування ботнетом?

  5. Які головні ознаки мають комп'ютерні віруси?

  6. Наведіть класифікацію комп'ютерних вірусів.

  7. У чому полягає особлива небезпека завантажувальних (бутових) вірусів?

  8. Назвіть основні технології виявлення комп'ютерних вірусів. Які переваги й недоліки має кожна з цих технологій?

  9. Які головні ознаки мережних хробаків, що вирізняють їх з-поміж інших шкід­ливих програм?

  10. За якими ознаками класифікують мережних хробаків?

  11. Які функції реалізовував (або намагався реалізувати) хробак Морріса?

  12. Назвіть стратегії проникнення на віддалені комп'ютери, які реалізовував хро­бак Морріса.

  13. Які програмні засоби дістали назву «троянські коні»? Наведіть їх класифікацію.

  14. Які програми можуть належати до спеціальних хакерських утиліт?

Частина III

Нормативні документи

з оцінювання захищеності

інформації

Розділ 7

Розвиток стандартів безпеки

  • Призначення стандартів інформаційної безпеки

  • Стандарти, орієнтовані на застосування військовими та спецслужбами

  • Оцінювання адекватності засобів захисту

  • Концепція профілю захисту

  • Європейські критерії безпеки інформаційних технологій

  • Федеральні критерії безпеки інформаційних технологій США