tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Ручні Техніки Де-обфускації

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

Стратегії Статичної Де-обфускації

При роботі з обфускованим кодом можна використовувати кілька стратегій залежно від природи обфускації:

  • DEX байт-код (Java): Один із ефективних підходів полягає в ідентифікації методів де-обфускації програми, а потім у відтворенні цих методів у Java-файлі. Цей файл виконується для скасування обфускації на цільових елементах.
  • Java та Нативний Код: Інший метод полягає в перекладі алгоритму де-обфускації на мову сценаріїв, таку як Python. Ця стратегія підкреслює, що основна мета полягає не в повному розумінні алгоритму, а в його ефективному виконанні.

Ідентифікація Обфускації

Визнання обфускованого коду є першим кроком у процесі де-обфускації. Ключові ознаки включають:

  • відсутність або сплутування рядків у Java та Android, що може свідчити про обфускацію рядків.
  • наявність бінарних файлів у каталозі ресурсів або викликів до DexClassLoader, що натякає на розпакування коду та динамічне завантаження.
  • Використання нативних бібліотек разом з невизначеними функціями JNI, що вказує на потенційну обфускацію нативних методів.

Динамічний Аналіз у Де-обфускації

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

Застосування Динамічного Аналізу

  • Дешифрування в Режимі Виконання: Багато технік обфускації передбачають шифрування рядків або сегментів коду, які дешифруються лише під час виконання. Завдяки динамічному аналізу ці зашифровані елементи можуть бути захоплені в момент дешифрування, розкриваючи їх справжню форму.
  • Ідентифікація Технік Обфускації: Спостерігаючи за поведінкою програми, динамічний аналіз може допомогти виявити конкретні техніки обфускації, що використовуються, такі як віртуалізація коду, пакувальники або динамічна генерація коду.
  • Виявлення Схованої Функціональності: Обфускований код може містити приховані функціональності, які не є очевидними лише через статичний аналіз. Динамічний аналіз дозволяє спостерігати всі шляхи коду, включаючи ті, що виконуються умовно, щоб виявити такі приховані функціональності.

Посилання та Додаткове Читання

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: “Розпакування упакованого декомпіллятора: Реверс-інжиніринг бібліотеки Android Anti-Analysis” [відео]
  • Ця доповідь охоплює реверс-інжиніринг однієї з найскладніших бібліотек нативного коду для анти-аналізу, які я бачив, що використовуються в Android-додатку. Вона в основному охоплює техніки обфускації в нативному коді.
  • REcon 2019: “Шлях до Payload: Android Edition” [відео]
  • Ця доповідь обговорює серію технік обфускації, виключно в Java-коді, які використовував Android-ботнет для приховування своєї поведінки.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks