hacktricks/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md

5.8 KiB
Raw Permalink Blame History

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

手動 デオブフスケーション技術

ソフトウェアセキュリティの領域において、隠されたコードを理解可能にするプロセスであるデオブフスケーションは重要です。このガイドでは、デオブフスケーションのさまざまな戦略を掘り下げ、静的分析技術とオブフスケーションパターンの認識に焦点を当てています。さらに、実践的な応用のための演習を紹介し、より高度なトピックを探求したい人のための追加リソースを提案します。

静的デオブフスケーションの戦略

オブフスケートされたコードを扱う際、オブフスケーションの性質に応じていくつかの戦略を採用できます:

  • 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” [video]
  • この講演では、Androidアプリケーションで使用される最も複雑なアンチ分析ネイティブライブラリの一つを逆解析する方法について説明します。主にネイティブコードにおけるオブフスケーション技術を扱っています。
  • REcon 2019: “The Path to the Payload: Android Edition” [video]
  • この講演では、Androidボットネットがその動作を隠すために使用していた一連のオブフスケーション技術について説明します。