テストツール

セキュリティテストを実行するためにさまざまなツールが利用できます。リクエストやレスポンスを操作したり、アプリを逆コンパイルしたり、実行中のアプリの挙動を調査したり、テストケースを自動化したりできます。

MSTG プロジェクトには、以下のいずれのツールにこだわりを持ちませんし、いずれのツールの宣伝や販売にもこだわりません。以下のすべてのツールは「現役」であるかどうかを確認しています。つまり最近更新がプッシュされていることを意味しています。それでも、すべてのツールが執筆者により使用やテストされたわけではありませんが、モバイルアプリを解析するときにはおそらく役に立つかもしれません。リストはアルファベット順にソートされています。このリストは商用ツールにも目を向けています。 免責事項: 執筆時点では、MSTG の例で使用しているツールが適切に機能していることを確認しています。但し、ホストコンピュータとテストデバイスの両方の OS バージョンによってはツールが壊れているか正しく動作しない場合があります。ルート化/脱獄済みデバイスを使用しているかどうか、ルート化/脱獄手法の特定バージョンを使用しているかどうか、ツールの特定バージョンを使用しているかどうかによって、ツールの機能はさらに狭まる可能性があります。MSTG はツールの動作状態について一切責任を負いません。壊れたツールや例を見つけた場合には、ツールのオリジナルページ、GitHub issues ページなど、で問題を検索または提出してください。

モバイルアプリケーションセキュリティテストディストリビューション

  • Androl4b: Android アプリケーションの評価するための仮想マシンです。リバースエンジニアリングとマルウェア解析を実行します。 - https://github.com/sh4hin/Androl4b

  • Android Tamer: Android セキュリティ専門家向けの Debian ベースの仮想/ライブプラットフォームです。 - https://androidtamer.com/

  • Mobile Security Toolchain: macOS を実行しているホストコンピュータで Android と iOS の両方に対して、このセクションで説明したツールの多くをインストールするために使用されるプロジェクトです。このプロジェクトは Ansible を介してツールをインストールします。 - https://github.com/xebia/mobilehacktools

オールインワンモバイルセキュリティフレームワーク

  • AppMon: ネイティブ macOS, iOS, android アプリのシステム API コールを監視および改竄するための自動化フレームワークです。 - https://github.com/dpnishant/appmon/

  • Mobile Security Framework (MobSF): 静的解析および動的解析を実行できるモバイルペンテストフレームワークです。 - https://github.com/ajinabraham/Mobile-Security-Framework-MobSF

  • objection: iOS および Android の両方に対応し、Frida を使用することにより、脱獄済みデバイスやルート化デバイスを必要としない実行時モバイルセキュリティ評価フレームワークです。 - https://github.com/sensepost/objection

静的ソースコード解析 (商用ツール)

動的解析および実行時解析

  • Frida: 開発者、リバースエンジニア、セキュリティ研究者向けの動的計装ツールキットです。クライアントサーバーモデルを使用して動作し、Android および iOS の上で実行中のプロセスにインジェクトします。 - https://www.frida.re

  • Frida CodeShare: Frida スクリプトを公開しているプロジェクトで、モバイルアプリのクライアント側のセキュリティコントロール (SSL ピンニングなど) をバイパスするのに役立ちます。 - https://codeshare.frida.re/

  • NowSecure Workstation (商用ツール): モバイルアプリの脆弱性評価およびペネトレーションテスト用に事前設定されたハードウェアおよびソフトウェアキットです。 - https://www.nowsecure.com/solutions/power-tools-for-security-analysts/

  • r2frida: radare2 の強力なリバースエンジニアリング機能と Frida の動的計装ツールキットをマージしたプロジェクトです。 - https://github.com/nowsecure/r2frida

リバースエンジニアリングおよび静的解析

  • Binary ninja: 複数の実行可能ファイル形式に対して使用できるマルチプラットフォーム逆アセンブラです。IR (中間表現) リフティングが可能です。 - https://binary.ninja/

  • Ghidra: 国家安全保障局 (NSA) により開発されたツールのオープンソースリバースエンジニアリングスイートです。主な機能として逆アセンブリ、アセンブリ、逆コンパイル、グラフ表示、スクリプティングに対応しています。 - https://ghidra-sre.org/

  • HopperApp (商用ツール): 32/64 ビット Intel Mac, Linux, Windows, iOS 実行可能ファイルの逆アセンブル、逆コンパイル、デバッグに使用される、macOS および Linux 用のリバースエンジニアリングツールです。 - https://www.hopperapp.com/

  • IDA Pro (商用ツール): Windows, Linux, macOS でホストされているマルチプロセッサ逆アセンブラおよびデバッガです。 - https://www.hex-rays.com/products/ida/index.shtml

  • radare2: radare2 は Unix ライクなリバースエンジニアリングフレームワークおよびコマンドラインツールです。 - https://www.radare.org/r/

  • Retargetable Decompiler (RetDec): LLVM をベースとするオープンソースマシンコード逆コンパイラです。スタンドアロンプログラムとしても、IDA Pro や radare2 のプラグインとしても使用できます。 - https://retdec.com/

Android 用ツール

リバースエンジニアリングおよび静的解析

  • Androguard: python ベースのツールで、Android アプリの逆アセンブルや逆コンパイルに使用できます。 - https://github.com/androguard/androguard

  • Android Backup Extractor: adb backup (ICS 以降) で作成された Android バックアップを抽出および再パックするユーティリティです。主に AOSP の BackupManagerService.java をベースとしています。 - https://github.com/nelenkov/android-backup-extractor

  • Android Debug Bridge (adb): エミュレータインスタンスや接続された Android デバイスと通信するために使用される多目的コマンドラインツールです。 - https://developer.android.com/studio/command-line/adb.html

  • apktool: サードパーティ製でクローズなバイナリ Android アプリをリバースエンジニアリングするためのツールです。リソースをほぼ元の形にデコードし、改変後に再構築することができます。 - https://github.com/iBotPeaches/Apktool

  • android-classyshark: Android 開発者向けのスタンドアロンのバイナリインスペクションツールです。 - https://github.com/google/android-classyshark

  • ByteCodeViewer: Java 8 Jar および Android APK のリバースエンジニアリングスイート (デコンパイラ、エディタ、デバッガなど) です。 - https://bytecodeviewer.com/

  • ClassNameDeobfuscator: apktool により生成される .smali ファイルを解析して .source アノテーション行を抽出するシンプルなスクリプトです。 - https://github.com/HamiltonianCycle/ClassNameDeobfuscator

  • FindSecurityBugs: FindSecurityBugs は SpotBugs の拡張機能であり、Java アプリケーション向けのセキュリティルールを含んでいます。 - https://find-sec-bugs.github.io

  • Jadx (Dex to Java Decompiler): Android DEX および APK ファイルから Java ソースコードを生成するコマンドラインおよび GUI ツールです。 - https://github.com/skylot/jadx

  • Oat2dex: .oat ファイルから .dex ファイルに変換するためのツールです。 - https://github.com/testwhat/SmaliEx

  • Qark: セキュリティに関連する Android アプリケーション脆弱性をソースコードまたはパッケージ化された APK のいずれかで探索するように設計されたツールです。 - https://github.com/linkedin/qark

  • Sign: Android テスト証明書で自動的に APK に署名する Java JAR 実行形式ファイル (Sign.jar) です。 - https://github.com/appium/sign

  • Simplify: Classes.dex 内の android パッケージを逆難読化するツールです。Dex2jar や JD-GUI を使用して DEX ファイルの内容を抽出できます。 - https://github.com/CalebFenton/simplify

  • SUPER: Windows, macOS, Linux で使用できるコマンドラインアプリケーションで、APK ファイルを解析して脆弱性を探します。 - https://github.com/SUPERAndroidAnalyzer/super

  • SpotBugs: Java 用の静的解析ツールです。 - https://spotbugs.github.io/

動的解析および実行時解析

  • Android Tcpdump: Android 用のコマンドラインパケットキャプチャユーティリティです。 - https://www.androidtcpdump.com

  • Drozer: アプリの役割を想定し、Dalvik VM と他のアプリの IPC エンドポイントや基礎をなす OS とのやり取りを行うことで、アプリやデバイスのセキュリティ脆弱性を検索できるツールです。 - https://www.mwrinfosecurity.com/products/drozer/

  • Inspeckage: Android アプリの動的解析を提供するために開発されたツールです。Android API の関数にフックを適用することで、Inspeckage は Android アプリケーションが実行時に何をしているのかを理解するのに役立ちます。 - https://github.com/ac-pm/Inspeckage

  • jdb: ブレークポイントを設定したりアプリケーション変数を表示したりできる Java デバッガです。jdb は JDWP プロトコルを使用します。 - https://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

  • logcat-color: Android SDK の adb logcat コマンドに代わるカラフルで高度な設定が可能なツールです。 - https://github.com/marshall/logcat-color

  • VirtualHook: Android ART(>=5.0) のアプリケーション用のフッキングツールです。VirtualApp をベースにしており、フックを挿入するためにルート権限は必要ありません。 - https://github.com/rk700/VirtualHook

  • Xposed Framework: Android アプリケーションパッケージ (APK) の改変や再フラッシュを行わずに、実行時にシステムやアプリケーションのアスペクトや動作を変更できるフレームワークです。 - https://forum.xda-developers.com/xposed/xposed-installer-versions-changelog-t2714053

ルート検出と証明書ピンニングのバイパス

iOS 用ツール

iDevice 上のファイルシステムへのアクセス

脱獄済み iPhone に SSH できるようになると、以下のような FTP クライアントを使用してファイルシステムをブラウズすることができます。

リバースエンジニアリングおよび静的解析

動的解析および実行時解析

  • bfinject: 任意の dylib を実行中の App Store アプリにロードするツールです。App Store アプリの復号化のサポートが組み込まれており、iSpy と Cycript がバンドルされています。 - https://github.com/BishopFox/bfinject

  • BinaryCookieReader: バイナリ Cookies.binarycookies ファイルからすべてのクッキーをダンプするツールです。 - https://securitylearn.net/wp-content/uploads/tools/iOS/BinaryCookieReader.py

  • Burp Suite Mobile Assistant: 証明書ピンニングをバイパスし、アプリにインジェクトできるツールです。 - https://portswigger.net/burp/help/mobile_testing_using_mobile_assistant.html

  • Cycript: 構文強調表示とタブ補完機能を備えた対話型コンソールを通じて Objective-C および JavaScript 構文をハイブリッドに使用して、開発者が iOS もしくは macOS 上で実行中のアプリケーションを探索および改変できるツールです。 - http://www.cycript.org

  • Frida-cycript: Frida が提供する新しいランタイム Mjølner を有する Cycript のフォークです。これにより frida-cycript は frida-core によりメンテされているすべてのプラットフォームおよびアーキテクチャ上で実行できます。 - https://github.com/nowsecure/frida-cycript

  • Fridpa: iOS アプリケーション (IPA ファイル) にパッチを適用するための自動ラッパースクリプトであり、非脱獄済みデバイスで動作します。 - https://github.com/tanprathan/Fridpa

  • gdb: iOS アプリケーションの実行時解析を行うためのツールです。 - https://cydia.radare.org/pool/main/g/gdb/

  • idb: iOS ペネトレーションテストおよび研究のための一般的なタスクを簡素化するツールです。 - https://github.com/dmayer/idb

  • Introspy-iOS: iOS アプリケーションが実行時に何をしているかを理解し、潜在的なセキュリティ問題の特定を支援するブラックボックスツールです。 - https://github.com/iSECPartners/Introspy-iOS

  • keychaindumper: iOS デバイスが脱獄された場合に攻撃者が利用可能となるキーチェーンアイテムを確認するためのツールです。 - https://github.com/ptoomey3/Keychain-Dumper

  • lldb: iOS アプリケーションをデバッグするために使用される Apple の Xcode に付属するデバッガです。 - https://lldb.llvm.org/

  • Passionfruit: 完全なウェブベースの GUI を備えたシンプルな iOS アプリブラックボックス評価ツールです。frida.re と vuejs により提供されています。 - https://github.com/chaitin/passionfruits

脱獄検出および SSL ピンニングのバイパス

ネットワーク傍受および監視用ツール

  • bettercap: セキュリティ研究者やリバースエンジニアに、Wi-Fi, Bluetooth Low Energy, ワイヤレス HID ハイジャック、イーサネットネットワークの偵察および MITM 攻撃のための使いやすいオールインワンソリューションを提供することを目的とした強力なフレームワークです。 - https://www.bettercap.org/

  • Canape: 任意のプロトコル用のネットワークテストツールです。 - https://github.com/ctxis/canape

  • Mallory: モバイルデバイスやアプリケーションのトラフィックを監視および操作するために使用する中間者攻撃 (MiTM) ツールです。 - https://github.com/intrepidusgroup/mallory

  • MITM Relay: SSL および STARTTLS インターセプトをサポートする Burp などを介した非 HTTP プロトコルを傍受および改変するスクリプトです。 - https://github.com/jrmdev/mitm_relay

  • tcpdump: コマンドラインパケットキャプチャユーティリティです。 - https://www.tcpdump.org/

  • Wireshark: オープンソースのパケットアナライザです。 - https://www.wireshark.org/download.html

傍受プロキシ

  • Burp Suite: アプリケーションのセキュリティテストを実行するための統合プラットフォームです。 - https://portswigger.net/burp/download.html

  • Charles Proxy: 開発者がホストコンピュータとインターネットの間のすべての HTTP および SSL / HTTPS トラフィックを表示することができる HTTP プロキシ / HTTP モニタ / リバースプロキシです。 - https://www.charlesproxy.com

  • Fiddler: HTTP および HTTPS トラフィックをキャプチャしてユーザーが確認するためにログに記録できる HTTP デバッグプロキシサーバーアプリケーションです。 - https://www.telerik.com/fiddler

  • OWASP Zed Attack Proxy (ZAP): ウェブアプリケーションやウェブサービスのセキュリティ脆弱性を自動的に発見するのに役立つフリーのセキュリティツールです。 - https://github.com/zaproxy/zaproxy

  • Proxydroid: Android システム用のグローバルプロキシアプリです。 - <https://github.com/madeye/proxydroid

IDE

  • Android Studio: Google の Android オペレーティングシステム向けの公式の統合開発環境 (IDE) です。JetBrains の IntelliJ IDEA ソフトウェアで構築されており、特に Android 開発向けに設計されています。 - https://developer.android.com/studio/index.html

  • IntelliJ IDEA: コンピュータソフトウェアを開発するための Java IDE です。 - https://www.jetbrains.com/idea/download/

  • Eclipse: Eclipse はコンピュータプログラミングに使用される IDE であり、最も広く使用されている Java IDE です。 - https://eclipse.org/

  • Xcode: iOS, watchOS, tvOS, macOS 用のアプリを作成するための公式の IDE です。 macOS でのみ利用できます。 - https://developer.apple.com/xcode/

脆弱なアプリケーション

下記のアプリケーションはトレーニング教材として使用できます。注意:MSTG アプリと Crackmes のみが MSTG プロジェクトでテストおよび保守されています。

Android

iOS

  • Crackmes: iOS アプリケーションのハッキングスキルをテストするアプリケーションのセットです。 - https://github.com/OWASP/owasp-mstg/tree/master/Crackmes

  • Myriam: iOS セキュリティの課題を持つ脆弱な iOS アプリです。 - https://github.com/GeoSn0w/Myriam

  • DVIA: モバイルセキュリティ愛好家/専門家や学生に iOS ペネトレーションテストスキルをテストするためのプラットフォームを提供する、Objective-C で書かれた脆弱な iOS アプリです。 - http://damnvulnerableiosapp.com/

  • DVIA-v2: 脆弱な iOS アプリです。Swift で書かれ、15以上の脆弱性があります。 - https://github.com/prateek147/DVIA-v2

  • iGoat: iOS 開発者 (iPhone, iPad など) およびモバイルアプリペネトレーションテスト技術者のための楽手ツールとして機能する iOS Objective-C アプリです。WebGoat プロジェクトに触発されたもので、同様の概念的な流れを持っています。 - https://github.com/owasp/igoat

  • iGoat-Swift: オリジナル iGoat プロジェクトの Swift バージョンです。 - https://github.com/owasp/igoat-swift

  • UnSAFE Bank: UnSAFE Bank はサイバーセキュリティリスクとさまざまなテストケースを盛り込むことを目的に設計されたコアな仮想銀行業務アプリケーションです。初心者、開発者、セキュリティアナリストが脆弱性評価とペネトレーションテストスキルを学習、ハック、および臨機応変に対応できるようにします。 - https://github.com/lucideus-repo/UnSAFE_Bank