hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md
2024-03-29 19:49:46 +01:00

8.9 KiB
Raw Blame History

Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)!

Інші способи підтримки HackTricks:

Техніки ручного розшифрування

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

Стратегії для статичного розшифрування

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

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

Визначення шифрування

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

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

Динамічний аналіз у розшифруванні

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

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

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

Посилання та Додаткова Інформація

  • https://maddiestone.github.io/AndroidAppRE/obfuscation.html
  • BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” [відео]
  • Ця презентація розглядає зворотне проектування однієї з найскладніших антианалітичних власних бібліотек, яку я бачив, використовуваної в додатку для Android. Вона в основному охоплює техніки обфускації в власному коді.
  • REcon 2019: “The Path to the Payload: Android Edition” [відео]
  • Ця презентація обговорює серію технік обфускації, використовуваних виключно в коді Java, які використовував ботнет для Android для приховування своєї поведінки.
Вивчайте хакінг AWS від нуля до героя з htARTE (Експерт з червоної команди HackTricks AWS)!

Інші способи підтримки HackTricks: