ひよこメモ

自分が調べたこととか試したこととか書いていきます

NTFSのトンネリングとFileRecovery

はじめに

こんにちは、iria_piyo🐣です。

今回は削除ファイルとファイルシステムのトンネリング*1の影響を受けていない)同名のファイルが存在する状況で、ファイルを削除した際、削除ファイルを復元するとタイムスタンプはどうなるのか検証してみることにしました。 復元に使用したツールはFTK Imagerです。

環境

Windows10 バージョン1803

検証内容

削除ファイル/test01/test01.txtと/test01/test01.txtがある状態で/test01/test01.txtを削除し、キャッシュに保存させる。 その後、キャッシュが消えるまで(15秒以内)に削除ファイルの/test01/test01.txtを/test01に復元すると作成時間は引き継がれるのか。

削除ファイルの/test01/test01.txt

>istat \\.\C: 291605-128-1
MFT Entry Header Values:
Entry: 291605        Sequence: 31
$LogFile Sequence Number: 85061196630
Not Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 3669  (S-1-5-21-3763767945-1047358448-4033639875-8282)
Last User Journal Update Sequence Number: 17795086768
Created:        2018-09-30 01:23:31.588880700 (  
File Modified:   2018-09-30 01:23:31.589477300 (  
MFT Modified:    2018-09-30 01:23:33.356222400 (  
Accessed:     2018-09-30 01:23:31.588880700 (  
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 454284        Sequence: 269
Allocated Size: 0       Actual Size: 0
Created:        2018-09-30 01:23:31.588880700 (  
File Modified:   2018-09-30 01:23:31.589477300 (  
MFT Modified:    2018-09-30 01:23:31.589477300 (  
Accessed:     2018-09-30 01:23:31.588880700 (  
$OBJECT_ID Attribute Values:
Object Id: 38d9f439-c2f8-11e8-84e0-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-4)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-5)   Name: N/A   Resident   size: 16
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

/test01/test01.txt(キャッシュに保存させるファイル)

>istat \\.\C: 255230-128-1
MFT Entry Header Values:
Entry: 255230        Sequence: 251
$LogFile Sequence Number: 85063071559
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 3669  (S-1-5-21-3763767945-1047358448-4033639875-8282)
Last User Journal Update Sequence Number: 18057391744
Created:        2018-10-03 14:08:39.408589900 (  
File Modified:   2018-10-03 14:08:39.408589900 (  
MFT Modified:    2018-10-03 14:08:41.824790900 (  
Accessed:     2018-10-03 14:08:39.408589900 (  
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 454284        Sequence: 269
Allocated Size: 0       Actual Size: 0
Created:        2018-10-03 14:08:39.408589900 (  
File Modified:   2018-10-03 14:08:39.408589900 (  
MFT Modified:    2018-10-03 14:08:39.408589900 (  
Accessed:     2018-10-03 14:08:39.408589900 (  
$OBJECT_ID Attribute Values:
Object Id: 7dc85748-c64f-11e8-84e1-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-4)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-5)   Name: N/A   Resident   size: 16
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

ファイルの削除後、キャッシュが残っている時間内(デフォルトで15秒以内)に 最初の削除ファイルの/test01/test01.txtを復元します。

削除ファイル/test01/test01.txtの復元後(トンネリングの影響あり)

>istat \\.\C: 255056-128-2
MFT Entry Header Values:
Entry: 255056        Sequence: 20
$LogFile Sequence Number: 85063520070
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 6172  (S-1-5-32-544)
Last User Journal Update Sequence Number: 18057633792
Created:        2018-09-30 01:23:31.000000000 (  
File Modified:   2018-09-30 01:23:31.000000000 (  
MFT Modified:    2018-10-03 14:19:03.729618200 (  
Accessed:     2018-09-30 01:23:31.000000000 (  
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 454284        Sequence: 269
Allocated Size: 0       Actual Size: 0
Created:        2018-10-03 14:08:39.408589900 (  
File Modified:   2018-10-03 14:19:03.729618200 (  
MFT Modified:    2018-10-03 14:19:03.729618200 (  
Accessed:     2018-10-03 14:19:03.729618200 (  
$OBJECT_ID Attribute Values:
Object Id: 7dc85748-c64f-11e8-84e1-a81374942b83

Attributes:
Type: $STANDARD_INFORMATION (16-1)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-3)   Name: N/A   Resident   size: 86
Type: $OBJECT_ID (64-0)   Name: N/A   Resident   size: 16
Type: $DATA (128-2)   Name: N/A   Resident   size: 0

比較としてトンネリングの影響を受けないように削除、復元を行った場合のファイルの タイムスタンプも載せておきます。

ファイル復元後(トンネリングの影響なし)

>istat \\.\C: 29428-128-1
MFT Entry Header Values:
Entry: 29428        Sequence: 44
$LogFile Sequence Number: 85065412077
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 5093  (S-1-5-32-544)
Last User Journal Update Sequence Number: 18058576032
Created:        2018-09-29 01:44:39.000000000 (  
File Modified:   2018-09-29 01:44:39.000000000 (  
MFT Modified:    2018-10-03 14:54:59.251745600 (  
Accessed:     2018-09-29 01:44:39.000000000 (  
$FILE_NAME Attribute Values:
Flags: Archive
Name: test01.txt
Parent MFT Entry: 517790        Sequence: 20
Allocated Size: 0       Actual Size: 0
Created:        2018-10-03 14:54:59.250748000 (  
File Modified:   2018-10-03 14:54:59.250748000 (  
MFT Modified:    2018-10-03 14:54:59.250748000 (  
Accessed:     2018-10-03 14:54:59.250748000 (  

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-2)   Name: N/A   Resident   size: 86
Type: $DATA (128-1)   Name: N/A   Resident   size: 0

結果

キャッシュに保存させた/test01/test01.txtの作成時間が$FNの作成時間に引き継がれました。
今までの記事では$SIの作成にキャッシュされた作成時間が引き継がれていたので意外な結果でした。
そのほかのタイムスタンプは普通に復元したときと変わりませんでした。

注意

FTK Imagerは復元の際にタイムスタンプを戻す特徴があります。そのため、他のツールを用いた復元では、異なる結果になる可能性があります。

*1:ファイルがディレクトリから削除またはリネームされると、SFN/LFNと作成時間が短時間(デフォルトで15秒間)キャッシュに保存されます。このキャッシュは、ディレクトリごとに分けられています。 削除されたファイル名がキーとなり、新しいファイルがディレクトリに追加されると、キャッシュを検索し、復元できる情報があるか確認されます。 ディレクトリが削除されてしまうと、そのディレクトリのキャッシュも削除されてしまいます。