@port139 Blog

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

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

昨日のレジストリキー OpenSavePidMRU ですが、バイナリデータの構造となっており、その内容は Windows Shell Item 構造となっています。

一部パースするツールがこの構造をうまく読めず、正しく結果を得られないようですので内容を確認しておきたいと思います。

Windows Shell Itemのデータフォーマットについては、下記でリバースエンジニアリングされた情報を参照する事ができます。

Windows Shell Item format specification
https://googledrive.com/host/0B3fBvzttpiiSajVqblZQT3FYZzg/Windows%20Shell%20Item%20format.pdf

Page 1 に Shell Itemについての記述があります。
オフセット 0~2 がShell Itemのサイズ、続く 1バイトが Class type indicator、オフセット 3 からがクラスタイプに応じたデータが続くという構造になっています。
メモ帳からファイルを保存した際に作成された、OpenSavePIDMRUキー配下にある、値「0」のバイナリデータから、先頭部分の2バイトを長さとして取り出すと下記データになっていました。

14 00 1F 42 25 48 1E 03 94 7B C3 4D B1 31 E9 46 B4 4C 8D D5

先頭2バイト 14 00 はサイズを示す値ですから 10進数に戻すと20バイトとなります。
次の1バイト 1F は Class type indicator になりますが、資料では 0x1f は 2.4. Root folder shell item となっています。
オフセット 3 からの 1 バイトは 42 です。これは Sort Index となっていますが、この値については Page 9 を参照すると 0x42 Libraries とされています。
オフセット4からの16バイト 25 48 1E 03 94 7B C3 4D B1 31 E9 46 B4 4C 8D D5 は Shell folder identifier Contains a GUID For a list of shell folder identifiers see:[LIBFWSI-WIKI] となっています。この情報はリンクされている Wiki の方に記載されており、GUID の値をベースに Wiki でリストを確認してみると、{031e4825-7b94-4dc3-b131-e946b44c8dd5} は Users Libraries となっています。

Shell Folder identifiers
https://code.google.com/p/libfwsi/wiki/ShellFolderIdentifiers

{031e4825-7b94-4dc3-b131-e946b44c8dd5} が指定されていますので、この続きのデータについては 2.2.4. Users 0x00 shell item でパースしていきます。