読者です 読者をやめる 読者になる 読者になる

アンタイ・フォレンジック伝道者の独り言

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

SANS ポスター:Windows Artifact Analysis(27) Jump Lists

フォレンジック

Windows 7 の Jump Lists ファイルである、 89b0d939f117f75c.automaticDestinations-ms ファイル構造の続きになります。
ここまでは通常のセクタを見てきましたが、MS-CFBには Mini FAT と Mini sector(Mini stream)というデータ構造も存在します。
Compound File Header の定義としては、オフセット60からの4バイトが First Mini FAT Sector Location となっており、Mini FAT のセクタ位置を示しています。
Mini FAT の構造自体は FAT と同じく、以下のように4バイトづつでチェーンを構成するようになっています。(First Mini FAT Sector Locationで示されているセクタの先頭部分を抜粋)

01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00
05 00 00 00 06 00 00 00 FE FF FF FF 08 00 00 00
09 00 00 00 0A 00 00 00 0B 00 00 00 FE FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

Mini Streamのサイズは 64byte である事がCompound File Headerで確認できます。上記のデータであれば、Mini Sector 0~6 までの 7セクタ分のチェーンが構成されていますが、64 x 7 = 448byte の領域が割り当てられている事になります。
Mini Streamの開始セクタは Page 21 に下記記述があり、ルートエントリの開始セクタ位置からである事が分かります。

The mini stream's starting sector is referenced in the first directory entry (root storage stream ID 0).

例えば、下記はCompound File Directory Entry構造にある、DestList エントリの128byteになります。

44 00 65 00 73 00 74 00 4C 00 69 00 73 00 74 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 00 02 00 FF FF FF FF FF FF FF FF FF FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 07 00 00 00 0C 01 00 00 00 00 00 00

44 00 65 00 73 00 74 00 4C 00 69 00 73 00 74 00 は DestList になります。
オフセット66からの1バイトがObject Typeになりますが、上記では 02 で Stream Objectである事が分かります。
この部分は Starting Sector Location に影響します。MS-CFB の Page 27 には下記の記述があります。

Starting Sector Location (4 bytes): This field contains the first sector location if this is a stream object. For a root storage object, this field MUST contain the first sector of the mini stream, if the mini stream exists.

オフセット116からの4バイトがStarting Sector Locationですので、上記では 7 という事になりますが、これは Mini stream 内でのセクタ番号という事になります。
オフセット120からの8バイトが Stream Size になりますので、上記では 0C 01 00 00 00 00 00 00 ですので、268byte になり、Mini Stream ではセクタ 7 から 5個のセクタが割り当てられている事になります。