検索
連載

Androidアプリの「マルウェア判定」「脆弱性検知」技術Androidセキュリティ技術の最前線(2)(1/3 ページ)

Android端末のセキュリティ対策技術について解説する本連載。第2回はアプリの配布パッケージの概要と、アプリが「マルウェアでないか」および「脆弱性がないか」を判定する技術を紹介する。

Share
Tweet
LINE
Hatena
「Androidセキュリティ技術の最前線」のインデックス

連載目次

 本連載では、Android端末のセキュリティ対策技術の現状について紹介している。前回はAndroid端末を取り巻く環境や、「アプリ」「マーケット」「Android OS」「ユーザー」の各エンティティをめぐる対策について概観した。

 第2回となる今回は、特にAndroidの「アプリ」に着目し、Androidアプリのリスクを評価する技術について紹介する。前回説明したように、ユーザーが入手する「APKファイル」(後述)の中には、たとえ正規マーケットから入手しても、マルウェアが混入する可能性がある。

 また、マルウェアでなかったとしても、アプリに脆弱(ぜいじゃく)性があると、悪意のある第三者に攻撃を受ける可能性がある。ユーザーのリスクを軽減するためには、Androidのマルウェア判定および脆弱性検知を実施することが必要だ。そこで、これらの技術の説明に入る前に、まずはAndroidアプリの構造について振り返ることから始めよう。

Androidアプリの構造

 Androidアプリは「Android Application Package(APK)」というファイル形式で流通している。このファイルの中には、下図のようにさまざまなファイルがまとめられている。APKファイルは実際には単なるzipファイルであるため、unzipコマンドなどを用いて解凍すると、その中のファイル群を得ることができる。このファイル群の中には、後述する「AndroidManifest.xml」や「classes.dex」、そして署名やレイアウトに関するファイルなどが含まれている。

 これらのファイルを分析することにより、Androidアプリの脅威と脆弱性を評価することができる。各ファイルの詳しい説明については解説記事なども多数存在するため、ここでは全てのファイルには触れず、特にリスク分析に利用されることの多いAndroidManifest.xmlとclasses.dexという2つのファイルの概略を紹介しよう。


図1 APKファイルの主な構成

APKファイルの概要を説明する「AndroidManifest.xml」

 AndroidManifest.xmlは、Androidアプリであれば必ず存在するファイルである。このファイルには、アプリに関するさまざまな情報がXML形式で記述されている。このXMLの中には、そのアプリが動作するAndroid OSのバージョンの指定情報や、アプリが利用を要求するパーミッションの一覧などが書かれている。

 以下の表に、このXMLに含まれるタグをいくつか紹介する。なお、このXMLファイルはバイナリ形式に変換されているため、そのままではテキスト情報として読むことができない。テキスト情報が必要な際には、後述する「Apktool」 などの変換ツールを利用するか、もしくは「Android SDK」 に含まれる「aapt」などのツールを利用するとよい。

 また、AndroidのOSは常に進化を続けており、利用できるAPIやパーミッションの種類も常に変化している。従ってリスク分析の際には、uses-sdkタグを参照し、サポートしているAPIレベルに応じたリスク分析を実施する必要がある。

表1 AndroidManifest.xml内の主な記載情報
主なタグ名 内容
application アイコンやラベル、画面テーマなどの、アプリケーション全体の設定
uses-sdk アプリの動作をサポートするAPIレベルの範囲を指定
uses-permission アプリが要求するパーミッションを指定
uses-library アプリが利用するライブラリを指定

Androidアプリケーションの中間コード「classes.dex」

 AndroidのアプリはJavaで開発されており、それが中間コードに変換されたものがclasses.dexである。Javaの中間コードには、リバースエンジニアリングとの相性が非常に良いという特徴がある。そのため、ソースコードを持っていなくとも、この中間コードからリバースエンジニアリングを行うことにより、コード解析を実施することができる。

分析に便利なツール群も存在

 前述の通りAPKファイルは単なるzipファイルであるものの、その中のファイルはバイナリ形式で保存されているため、そのままでは分析できない。ただし現在では、分析しやすい形にファイルを変換して一括してくれるさまざまなツールが存在している。

 例えば、先にも触れた「Apktool」である。apktoolを使用すると、AndroidManifest.xmlをテキスト化してくれたり、中間コードをリバースエンジニアリングしたsmaliファイルを生成してくれたりする。また、「dex2jar」を利用すればclasses.dexファイルをjarファイルに変換することも可能だ。その他にも、APKファイルの分析に必要なツールは容易に入手可能になっている。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ

Security & Trust 記事ランキング

  1. ランサムウェア攻撃を受けた企業、約6割が「サプライチェーンのパートナー経由で影響を受けた」 OpenText調査
  2. 長続きする高度セキュリティ人材育成の秘訣を「第19回情報危機管理コンテスト」から探る
  3. インサイダーが原因の情報漏えいを経験した国内企業が約3割の今、対策における「責任の所在」の誤解とは
  4. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  5. OpenAIの生成AIを悪用していた脅威アクターとは? OpenAIが脅威レポートの最新版を公開
  6. 約9割の経営層が「ランサムウェアは危ない」と認識、だが約4割は「問題解決は自分の役割ではない」と考えている Vade調査
  7. 米国/英国政府が勧告する25の脆弱性、活発に悪用されている9件のCVEとは、その対処法は? GreyNoise Intelligence調査
  8. セキュリティ専門家も「何かがおかしいけれど、攻撃とは言い切れない」と判断に迷う現象が急増 EGセキュアソリューションズ
  9. 人命を盾にする医療機関へのランサムウェア攻撃、身代金の平均支払額や損失額は? 主な手口と有効な対策とは? Microsoftがレポート
  10. セキュリティ担当者の54%が「脅威検知ツールのせいで仕事が増える」と回答、懸念の正体とは? Vectra AI調査
ページトップに戻る