[論文レビュー] ASTANA: Practical String Deobfuscation for Android Applications Using Program Slicing
ASTANA は、Android アプリケーション向けの実用的な文字列の脱オブフスケーションツールであり、軽量で楽観的なプログラムスライシングを用いて脱オブフスケーション論理を抽出・実行し、オブフスケーション手法の事前知識がなくても元の文字列リテラルを回復する。100 件の実世界の金融アプリケーションで評価された結果、制御フローのオブフスケーションが複雑であっても、文字列の脱オブフスケーションに成功した。
Software obfuscation is widely used by Android developers to protect the source code of their applications against adversarial reverse-engineering efforts. A specific type of obfuscation, string obfuscation, transforms the content of all string literals in the source code to non-interpretable text and inserts logic to deobfuscate these string literals at runtime. In this work, we demonstrate that string obfuscation is easily reversible. We present ASTANA, a practical tool for Android applications to recovers the human-readable content from obfuscated string literals. ASTANA makes minimal assumptions about the obfuscation logic or application structure. The key idea is to execute the deobfuscation logic for a specific (obfuscated) string literal, which yields the original string value. To obtain the relevant deobfuscation logic, we present a lightweight and optimistic algorithm, based on program slicing techniques. By an experimental evaluation with 100 popular real-world financial applications, we demonstrate the practicality of ASTANA. We verify the correctness of our deobfuscation tool and provide insights in the behaviour of string obfuscators applied by the developers of the evaluated Android applications.
研究の動機と目的
- Android アプリケーションにおけるリバースエンジニアリングの脅威が増加する中、マルウェアや独自開発者が使用する文字列オブフスケーションの影響を軽減すること。
- 制御フローのオブフスケーションに耐性がなく、オブフスケータの詳細な知識を必要とする既存の脱オブフスケーションツールの限界を克服すること。
- オブフスケーション論理に関する事前仮定が不要な、汎用的で軽量かつ実用的な脱オブフスケーションソリューションを構築すること。
- 静的解析とプログラムスライシングを用いて、複雑な制御フローサイズ変換が施された状態でも文字列オブフスケーションを逆転可能であることを示すこと。
提案手法
- ASTANA は、人間が読み取れない文字列の後続に復号呼び出しがあるなど、文字列オブフスケーションに特徴的なパターンを検出することで、オブフスケートされた文字列リテラルを特定する。
- 特定の文字列リテラルの脱オブフスケーションに影響するすべてのステートメントを抽出するために、軽量で楽観的な後向きプログラムスライシングアルゴリズムを適用する。
- スライシング処理は、オブフスケートされた文字列から最終的な復号出力へのデータ依存に焦点を当てており、最小限で実行可能なコードスニペットの抽出を可能にする。
- 抽出された脱オブフスケーション論理は、制御された環境で実行され、元の人間が読める文字列値が回復される。
- 制御フロー構造ではなくデータフローに焦点を当てるため、制御フローのオブフスケーションに対しても耐性を持つように設計されている。
- ASTANA は静的解析を用いてスライスを生成し、動的実行やランタイムインストルメンテーションを必要としない。
実験結果
リサーチクエスチョン
- RQ1制御フローが大幅に変更された状態でも、静的解析とプログラムスライシングを用いて Android アプリケーション内の文字列オブフスケーションを効果的に逆転できるか?
- RQ2軽量で楽観的なプログラムスライシングアプローチは、オブフスケートされた Android アプリケーションから実行可能な脱オブフスケーション論理を効果的に抽出できるか?
- RQ3ASTANA は、オブフスケーション手法の事前知識がなくても、実世界の Android アプリケーションでどの程度の文字列を脱オブフスケートできるか?
- RQ4ヒューリスティクスや動的解析に依存する既存の脱オブフスケーションツールと比較して、ASTANA の正確性と耐性はどの程度高いか?
主な発見
- ASTANA は、100 件の実世界の金融系 Android アプリケーションで文字列リテラルを成功裏に脱オブフスケートし、実世界のシナリオにおける実用性を示した。
- 高い脱オブフスケーションの正確性を達成しており、制御フローのオブフスケーションが適用されても、多くの既存ツールが機能しなくなる状況でも元の文字列を回復できた。
- 軽量で楽観的なスライシングアルゴリズムにより、完全なプログラム依存グラフの生成を必要とせず、効率的な脱オブフスケーション論理の抽出が可能になった。
- 商用ツール(ProGuard や Allatori を含む)が使用する多様なオブフスケーションパターンに対しても、本アプローチは耐性を示した。
- 評価により、文字列オブフスケーションは最小限の仮定で容易に逆転可能であることが確認され、それが強力な保護を提供するとする仮定に疑問を呈した。
- ASTANA の静的解析ベースのアプローチは、実行時実行を必要としないため、動的代替手法よりもスケーラブルで実用的であることが示された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。