The Missing LNK — ユーザー検索 LNK ファイルの関連付け

missing news

フォレンジック調査員は、LNK ショートカット ファイルを使用して、最近アクセスしたファイル (アクセス後に削除されたファイルを含む) に関するメタデータを回復します。最近の調査で、FireEye Mandiant は、攻撃者が Windows Explorer の検索結果に含まれるファイルにアクセスしたことを示す LNK ファイルを発見しました。私たちの経験では、これはフォレンジック アーティファクトの新しい組み合わせでした。標的のシステムに対する攻撃者の行動と目的をより完全に把握するのに役立つため、調査結果を共有できることを嬉しく思います。さらに、これらの調査結果は、内部関係者による脅威の場合にも活用され、ファイルを見つけて開くために使用されるパスを特定することもできます。

Windows LNK 形式

.lnk拡張子は、シェル アイテムと呼ばれるファイルのクラスに関連付けられています。これらのバイナリ形式のファイルには、Windows シェル(グラフィカル ユーザー インターフェイス)で他のデータ オブジェクトにアクセスするために使用できる情報が含まれています。

LNK ショートカット ファイルは、シェル アイテムの一種です。サポートされているアプリケーションからユーザーがファイルにアクセスすると、Windows オペレーティング システムによって自動的に作成されますが、ユーザーが手動で作成することもできます。通常、LNK ショートカット ファイルには、ファイル名とサイズ、元のパス、タイムスタンプ、ボリュームとシステム情報 (ドライブ タイプとシステム ホスト名など)、およびネットワーク情報 (ネットワーク共有パスなど) など、アクセスされたファイルに関するメタデータが含まれています。幸いなことに、これらのファイルを解析できるツールがあります。 Mandiant の内部では、FireEye エンドポイント セキュリティを利用して LNK ファイルを解析し、疑わしいユーザー検索用語を特定していますが、このブログ投稿では、Eric Zimmerman による LECmdを使用します。図 1 は、 LECmd.exeのコマンド ライン オプションを示しています。

missing
図 1: LECmd.exe コマンド ライン オプション

LNK ショートカット ファイル内の解析されたメタデータは、システムでのユーザー アクティビティのプロファイリングや削除されたマルウェアへの参照の検索など、複数のユース ケースのフォレンジック調査に関連しています。

ユーザー検索 LNK ファイル

最近、Mandiant は、最初は認識できなかった形式の LNK ファイルに遭遇しました。ファイルは Windows Server 2012 R2 システムからのもので、図 2 に示すようなパスを持っていました。拡張子とファイル パスに基づいて、LNK ショートカット ファイルであると推測しました。ただし、その内容は私たちにはなじみがありませんでした。

C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentpassw.lnk

C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentgov.lnk

図 2: 見慣れない LNK ファイルの完全なファイル パス

前の例では、フォレンジック調査員は LNK ショートカット ファイル名を使用して、ユーザーがpasswまたはgovという名前のファイルを開いたと結論付けます。次に、 LECmdなどのツールを使用して、追加のメタデータを回復します。これにより、アクセスされたファイルの完全なファイル パスと、アクセスされたときのファイルのタイムスタンプなどのフォレンジック情報が提供されます。

ただし、以前の LNK ファイルでは、期待されるメタデータが明らかになりませんでした。図 3 は、 passw.lnkに対するLECmdの出力を示しています (わかりやすくするために一部の情報は省略されています)。

LECmd バージョン 1.3.2.1

著者: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/LECmd

— ヘッダー —
作成されたターゲット:
ターゲットが変更されました:
アクセスしたターゲット:

ファイルサイズ: 0
フラグ: HasTargetIdList、IsUnicode、DisableKnownFolderTracking
ファイル属性: 0
アイコン インデックス: 0
ウィンドウの表示: SwNormal (ウィンドウをアクティブにして表示します。ウィンドウを最小化または最大化すると、ウィンドウは元のサイズと位置に戻ります。)

— ターゲット ID 情報 (形式: Type ==> Value) —

絶対パス:検索フォルダpassw

-ユーザー プロパティ ビュー ==> 検索フォルダー
>> プロパティ ストア (形式: GUIDID 説明 ==> 値)
d5cdd505-2e9c-101b-9397-08002b2cf9aeAutoList ==> VT_STREAM は実装されていません (まだ) 現在の内容については、拡張ブロックのセクションを参照してください
d5cdd505-2e9c-101b-9397-08002b2cf9aeAutolistCacheTime ==> 1849138729510
d5cdd505-2e9c-101b-9397-08002b2cf9aeAutolistCacheKey ==>ローカル ディスクの検索結果 (C:) 0

-変数: ユーザー プロパティ ビュー ==> passw
>> プロパティ ストア (形式: GUIDID 説明 ==> 値)
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明がありません) ==> VT_STREAM が実装されていません
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明なし) ==> passw
28636aa6-953d-11d2-b5d6-00c04fd918d0 アイテム タイプ ==> スタック
28636aa6-953d-11d2-b5d6-00c04fd918d0 SFGAO フラグ ==> 805306372
b725f130-47ef-101a-a5f1-02608c9eebac 項目名表示 ==> passw

— エンドターゲット ID 情報 —

— 余分なブロック情報 —

>> プロパティ ストア データ ブロック (形式: GUIDID 説明 ==> 値)
(不動産屋は空です)

図 3: passw.lnk の LECmd.exe 出力

注目すべきは、LNK ショートカット ファイルに期待される情報が存在しないことです。ただし、ターゲット ID 情報セクションには、 Search FolderpasswSearch Results in Local Disk (C:)などの興味深い文字列がありました。比較のために、図 4 では、テスト ファイルを使用した標準の LNK ショートカット ファイルの出力を強調表示しています。ターゲット ファイルのタイムスタンプ、ファイル サイズ、完全なファイル パス、およびその他の予想されるファイル メタデータが存在することに注意してください (わかりやすくするために一部の情報は省略されています)。

LECmd バージョン 1.3.2.1

著者: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/LECmd

— ヘッダー —
作成されたターゲット: 2020-01-21 19:34:28
ターゲットが変更されました: 2020-01-21 19:34:28
アクセスしたターゲット: 2020-01-22 21:25:12

ファイルサイズ: 4
フラグ: HasTargetIdList、HasLinkInfo、HasRelativePath、HasWorkingDir、IsUnicode、DisableKnownFolderTracking
ファイル属性: FileAttributeArchive
アイコン インデックス: 0
ウィンドウの表示: SwNormal (ウィンドウをアクティブにして表示します。ウィンドウを最小化または最大化すると、ウィンドウは元のサイズと位置に戻ります。)

相対パス: ……….Desktoptest.txt
作業ディレクトリ: C:Users<ユーザー名>Desktop

— リンク情報 —
フラグ: VolumeIdAndLocalBasePath

>>ボリューム情報
ドライブの種類: 固定記憶媒体 (ハード ドライブ)
シリアル番号: <シリアル番号>
レーベル: OSDisk
ローカル パス: C:Users<ユーザー名>Desktoptest.txt

— ターゲット ID 情報 (形式: Type ==> Value) —
絶対パス: My ComputerDesktoptest.txt

-ルート フォルダー: GUID ==> マイ コンピューター

-ルート フォルダー: GUID ==> デスクトップ

-ファイル ==> test.txt
短い名前: test.txt
更新日: 2020-01-21 19:34:30
拡張ブロック数: 1

——— ブロック 0 (Beef0004) ———
長い名前: test.txt
作成: 2020-01-21 19:34:30
最終アクセス: 2020-01-21 19:34:32
MFT エントリ/シーケンス番号: 108919/8 (0x1A977/0x8)

— エンドターゲット ID 情報 —

— 余分なブロック情報 —

>> トラッカー データベース ブロック
マシン ID: <ホスト名>
MAC アドレス: <MAC アドレス>
MAC ベンダー: インテル
作成: 2020-01-21 15:19:59

ボリューム ドロイド: <ボリューム>
ボリューム ドロイド誕生: <ボリューム>
ファイル ドロイド: <ファイル>
ファイル・ドロイドの誕生: <ファイル>

図 4: 標準 LNK ショートカット ファイル test.txt の LECmd.exe 出力

幸いなことに、調査中にユーザーのNTUSER.DATレジストリ ファイルも解析し (Harlan Carvey のRegRipperを使用)、ユーザー エクスプローラーの検索履歴の詳細を示すWorldWheelQueryキーを確認しました。 passw.lnkファイルが急に面白くなりました!図 5 は、レジストリ キーから解析されたエントリを示しています。検索履歴には、LNK ファイルで確認したのと同じ用語passwが含まれていることに注意してください。

wordwheelquery v.20100330
(NTUSER.DAT) ユーザーの WordWheelQuery キーの内容を取得します

SoftwareMicrosoftWindowsCurrentVersionExplorerWordWheelQuery
LastWrite 時刻 Wed Nov 13 06:51:46 2019 (UTC)

MRUListEx 順でリストされた検索

14 シークレット
6パス
13cc
12 bbb
11 ああ
10 *.cfg
9 りんご
8 日
7 プライベート
4 政府
5 空気
3 インテルサット
2 アドヘルスチェック
1 *.ps1
0 グローバル

図 5: ユーザーの NTUSER.DAT レジストリ ファイルから抽出された WorldWheelQuery キー

WorldWheelQueryレジストリ キーを介して、 MRUListExの順序に従って、 passwがユーザーの Explorer 検索履歴で 2 番目に新しい用語であることを特定しました。 MRUListExは、他の値が最近アクセスされた順序を一覧表示するレジストリ値です。つまり、エクスプローラで用語が検索された順序です。また、 passwは、 Search Results in Local Disk (C:)という文字列を含む異常な LNK ファイルのファイル名とも一致しました (図 3 を参照)。これらの詳細は、ユーザー エクスプローラーの検索の結果として LNK ファイルが作成されたことを示唆しているようです。そのため、これらを「ユーザー検索 LNK ファイル」と呼ぶようになりました。

ニュアンスと解釈

ユーザーの Explorer 検索履歴にリストされている用語を使用してシステムで LNK ファイルを検索した後、すべての用語がユーザー検索 LNK ファイルに関連付けられているわけではないことがわかりました。図 6 は、この検索の結果として特定された LNK ファイルとそれに付随するファイルの作成および変更のタイムスタンプを示しています。 WorldWheelQueryレジストリ キーを介して 15 件の検索が見つかりましたが、ユーザー検索の LNK ファイルは 4 件しかないことに注意してください。

2019-11-09 08:33:14 作成 変更
C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentgov.lnk

2019-11-09 09:29:11 作成
2019-11-09 09:29:37 変更
C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentprivate.lnk

2019-11-09 08:38:29 作成
2019-11-13 06:47:56 変更
C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentpassw.lnk

2019-11-13 06:57:03 作成
2019-11-13 06:57:25 変更
C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentSecret.lnk

図 6: WorldWheelQuery Explorer の検索用語が関連付けられた LNK ファイル

さらに、同時に作成された LNK ファイルのペアが似たような名前であることに気付きました。例として、図 7 に、2019 年 11 月 9 日 08:38:29 UTC に作成された 2 つの LNK ファイルを示します。

C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecent passw .lnk

C:Users<user>AppDataRoamingMicrosoftWindowsRecent passw ord.lnk

図 7: 同時に作成された LNK ファイル

さらにテストを行った結果、ユーザーがこの検索の結果として生成されたファイルの 1 つを開いた場合に、システムが Explorer 検索の結果としてユーザー検索 LNK ファイルを作成したことが判明しました。検索によって返されたファイルをユーザーが開かなかった場合、ユーザー検索 LNK ファイルが作成されませんでした。

この例では、 password.lnkファイルには、LNK ショートカット ファイルで予想されるように、ターゲット ファイルのメタデータが含まれており、 T:ディレクトリにあるpassword.txtという名前のターゲット ファイルを参照しています。 passw.lnkには、前述のように、ローカル ディスク (C:) 内の検索結果を参照する絶対パスSearch Folderpasswを含む、ユーザー検索 LNK ファイルの予想されるメタデータのみが含まれていました。ただし、このディレクトリの不一致(ローカル ディスク (C:) の検索結果のユーザー検索 LNK ファイル検索コンテキストと、 T:ドライブにある LNK ショートカット ファイル) は、実際には予想どおりです。

LNK ショートカット ファイルには、最近アクセスしたファイルのメタデータが含まれており、ユーザー検索の LNK ファイルについても同様であることがわかりました。 passw.lnkの作成タイムスタンプと変更タイムスタンプの違いに基づいて、ユーザーが少なくとも 1 つの他のインスタンスでpasswを検索し (これら 2 つの時点の間に検索が行われたかどうかを結論付けることができません)、そのファイルからファイルを開いたことがわかります。の検索結果。これは、図 8 のpasswユーザー検索 LNK ファイルのタイムスタンプに見られます。

2019-11-09 08:38:29 作成
2019-11-13 06:47:56 変更
C:Users<ユーザー>AppDataRoamingMicrosoftWindowsRecentpassw.lnk

図 8: passw.lnk の作成と変更のタイムスタンプ

passwの 2 回目の検索は、2019 年 11 月 13 日に発生しました。この例では、ユーザーは Windows エクスプローラーの検索を使用してpasswという用語を再度検索しましたが、今回はC:ドライブのコンテキスト内で検索しました (ローカルの検索結果Disk (C:) ) をクリックし、続いてpassword2.txtという名前のドキュメントをクリックします。 password2.lnkに対するLECmdの結果を図 9 に示します (明確にするため、およびクライアント情報を保護するために一部の情報は省略されています)。ユーザー検索 LNK ファイルに埋め込まれた情報は、ユーザー検索 LNK ファイルと同時に作成される LNK ショートカット ファイルに埋め込まれていることに注意してください (下線付きのテキスト)。 passw.lnkの検索コンテキストとpassword2.lnkの完全なファイル パスの場所の両方が一致します: C:

LECmd バージョン 1.3.2.1

著者: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/LECmd

— ヘッダー —
作成されたターゲット: 2015-11-09 22:14:10
変更されたターゲット: 2010-01-11 16:57:11
アクセスされたターゲット: 2015-11-09 22:14:10

ファイルサイズ: 19
フラグ: HasTargetIdList、HasLinkInfo、HasRelativePath、HasWorkingDir、IsUnicode、DisableKnownFolderTracking
ファイル属性: FileAttributeArchive
アイコン インデックス: 0
ウィンドウの表示: SwNormal (ウィンドウをアクティブにして表示します。ウィンドウを最小化または最大化すると、ウィンドウは元のサイズと位置に戻ります。)

相対パス: …………..<ファイルパス>password2.txt
作業ディレクトリ: C:<ファイル パス>

— リンク情報 —
フラグ: VolumeIdAndLocalBasePath、CommonNetworkRelativeLinkAndPathSuffix

>>ボリューム情報
ドライブの種類: 固定記憶媒体 (ハード ドライブ)
シリアル番号: <シリアル番号>
レーベル: (ノーレーベル)

ネットワーク共有情報
共有名: <ホスト名><最上位フォルダー>
プロバイダーの種類: <プロバイダーの種類>
共有フラグ: ValidNetType

ローカル パス: C:<最上位フォルダー>
共通パス: <ファイル パス>password2.txt

— ターゲット ID 情報 (形式: Type ==> Value) —

  絶対パス:検索フォルダpasswpassword2

  -ユーザー プロパティ ビュー ==> 検索フォルダー
  >> プロパティ ストア (形式: GUIDID 説明 ==> 値)
     d5cdd505-2e9c-101b-9397-08002b2cf9aeAutoList ==> VT_STREAM は実装されていません (まだ) 現在の内容については、拡張ブロックのセクションを参照してください
     d5cdd505-2e9c-101b-9397-08002b2cf9aeAutolistCacheTime ==> 1849138729510
     d5cdd505-2e9c-101b-9397-08002b2cf9aeAutolistCacheKey ==> ローカル ディスクの検索結果 (C:)0

  -変数: ユーザー プロパティ ビュー ==> passw
  >> プロパティ ストア (形式: GUIDID 説明 ==> 値)
     1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明がありません) ==> VT_STREAM が実装されていません
     1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明なし) ==> passw
     28636aa6-953d-11d2-b5d6-00c04fd918d0 アイテム タイプ ==> スタック
     28636aa6-953d-11d2-b5d6-00c04fd918d0 SFGAO フラグ ==> 805306372
     b725f130-47ef-101a-a5f1-02608c9eebac 項目名表示 ==> passw

-変数: ユーザー プロパティ ビュー ==> password2
>> プロパティ ストア (形式: GUIDID 説明 ==> 値)
49691c90-7e17-101a-a91c-08002b2ecda9 検索ランク ==> 0
28636aa6-953d-11d2-b5d6-00c04fd918d0 SFGAO フラグ ==> 1077936503
28636aa6-953d-11d2-b5d6-00c04fd918d0 デリゲート ID リスト ==> VT_VECTOR データは実装されていません (まだ) 内容については、拡張ブロックのセクションを参照してください
28636aa6-953d-11d2-b5d6-00c04fd918d0 アイテム タイプ ==> .txt
28636aa6-953d-11d2-b5d6-00c04fd918d0 名前の解析 ==> password2.txt
446d16b1-8dad-4870-a748-402ea43d788c0 サムネイル キャッシュ ID ==> 7524032674880659487
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明がありません) ==> Null
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明なし) ==> 1
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明はありません) ==> ドキュメント
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明がありません) ==> {1685D4AB-A51B-4AF1-A4E5-CEE87002431D}.Merge Any
1e3ee840-bc2b-476c-8237-2acd1a839b22 (説明なし) ==> C:<ファイルパス>password2.txt
b725f130-47ef-101a-a5f1-02608c9eebac アイテム タイプ テキスト ==> テキスト ドキュメント
b725f130-47ef-101a-a5f1-02608c9eebac 項目名表示 ==> password2
b725f130-47ef-101a-a5f1-02608c9eebac サイズ ==> 19
b725f130-47ef-101a-a5f1-02608c9eebac 変更日 ==> 01/11/2010 16:57:11
006fdbaa-864f-4d1c-a8e8-e62772e454fe (説明なし) ==> 59
006fdbaa-864f-4d1c-a8e8-e62772e454fe (説明なし) ==> 1077936423
cf5be8c0-236c-4ad3-bace-cd608a2748d70 (説明なし) ==> True
e3e0584c-b788-4a5a-bb20-7f5a44c9acdd アイテム フォルダ パス表示 ==> C:<ファイル パス>

— エンドターゲット ID 情報 —

— 余分なブロック情報 —

>> プロパティ ストア データ ブロック (形式: GUIDID 説明 ==> 値)
(不動産屋は空です)

>> トラッカー データベース ブロック
マシン ID: <ホスト名>
MAC アドレス: <MAC アドレス>
MAC ベンダー: VMWARE
作成: 2019-11-13 04:29:24

ボリューム ドロイド: <ボリューム>
ボリューム ドロイド誕生: <ボリューム>
ファイル ドロイド: <ファイル>
ファイル・ドロイドの誕生: <ファイル>

図 9: password2.lnk の LECmd.exe 出力

ここでのポイントは、ユーザー検索 LNK ファイルは検索語にのみ関連し、検索コンテキストには関連しないということです。これは、後でユーザーが検索結果を開いたときに同じ検索語 ( passwなど) を検索することを意味しますが、別のドライブまたはディレクトリでは、ユーザー検索 LNK ファイルの変更タイムスタンプと、ユーザー検索に含まれる検索コンテキストが変更されます。 LNK ファイル。これは、完全なファイル パスではなく単純なファイル名に依存する LNK ショートカット ファイルと歩調を合わせます。

タイムスタンプの解釈

これまで、 WorldWheelQueryレジストリ キーの構造と Windows レジストリで利用可能なタイムスタンプが原因で、調査者はレジストリ キーの最終変更時刻を使用して、最新の用語の検索時刻を特定することしかできませんでした。ユーザー検索 LNK ファイルでは、新しいタイムスタンプを使用して、ユーザーがその後検索からファイルを開いたときに、ユーザーが特定の用語を検索した時間を特定できます。さらに、ユーザー検索 LNK ファイルとWorldWheelQuery MRUlistExレジストリ キー値からの証拠を組み合わせて、ユーザーが完了した検索の順序を推測できます。たとえば、ユーザーは gov ( WorldWheelQuery検索インデックス 4)、 passw (インデックス 6)、 private (インデックス 7) を検索したため、 air (インデックス 5) も検索したが、結果のファイルは開かなかったと推測できます。この検索。

結論

LNK ショートカット ファイルは、アクセス時にファイルおよび関連するファイル メタデータへのユーザー アクセスを判断するための信頼できる方法です。ユーザー検索 LNK ファイルを使用すると、Windows エクスプローラーの検索履歴の結果を充実させ、ユーザー エクスプローラー検索の追加のタイムスタンプと検索からのファイルへのその後のアクセスを通じて、ユーザー アクティビティのより詳細な全体像を取得できるようになりました。

謝辞

Phillip Kealy と William Ballenthin のテクニカル レビューと全体的なプレゼンテーションに関するフィードバックに感謝します。

参照: https://www.mandiant.com/resources/blog/the-missing-lnk-correlating-user-search-lnk-files

Comments

Copied title and URL