0Pricing
Ethical Hacking Academy · レッスン

APKの静的解析

逆コンパイル

「APKの静的解析」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。

APK の静的解析

APK の静的解析とは、実行せずにコードとリソースを調査することです。目的は、コンパイル済み DEX からソースコードに近い読みやすいコードを復元することです。

これにより、ハードコードされた秘密情報、ロジック上の欠陥、アプリの実際の挙動が明らかになります。

apktool によるデコード

apktoolは APK をデコードし、読みやすいリソースとsmali(DEX バイトコードを人間が読める形で表したもの)に戻します。また、バイナリ形式のAndroidManifest.xmlもデコードします。

マニフェストの確認や、変更したアプリの再パッケージ化に使用します。

apktool d app.apk -o app_src

Smali コード

Smaliは Dalvik バイトコード用のアセンブリに似た言語です。冗長ですが、比較処理を変更してチェックを回避するなど、正確な編集ができます。

smali をパッチして APK を再構築し、アプリの挙動を変更できます。

const/4 v0, 0x1   # force a boolean to true

jadx で Java を取得する

jadxは DEX を直接、読みやすい Java にデコンパイルします。GUI 版のjadx-guiでは、クラスの閲覧、文字列の検索、メソッド呼び出しの追跡ができます。

アプリのロジックを理解する最も速い方法です。

jadx-gui app.apk

dex2jar の手順

別の手順では、dex2jarで DEX を JAR に変換し、JD-GUIなどの Java デコンパイラで開きます。

通常は jadx のほうがきれいな出力を生成しますが、jadx がうまく処理できない場合には dex2jar が役立ちます。

d2j-dex2jar app.apk -o app.jar

秘密情報を探す

デコンパイルされたコードには、API キー、トークン、暗号鍵、バックエンド URL などのハードコードされた秘密情報が含まれていることがよくあります。

ソースコードからpassword、secret、apikey、httpなどのキーワードを検索します。開発者は、コンパイル済みコードならこれらが隠れると誤って考えています。

grep -ri "api_key\|secret\|password" app_src/

マニフェストの確認

マニフェストをデコードしたら、次の項目を確認します。

  • エクスポートされたコンポーネント。
  • android:debuggable="true"。
  • android:allowBackup="true"(バックアップ経由でデータを抽出できます)。
  • 危険な権限やカスタム権限。

ネットワークセキュリティ設定

Network Security Configurationは TLS の挙動を制御します。クリアテキスト通信を許可したり、ユーザーが追加した CA を信頼したりする設定は、通信のセキュリティを弱めます。

このような設定があると、通信の傍受(後のトピックで扱います)がはるかに容易になります。

<application android:usesCleartextTraffic="true">

MobSF による自動スキャン

MobSF(Mobile Security Framework)は静的解析を自動化します。APK をアップロードすると、権限、ハードコードされた秘密情報、安全でない設定、リスクスコアを報告します。

トリアージには非常に便利ですが、より深い問題を見つけるには手動レビューも必要です。

再パッケージ化と再署名

smaliをパッチした後、apktoolで再ビルドし、APKに再署名してください(Androidは署名されていないアプリを拒否します)。署名にはapksignerやuber-apk-signerなどのツールを使用できます。

このワークフローは、改ざんテストや実行時の変更の基盤となります。

apktool b app_src -o patched.apk
uber-apk-signer -a patched.apk

ディープリンクとWebView

ディープリンクのインテントフィルターとWebViewの使用箇所を探してください。設定に不備のあるディープリンクは、攻撃者が制御するデータを使ってアプリ内部の画面を起動される可能性があります。

JavaScriptInterfaceを持つWebViewや、信頼できないコンテンツを読み込むWebViewは、インジェクションやデータ窃取に対してアプリを無防備にする可能性があります。どちらも静的レビューでよく見つかる問題です。

クイックチェック

APKから可読性の高いJavaコードを直接取得できるツールを思い出してください。

まとめ

これで、APKの静的解析について理解できました。

  • smaliとデコード済みマニフェストにはapktoolを、可読性の高いJavaコードにはjadxを使用します。
  • ハードコードされたシークレットを探し、マニフェストでexported、debuggable、backupのフラグを確認します。
  • Network Security Configを確認し、自動トリアージにはMobSFを使用します。
  • smaliにパッチを適用し、改ざんをテストするために再ビルドして再署名します。

次は、Fridaを使って実行中のアプリを操作します。

よくある質問

「APKの静的解析」レッスンは無料ですか?

はい。「APKの静的解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。

「APKの静的解析」で何を学びますか?

逆コンパイル ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ethical Hacking Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「APKの静的解析」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このEthical Hacking Academyレッスンでコードを書いて実行できますか?

はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Androidアプリの構造
  2. APKの静的解析
  3. Fridaによる動的解析
  4. 安全でないストレージと通信
← Ethical Hacking Academyに戻る