Compact
true
担当領域:セキュリティ技術センター リスクハンティング・システムグループ
ペネトレーションテストや脆弱性診断、ツール開発などに従事。趣味はゲームや水泳。

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:セキュリティ要件

v1
1
1
Architecture, Design and Threat Modeling Requirements
(アーキテクチャ、設計、脅威モデリングに関する要件)
1
1
v2
1
1
Data Storage and Privacy Requirements
(データストレージとプライバシーに関する要件)
1
1
v3
1
1
Cryptography Requirements
(暗号に関する要件)
1
1
v4
1
1
Authentication and Session Management Requirements
(認証とセッション管理に関する要件)
1
1
v5
1
1
Network Communication Requirements
(ネットワーク通信に関する要件)
1
1
v6
1
1
Environmental Interaction Requirements
(プラットフォーム相互作用に関する要件)
1
1
v7
1
1
Code Quality and Build Setting Requirements
(コード品質とビルド設定に関する要件)
1
1
v8
1
1
Resiliency Against Reverse Engineering Requirements
(リバースエンジニアリングに対する耐性に関する要件)
1
1

APKHuntの使い方

APKHuntは下記の環境で実行しました。実行にはGolang、jadx [4]、dex2jar [5]、grepが必須となっています。

動作環境

基本的な使い方

下記に示すコマンドでAPKHuntを実行します。実行すると最初にAndroidの専用ソフトウェアであるapkファイルに関する情報を列挙し、スキャン結果を表示します。(図1)
「-l」オプションを使用することにより、スキャン結果をテキストファイル形式でスキャン対象のapkファイルと同じディレクトリに生成します。主観ですが、スキャン結果のファイルはapkhunt.goと同じ階層、または新たにlogsディレクトリを生成して格納してほしいと思いました。
2023年3月12日時点ではオプションは3種類のみとなっています。(表2)

$ go run apkhunt.go -p ../app/APKrpto.apk -l
1
1
図1:スキャン結果の一部
図1:スキャン結果の一部
50

表2:オプションの一覧

Options
1
1
Description
1
1
説明
1
1
-p
1
1
Provide a single apk file-path
1
1
apkファイルのPathを指定
1
1
-m
1
1
Provide the folder-path for multiple apk scanning
1
1
apkファイルが格納されているディレクトリを指定することでディレクトリ内の複数のapkファイルを解析可能
1
1
-l
1
1
For logging (.txt file)
1
1
実行結果をテキストファイルに出力
1
1

解析結果の一例

最初に解析対象のapkファイルのMD5とSHA256ハッシュ値の算出やjarファイルへ変換したファイルを生成します。
以降は以下の3つの項目がアウトプットとして表示されます。

Hack The BoxのRetiredマシンである「APKrypt」で配布されているapkファイルを使用して MSTG-STORAGE-9の結果例をご紹介します。
MSTG-STORAGE-9はOWASP MASVSのv2に分類される項目で、アプリがバックグラウンドへ移行した際にスクリーンショットを端末のローカルストレージにそのまま保存しているかを確認する項目です。
問題が検出されると、推奨策と想定される影響が記載されているQuickNoteと共通脆弱性タイプ一覧の番号(CWE)と該当するOWASP MASVSのURLが記載されているReferenceが表示されます。(図2)

図2:検出された場合の表示例
図2:検出された場合の表示例
50

問題が検出されなかった例としてMSTG-PLATFORM-2の項目を確認すると、タイトルのみが表示されており、ほかは何も表示されていないことが確認できます。(図3)

図3:検出されなかった場合の表示例
図3:検出されなかった場合の表示例
50

出力結果から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の項目は以下です。

v1
Architecture, Design and Threat Modeling Requirements
1
1
MSTG-ARCH-9
1
1
v2
Data Storage and Privacy Requirements
1
1
MSTG-STORAGE-2
MSTG-STORAGE-3
MSTG-STORAGE-4
MSTG-STORAGE-5
MSTG-STORAGE-7
MSTG-STORAGE-8
MSTG-STORAGE-9
MSTG-STORAGE-10
MSTG-PLATFORM-2
1
1
v3
Cryptography Requirements
1
1
MSTG-CRYPTO-1
MSTG-CRYPTO-3
MSTG-CRYPTO-4
MSTG-CRYPTO-6
1
1
v4
Authentication and Session Management Requirements
1
1
MSTG-AUTH-2
MSTG-AUTH-8
1
1
v5
Network Communication Requirements
1
1
MSTG-NETWORK-1
MSTG-NETWORK-2
MSTG-NETWORK-3
MSTG-NETWORK-4
MSTG-NETWORK-6
1
1
v6
Environmental Interaction Requirements
1
1
MSTG-PLATFORM-1
MSTG-PLATFORM-2
MSTG-PLATFORM-3
MSTG-PLATFORM-4
MSTG-PLATFORM-5
MSTG-PLATFORM-6
MSTG-PLATFORM-7
MSTG-PLATFORM-8
MSTG-PLATFORM-10
1
1
v7
Code Quality and Build Setting Requirements
1
1
MSTG-CODE-2
MSTG-CODE-4
MSTG-CODE-6
MSTG-CODE-9
1
1
v8
Resiliency Against Reverse Engineering Requirements
1
1
MSTG-RESILIENCE-1
MSTG-RESILIENCE-2
MSTG-RESILIENCE-3
MSTG-RESILIENCE-5
MSTG-RESILIENCE-7
1
1

執筆者プロフィール

執筆者
original
50

長谷川 奨(はせがわ しょう)
セキュリティ技術センター リスクハンティング・システムグループ

ペネトレーションテストや脆弱性診断、ツール開発などに従事。
趣味はゲームや水泳。