@port139 Blog

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

LNKとShell item

LNKファイルのShell item構造を確認します。

USBメモリ上にある、Example.jpgを参照し、RecentフォルダにLNKファイルを生成します。

f:id:hideakii:20180324083000p:plain

Windows Shortcut File format specification を参考に、LNKファイルのFile headerを確認します。オフセット20からの4バイトがData flagsとなっています。 

f:id:hideakii:20180324084456p:plain

Data flags ⇒ 0x00 20 00 93 
0x00000001 HasTargetIDList
0x00000002 HasLinkInfo
0x00000010 HasWorkingDir
0x00000080 IsUnicode
0x00200000 DisableKnownFolderTracking

フラグHasTargetIDListのビットがONになっています。このフラグは、[MS-SHLLINK]: Shell Link (.LNK) Binary File Format では下記記述となっています。

The shell link is saved with an item ID list (IDList). If this bit is set, a
LinkTargetIDList structure (section 2.2) MUST follow the ShellLinkHeader.
If this bit is not set, this structure MUST NOT be present.

 ShellLinkHeaderの続きに、LinkTargetIDList structureが存在しています。オフセット76からの2バイトを確認します。IDListSize (2 bytes)は0x013D⇒317バイトとなっています。 

f:id:hideakii:20180324105701p:plain

ItemIDList (variable)とTerminalID (2 bytes)の合計317バイトは、下記でハイライトした範囲となります。

f:id:hideakii:20180324110329p:plain

データ内容を、Windows Shell Item format specificationを参考にパースしてみます。
Itemの中に、タイムスタンプ情報やNTFS file referenceを確認できます。

14 00⇒20 byte
1F Class type indicator ⇒ Root folder shell item
50 Sort index
E04FD020EA3A6910A2D808002B30309D ⇒ GUID ⇒ My Computer (Computer)

19 00⇒25 byte
2F Class type indicator ⇒Volume shell item 
453A5C00000000000000000000000000000000000000 ⇒E:\

56 00⇒86 byte
31 Class type indicator ⇒CLSID_ShellFSFolder ⇒File entry shell item 0x01 ⇒ Is directory
00 ⇒ Unknown (Empty value)
00000000 File size
774C4DB8 Last modification date and time Contains a FAT date and time in UTC
1000 File attribute flags ⇒ FILE_ATTRIBUTE_DIRECTORY
466F6C6465723100 ⇒ Folder1
4000 Extension block size ⇒ 64
0900 Extension version
0400EFBE Extension signature ⇒ File entry extension block 0xbeef0004
774C47B8 Creation date and time Contains a FAT date and time in UTC
774C4DB8 Last access date and time Contains a FAT date and time in UTC
2E00 ⇒ Windows 8.1, 10
0000
2B00000000000100 ⇒ NTFS file reference
0000000000000000
0000
00000000
1D907D00
46006F006C006400650072003100 ⇒ Folder1
0000
1600 ⇒ First extension block version offset
56 00⇒86 byte
31 Class type indicator ⇒CLSID_ShellFSFolder ⇒ 0x01 ⇒ Is directory
0000000000774C4CB81000466F6C6465723200400009000400EFBE774C4CB8774C4CB82E0000002C000000000001000000000000000000000000000000A81F930046006F006C00640065007200320000001600
62 00⇒98 byte
32 Class type indicator ⇒CLSID_ShellFSFolder ⇒ 0x02 ⇒ Is file
0000A03F00774C27B820006578616D706C652E6A706700480009000400EFBE774C37B8774C37B82E00000027000000000001000000000000000000000000000000CBF826016500780061006D0070006C0065002E006A007000670000001A00

 

LEcmdツールを使い、example.jpg.lnkファイルをパースします。

Target ID informationの項目を確認します。

f:id:hideakii:20180324083508p:plain

 

参考URL:

https://forensicswiki.org/wiki/LNK

https://msdn.microsoft.com/en-us/library/dd871305.aspx

github.com

github.com

https://ericzimmerman.github.io/

f:id:hideakii:20180324075823j:plain