sorter

名前

sorter - ファイルタイプに基づきイメージ内のファイルをカテゴリ毎にソートする

書式

[-b size ] [-e] [-E] [-h] [-l] [-md5] [-s] [-sha1] [-U] [-v] [-V] [-a hash_alert ] [-c config ] [-C config ] [-d dir ] [-m mnt ] [-n nsrl_db ] [-x hash_exclude ] [-i imgtype] [-o imgoffset] [-f fstype] image [image] [meta_addr]

説明

sorterは割当済や未割当のファイルで構成されるファイルシステムをファイルタイプによって解析するPerlスクリプトである。各ファイルに対して'file'コマンドを実行し、設定ファイルのルールに従ってファイルを構成する。拡張子のミスマッチは'hidden'ファイルと識別される。無視すべきよく知られた良性のファイルや、逆に警告をあげるべき悪性のファイルであることを示すようなハッシュデータベースを使うこともできる。 デフォルトでは、プログラムはThe Sleuth Kitがインストールされたディレクトリの設定ファイルを使う。これは実行時のオプションで上書きすることができる。すべてのファイルシステムタイプのための一般的な設定ファイルがあり、指定されたOSに特有の設定ファイルがある。

引数

必要なオプション引数は以下の通りである。これは1つ以上のイメージを解析して'-d'で指定されたディレクトリに結果を保存するか、-lオプションが与えられれば標準出力STDOUTに結果をリストする。

-d dir
全てのファイルが書き出されるべき場所を指定する。これはindexファイルを含み、'-s'フラグが与えられればサブディレクトリも含まれる。このオプションは'-l'のリストフラグが与えられない場合は必須のオプションである。
-l
情報をSTDOUTにリストする。ファイルは書き出されない。これはnetcatを使ったインシデントレスポンスに有用である。'-d'オプションが使われた場合、このオプションを使うことはできない。
images [images]
-iオプションで指定されたフォーマットのディスクイメージまたはパーティションイメージを指定する。イメージが複数のセグメントに分割されていればそれらのファイル名を指定してもよい。もしファイルが1つだけ指定されて、それが連続するファイルの先頭(例えばファイル名の最後が'.001')であれば、イメージのセグメントは自動的に読み込まれる。
その他のオプションは以下に従う。
-f fstype
イメージのファイルシステムタイプを指定する。これはThe Sleuth Kitが使うタイプと同じである。
-i imgtype
ファイルシステムが配置されているイメージのタイプを指定する。これはThe Sleuth Kitが使うタイプと同じである。
-o imgoffset
ファイルシステムが開始する場所をイメージ開始からのオフセットとしてセクタ単位で指定する。
-b size
処理するファイルの最小サイズを指定する。ここで指定されたサイズ以下の全てのファイルは無視される。
-c config
追加の設定ファイルの場所を指定する。このファイルはインストールディレクトリ内の標準ファイルに加えてロードされる。これらの設定は標準ファイルを上書きする。
-C config
設定ファイルのみの場所を指定する。標準設定ファイルはこのオプションが指定された場合にロードされない。例えば、'share/sort'ディレクトリの中には'images.sort'ファイルがある。このファイルは画像についてのルールのみが含まれている。もし、これで-Cオプションが指定された場合、イメージファイルから画像のみが保存される。
-m mnt
解析されるイメージのマウントポイントを指定する。これは体裁を整えるためだけのオプションである。出力ファイル内のエントリが書き出されたときに、そのファイルは相対パスのかわりに絶対パスをもつ。このオプションが指定された場合、それから1つのイメージだけが与えられる。
-a hash_alert
badファイルとして知られるエントリのハッシュデータベースの場所を指定する。このデータベース内のMD5ハッシュ値に適合した任意のファイルは、特別な警告ファイルとして分類される。このデータベースはsorterを使う前にThe SleuthKitの'hfind'を使ってMD5をインデックスしなければならない。
-n nsrl_db
NISTのNational Software Reference Library(NSRL)データベース(www.nsrl.nist.org)の場所を指定する。NSRLで見つかった任意のファイルは無視されカテゴリに分類されない。このデータベースはsorterを使う前にThe Sleuth Kitの'hfind'でMD5をインデックスしなければならない。このデータベースファイルは現在'NSRLFile.txt'と呼ばれる。
-x hash_exclude
goodファイルとして知られるエントリのハッシュデータベースの場所を指定する。このデータベース内のMD5ハッシュ値に適合した任意のファイルは、無視されて処理されないかカテゴリファイルに保存される。このデータベースはsorterを使う前にThe Sleuth Kitの'hfind'を使ってMD5をインデックスしなければならない。
-e
拡張子のミスマッチ確認を行う(カテゴリのインデックスファイルは生成されない)。
-U
未知のファイルタイプについて、データを保存しない。デフォルトでは、'file'コマンドの結果がわからなかったファイルが'unknown'ファイルとして作成される。これは設定の再調整に役立つかもしれないが、もしこの処理を望まないならば、このフラグを指定する。
-h
HTMLでカテゴリファイルを作成する。
-md5
各ファイルのMD5値を算出してカテゴリファイルに保存する。このオプションはデータベースが指定された場合は自動的に適用される。
-sha1
各ファイルのSHA-1値を算出してカテゴリファイルに保存する。
-s
-dオプションで指定されたディレクトリのサブディレクトリに実際のファイルコンテンツを保存する。例えば、すべてのJPGとGIFファイルは実際に'images'ディレクトリに保存される。'-h'オプションが指定された場合、画像イメージのサムネイルも作成される。
-v
冗長な情報を表示する。
-V
バージョン情報を表示する。
[meta_addr]
開始するディレクトリのメタデータのアドレスを指定する。デフォルトではルートディレクトリが使われる。もし、このオプションが指定されれば与えられたイメージファイルだけに適用される。

処理に関する高度な内容

sorterは他のThe Sleuth Kitのツールと相互に作用するPerlスクリプトである。インストールされたディレクトリから設定ファイルを読み取ることから始まる。一般的な設定ファイルとOSに固有な設定ファイルが存在する。固有の設定ファイルは-fフラグで指定することができる。各設定ファイルはfileコマンドの出力処理するルールを含む。1行毎にどのカテゴリ(例えばimages)がfileコマンドの出力(例えば'image data')に属するかが正規表現を使って指定されている。ファイルの拡張子(.txt)がfileコマンドの出力に属する(ASCII(.*?)text)かというルールも含まれる。詳細はルールのセクションを参照すること。

sorterプログラムはThe Sleuth Kitのflsがファイルシステムイメージ内のファイルを特定するために実行する。それぞれのファイルはicatをつかって参照される。もしハッシュデータベースが指定されていればファイルのハッシュを計算する。'alert'データベースにあてはまるファイルが見つかれば、alert.txtファイルに加えられる。NSRLまたはexcludeデータベースにあてはまるファイルが見つかれば、良性のファイルとみなして無視される。除外されたファイルは今後のために'exclude'ファイルに記録されるがカテゴリファイルには保存されない。

それからfileコマンドがヘッダ情報に基づいてファイルタイプを特定するために実行される。設定ファイルのルールはどのカテゴリに属するかを特定するために使われる。-dで指定したディレクトリ内の相当するカテゴリにエントリが追加される。もし-sフラグが指定されていれば、ファイルのコピーはカテゴリと同名のサブディレクトリに保存される。HTMLフォーマットが指定されればハイパーリンクで保存したファイルが容易に参照でき、どのカテゴリに何があるかを参照できる。

カテゴリを持たないファイルは'unknown'カテゴリと'data'カテゴリに記録される。'data'カテゴリはfileコマンドが知らない構造をもつファイルであり、'unknown'カテゴリはfileコマンドが知っている構造を持つファイルである。これらは今後の参照のために保存されるがunknownカテゴリは-Uフラグを使うことにより無視できる。

ファイルのコピーは-sフラグを使って記録される。もし指定されれば、ファイルはカテゴリ名をもつサブディレクトリ内に記録される。各ファイルはファイルシステムイメージ名に続いてメタデータアドレスとオリジナルのファイル拡張子で命名される。カテゴリのindexファイルは実際の名前と保存した名前の変換に使うことができる。HTMLフォーマットはカテゴリのindexファイルから各ファイルのリンクによって容易に参照できるようにする。

sorterはファイルの拡張子についてもルールを確認する。もしファイルが名前の最後に拡張子(すなわち'.'の後に続く文字列)を持っていれば、そのルールと比較される。もし拡張子がファイルタイプの政党な拡張子としてのルールにあてはまらなければ、mismatchのファイルに追加される。もしファイルが拡張子をもっていなければそのファイルタイプが正当な拡張子を持っていても、その中には追加されない。この確認は良性のハッシュデータベースに適合したファイルに対しても実行される。これらのファイルが見つかればspecialファイルに追加される。拡張子をもたない'data'タイプのファイルの確認はデフォルトで実行される(未知の構造であるとみなす)。

sorterはilsコマンドの出力を使って上記手順を繰り返す。これは'sorter'にまだデータユニットへのポインタを持っている未割当ファイルのコンテンツを調べることを許している(全てのファイルシステムがこの手順からデータを生成するわけではない)。

設定ファイル

設定ファイルはどのファイルタイプがどのカテゴリに、どの拡張子がどのファイルタイプに属するかを定義する。設定ファイルはsorterと共に配布され、インストールしたディレクトリのshare/sorterディレクトリに配置される。 default.sortファイルは任意のファイルシステムタイプに使われる。これは一般的なファイルタイプのエントリが含まれる。固有OSのファイルも存在するが、これはOS固有の拡張子を特定するために役立つ。デフォルトでは、デフォルトファイルとOS固有のファイルが使われる。-cフラグを使うことにより追加のファイルを指定することができる。-Cフラグであれば、指定された設定ファイルのみが使われる。

設定ファイルのルールには2つのタイプが存在する。それぞれのルールはどちらのタイプ(カテゴリcategoryまたは拡張子ext)かを指定するヘッダではじまり、どちらのルールも空白区切りの2つの列を追加でもつ。 カテゴリルールは2番目にカテゴリ名を、3番目にPerlの正規表現をもつ。カテゴリ名は文字と数字のみが許され、空白を入れることはできない。正規表現はfileコマンドの出力を調べるために使われる。正規表現は大文字小文字を区別しない。1つのカテゴリに1つ以上のルールが存在できるが、fileコマンドの出力用には1つのカテゴリしか存在しない。

例: image dataで出力されたファイルをすべて'images'カテゴリに保存する。
    category        images          image data

ASCIIの文字列のあとに'text'の文字列が出力されたファイルを全て'text'カテゴリに保存する。     category        text            ASCII(.*?)text

dataで出力された全てのファイルを'data'カテゴリに保存する(^と$はPerlでの境界線を意味する)。'data'は未知のバイナリデータに対するfileコマンドの出力として一般的である。
    category        data            ^data?

ファイルをスキップするためにつかわれる'ignore'という特別なカテゴリが存在する。これは主に時間と容量の節約が主な目的である。

拡張子ルールは、2番目のカラムがfileコマンドの出力のための正当な拡張子であること以外はカテゴリルールと似ている。複数のルールを同じファイルタイプのために存在することができる。大文字小文字の区別をせずに比較される。ファイルタイプに適合する拡張子がなければルールは必要とならない。それらは想定済である。 例えば、ASCIIはいくつかの拡張子をもつため以下のルールが存在する。
    ext             txt,log         ASCII(.*?)text
    ext             c,cpp,h,js      ASCII(.*?)text

一般的な調査に有用なルールを見つけたら私にメールで教えてほしい。それらを今後のリリースに含める(carrier at sleuthkit dot org)。

ハッシュデータベースを使わずにsorterを実行する場合は以下が使われる。
    # sorter -f ntfs -d data/sorter images/hda1.dd
    # sorter -d data/sorter images/hda1.dd
    # sorter -i raw -f ntfs -o 63 -d data/sorter images/hda.dd

NSRL、exclude、alertハッシュデータベースを含める場合は以下が使われる。
    # sorter -f ntfs -d data/sorter -a /usr/hash/rootkit.db -x /usr/hash/win2k.db -n /usr/hash/nsrl/NSRLFile.txt   images/hda1.dd

単にimages.sortファイルを使って画像を特定する場合は以下が使われる。
    # sorter -f ntfs -C /usr/local/sleuthkit/share/sort/images.sort -d data/sorter -h -s images/hda1.dd

必要条件

The NIST National Software Reference Library (NSRL)はwww.nsrl.nist.govで入手することができる。

ライセンス

Sleuth Kitのライセンスディレクトリにあるcpl1.0.txtファイルに記述されているCommon Public Licenseに従い配布される。

著者

Brian Carrier <carrier at sleuthkit dot org> ドキュメントの更新情報は<doc-updates at sleuthkit dot org>に送信してください。