Japan

サイト内の現在位置

Androidアプリの静的解析ツール「APKHunt」のご紹介

NECセキュリティブログ

2023年3月24日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの長谷川です。最近、モバイルアプリケーションの脆弱性診断に関する勉強を行っており、診断手法や有用なツールなどを日頃から調べています。
今回のブログでは、調べている中で見つけたAndroidアプリの静的解析ツールAPKHunt new window[1]のご紹介をしたいと思います。

APKHuntとは

APKHuntは、OWASP Mobile Application Security Verification Standard(以下、MASVS)new window[2]に基づいた解析が可能なAndroidアプリ用の静的解析ツールです。Go言語で書かれており、GPLv3ライセンスとして公開されています。
OWASP MASVSはモバイルアプリケーションのセキュリティモデルを定義し、8つのセキュリティ要件(表1)を定めています。また、OWASP Mobile Application Security Testing Guide(以下、MASTG)new window[3]の姉妹プロジェクトです。詳細については参考に記載しているリンクをご参照ください。

表1:セキュリティ要件

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

APKHuntの使い方

APKHuntは下記の環境で実行しました。実行にはGolang、jadx new window[4]、dex2jar new window[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 new window[6] のRetiredマシン「APKrypt」

基本的な使い方

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

$ go run apkhunt.go -p ../app/APKrpto.apk -l

図1:スキャン結果の一部

表2:オプションの一覧

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

解析結果の一例

最初に解析対象の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)

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

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

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

出力結果からOWASP MASTGに基づいた解析を行っていることが確認できました。また、ログファイルへの出力はテキストファイル形式のみとなっていますが、将来的にはHTMLファイル形式への出力も計画されているそうです。

最後に

Androidアプリの静的解析ツールである「APKHunt」についてのご紹介をしました。
ツールを使用することで、OWASP MASVSに基づいたチェックをすることができ、Androidアプリのセキュリティ向上へ繋がります。また、診断員目線では、OWASP MASTGに沿った診断を一部自動化することが可能になります。

参考情報

付録

APKHuntで確認できるOWASP MASTGの項目は以下です。

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

執筆者プロフィール

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

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

執筆者の他の記事を読む

アクセスランキング