ЛАБОРАТОРНА РОБОТА 16 Практичний аналіз шкідливих програм: Виявлення технік антивідлагодження

Hello, в цьому звіті ми розглянемо техніки антивідлагодження, які допомагають шкідливим програмам виявляти та уникати середовищ відлагодження, ускладнюючи їх аналіз. Відлагодження дозволяє аналітикам проходити по коду, змінювати пам'ять та вивчати поведінку, але ці техніки спрямовані на перешкоджання таким зусиллям. Розуміння цих технік є ключем до виявлення справжньої мети шкідливої програми.

Lab 16–1

Проаналізуйте шкідливу програму, знайдену в Lab16–01.exe, за допомогою відлагоджувача. Це та сама шкідлива програма, що й Lab09–01.exe, але з доданими техніками антивідлагодження.

Питання

1. Які техніки антивідлагодження використовує ця шкідлива програма?

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

Аналізуючи всі посилання на fs:[30h] (Блок середовища процесу) в виконуваному процесі, можна виявити кілька порівнянь, що націлені на ключові поля, такі як BeingDebugged (mov bl, [eax+2]), ProcessHeap та NTGlobalFlag, для визначення їх статусу та оцінки можливого відлагодження або маніпулювання.

pic

2. Що відбувається, коли кожна з технік антивідлагодження успішно спрацьовує?

Як ми згадували раніше, шкідлива програма буде видаляти себе.

3. Як обійти ці техніки антивідлагодження?

Для цієї задачі ми використовуємо плагін OllyDbg ScyllaHide, якщо відкрити бінарний файл у x32dbg, зайти в Plugins > ScyllaHide > Options та встановити ті опції, що на зображенні.

pic

Тепер можна відлагоджувати програму нормально.

Надалі, прапорці порівняння можна змінити, перейшовши з jnz (Jump if Not Zero) на jz (Jump if Zero) і навпаки, щоб ефективно відредагувати бінарний файл.

pic

4. Як вручну змінити структури, які перевіряються під час виконання?

Щоб вручну змінити структури PEB, які перевіряються під час виконання, ми можемо відлагоджувати бінарний файл в OllyDbg, використовуючи командний рядок і вивантажити вміст PEB, після чого заповнити адресу нулями 00.

Ось розбір API та команд для вивантаження

BeingDebugged:

dump fs:[30] + 2

ProcessHeap:

dump ds:[fs:[30] + 0x18] + 0x10

NTGloabalFlag:

dump fs:[30] + 0x68

5. Який плагін OllyDbg захистить вас від технік антивідлагодження, що використовуються цією шкідливою програмою?

Для захисту від технік антивідлагодження ось кілька плагінів OllyDbg:

  1. ScyllaHide

  2. OllyAdvanced

  3. HideOD

  4. StrongOD

Lab 16–2

Проаналізуйте шкідливу програму, знайдену в Lab16–02.exe, за допомогою відлагоджувача. Мета цього лабораторного заняття — знайти правильний пароль. Шкідлива програма не створює шкідливого вантажу.

Питання

1. Що відбувається, коли ви запускаєте Lab16–02.exe з командного рядка?

pic

2. Що відбувається, коли ви запускаєте Lab16–02.exe і вгадуєте параметр командного рядка?

pic

3. Який пароль командного рядка?

Правильний пароль командного рядка — byrr.

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

4. Завантажте Lab16–02.exe в IDA Pro. Де у головній функції знаходиться strncmp?

Щоб знайти місце розташування strcmp, я йду до рядків і перевіряю перехресні посилання на повідомлення про помилку, потім помічаю strcmp за адресою 0x40123A.

pic

5. Що відбувається, коли ви завантажуєте цю шкідливу програму в OllyDbg за допомогою стандартних налаштувань?

Програма різко завершується після завантаження в OllyDbg з стандартними налаштуваннями.

6.

Що унікального в PE-структурі Lab16–02.exe?

Програма містить секцію .tls (Thread Local Storage).

pic

7. Де знаходиться callback? (Підказка: використовуйте CTRL-E в IDA Pro.)

Знаходиться за адресою 0x401016.

pic

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

Шкідлива програма використовує функцію FindWindowA, щоб виявити та завершити виконання, коли знаходить вікно з класовим ім'ям OLLYDBG. Щоб обійти цю поведінку, можна змінити ім'я класу вікна за допомогою плагіна OllyDbg, наприклад, PhantOm, або нейтралізувати виклик завершення програми, замінивши його на NOP за адресою 0x40107C.

pic

9. Який пароль командного рядка ви бачите в відлагоджувачі після вимкнення техніки антивідлагодження?

Ми можемо знайти пароль, встановивши точку зупину на strcmp та запустивши програму до того, як вона досягне цієї точки. Ви помітите, що вона порівнює його з bzrr.

Цей п@сс є приманкою.

pic

10. Чи працює пароль, знайдений в відлагоджувачі, в командному рядку?

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

11. Які техніки антивідлагодження пояснюють різні паролі в відлагоджувачі та командному рядку, і як можна захиститися від них?

Результат OutputDebugStringA за адресою 0x40103A та прапор BeingDebugged використовуються як вхідні дані для алгоритму декодування. Ви можете використовувати плагін PhantOm, щоб забезпечити значення BeingDebugged рівним 0, а також можна нейтралізувати інструкцію add за адресою 0x401051.

Lab 16–3

Проаналізуйте шкідливу програму в Lab16–03.exe за допомогою відлагоджувача. Ця шкідлива програма схожа на Lab09–02.exe, з певними модифікаціями, включаючи введення технік антивідлагодження. Якщо ви застрягли, дивіться Lab 9–2.

Питання

1. Які рядки ви бачите при використанні статичного аналізу бінарного файлу?

pic

Також floss декодує деякі рядки.

pic

Відкриваючи бінарний файл у pestudio

pic

2. Що відбувається, коли ви запускаєте цей бінарний файл?

Якщо ми запустимо бінарний файл, він одразу припинить виконання і закриється.

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

pic

3. Як потрібно перейменувати зразок, щоб він працював правильно?

Як видно в результатах floss, ім'я файлу має бути ocl.exe, але якщо перейменувати бінарний файл і спробувати запустити, нічого не відбудеться.

Нам потрібно встановити точку зупину на strcmp за адресою 0x401518, щоб перевірити порівняння під час відлагодження бінарного файлу, ми стикаємося з помилкою "ділення на нуль". Можна обійти цю помилку, замінивши її на NOP.

Тепер ми бачимо, що точка зупину порівнює рядок з qgr.exe.

pic

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

Якщо встановити точку зупину на strcmp і замінити її на NOP, змінні var_118, які переносять два значення в адресу 0x401292, також потрібно встановити значення переміщення на адресі 0x40129C на 1.

pic

Якщо відлагоджувати, ми побачимо порівняння з peo.exe.

pic

4.

Які техніки антивідлагодження використовує ця шкідлива програма?

Ця шкідлива програма використовує три різні техніки антивідлагодження за допомогою часу для ускладнення аналізу: RDTSC (помилка ділення на 0), GetTickCount і QueryPerformanceCounter.

pic

5. Що відбувається з кожною технікою, якщо програма визначає, що вона виконується в середовищі відлагодження?

Шкідлива програма включає умовну поведінку, залежно від успішності перевірок часу антивідлагодження:

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

6. Чому техніки антивідлагодження успішно діють в цій шкідливій програмі?

Техніки антивідлагодження цієї шкідливої програми є успішними завдяки використанню Structured Exception Handling (SEH) (структурованої обробки винятків), щоб порушити процес відлагодження. Програма стратегічно викликає та ловить виняток, вставляючи свій власний обробник винятків між двома викликами функцій часу. Ця тактика використовує той факт, що винятки обробляються значно повільніше в середовищі відлагодження, ніж при звичайному виконанні, що дозволяє шкідливій програмі визначити наявність середовища відлагодження.

7. Яке доменне ім'я використовує ця шкідлива програма?

pic

Перекладено з: LAB 16 Practical Malware Analysis: Uncover Anti-Debugging Techniques

Leave a Reply

Your email address will not be published. Required fields are marked *