NECサイバーセキュリティ戦略統括部セキュリティ技術センターの長谷川です。最近、モバイルアプリケーションの脆弱性診断に関する勉強を行っており、診断手法や有用なツールなどを日頃から調べています。
今回のブログでは、調べている中で見つけたAndroidアプリの静的解析ツールAPKHunt [1]のご紹介をしたいと思います。
APKHuntとは
APKHuntは、OWASP Mobile Application Security Verification Standard(以下、MASVS)[2]に基づいた解析が可能なAndroidアプリ用の静的解析ツールです。Go言語で書かれており、GPLv3ライセンスとして公開されています。
OWASP MASVSはモバイルアプリケーションのセキュリティモデルを定義し、8つのセキュリティ要件(表1)を定めています。また、OWASP Mobile Application Security Testing Guide(以下、MASTG)[3]の姉妹プロジェクトです。詳細については参考に記載しているリンクをご参照ください。
表1:セキュリティ要件
(アーキテクチャ、設計、脅威モデリングに関する要件)
(データストレージとプライバシーに関する要件)
(暗号に関する要件)
(認証とセッション管理に関する要件)
(ネットワーク通信に関する要件)
(プラットフォーム相互作用に関する要件)
(コード品質とビルド設定に関する要件)
(リバースエンジニアリングに対する耐性に関する要件)
APKHuntの使い方
APKHuntは下記の環境で実行しました。実行にはGolang、jadx [4]、dex2jar [5]、grepが必須となっています。
動作環境
-
Kali Linux 2023.1
- VMware Fusion Pro 12.2.4
- CPU:4コアプロセッサコア
- メモリー:4096MB
- APKHunt 2023年3月12日時点の最新版
- Golang 1.19.6
- Java openjdk 17.0.6 2023-01-17
- jadx 1.4.6
- dex2jar 2.1~nightly-28-0kali2
- grep 3.8
- スキャン対象
- Hack The Box [6] のRetiredマシン「APKrypt」
基本的な使い方
下記に示すコマンドでAPKHuntを実行します。実行すると最初にAndroidの専用ソフトウェアであるapkファイルに関する情報を列挙し、スキャン結果を表示します。(図1)
「-l」オプションを使用することにより、スキャン結果をテキストファイル形式でスキャン対象のapkファイルと同じディレクトリに生成します。主観ですが、スキャン結果のファイルはapkhunt.goと同じ階層、または新たにlogsディレクトリを生成して格納してほしいと思いました。
2023年3月12日時点ではオプションは3種類のみとなっています。(表2)
表2:オプションの一覧
解析結果の一例
最初に解析対象のapkファイルのMD5とSHA256ハッシュ値の算出やjarファイルへ変換したファイルを生成します。
以降は以下の3つの項目がアウトプットとして表示されます。
-
AndroidManifest内の下記の情報
- package
- android:versionName
- android:minSdkVersion
- android:targetSdkVersion
- android:networkSecurityConfig
- android:exportedの設定がされているサブクラス
- android.intent
- OWASP MASTGで分類されている一部の項目
確認可能なリストは付録をご参照ください。
- 解析時間
Hack The BoxのRetiredマシンである「APKrypt」で配布されているapkファイルを使用して MSTG-STORAGE-9の結果例をご紹介します。
MSTG-STORAGE-9はOWASP MASVSのv2に分類される項目で、アプリがバックグラウンドへ移行した際にスクリーンショットを端末のローカルストレージにそのまま保存しているかを確認する項目です。
問題が検出されると、推奨策と想定される影響が記載されているQuickNoteと共通脆弱性タイプ一覧の番号(CWE)と該当するOWASP MASVSのURLが記載されているReferenceが表示されます。(図2)
問題が検出されなかった例としてMSTG-PLATFORM-2の項目を確認すると、タイトルのみが表示されており、ほかは何も表示されていないことが確認できます。(図3)
出力結果からOWASP MASTGに基づいた解析を行っていることが確認できました。また、ログファイルへの出力はテキストファイル形式のみとなっていますが、将来的にはHTMLファイル形式への出力も計画されているそうです。
最後に
Androidアプリの静的解析ツールである「APKHunt」についてのご紹介をしました。
ツールを使用することで、OWASP MASVSに基づいたチェックをすることができ、Androidアプリのセキュリティ向上へ繋がります。また、診断員目線では、OWASP MASTGに沿った診断を一部自動化することが可能になります。
参考情報
[1] APKHunt
https://github.com/Cyber-Buddy/APKHunt
[2] OWASP MASVS
https://github.com/OWASP/owasp-masvs
[3] OWASP MASTG
https://github.com/OWASP/owasp-mastg
[4] jadx
https://github.com/skylot/jadx
[5] dex2jar
https://github.com/pxb1988/dex2jar
[6] Hack The Box
https://www.hackthebox.com/
付録
APKHuntで確認できるOWASP MASTGの項目は以下です。
Architecture, Design and Threat Modeling Requirements
Data Storage and Privacy Requirements
MSTG-STORAGE-3
MSTG-STORAGE-4
MSTG-STORAGE-5
MSTG-STORAGE-7
MSTG-STORAGE-8
MSTG-STORAGE-9
MSTG-STORAGE-10
MSTG-PLATFORM-2
Cryptography Requirements
MSTG-CRYPTO-3
MSTG-CRYPTO-4
MSTG-CRYPTO-6
Authentication and Session Management Requirements
MSTG-AUTH-8
Network Communication Requirements
MSTG-NETWORK-2
MSTG-NETWORK-3
MSTG-NETWORK-4
MSTG-NETWORK-6
Environmental Interaction Requirements
MSTG-PLATFORM-2
MSTG-PLATFORM-3
MSTG-PLATFORM-4
MSTG-PLATFORM-5
MSTG-PLATFORM-6
MSTG-PLATFORM-7
MSTG-PLATFORM-8
MSTG-PLATFORM-10
Code Quality and Build Setting Requirements
MSTG-CODE-4
MSTG-CODE-6
MSTG-CODE-9
Resiliency Against Reverse Engineering Requirements
MSTG-RESILIENCE-2
MSTG-RESILIENCE-3
MSTG-RESILIENCE-5
MSTG-RESILIENCE-7
執筆者プロフィール
長谷川 奨(はせがわ しょう)
セキュリティ技術センター リスクハンティング・システムグループ
ペネトレーションテストや脆弱性診断、ツール開発などに従事。
趣味はゲームや水泳。