Manual DeObfuscation
Ручні Техніки Деобфускації
У сфері безпеки програмного забезпечення процес перетворення зашифрованого коду в зрозумілий, відомий як деобфускація, є критично важливим. Цей посібник розглядає різні стратегії деобфускації, зосереджуючи увагу на техніках статичного аналізу та розпізнаванні патернів обфускації. Крім того, він пропонує вправу для практичного застосування та рекомендує додаткові ресурси для тих, хто зацікавлений у вивченні більш складних тем.
Стратегії Статичної Деобфускації
При роботі з обфускованим кодом можна використовувати кілька стратегій залежно від природи обфускації:
DEX байт-код (Java): Один із ефективних підходів полягає в ідентифікації методів деобфускації програми, а потім у відтворенні цих методів у Java-файлі. Цей файл виконується для скасування обфускації на цільових елементах.
Java та Нативний Код: Інший метод полягає в перекладі алгоритму деобфускації на мову сценаріїв, таку як Python. Ця стратегія підкреслює, що основна мета полягає не в повному розумінні алгоритму, а в його ефективному виконанні.
Ідентифікація Обфускації
Визнання обфускованого коду є першим кроком у процесі деобфускації. Ключові ознаки включають:
відсутність або сплутування рядків у Java та Android, що може свідчити про обфускацію рядків.
наявність бінарних файлів у каталозі активів або викликів до
DexClassLoader
, що натякає на розпакування коду та динамічне завантаження.Використання нативних бібліотек разом з невизначеними функціями JNI, що вказує на потенційну обфускацію нативних методів.
Динамічний Аналіз у Деобфускації
Виконуючи код у контрольованому середовищі, динамічний аналіз дозволяє спостерігати, як обфускований код поводиться в реальному часі. Цей метод особливо ефективний для виявлення внутрішніх механізмів складних патернів обфускації, які призначені для приховування справжнього наміру коду.
Застосування Динамічного Аналізу
Дешифрування в Часі Виконання: Багато технік обфускації передбачають шифрування рядків або сегментів коду, які дешифруються лише під час виконання. Завдяки динамічному аналізу ці зашифровані елементи можуть бути захоплені в момент дешифрування, розкриваючи їх справжню форму.
Ідентифікація Технік Обфускації: Спостерігаючи за поведінкою програми, динамічний аналіз може допомогти виявити конкретні техніки обфускації, що використовуються, такі як віртуалізація коду, пакувальники або динамічна генерація коду.
Виявлення Схованої Функціональності: Обфускований код може містити приховані функціональності, які не є очевидними лише через статичний аналіз. Динамічний аналіз дозволяє спостерігати всі шляхи коду, включаючи ті, що виконуються умовно, щоб виявити такі приховані функціональності.
Посилання та Додаткове Читання
BlackHat USA 2018: “Розпакування упакованого розпаковувача: зворотне проектування бібліотеки Android Anti-Analysis” [відео]
Ця доповідь охоплює зворотне проектування однієї з найскладніших бібліотек нативного анти-аналізу, які я бачив, що використовуються Android-додатком. Вона в основному охоплює техніки обфускації в нативному коді.
REcon 2019: “Шлях до Payload: Android Edition” [відео]
Ця доповідь обговорює серію технік обфускації, виключно в Java-коді, які використовував Android-ботнет для приховування своєї поведінки.
Last updated