Обхід антивірусного захисту (частина i)

Обхід антивірусного захисту (частина i)

У цьому посібнику будуть описані методи і техніки, які дозволять здійснити обхід антивірусного захисту.

Глава 1. Вступ

Протягом останніх 10 років прості антивіруси, які використовують для перевірки вже існуючі сигнатури погроз, постійно набувають нових і все більш сучасні наближені функції. Більшість антивірусів здатне перевіряти як файли на локальних дисках, таки і опкоди (opcodes) в пам'яті.

Опкоди - це команди на мові програмування Асемблер, що використовуються на самому нижньому рівні програмування для налаштування взаємодії додатків з ЦП. Додатки, як правило, розробляються на мовах більш високого рівня, в яких не застосовуються опкоди, наприклад в C або C ++. Компілятор, в свою чергу, переводить високорівнева код в опкоди, керуючись необхідної архітектурою та ін.

У цьому посібнику будуть описані методи і техніки, які дозволять здійснити обхід антивірусного захисту.

Глава 2 СтруктураPE файлів

Формат файлу PE (Portable Executable) використовується Windows для обробки бінарних файлів за замовчуванням (Рис. 2.1). Варто зазначити, що не всі бінарні файли складаються з 5 секцій. Вони також можуть складатися з 4, 6 або 7 секцій, в залежності від їх побудови.

Сигнатура, яка приводить в дію антивірусну програму, може бути розміщена де завгодно, проте зазвичай її варто шукати в одній з основних секцій, а не в заголовках таблиць секцій, заголовках DOS та ін.

Обхід антивірусного захисту (частина i)

Мал. 2.1. Структура PE файлу

2.1 - Антивірусні сигнатури і PE формат

Процес пошуку сигнатур антивірусом нескладний, якщо він виконується класичним способом шляхом поділу складних файлів на прості, і подальшого пошуку сигнатур в простих файлах.

Іноді сигнатури знаходяться дуже просто, наприклад, при використанні ncx99.exe. ncx99.exe - це простий netcat listener, який прив'язує cmd.exe до 99 порту на зовнішньому мережевому інтерфейсі. На рис. 2.1.1 показана основна сигнатура між зміщеннями E77E і E78F.

Обхід антивірусного захисту (частина i)

Більш того, в даному прикладі сигнатура виявлена ​​в секції idata. Це означає, що при спробі шифрування всієї секції idata, виконуваний файл, який вийде в результаті, може виявитися непрацездатним.

Ми можемо відредагувати частина даного файлу, або зашифрувати лише сигнатуру, і таким чином обійти виявлення антивірусом.
Відзначимо, що антивірусні програми будуть також переглядати список PE заголовків файлу, щоб визначити, чи є запускається нами файл шкідливим.

Іноді навіть індикатор дати і часу створення файлу входить до складу сигнатури. Можна просто змінити або обнулити ці дані для успішного обходу перевірки сигнатур. Якщо списки заголовків, таблиці, або прапори не проходять перевірку, антивірус може помітити програму, як шкідливу або потенційно шкідливу, припускаючи, що дана програма не може вважатися надійним, або не може виконатися коректно.

Обхід антивірусного захисту (частина i)

Рис 2.1.2 - Огляд частині списку PE заголовків в Ollydbg

2.2 - Зміна сигнатур антивірусу в PE файлах

У випадку з ncx99.exe, є можливість зміни, як слухача порту, так і програми, яка буде виконуватися. Звичайно, якщо замінити його, наприклад на calc.exe, при зломі це не допоможе, а от заміна номера порту з 99, наприклад, на 81 може виявитися корисною. Таким чином, можна успішно обійти механізми виявлення деяких антивірусів.

Обхід антивірусного захисту (частина i)

Мал. 2.2.1 - перевірка вихідного файлу ncx99.exe

Обхід антивірусного захисту (частина i)

Мал. 2.2.2 - перевірка ncx99.exe з п рівязкой до 81 порту

Як показано на рис 2.2.2, антивіруси Avast і Ikarus вдалося успішно обійти. При атаці комп'ютерів, які використовують один з цих антивірусів, нам досить буде всього лише змінити один з тих, що слухають портів.

2.3 - Поліморфні техніки і зломи

Деякі поліморфні віруси мають однаковий функціонал, але різні опкоди. У цьому полягає черговий прийом, який застосовується досвідченими хакерами. Наприклад, замість інструкції PUSH -1, хакер може використовувати DEC ESI, PUSH ESI, INC ESI, якщо регістр ESI дорівнює 0. Якщо він не дорівнює нулю, зловмисникові доведеться зберегти значення ESI шляхом переміщення його в стек, і обнулити його за допомогою оператора XOR (XOR ESI, ESI). Потім його можна використовувати для запису в стек замість PUSH -1.

Після цього необхідно відновити вихідне значення ESI, за допомогою оператора POP.

Це тільки один із прикладів, більшість антивірусів не вважають інструкцію PUSH -1 шкідливою. Але у випадку з сигнатурою, що являє собою виконуваний код, нам не обійтися простою заміною даних порожніми командами (NOP), нам доведеться використовувати методи шифрування, або «поліморфні методи».

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

Звернемо увагу, що деякі антивіруси перевіряють також і розмір файлів.

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

  • Обхід антивірусного захисту (частина i)
  • Обхід антивірусного захисту (частина i)
  • Обхід антивірусного захисту (частина i)
  • Обхід антивірусного захисту (частина i)