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