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

5.6 KiB
Raw Blame History

ゼロからヒーローまでAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

手動 De-obfuscation Techniques

ソフトウェアセキュリティの領域では、de-obfuscationとして知られる、不明瞭なコードを理解可能なものにするプロセスが重要です。このガイドでは、静的解析技術と難読化パターンの認識に焦点を当て、de-obfuscationのさまざまな戦略について探究します。さらに、実践的な応用のための演習を紹介し、より高度なトピックを探求したい人のための追加リソースを提案します。

静的De-obfuscationの戦略

難読化されたコードに対処する際には、難読化の性質に応じていくつかの戦略が採用されます:

  • DEXバイトコードJava効果的なアプローチの1つは、アプリケーションのde-obfuscationメソッドを特定し、そのメソッドをJavaファイルに複製することです。このファイルを実行して、対象要素の難読化を逆転させます。
  • Javaとネイティブコード別の方法は、de-obfuscationアルゴリズムをPythonなどのスクリプト言語に変換することです。この戦略は、アルゴリズムを完全に理解することが目的ではなく、それを効果的に実行することが主な目標であることを強調しています。

難読化の識別

難読化されたコードを認識することは、de-obfuscationプロセスの最初のステップです。主な指標には次のものがあります

  • JavaとAndroidでの文字列の欠如またはスクランブルは、文字列の難読化を示唆する可能性があります。
  • アセットディレクトリにバイナリファイルが存在するか、DexClassLoaderへの呼び出しがある場合、コードの展開と動的ロードが示唆されます。
  • 識別できないJNI関数とネイティブライブラリの使用は、ネイティブメソッドの難読化を示唆しています。

De-obfuscationにおける動的解析

制御された環境でコードを実行することにより、動的解析は難読化されたコードのリアルタイムでの挙動を観察することを可能にします。この方法は、コードの真の意図を隠すために設計された複雑な難読化パターンの内部動作を明らかにするのに特に効果的です。

動的解析の応用

  • ランタイム復号化:多くの難読化技術は、ランタイムでのみ復号化される文字列やコードセグメントを含んでいます。動的解析により、これらの暗号化された要素を復号化された瞬間にキャプチャし、その真の形を明らかにすることができます。
  • 難読化技術の識別:アプリケーションの挙動を監視することで、動的解析は、コード仮想化、パッカー、または動的コード生成など、使用されている特定の難読化技術を特定するのに役立ちます。
  • 隠された機能の発見:難読化されたコードには、静的解析だけでは明らかにならない隠された機能が含まれている場合があります。動的解析により、条件付きで実行されるコードパスを含むすべてのコードパスを観察することで、そのような隠された機能を明らかにすることができます。

参考文献とさらなる読書

  • 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ボットネットが行っていたJavaコードだけでなく、一連の難読化技術について議論しています。