mcpField
W
workers-app-tester

workers-app-tester

github.com/workersioセキュリティ208112 回インストール23 週間前に更新
リポジトリ

workers-app-tester について

Workers App Tester は、root 化端末で Android アプリのセキュリティテストを行うスキルです。UI 操作、通信傍受、APK の静的解析、Frida による実行時解析を組み合わせます。

主な機能

  1. 01ADB によるアプリ UI 操作
  2. 02ネットワーク通信の取得と確認
  3. 03エンドポイントと脆弱性の分析
  4. 04APK の逆コンパイルと静的解析
  5. 05Frida による実行時解析

活用シーン

  1. 01Android アプリの認証フローをテスト
  2. 02API 通信の情報露出を調査
  3. 03APK のコンポーネントや埋め込みシークレットを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/workersio/skills --skill workers-app-tester

インストール後、Claude Code で/workers-app-testerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
frida.md
testing-methodology.md
references/agents/
reverse-agent.md
scripts/
analyze.py
bypass.js
capture.py
traffic.py
ui.py

詳細

Workers App Tester

root 化されたデバイスを通じて Android アプリのペネトレーションテストを行います。デバイスの UI を操作し、ネットワークトラフィックを傍受し、Frida を使用してランタイム解析を行います。

詳細なガイドが必要な場合は、必要に応じて以下を読み込んでください。

  • references/testing-methodology.md — IDOR、認証、情報漏えい、ローカルストレージ、ディープリンク、エクスポートされたコンポーネント、ログ記録
  • references/frida.md — SSL バイパス、root バイパス、Codeshare スクリプト、フックのパターン、カスタム証明書
  • agents/reverse-agent.md — APK 逆コンパイルのサブエージェント。エンドポイント、シークレット、コンポーネントを特定するため、コードベースを読み込みます

セッションのセットアップ

1. 対象を選択する
adb shell pm list packages -3
adb shell dumpsys activity activities | grep -m 1 -E 'topResumedActivity=|ResumedActivity:|mFocusedApp='
2. セッションディレクトリを作成する
SESSION_DIR=/tmp/workers-app-tester-$(date +%Y%m%d-%H%M%S)
mkdir -p "$SESSION_DIR"
3. トラフィックの傍受を開始する

認証ヘッダーがマスキングされず、完全な状態で記録されるように PRESERVE_AUTH=1 を設定します。

adb shell settings put global http_proxy 10.0.2.2:8080

ANDROID_APP_TESTER_OUT_DIR="$SESSION_DIR" \
ANDROID_APP_TESTER_PACKAGE="<package>" \
ANDROID_APP_TESTER_PRESERVE_AUTH=1 \
nohup mitmdump --set block_global=false --listen-host 0.0.0.0 --listen-port 8080 \
  -s scripts/capture.py >"$SESSION_DIR/mitmdump.log" 2>&1 &
echo $! >"$SESSION_DIR/mitmdump.pid"

物理デバイスの場合は、10.0.2.2 をホストの IP アドレスに置き換えてください。

4. アプリを起動する
adb shell am force-stop <package> || true
adb shell monkey -p <package> -c android.intent.category.LAUNCHER 1
5. HTTPS トラフィックが表示されない場合

アプリは SSL ピンニングを使用しています。references/frida.md を参照してください。frida-server を起動してから、bypass.js を使ってアプリを起動します。

静的解析

パッケージ名とセッションディレクトリを指定して、reverse-agent に処理を依頼します。以下を実行します。

  1. デバイスから APK を取得する
  2. apktool で逆コンパイルする(マニフェスト、smali、リソース)
  3. ハードコードされたシークレット、API エンドポイント、セキュリティ上のアンチパターンを grep で検索する
  4. 興味深いファイルを読み込み、より詳しいコンテキストを確認する

返される内容:エクスポートされたコンポーネント、ディープリンクのスキーム、API エンドポイント、ハードコードされたシークレット、セキュリティ上の問題。

これらの調査結果を使って、The Loop で対象を絞ったテストを行います。

The Loop

1. 観察する
python3 scripts/ui.py

操作可能な要素を番号付きで簡潔に一覧表示します。

[1] "Sign In" btn @ (540,1200) bounds=[380,1150][700,1250] clickable
[2] "Email" input @ (540,400) bounds=[100,350][980,450] focusable
2. 操作する

1 サイクルにつき操作は 1 つです。要素 [1] をタップします。

adb shell input tap 540 1200

テキストフィールドの場合は、タップしてから入力します。

adb shell input tap 540 400
adb shell input text "[email protected]"
3. 傍受する
python3 scripts/traffic.py --input "$SESSION_DIR/traffic.jsonl" --since-seconds 15 --limit 10

ヘッダーと本文を含める場合:

python3 scripts/traffic.py --input "$SESSION_DIR/traffic.jsonl" --since-seconds 15 --show-headers --show-body
4. 次の手順を決めて繰り返す

セキュリティ解析

アプリの主要なフローを一通り実行した後、アナライザーを実行します。

python3 scripts/analyze.py --input "$SESSION_DIR/traffic.jsonl" --mode full

個別のモード:endpoints、idor、auth、exposure、headers。

各調査結果への対処方法については、references/testing-methodology.md を参照してください。

ADB リファレンス

操作コマンド
タップadb shell input tap <x> <y>
入力adb shell input text "hello%sworld" (%s = スペース)
下にスクロールadb shell input swipe 540 1500 540 500 300
上にスクロールadb shell input swipe 540 500 540 1500 300
戻るadb shell input keyevent KEYCODE_BACK
ホームadb shell input keyevent KEYCODE_HOME
Enteradb shell input keyevent KEYCODE_ENTER
長押しadb shell input swipe <x> <y> <x> <y> 1000
アプリを起動adb shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1
強制停止adb shell am force-stop <pkg>

セッションの終了

kill "$(cat "$SESSION_DIR/mitmdump.pid")" 2>/dev/null || true
adb shell settings delete global http_proxy
adb shell "su -c 'pkill frida-server'" 2>/dev/null || true

ルール

  • 1 サイクルにつき UI 操作は 1 つです。観察し、操作し、傍受してから、次の手順を決めてください。
  • 操作する前に必ず ui.py を実行し、座標が現在の画面に合っていることを確認してください。
  • 作業が終わったら、必ずセッションを終了してください。プロキシの設定は再起動後も維持されます。
  • 調査結果を記録してください:エンドポイント、脆弱性の種類、再現手順、証拠。
  • コマンドでは絶対に sleep を使用しないでください。sleep 1、sleep 2、sleep && command も禁止です。コマンドは直接実行してください。ui.py が独自にタイミングを処理します。必要に応じて && で連結してください。
  • 迅速に作業してください。操作の間に不要な遅延を入れないでください。

同梱スクリプト

スクリプト用途
scripts/ui.pyスマート UI パーサー。空間的な重複排除を行い、操作可能な要素に絞り込みます。
scripts/capture.pymitmproxy アドオン。JSONL にログを記録します。認証ヘッダーを保持するには、PRESERVE_AUTH=1 を設定します。
scripts/traffic.pyトラフィックビューアー。--since-seconds、--show-headers、--show-body を使用できます。
scripts/analyze.pyセキュリティアナライザー。モードは endpoints、idor、auth、exposure、headers、full です。
scripts/bypass.jsSSL ピンニングのバイパス。TrustManagerImpl、OkHttp3、SSLContext、Conscrypt に対応します。

コメント