概要
インストール
ツールリスト
コンテンツ詳細
代替品
APKセキュリティガードMCPスイートとは?
これは、Androidアプリの安全分析用に設計された自動化ツールセットです。5つの主流のセキュリティ分析ツール(JEB、JADX、APKTOOL、FlowDroid、MobSF)をMCP標準インターフェースに統合し、「多専門家決定」モデルを通じて、包括的で信頼性の高いAPKセキュリティ検査サービスを提供します。APKセキュリティガードの使い方は?
APKファイルのパスを指定するだけで、システムが自動的にすべてのツールを並列で分析し、結果をスマートに統合して、脆弱性の頻度統計とリスク評価を含む総合レポートを生成します。適用シナリオ
セキュリティ研究者による脆弱性探索、開発者によるコード監査、浸透テスト担当者によるセキュリティ評価、およびAPKのセキュリティに要求のあるすべてのユーザーに適しています。主要機能
使い方
使用例
よくある質問
関連リソース
インストール
{
"mcpServers": {
"Jadx MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JADX-MCP\\fastmcp_adapter.py"
],
"transportType": "stdio"
},
"JEB MCP Server": {
"disabled": false,
"timeout": 1800,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JEB-MCP\\server.py"
],
"transportType": "stdio"
},
"FlowDroid MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"FlowDroid-MCP\\script\\flowdroid_mcp.py"
],
"transportType": "stdio"
},
"MobSF MCP Server": {
"disabled": false,
"timeout": 60,
"command": "Nodejs\\node.exe",
"args": [
"MobSF-MCP\\build\\index.js"
],
"env": {
"MOBSF_URL": "http://localhost:8000",
"MOBSF_API_KEY": "your_api_key_here"
},
"transportType": "stdio"
},
"APKTOOL MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"APKTOOL-MCP\\apktool_mcp_server.py"
],
"transportType": "stdio"
}
}
}
{
"mcpServers": {
"apk_analysis": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"CrossValidation_APKAnalysis.py"
],
"transportType": "stdio"
}
}
}
🚀 APK Security Guard MCP Suite
このプロジェクトは、Android APKのセキュリティ分析と脆弱性検出に関するワンストップ自動化ソリューションを提供することを目的としています。JEB、JADX、APKTOOL、FlowDroid、MobSFなどの主流の逆コンパイル、静的分析、動的分析ツールを統合し、MCP(Model Context Protocol)標準APIインターフェースに統一することで、セキュリティ分析の自動化と効率を大幅に向上させます。APKセキュリティに関する要件を持つセキュリティ研究者、ペネトレーションテスター、開発者などのユーザーに適しています。
🚀 クイックスタート
このセクションでは、プロジェクトの使用をすぐに開始するための手順を説明します。まずは必要な依存関係のインストールから始めましょう。
✨ 主な機能
- Android APKのセキュリティ分析と脆弱性検出の自動化
- 主流の逆コンパイル、静的分析、動的分析ツールの統合
- MCP標準APIインターフェースを通じた効率的な分析
- 多言語対応のAPIドキュメントと使いやすいインターフェース
📦 インストール
🧩 依存関係のインストール
グローバル環境での依存関係の競合を避けるため、Pythonの仮想環境を使用してプロジェクトの依存関係を管理することを強くおすすめします。以下は詳細なインストール手順です。
- 新しい仮想環境を作成します。
# Windowsの場合
python -m venv myenv
myenv\Scripts\activate
# Linux/MacOSの場合
python -m venv myenv
source myenv/bin/activate
- 仮想環境がアクティブになったことを確認したら(コマンドプロンプトに
(myenv)
が表示されるはずです)、プロジェクトの依存関係をインストールします。
pip install -r requirements.txt
- MobSF関連のAPIを使用する場合は、Node.jsの依存関係を個別にインストールし、
MobSF-MCP
ディレクトリに移動します。
npm install -g mobsf-mcp
⚠️ 重要提示
- Python 3.11の使用を推奨します。
- 新しい作業セッションを開始するたびに、仮想環境をアクティブにすることを忘れないでください。
📦 プラグインまたはスクリプトのインストール推奨事項
JEB MCPスクリプト
このスクリプトは、事前にJEBツールのスクリプトフォルダに配置する必要があります。
- JEBを開き、
File > Scripts > Script Selector
に移動します。 - スクリプトリストから
MCP.py
を選択して実行します。 - スクリプトが正常に読み込まれて実行された場合、JEBの出力コンソールに以下のメッセージが表示されます。
[MCP] Plugin loaded
[MCP] Plugin running
[MCP] Server started at http://localhost:16161
JADX MCPプラグイン
- プラグインのビルドと実行にはJava 17が必要です。
JADX-MCP
のルートディレクトリで以下のコマンドを実行します。./gradlew build
- ビルドが完了すると、プラグインのJARファイルが以下の場所に生成されます。
plugin/build/libs/JADX-MCP-Plugin.jar
- または、事前にビルドされたJARパッケージを直接使用することもできます。 JADX-MCP-Plugin.jarをダウンロード
- JARファイルを
jadx-gui
のインストール先のlib
フォルダにコピーします。cp plugin/build/libs/JADX-MCP-Plugin.jar <path-to-jadx-gui>/lib/
APKTool
WindowsでAPKToolをインストールするには、Chocolatey(人気のあるWindowsパッケージマネージャー)を使用できます。
管理者としてPowerShellを開きます。
- 以下のコマンドを実行してChocolateyをインストールします。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Chocolateyのインストールが完了したら、以下のコマンドでAPKToolをインストールします。
choco install apktool
インストール後は、コマンドラインから直接apktool
を使用できます。詳細や高度な使用方法については、APKToolの公式ドキュメントを参照してください。
MobSF MCP
まず、MobSFがインストールされていることを確認してください。
プロジェクトの機能を拡張し、新しいAPIを追加する場合は、MobSF-MCP
のルートディレクトリで以下のコマンドを実行します。
npm run build
ビルドが完了すると、生成されたindex.js
とmobsf.js
ファイルがビルドフォルダに保存されます。
管理者としてPowerShellを開きます。
- コマンドラインで必要な環境変数を設定します。
$env:MOBSF_URL="http://localhost:8000"; $env:MOBSF_API_KEY="your_api_key_here";
- 以下のコマンドでMobSF MCPサーバーを起動します。
npx mobsf-mcp
FlowDroid
このスイートでFlowDroidを使用するための設定手順は以下の通りです。
-
公式リリースページからFlowDroidの
soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar
コマンドラインJARファイルをダウンロードします。 -
FlowDroid-MCP
ディレクトリで.env
ファイルを見つけ、テキストエディタで開き、FlowDroidのJARファイルのパスを設定します。例えば:
FLOWDROID_WORKSPACE=../flowdroid_workspace
FLOWDROID_JAR_PATH=/home/user/tools/flowdroid/flowdroid.jar
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
flowdroid_mcp.py
スクリプトでは、FlowDroidの実行にいくつかの重要な環境変数が必要です。スクリプトを実行する前に、これらの変数が正しく設定されていることを確認してください。
# line 15-18
FLOWDROID_WORKSPACE = os.getenv("FLOWDROID_WORKSPACE", "flowdroid_workspace")
FLOWDROID_JAR_PATH = os.getenv("FLOWDROID_JAR_PATH", "FlowDroid.jar")
JAVA_HOME = os.getenv("JAVA_HOME")
# line 134-144
command = [
"java",
"-jar",
FLOWDROID_JAR_PATH, # Make sure the path is correct
"-a", apk_path,
"-o", output_dir,
"-p", "Android\\Sdk\\platforms", # The platforms directory must be specified
"-s", "FlowDroid-MCP\\script\\SourcesAndSinks.txt", # You must specify a source/sink file
]
⚠️ 重要提示
- すべてのパスを実際のシステムパスに置き換えてください。
- Android SDKのプラットフォームディレクトリが正しく指定されていることを確認してください。
🖥️ VSCode Cline拡張機能の設定
このプロジェクトをVSCodeのcline拡張機能とともに使用するには、clineの設定ファイルに以下の設定を追加します。
{
"mcpServers": {
"Jadx MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JADX-MCP\\fastmcp_adapter.py"
],
"transportType": "stdio"
},
"JEB MCP Server": {
"disabled": false,
"timeout": 1800,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JEB-MCP\\server.py"
],
"transportType": "stdio"
},
"FlowDroid MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"FlowDroid-MCP\\script\\flowdroid_mcp.py"
],
"transportType": "stdio"
},
"MobSF MCP Server": {
"disabled": false,
"timeout": 60,
"command": "Nodejs\\node.exe",
"args": [
"MobSF-MCP\\build\\index.js"
],
"env": {
"MOBSF_URL": "http://localhost:8000",
"MOBSF_API_KEY": "your_api_key_here"
},
"transportType": "stdio"
},
"APKTOOL MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"APKTOOL-MCP\\apktool_mcp_server.py"
],
"transportType": "stdio"
}
}
}
⚠️ 重要提示
実際のファイルパスと設定に合わせて調整してください(システムに合わせて調整)。 設定で実際の
MOBSF_API_KEY
を入力することを忘れないでください。
💻 使用例
基本的な使用法
プロジェクトの基本的な使用方法を以下に示します。各ツールのAPIを使用して、APKのセキュリティ分析を行うことができます。
高度な使用法
高度な使用シナリオでは、複数のツールを組み合わせて、より詳細な分析を行うことができます。例えば、CrossValidation_APKAnalysis MCP
を使用して、複数のツールの分析結果を統合することができます。
📚 ドキュメント
🛠️ API
JEB MCP
アーキテクチャはhttps://github.com/flankerhqd/jebmcp に基づいています。
✨ 主なAPI機能:
API | 説明 |
---|---|
ping() |
JEB MCPサーバーが稼働しているかを確認します。 |
get_manifest(filepath) |
APKからAndroidManifest.xmlの内容を取得します。 |
get_apk_permissions(filepath) |
APKのAndroidManifest.xmlに宣言されているすべてのパーミッションを抽出します。 |
get_apk_components(filepath) |
マニフェストからすべての主要なAndroidコンポーネント(アクティビティ、サービス、レシーバー、プロバイダー)とその属性を抽出します。 |
get_method_decompiled_code(filepath, method_signature) |
完全修飾シグネチャによって特定のメソッドの逆コンパイルコードを取得します。 |
get_class_decompiled_code(filepath, class_signature) |
完全修飾シグネチャによって特定のクラスの逆コンパイルコードを取得します。 |
get_method_callers(filepath, method_signature) |
与えられたメソッドのすべての呼び出し元をリストします。 |
get_method_overrides(filepath, method_signature) |
与えられたメソッドのすべてのオーバーライドをリストします。 |
get_apk_info(filepath) |
パッケージ名、バージョン、メインアクティビティなどの基本的なAPK情報を取得します。 |
get_intent_filters(filepath) |
アクティビティ、サービス、レシーバーのすべてのインテントフィルター(アクション、カテゴリ、データ)を抽出します。 |
get_exported_components(filepath) |
すべてのエクスポートされたコンポーネント(明示的または暗黙的)とその属性をリストします。 |
list_broadcast_receivers(filepath) |
すべてのブロードキャストレシーバーとそのインテントフィルターをリストします。 |
パラメータの注意事項:
filepath
はAPKファイルの絶対パスである必要があります。method_signature
とclass_signature
はJavaスタイルの内部アドレスを使用します。例えば、メソッドの場合はLcom/abc/Foo;->bar(I[JLjava/Lang/String;)V
、クラスの場合はLcom/abc/Foo;
です。
JADX MCP
アーキテクチャはhttps://github.com/mobilehackinglab/jadx-mcp-plugin に基づいています。
✨ 主なAPI機能:
API | 説明 |
---|---|
list_all_classes(limit, offset) |
APK内のすべてのクラス名のページ付きリストを返します。パラメータ: limit (最大結果数、デフォルト250)、offset (開始インデックス、デフォルト0)。 |
search_class_by_name(query) |
与えられたキーワードを含むクラス名を検索します(大文字と小文字を区別しません)。パラメータ: query (文字列)。 |
get_class_source(class_name) |
与えられたクラスの完全な逆コンパイルソースコードを返します。パラメータ: class_name (完全修飾クラス名、例えばcom.example.MyClass )。 |
search_method_by_name(method_name) |
提供された名前に一致するすべてのメソッドを検索します。クラスとメソッドのペアを文字列として返します。パラメータ: method_name (文字列)。 |
get_methods_of_class(class_name) |
指定されたクラスで宣言されたすべてのメソッド名を返します。パラメータ: class_name (完全修飾クラス名)。 |
get_fields_of_class(class_name) |
指定されたクラスで宣言されたすべてのフィールド名を返します。パラメータ: class_name (完全修飾クラス名)。 |
get_method_code(class_name, method_name) |
クラス内の特定のメソッドのソースコードブロックのみを返します。パラメータ: class_name (完全修飾クラス名)、method_name (文字列)。 |
get_method_signature(class_name, method_name) |
メソッドの完全なシグネチャ(戻り値の型とパラメータを含む)を返します。パラメータ: class_name (完全修飾クラス名)、method_name (文字列)。 |
get_field_details(class_name, field_name) |
フィールドに関する詳細情報(型と修飾子を含む)を返します。パラメータ: class_name (完全修飾クラス名)、field_name (文字列)。 |
search_method_by_return_type(return_type) |
メソッドの戻り値の型でメソッドを検索します。パラメータ: return_type (文字列)。 |
get_class_hierarchy(class_name) |
クラスの継承階層(親クラスとインターフェースを含む)を返します。パラメータ: class_name (完全修飾クラス名)。 |
get_method_calls(class_name, method_name) |
特定のメソッド内で行われるすべてのメソッド呼び出しを返します。パラメータ: class_name (完全修飾クラス名)、method_name (文字列)。 |
get_class_references(class_name) |
コードベース内の特定のクラスへのすべての参照を返します。パラメータ: class_name (完全修飾クラス名)。 |
get_method_annotations(class_name, method_name) |
特定のメソッドに適用されたすべてのアノテーションを返します。パラメータ: class_name (完全修飾クラス名)、method_name (文字列)。 |
get_tools_resource() |
プラグインから利用可能なすべてのツールとその説明のリストを返します。 |
パラメータの注意事項:
class_name
は完全修飾クラス名である必要があります。例えばcom.example.MyClass
。method_name
は逆コンパイルコードに表示されるメソッドの名前です。limit
とoffset
はクラスをリストする際のページネーションに使用されます。query
: 検索キーワード、クラス名またはメソッド名にキーワードを含むものを検索するために使用されます。return_type
: メソッドの戻り値の型、戻り値の型でメソッドを検索するために使用されます。field_name
: フィールドの名前、フィールドの詳細情報を取得するために使用されます。
APKTool MCP
アーキテクチャはhttps://github.com/zinja-coder/apktool-mcp-server (Apache 2.0ライセンス)に基づいています。
✨ 主なAPI機能:
API | 説明 |
---|---|
decode_apk(apk_path, force, no_res, no_src) |
APKファイルを逆コンパイルし、リソースとsmaliコードを抽出します。パラメータ: apk_path (APKファイルのパス)、force (上書きを強制する)、no_res (リソースをスキップする)、no_src (ソースをスキップする)。 |
build_apk(project_dir, output_apk, debug, force_all) |
デコードされたプロジェクトからAPKを再構築します。パラメータ: project_dir (プロジェクトのパス)、output_apk (出力パス)、debug (デバッグ情報を含める)、force_all (すべてを強制的に再構築する)。 |
clean_project(project_dir, backup) |
プロジェクトディレクトリをクリーンアップして、再構築の準備をします。パラメータ: project_dir (プロジェクトのパス)、backup (クリーンアップ前にバックアップを作成する)。 |
get_manifest(project_dir) |
デコードされたプロジェクトからAndroidManifest.xmlの内容を取得します。パラメータ: project_dir (プロジェクトのパス)。 |
find_leak_manifest(project_dir) |
マニフェスト内のパーミッション制限のないエクスポートされたコンポーネントを見つけます。パラメータ: project_dir 。 |
find_leak_components_source(project_dir, source_dirs) |
パーミッションのないエクスポートされたコンポーネントを見つけ、そのソースコードの位置を特定します。パラメータ: project_dir 、source_dirs (ソースディレクトリのリスト)。 |
list_smali_directories(project_dir) |
プロジェクト内のすべてのsmaliディレクトリをリストします。パラメータ: project_dir 。 |
list_smali_files(project_dir, smali_dir, package_prefix) |
特定のディレクトリ内のsmaliファイルをリストします。パラメータ: project_dir 、smali_dir (デフォルト: "smali")、package_prefix (オプションのフィルター)。 |
get_smali_file(project_dir, class_name) |
特定のsmaliファイルの内容を取得します。パラメータ: project_dir 、class_name (完全修飾クラス名)。 |
modify_smali_file(project_dir, class_name, new_content, create_backup) |
smaliファイルの内容を変更します。パラメータ: project_dir 、class_name 、new_content 、create_backup (デフォルト: True)。 |
list_resources(project_dir, resource_type) |
プロジェクト内のリソースをリストします。パラメータ: project_dir 、resource_type (オプション、例えば "layout"、"drawable")。 |
get_resource_file(project_dir, resource_type, resource_name) |
リソースファイルの内容を取得します。パラメータ: project_dir 、resource_type 、resource_name 。 |
modify_resource_file(project_dir, resource_type, resource_name, new_content, create_backup) |
リソースファイルの内容を変更します。パラメータ: project_dir 、resource_type 、resource_name 、new_content 、create_backup (デフォルト: True)。 |
search_in_files(project_dir, search_pattern, file_extensions, max_results) |
プロジェクトファイル内を検索します。パラメータ: project_dir 、search_pattern 、file_extensions (デフォルト: [".smali", ".xml"])、max_results (デフォルト: 100)。 |
get_apktool_yml(project_dir) |
デコードされたプロジェクトからapktool.ymlの情報を取得します。パラメータ: project_dir 。 |
パラメータの注意事項:
project_dir
: APKToolプロジェクトディレクトリのパスapk_path
: APKファイルのパスclass_name
: 完全修飾クラス名(例えば "com.example.MyClass")resource_type
: リソースディレクトリの名前(例えば "layout"、"drawable"、"values")create_backup
: 変更前にバックアップを作成するかどうか(デフォルト: True)file_extensions
: 検索対象のファイル拡張子のリスト(デフォルト: [".smali", ".xml"])
MobSF MCP
✨ 主なAPI機能:
API | 説明 |
---|---|
uploadFile(file) |
モバイルアプリケーションファイル(APK、IPA、またはAPPX)をMobSFにアップロードしてセキュリティ分析を行います。 |
getScanLogs(hash) |
以前に分析されたモバイルアプリケーションの詳細なスキャンログを取得します。 |
getJsonReport(hash) |
JSON形式の包括的なセキュリティ分析レポートを生成して取得します。 |
getJsonReportSection(hash, section) |
JSONレポートの特定のセクションを取得します。 |
getJsonReportSections(hash) |
JSONレポート内のすべての利用可能なセクション名を取得します。 |
getRecentScans(page, pageSize) |
最近実行されたセキュリティスキャンのリストを取得します。 |
searchScanResult(query) |
ハッシュ、アプリ名、パッケージ名、またはファイル名でスキャン結果を検索します。 |
deleteScan(hash) |
特定の分析のスキャン結果を削除します。 |
getScorecard(hash) |
MobSFアプリケーションセキュリティスコアカードを取得します。 |
generatePdfReport(hash) |
PDFセキュリティレポートを生成します(Base64エンコードされたPDFを返します)。 |
viewSource(hash, file, type) |
分析されたアプリケーションのソースファイルを表示します。 |
getScanTasks() |
スキャンタスクキューを取得します(非同期スキャンキューが有効になっている必要があります)。 |
compareApps(hash1, hash2) |
2つのアプリケーション間のセキュリティ分析結果を比較します。 |
suppressByRule(hash, type, rule) |
ルールIDごとに検出結果を抑制します。 |
suppressByFiles(hash, type, rule) |
ファイルごとに検出結果を抑制します。 |
listSuppressions(hash) |
スキャンのすべての抑制を表示します。 |
deleteSuppression(hash, type, rule, kind) |
特定の抑制を削除します。 |
listAllHashes(page, pageSize) |
すべてのレポートのMD5ハッシュ値を取得します。 |
📊 レポートセクションAPI:
MobSFは、分析レポートのさまざまな部分にアクセスするための詳細なセクション固有のAPIを提供します。各セクションはgetJsonSection_{section}(hash)
を使用してアクセスできます。
セクションカテゴリ | 利用可能なセクション |
---|---|
基本情報 | version 、title 、file_name 、app_name 、app_type 、size 、md5 、sha1 、sha256 |
アプリケーション情報 | package_name 、main_activity 、version_name 、version_code |
コンポーネント | exported_activities 、browsable_activities 、activities 、receivers 、providers 、services |
SDK情報 | target_sdk 、max_sdk 、min_sdk 、libraries |
セキュリティ分析 | permissions 、malware_permissions 、certificate_analysis 、manifest_analysis 、network_security 、binary_analysis |
コード分析 | file_analysis 、android_api 、code_analysis 、niap_analysis 、permission_mapping |
コンテンツ分析 | urls 、domains 、emails 、strings 、firebase_urls 、secrets |
追加情報 | exported_count 、apkid 、behaviour 、trackers 、playstore_details 、sbom |
セキュリティメトリックス | average_cvss 、appsec 、virus_total |
システム情報 | base_url 、dwd_dir 、host_os |
パラメータの注意事項:
file
: モバイルアプリケーションファイル(APK/IPA/APPX)のパスhash
: 分析されたアプリケーションのMD5ハッシュsection
: 取得するレポートセクションの名前page
: ページ付き結果のページ番号pageSize
: ページあたりのアイテム数type
: ファイルタイプ(apk/ipa/studio/eclipse/ios)rule
: 抑制管理のためのルールIDkind
: 抑制の種類(ルール/ファイル)
FlowDroid MCP
✨ 主なAPI機能:
API | 説明 |
---|---|
run_flowdroid_analysis(apk_path, output_dir) |
APKファイルに対してFlowDroidの汚染分析を実行します。パラメータ: apk_path (APKファイルのパス)、output_dir (オプションの出力ディレクトリ)。 |
get_flowdroid_sources(analysis_dir) |
FlowDroidの分析結果から汚染ソースを抽出します。パラメータ: analysis_dir (分析出力ディレクトリ)。 |
get_flowdroid_sinks(analysis_dir) |
FlowDroidの分析結果から汚染シンクを抽出します。パラメータ: analysis_dir (分析出力ディレクトリ)。 |
clean_flowdroid_workspace() |
新しい分析の準備として、FlowDroidのワークスペースディレクトリをクリーンアップします。 |
パラメータの注意事項:
apk_path
: 分析するAPKファイルのパスoutput_dir
: オプションの出力ディレクトリ(デフォルトはworkspace/apk_name)analysis_dir
: FlowDroid分析出力ディレクトリのパス
🧠 多エキスパート決定モデル
このプロジェクトでは、「多エキスパート決定」モデルを使用して、APKのセキュリティに関する包括的な分析を行います。このモデルは、複数のエキスパートの独立した判断と集団的な意思決定の考え方を取り入れ、5つの主流の逆解析ツール(JEB、JADX、APKTool、FlowDroid、MobSF)のMCPインターフェースを組み合わせることで、脆弱性発見の網羅性と結果の信頼性を大幅に向上させます。
分析プロセスの概要
- 複数のエキスパートが独立して回答
- 5つの逆解析ツール(MCP)が同じAPKに対して独立して静的分析を行い、それぞれの脆弱性レポートを自動生成します。
- 各ツールは「エキスパート」として、異なる視点と技術的な詳細から潜在的なセキュリティ問題を独立して発見します。
- 大規模モデルによる頻度統計とランキング
- 大規模モデルを使用して、すべてのツールから出力された脆弱性を統合、重複排除、内容分析し、5つのツールレポート内で各脆弱性の頻度を統計し、そのソースを記録します。
- すべての脆弱性を出現頻度でランキングします。頻度が高いほど、信頼性が高くなります。
- ローカル優先度の選別と振り分け
- 上位60%の高頻度脆弱性(つまり、5つのツールでより頻繁に出現し、より信頼性の高い脆弱性)は自動的にローカルに保持されます。
- 下位40%の脆弱性は2つのカテゴリに分けられます。
- MobSFソースがない: つまり、他の逆解析ツールのみによって発見された脆弱性はすべて保持されます。
- MobSFソースがある: つまり、MobSFレポートにのみ出現する低頻度脆弱性は、大規模モデルに渡されてその危険性がさらに評価され、高リスクの脆弱性のみが保持されます。
- 最終的な包括的統合 3つ目のステップでローカルに統合されたすべての高優先度脆弱性、独自の脆弱性、および大規模モデルによって高リスクと評価されたMobSF脆弱性が統合され、最終的な包括的脆弱性分析レポートが生成されます。
CrossValidation_APKAnalysis MCP
✨ 主なAPI機能:
API | 説明 |
---|---|
analyze_with_jeb/jadx/apktool/flowdroid/mobsf(apk_path) |
JEB/JADX/APKTool/FlowDroid/MobSF MCPツールを使用してAPKを独立して分析し、標準化された脆弱性レポートを生成します。パラメータ: apk_path (APKファイルのパス)。 |
combine_analysis_results(report_paths) |
すべての5つのツールからのレポートを統合し、各脆弱性の頻度とソースをカウントし、コンポーネントの重みでソートして、予備的な包括的レポートを生成します。パラメータ: report_paths (レポートファイルパスのリスト)。 |
split_vulnerabilities_by_priority(combined_report_path) |
脆弱性を頻度に基づいて3つのカテゴリに分けます: 高優先度(上位60%)、MobSFソースのない低優先度、およびMobSFソースのみの低優先度。それぞれを別々に保存します。パラメータ: combined_report_path (統合されたレポートのパス)。 |
assess_vulnerability_risk(mobsf_low_priority_path) |
MobSFのみからの低優先度脆弱性について、大規模モデルを呼び出してリスク評価を行い、高リスクの脆弱性のみを保持します。パラメータ: mobsf_low_priority_path (MobSFのみの低優先度脆弱性のパス)。 |
integrate_priority_reports(high_priority_path, unique_low_priority_path, high_risk_mobsf_path) |
高優先度、独自の低優先度、および高リスクのMobSF脆弱性を統合して、最終的な包括的分析レポートを生成します。パラメータ: high_priority_path 、unique_low_priority_path 、high_risk_mobsf_path (それぞれのレポートのパス)。 |
パラメータの注意事項:
apk_path
: 分析対象のAPKファイルの絶対パス。report_paths
: 各ツールからの標準化されたレポートファイルパスのリスト。combined_report_path
: 統合された予備的な包括的レポートのパス。mobsf_low_priority_path
: MobSFのみからの低優先度脆弱性のパス。high_priority_path
、unique_low_priority_path
、high_risk_mobsf_path
: 異なる優先度の脆弱性レポートのパス。
🖥️ VSCode Cline拡張機能の設定
このプロジェクトをVSCodeのcline拡張機能とともに使用するには、clineの設定ファイルに以下の設定を追加します。
{
"mcpServers": {
"apk_analysis": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"CrossValidation_APKAnalysis.py"
],
"transportType": "stdio"
}
}
}
以上のプロセスにより、このプロジェクトは複数のツール、複数の視点からの脆弱性発見と自動化された意思決定を実現し、分析結果の網羅性、精度、および実用的価値を大幅に向上させました。
🔧 技術詳細
このプロジェクトでは、複数の主流の逆解析ツールを統合し、MCP標準APIインターフェースを介してセキュリティ分析を行います。各ツールの機能とAPIを組み合わせることで、APKの脆弱性を網羅的に検出することができます。また、「多エキスパート決定」モデルを使用することで、脆弱性発見の信頼性を向上させます。
📄 ライセンス
このプロジェクトはApache License 2.0の下でライセンスされています。詳細については、LICENSEファイルを参照してください。
🙏 謝辞
このプロジェクトは、いくつかの優れたオープンソースツールとプロジェクトをベースに構築され、統合されています。
特別な感謝を表します:
- 統合されたすべてのツールの開発者とメンテナー
- 継続的な貢献を行っているオープンソースコミュニティ
- このプロジェクトの改善に貢献してくれたすべてのコントリビューター
⚠️ 免責事項と法的通知
このツールセットは、セキュリティ研究者、ペネトレーションテスター、および開発者が正当なセキュリティテストと分析目的のみに使用するために設計されています。ユーザーは以下のことを行う必要があります。
- 自分が所有するか、明示的なテスト許可を得たアプリケーションのみを分析する。
- すべての適用される法律と規制に準拠する。
- 知的財産権とサービス利用規約を尊重する。
- ツールを責任を持って、倫理的に使用する。
ユーザーは、このツールの使用が以下に準拠することを確認する必要があります。
- 地域および国際的な法律
- ソフトウェアのライセンス契約
- 分析対象アプリケーションのサービス利用規約
- データ保護とプライバシー規制
🤝 コントリビュート
コミュニティからの貢献を大歓迎します!バグの修正、ドキュメントの改善、新機能の追加、または機能強化の提案など、あなたの助けを大切にしています。
- 🐛 バグや問題を報告する
- 💡 新しい機能や改善案を提案する
- 📝 ドキュメントを改善する
- 🔍 コードとプルリクエストをレビューする
- 💻 プルリクエストを提出する
私たちは、一緒にこのプロジェクトをより良いものにすることを目指しています。あなたの貢献により、このツールがセキュリティ研究コミュニティ全体にとってより強力で有用なものになります。
代替品








