@port139 Blog

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

SANS ポスター:Windows Artifact Analysis(7) Windows Shell Item

SANS Windows Artifact Analysis: Evidence of..ポスターの最初の項目は File Download となっており、Open/Save MRU に含まれている OpenSavePIDlMRU を確認してみました。

ファイルダウンロードカテゴリには含まれていませんが、似たカテゴリにファイルオープン・作成があります。この中に、OpenSavePIDlMRU と同様に発生するレジストリキーとして LastVisitedPidlMRU が記載されています。

LastVisitedPidlMRU も Windows 7 では Windows Shell Item 構造になっているようですので、こちらもパースを試してみたいと思います。

メモ帳(Notepad.exe)を実行し、ファイルを保存する事で ComDlg32 配下に LastVisitedPidlMRU キーが作成され、MRUListExと値 0 が生成されます。
以下は値 0 内容(16進数)となります。

6E 00 6F 00 74 00 65 00 70 00 61 00 64 00 2E 00
65 00 78 00 65 00 00 00 14 00 1F 42 25 48 1E 03
94 7B C3 4D B1 31 E9 46 B4 4C 8D D5 74 00 00 00
1A 00 EE BB FE 23 00 00 10 00 7D B1 0D 7B D2 9C
93 4A 97 33 46 CC 89 02 2E 7C 00 00 2A 00 00 00
00 00 EF BE 00 00 00 20 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 00 00 00 20 00 2A 00 00 00 19 00 EF BE 7E 47
B3 FB E4 C9 3B 4B A2 BA D3 F5 D3 CD 46 F9 82 07
BA 82 7A 5B 69 45 B5 D7 EC 83 08 5F 08 CC 20 00
00 00

先頭部分はプロセス名が入るようです。

6E 00 6F 00 74 00 65 00 70 00 61 00 64 00 2E 00
65 00 78 00 65 00 00 00 : notepad.exe

ここから先は Windows Shell Item構造として見ていきます。

14 00 :データサイズ(20byte)
1F : Class type indicator、Root folder shell item

Class type indicator が 0x1F ですので Page 8 を参照します。

42 :Sort index、0x42 Libraries
25 48 1E 03 94 7B C3 4D B1 31 E9 46 B4 4C 8D D5 :Shell folder identifier

ここまでの20バイト分で一区切り。次の2バイトは再び長さになります。

74 00 :データサイズ(116byte)
00 : Class type indicator、Users 0x00 shell item
00 :Unknown (Empty value)
1A 00 :データサイズ(26byte)
EE BB FE 23 :Data Signature、0x23febbee Size 16(Know folder identifier)
00 00 :Property store data size、Contains 0 if not present
10 00 :Identifier size(16byte)
7D B1 0D 7B D2 9C 93 4A 97 33 46 CC 89 02 2E 7C :Identifier data
00 00 :Unknown Empty bytes

この後には extension block 0xbeef0000 and 0xbeef0019 が続いていることになります。