この記事では、AndroidフォレンジックとAndroidフォレンジック調査を行うための技術について紹介します。 Android のファイル システム、データの取得、分析、および Android データ抽出に使用できるさまざまなツールについて説明します。
はじめに
スマートフォン市場は、ますます高く成長しています。 技術の劇的な変化に伴い、スマートフォンは犯罪者のターゲットになりつつあります。 特別な日に大切な人の健康を祈るためのリマインダー設定からオンラインバンキング取引まで、ほとんどの人が日常業務をこなすために完全にモバイルデバイスにはまっているため、モバイルデバイスには捜査当局が関心を寄せる機密データが多く含まれています。 Androidはスマートフォンの主要なオペレーティングシステムの1つであるため、Androidフォレンジックの知識を持つことは重要です。
Android フォレンジックが通常のディスクフォレンジックと異なるのは、さまざまな理由があるからです。 Android特有の様々なファイルシステムをサポートしています。 Android端末では、以下のようなデータを探すことがあります。 SMS、MMS、電子メール、通話記録、連絡先、写真、カレンダー、メモ、ブラウザ履歴、GPS位置、パスワード、SDカードに保存されたデータなどです。
Android ディレクトリ構造
Android には、固有のディレクトリ構造が存在します。 adb shell」を使って、端末のディレクトリ構造を見ることができます。 また、DDMSを使用して端末のディレクトリ構造を見ることも可能です。 下図は、私の端末「Sony Xperia E」のファイルシステムを「adb shell」で表示したものです。
上図では、現在の端末に多くのファイルやフォルダがあることがわかります。 フォレンジックアナリストにとって最も重要な場所は、/system, /data, /sdcard, /ext_card.
/system: 上の図に示すように、このディレクトリには、システム アプリ、フォント、ライブラリ、実行ファイルなどに関する情報を保持するさまざまなサブディレクトリが含まれています。 それは、SMSアプリケーションによって格納されたデータなど、ユーザー固有のデータが含まれています。 data/app “ディレクトリにインストールされた各アプリケーションの実行ファイルを確認できます。 これにはroot権限が必要で、root化されていないユーザーはこのディレクトリの中身を見ることができないことになります。 次の図は、インストールされた各アプリケーションのバイナリをデバイス上で確認できることを示しています (出力は切り捨てられます)。
ユーザー データは、「/data/data/」ディレクトリに存在します。 セキュリティ上の理由から、各ディレクトリのデータは他のアプリケーションからアクセスできません。
/sdcard と /ext_card の2つのディレクトリがあります。 このケースでは、内部ストレージに sdcard、外部ストレージに ext_card を取得しました。 通常、sdcard は外部ストレージに使用されます。 これらは、画像、音楽ファイル、動画などのユーザー データを保存するために使用されます。
Android ファイル システム
Android ファイル システムの基本知識は、Android フォレンジックを始める前に必ず知っておくべきことです。 これは、Android がさまざまなファイル システムをサポートしているためです。 Androidのファイルシステムのメインパーティションは、YAFFS2(Yet Another Flash File System)としてパーティショニングされていることが多いです。 YAFFS2は、特にスマートフォンなどの組み込みシステム向けに設計されています。
サポートされているファイルシステムの一覧を表示するには、「adb shell」で次のコマンドを使用します。
“cat /proc/filesystems”
上図のように、デバイスでサポートされているファイルシステムのリストが表示されます。 ファイル システムの横にある「nodev」エントリーは、その特定のファイル システムに関連する物理デバイスがないことを示します。 Androidは、ext2、ext3、ext4ファイルシステム(Linuxシステムで使用)およびWindowsベースのシステムで使用されるvfatファイルシステムをサポートしています。 Android はモバイル機器を対象としているため、YAFFS および YAFFS2 ファイルシステムをサポートします。これは、これらの機器で使用される NAND チップをサポートする必要があるためです。 Android端末にマウントされている異なるパーティションを確認するためには、端末上でシェルを取得し、以下のコマンドを実行します。 “mount “を実行します。
上の図からわかるように、デバイスにはさまざまなパーティションがマウントされています。
上の図を見ると、/system、/cache、/data など重要なファイル システム パーティションが YAFFS ではなく ext4 として使用されていることがわかります。 これは、Gingerbread以降、AndroidがYAFFSファイルシステムをext4に置き換えたためです。
データ取得方法
データ取得とは、証拠からデータを抽出する作業のことです。 先に説明したように、モバイル デバイスのデータ取得は、標準的なハードドライブのフォレンジック取得ほど単純ではありません。 これらのデータ取得技術は、以下のタイプに大別されます。
手動取得:
検査者は、モバイル デバイスのユーザー インターフェイスを利用して、コンテンツを調査します。 デバイスをブラウズしながら、検査者は各画面の写真を撮影する。 この方法は、データ取得を行うためのツールを必要としない。 利点は別として、この方法の最大の欠点は、携帯電話上のユーザーが見えるデータしか復元できないこと、そして明らかに時間がかかることです。
物理的な取得。
標準的なデジタル フォレンジックにおける物理的取得プロセスと同様に、モバイル デバイスにおける物理的取得プロセスでは、ファイル システム全体のビット単位のコピーを作成します。 削除されたデータや未割り当ての領域を含む、デバイス上に存在するデータを含むファイル システム全体のコピーを作成します。
論理的取得:
論理的抽出は、電話のコンテンツをパーソナル コンピュータと同期するためのオリジナル機器メーカーのアプリケーション プログラム インターフェイスを使用してデバイスから情報を取得します。 論理的取得は、デバイスのユーザーがアクセス可能なデータを抽出するプロセスであるため、削除されたデータや未割り当ての領域のデータを取得することはできません。
FTK Imager で SD カードをイメージ化する
FTK Imager は、以下のリンクからダウンロードすることができます。 http://www.accessdata.com/support/product-downloads
携帯電話の SD カードは、調査中に貴重なデータの宝庫として使用できるため、ビット単位のコピーを取得することが重要です。 ベストプラクティスとして、証拠の完全性を維持するために書き込みブロッカーを使用する必要があります。
SD カードは一般的に FAT32 ファイルシステムです。 そのため、従来のイメージングツールを使用し、SDカードの画像を取得することができます。 このセクションでは、FTK Imager として知られる一般的なツールを使用して、SD カードの画像を取得します。
上記のステップで新しいウィンドウが開き、取得の種類を選択します。
今回は、SD カード全体のイメージを作成しようとするので、私は「物理ドライブ」を選択しています。 以下のように物理ドライブを選択する新しいウィンドウが表示されます。 適切なオプションを選択したら、終了をクリックします。
「追加」ボタンをクリックすると、新しいウィンドウが開き、作成するイメージの種類を選択することができます。 E01」のような他の画像形式とは異なり、「dd」画像は画像にメタデータを保存しません。 次へ]をクリックすると、FTKイメージャが証拠品情報の入力を要求するウィンドウが表示されます。 119>
上の図にあるように、出力ファイルの保存先パスと名前を指定しました。
「開始」をクリックして処理を開始します。
さて、作成されたイメージは、従来のフォレンジック分析ツールを使ってさらに分析することが可能です。
Imaging Android file system:
このセクションでは、Android ファイル システム パーティションのデータ取得を実行する方法について説明します。 「dd」は、Android ではデフォルトで「/system/bin」ロケーションに存在します。
では、mount コマンドを使用して、目的のパーティションの場所を見てみましょう。
以下は、上記の出力から「/data」パーティションに関連付けられたエントリーです。/by-num/p16 /data ext4 rw,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
では、次のコマンドを使用して、この特定のパーティションを “dd” で抽出してみましょう。/by-num/p16 of=/mnt/sdcard/output.img
上記のコマンドを以下に説明します。
if = 入力ファイル
of = 作成する出力ファイル
output.img
output.img = 出力ファイル
if = 入力ファイル
of = 作成する出力ファイル
dd のオプション “bs” を使ってブロックサイズを指定することもできます。
以上のプロセスを終えたら、Droid Explorer などのツールを使ってこのファイルを取り出せます。 以下のスクリーンショットは、adb pull コマンドを使用して、ワークステーションにイメージをプルするコマンドを示します。