Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
apk-mitm — 🤖 Android APKファイルをHTTPSインスペクション用に自動的に準備するCLIアプリケーション | Kitploit
ツール/GitHubGitHub/niklashigi/apk-mitm
Androidセキュリティリバースエンジニアリングウェブセキュリティペネトレーションテストモバイルセキュリティ
GitHubniklashigi/apk-mitm

apk-mitm

🤖 Android APKファイルをHTTPSインスペクション用に自動的に準備するCLIアプリケーション

リポジトリを見る
5.1k4312年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

apk-mitm

AndroidアプリのAPKファイルをHTTPS通信の検査に自動で対応させるCLIツール

プロキシを使ってモバイルアプリのHTTPSトラフィックを検査することは、おそらくアプリの動作を理解する最も簡単な方法です。しかし、Android 7で導入されたネットワークセキュリティ設定と、証明書ピンニングを使用してMITM攻撃を防ごうとするアプリ開発者のおかげで、アプリをHTTPSプロキシで動作させるのはかなり面倒になっています。

apk-mitmはこのプロセス全体を自動化します。APKファイルを指定するだけで、apk-mitmは以下を実行します:

  • Apktoolを使用してAPKファイルをデコード
  • アプリのネットワークセキュリティ設定をユーザーが追加した証明書を許可するよう置き換え
  • ソースコードを修正して様々な証明書ピンニング実装を無効化
  • Apktoolを使用して修正済みAPKファイルをエンコード
  • uber-apk-signerを使用して修正済みAPKファイルに署名

apk-mitmはAndroid App Bundleを使用したアプリのパッチ適用にも対応しており、端末のroot化は不要です。

⚠️ 制限事項と代替手段

証明書ピンニングのようなセキュリティ機能を回避するためにアプリの通常の動作を変更するには、アプリのソースコードを実行前に修正するか、アプリの実行中にフックして関数呼び出しをインターセプトする必要があります。

apk-mitmは現在、前者のアプローチ(Apktoolでアプリを「逆アセンブル」し、いくつかのファイルに変更を加え、再度Apktoolでアセンブルし直す)を採用しています。

このアプローチには、root化されたデバイスが不要という利点がありますが、いくつかの欠点もあります。最大の問題は、アプリは本来「逆アセンブル」されることを想定していないことです。Apktoolはそれを実現しようとしますが、特に大規模で複雑なアプリでは問題が発生することがよくあります。

もう一つの問題は、ネイティブバイナリ内で行われるチェック(Flutterのようなフレームワークで見られる)など、一部の証明書ピンニング方式は回避が非常に困難または不可能なことです。そのため、より複雑なアプリでは別のアプローチを試すことも有効です。

特に、mitmproxyのandroid-unpinnerプロジェクトとHTTP Toolkitによる基礎となるfrida-interception-and-unpinningスクリプトをお勧めします。これらのアプローチはFridaを使用して実行時にパッチを適用します。これははるかに強力ですが、root化されたデバイスがないと使用できないか、使用が難しくなります。

インストール

Node.js(14以上)とJava(8以上)の最新バージョンがインストールされている場合、以下のコマンドでapk-mitmをインストールできます:

root@kitploit:~
npm install -g apk-mitm

使い方

インストール後、以下のコマンドを実行してアプリにパッチを適用できます:

root@kitploit:~
apk-mitm <path-to-apk>

example.apkというAPKファイルにパッチを適用する例:

root@kitploit:~
$ apk-mitm example.apk

  ✔ APKファイルをデコード中
  ✔ アプリマニフェストを変更中
  ✔ ネットワークセキュリティ設定を置き換え中
  ✔ 証明書ピンニングを無効化中
  ✔ 修正済みAPKファイルをエンコード中
  ✔ 修正済みAPKファイルに署名中

  完了! 修正済みAPK: ./example-patched.apk

これでexample-patched.apkファイルをAndroidデバイスにインストールし、Charlesやmitmproxyのようなプロキシを使用してアプリのトラフィックを確認できます。

App Bundleへのパッチ適用

apk-mitmでは、*.xapkファイル(例:APKPureから)や*.apksファイル(SAIを使用して自分でエクスポート可能)を指定することで、Android App Bundleを使用するアプリにもパッチを適用できます。Linuxで行う場合は、zipとunzipの両方がインストールされていることを確認してください。

手動での変更

場合によっては、アプリを動作させるために手動で変更を加える必要があります。そのような場合には、--waitオプションが便利です。このオプションを有効にすると、apk-mitmはアプリを再エンコードする前に待機し、一時ディレクトリ内のファイルを変更できるようになります。

APKに対して様々な変更を試したい場合、--waitを使用するたびに最初からやり直す必要があるため、あまり便利ではないかもしれません。そのような場合は、APKLabを検討してみてください。これはVS Code上に構築されたAndroidリバースエンジニアリングワークベンチで、apk-mitmサポートが組み込まれており、より迅速な反復が可能です。

特定の証明書を許可する

Android TVなどの一部のデバイスでは、システムのルート証明書ストアに新しい証明書を追加できない場合があります。その場合でも、プロキシの証明書をアプリのネットワークセキュリティ設定に直接追加すれば、どのデバイスでも動作します。--certificateフラグにプロキシで使用する証明書(.pemまたは.derファイル)のパスを指定してapk-mitmを実行することで実現できます。

注意点

  • アプリがGoogle Mapsを使用しており、パッチ適用後にマップが表示されない場合、アプリのAPIキーが開発者の証明書に制限されている可能性があります。制限のない独自のAPIキーを作成し、--waitオプションを指定してapk-mitmを実行し、アプリのAndroidManifest.xmlファイル内のcom.google.android.geo.API_KEYの値を置き換える必要があります。

  • デコードまたはエンコード中にapk-mitmがクラッシュする場合、問題はおそらくApktoolに関連しています。GitHub上のApktoolのIssueを確認して、回避策の可能性を探ってください。問題の影響を受けないApktoolバージョンを見つけた場合、--apktoolオプションでそのJARファイルのパスを指定することで、apk-mitmにそのバージョンを使用させることができます。

謝辞

  • Connor Tumbleson - 素晴らしいAPKデコンパイラを作成
  • Patrick Favre-Bulle - APK署名のための非常にシンプルなツールを作成
  • Ryan Welton - 証明書ピンニング除去コードの大部分に影響を与えた

ライセンス

MIT © Niklas Higi

ツールをダウンロード