detecting-mobile-malware-behavior について
不審な Android・iOS アプリを調べるセキュリティ分析担当者向けの、防御的なモバイルマルウェア分析スキルです。静的分析、実行時監視、ネットワーク通信分析を組み合わせて悪意ある挙動を調べます。
主な機能
- 01静的指標の分析
- 02MobSF による自動スキャン
- 03ネットワーク挙動の監視
- 04Frida による実行時監視
- 05マルウェア種別の分類
活用シーン
- 01不審な APK・IPA サンプルのトリアージ
- 02モバイルアプリによるデータ流出の調査
- 03企業のモバイル端末における不正指標の監視
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-mobile-malware-behaviorインストール後、Claude Code で/detecting-mobile-malware-behaviorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
モバイルマルウェアの挙動を検出する
使用する場面
次のような場合に、このスキルを使用します:
- ユーザーから提出された、またはインシデント対応中に発見された不審なモバイルアプリを分析する
- 企業のモバイル端末群を監視し、悪意のあるアプリの兆候を検出する
- APK/IPA サンプルのマルウェアトリアージを実施する
- モバイルアプリによるデータ流出や不正なデバイスアクセスを調査する
マルウェアの作成、強化、配布には、このスキルを使用しないでください。このスキルは防御的な分析のみを目的としています。
前提条件
- 隔離された分析環境(専用デバイスまたはエミュレーター。本番ネットワークには接続しないこと)
- 自動静的・動的解析用の MobSF
- 実行時の挙動監視用の Frida/Objection
- ネットワークトラフィックのキャプチャ用の Wireshark/tcpdump
- 安全に実行するための Android エミュレーター(AVD)または Genymotion
- ハッシュ検索用の VirusTotal API キー
ワークフロー
ステップ 1:静的な兆候の分析
# Hash the sample
sha256sum suspicious.apk
# Check VirusTotal
curl -s "https://www.virustotal.com/api/v3/files/<SHA256>" \
-H "x-apikey: <VT_API_KEY>" | jq '.data.attributes.last_analysis_stats'
# Extract permissions from AndroidManifest.xml
aapt dump permissions suspicious.apk
# High-risk permission combinations:
# READ_SMS + INTERNET = SMS stealer
# RECEIVE_SMS + SEND_SMS = SMS interceptor/banker trojan
# ACCESSIBILITY_SERVICE + INTERNET = overlay attack capability
# CAMERA + RECORD_AUDIO + INTERNET = spyware
# DEVICE_ADMIN + INTERNET = ransomware capability
# READ_CONTACTS + INTERNET = contact exfiltration
ステップ 2:MobSF による自動マルウェアスキャン
# Upload to MobSF
curl -F "[email protected]" http://localhost:8000/api/v1/upload \
-H "Authorization: <API_KEY>"
# Review malware indicators in report:
# - Hardcoded C2 server addresses
# - Dynamic code loading (DexClassLoader)
# - Reflection-based API calls (to evade static analysis)
# - Encrypted/obfuscated payloads
# - Root detection (malware often checks for root)
# - Anti-emulator checks (malware evades sandbox)
ステップ 3:ネットワーク挙動の監視
# Start packet capture on emulator
tcpdump -i any -w malware_traffic.pcap
# Or use mitmproxy for HTTP/HTTPS
mitmproxy --mode transparent
# Monitor for:
# - DNS lookups to suspicious/newly registered domains
# - Connections to known C2 infrastructure
# - Data exfiltration patterns (large POST requests)
# - Beaconing behavior (regular interval connections)
# - Non-standard ports and protocols
# - Domain Generation Algorithm (DGA) patterns
ステップ 4:Frida による実行時の挙動監視
// monitor_malware.js - Comprehensive behavior monitoring
Java.perform(function() {
// Monitor SMS access
var SmsManager = Java.use("android.telephony.SmsManager");
SmsManager.sendTextMessage.overload("java.lang.String", "java.lang.String",
"java.lang.String", "android.app.PendingIntent", "android.app.PendingIntent")
.implementation = function(dest, sc, text, sent, delivery) {
console.log("[SMS] Sending to: " + dest + " Text: " + text);
// Allow or block based on analysis needs
return this.sendTextMessage(dest, sc, text, sent, delivery);
};
// Monitor file operations
var FileOutputStream = Java.use("java.io.FileOutputStream");
FileOutputStream.$init.overload("java.lang.String").implementation = function(path) {
console.log("[FILE-WRITE] " + path);
return this.$init(path);
};
// Monitor network connections
var URL = Java.use("java.net.URL");
URL.openConnection.overload().implementation = function() {
console.log("[NET] " + this.toString());
return this.openConnection();
};
// Monitor dynamic code loading
var DexClassLoader = Java.use("dalvik.system.DexClassLoader");
DexClassLoader.$init.implementation = function(dexPath, optDir, libPath, parent) {
console.log("[DEX-LOAD] Loading: " + dexPath);
return this.$init(dexPath, optDir, libPath, parent);
};
// Monitor command execution
var Runtime = Java.use("java.lang.Runtime");
Runtime.exec.overload("java.lang.String").implementation = function(cmd) {
console.log("[EXEC] " + cmd);
return this.exec(cmd);
};
// Monitor camera/audio access
var Camera = Java.use("android.hardware.Camera");
Camera.open.overload("int").implementation = function(id) {
console.log("[CAMERA] Camera opened: " + id);
return this.open(id);
};
// Monitor content provider access (contacts, call log)
var ContentResolver = Java.use("android.content.ContentResolver");
ContentResolver.query.overload("android.net.Uri", "[Ljava.lang.String;",
"java.lang.String", "[Ljava.lang.String;", "java.lang.String")
.implementation = function(uri, proj, sel, selArgs, sort) {
console.log("[QUERY] " + uri.toString());
return this.query(uri, proj, sel, selArgs, sort);
};
console.log("[*] Malware behavior monitor active");
});
ステップ 5:マルウェアの種類を分類する
観察された挙動に基づいて、サンプルを分類します:
| 挙動パターン | マルウェアの種類 |
|---|---|
| SMS の傍受 + C2 通信 | バンキング型トロイの木馬 |
| カメラ/マイクへのアクセス + データのアップロード | スパイウェア/ストーカーウェア |
| ファイルの暗号化 + 身代金要求メッセージの表示 | モバイルランサムウェア |
| 広告の挿入 + クリック詐欺のトラフィック | アドウェア |
| ルートエクスプロイト + 永続化 | ルートキット |
| 連絡先の収集 + SMS スパム | ワーム/SMS スパマー |
| オーバーレイ攻撃 + 認証情報の窃取 | 認証情報窃取型マルウェア |
| 暗号資産マイニングのネットワーク活動 | クリプトジャッカー |
主要な概念
| 用語 | 定義 |
|---|---|
| 動的コード読み込み | 実行時に外部ソースから実行可能コードを読み込むことです。マルウェアが静的解析を回避するためによく使用します |
| C2 ビーコン | マルウェアがコマンド&コントロールサーバーに定期的に通信することです。周期的なタイミングパターンで識別できます |
| DGA | 耐障害性のある C2 インフラストラクチャ向けに、擬似ランダムなドメイン名を生成するドメイン生成アルゴリズムです |
| オーバーレイ攻撃 | 正規アプリの上に偽の UI を表示して認証情報を取得する攻撃です。SYSTEM_ALERT_WINDOW 権限が必要です |
| アンチエミュレーター | マルウェアがサンドボックス/エミュレーター環境を検出し、悪意のある挙動を抑制するために使用する技術です |
ツールとシステム
- MobSF:初期のマルウェアトリアージ向けの自動静的・動的解析
- VirusTotal:複数エンジンによるマルウェアスキャンとハッシュのレピュテーション検索
- Frida:メソッドフックによる実行時の挙動監視
- Wireshark:C2 通信パターンを把握するためのネットワークトラフィック分析
- Cuckoo Sandbox / CuckooDroid:Android サンプル向けの自動マルウェア解析サンドボックス
よくある落とし穴
- 解析回避:高度なマルウェアはエミュレーター、デバッガー、Frida を検出します。正確に分析するには、実機とステルス性の高い Frida 設定を使用してください。
- 時間差で作動するペイロード:遅延後や特定のトリガーが発生した場合にのみ作動するマルウェアもあります。長時間監視し、さまざまな条件をシミュレートしてください。
- 暗号化された C2:暗号化通信を使用するマルウェアを観察するには、TLS インターセプトまたはメモリ検査が必要です。
- 多段階ペイロード:最初の APK は無害でも、後から悪意のあるペイロードをダウンロードする場合があります。動的コード読み込みとファイルのダウンロードを監視してください。
コメント
Markdown 対応