@port139 Blog

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

bam key と Program execution

HKLM\SYSTEM\CurrentControlSet\Services\bam\ キーに記録される、プログラム実行の痕跡について検証された記事が下記で参照できます。

padawan-4n6.hatenablog.com

私もこのレジストリキーについて検証してみたいと思います。
テスト環境は Windows 10 ver 1709 です。
テスト開始時点における、レジストリキーは、下記の状況です。すでに、幾つかのプログラム実行に関連した値が登録されています。

f:id:hideakii:20180224074823p:plain

 

 プログラム実行のサンプルとして、APT Simulatorを実行します。RUN EVERY TESTを選択しています。

f:id:hideakii:20180224080138p:plain

f:id:hideakii:20180224080555p:plain

APT Simulatorの実行後、レジストリキーを確認します。PowerShellやWscriptなどの値が追加された事を確認できます。

f:id:hideakii:20180224081050p:plain

 システムを再起動します。 

再起動後、mim.exe と p.exe の値が新たに登録されている事を確認できます。これらは、UserInitMprLogonScriptとRunキーに登録されているプログラムです。

f:id:hideakii:20180224081419p:plain

値には、FILETIMEが含まれているようですが、更新タイミングの詳細については未確認です。再起動しなくても、タイムスタンプが変化しているような気もします。

シフトキーを5回押し、cmd.exeを起動した後のレジストリキーは下記になります。タイムスタンプがCMD.EXEを起動した日時に変化しています。

f:id:hideakii:20180224082856p:plain

 


タイムスタンプの更新については、id:kasasagi_fさんがテストされていますので、そちらも参照してください。 

 

参考URL:

padawan-4n6.hatenablog.com

Background Activity Moderator Driver - Windows 10 Service - batcmd.com

github.com

  

f:id:hideakii:20180224073746j:plain

USN Analytics と Folder

 Forensicistさんが、USN Analyticsツールを公開されています。USN Analytics ツールは、$J をパースするだけでなく、フォルダ構造も解析してくれます。

つまり、$MFT ファイルを利用せずに、フォルダ構造をある程度再現できます。

サンプルのフォルダ構造を、テスト用の NTFS ボリューム上に作成します。

E:\>mkdir folder1
E:\>cd folder1
E:\folder1>mkdir folder2
E:\folder1>copy c:\case\sample.jpg e:\folder1\folder2\

f:id:hideakii:20180210110855p:plain

USN Analytics で $J をパースした結果は下記になります。Path のカラムでフォルダ構造を確認できます。

f:id:hideakii:20180210111701p:plain

 次に、Folder1 を削除し、新規にファイルを作成します。新規ファイルを作成した事により、Folder1 の FILE レコードが上書きされます。

E:\>rmdir /S /Q folder1
E:\>echo sample > zaki.txt

sample.jpg ファイルは $OrphanFiles 配下で確認できます。

f:id:hideakii:20180210112332p:plain

USN Analytics の結果を確認します。Sample.jpg の Path から、Folder1 が過去に存在していた事を確認できます。

f:id:hideakii:20180210112814p:plain

 更にファイルを作成し、Folder2 と Sample.jpg の FILE レコードを上書きします。

E:\>echo sample2 > zaki2.txt
E:\>echo sample3 > zaki3.txt

$OrphanFiles 配下には痕跡が残っていません。

f:id:hideakii:20180210113854p:plain

USN Analytics の結果を確認します。これまでの操作状況が分かります。

f:id:hideakii:20180210114311p:plain

フォルダを作成し、USN Journal を削除します。

E:\>mkdir folder1
E:\>fsutil usn deletejournal /D E:

USN Journal を有効にし、フォルダとファイルを作成します。$J 内に、Folder1 を作成した記録はありません。

E:\>cd folder1
E:\folder1>mkdir folder2
E:\folder1>copy c:\case\sample.jpg folder2
E:\folder1>rmdir /S /Q folder2

USN Analytics の結果を確認します。Sample.jpg の Path は Folder2 から表示されています。Folder2 の Delete が無い?

f:id:hideakii:20180210135824p:plain

-r オプション指定し、再度プログラムを実行します。Folder2 の削除を確認できました。

f:id:hideakii:20180210140532p:plain

 素晴らしい!! 

 

参考URL;

USN Analytics | Forensicist

http://www.jpcert.or.jp/present/2018/JSAC2018_03_yamazaki.pdf

 

f:id:hideakii:20180210103911j:plain

 

Fixup と Update Sequence Number

NTFS の Fixup 値と update sequence について確認します。Fixup については NTFS Documentation を参照します。

 サンプルの画像ファイル coin.jpg を E: ドライブへコピーし、MFT ファイルでFile レコードを確認します。coin.jpg ファイルの File レコード番号は 39、シーケンス番号は 1 です。

f:id:hideakii:20180203100928p:plain

MFTファイル内のレコード番号39(1024 x 39 = 399,936 )を参照します。

下記 FILE レコードでは、オフセット位置 4 にある Offset to the update sequence 値が 30 00 (⇒ 48)となっています。

30 00 Offset to the update sequence ⇒ 48
03 00 Size in words of Update Sequence Number & Array (S) ⇒ 3

オフセット位置 48 からの 2 バイト、03 00 が update sequence になります。

f:id:hideakii:20180203101648p:plain

上記図では、セクタの終わりにある 00 00 が FixUp 値 03 00 と入れ替えられている状態です。

次に、coin.jpg ファイルの名前を変更しレコードをアップデートしてみます。

>ren e:\coin.jpg NotCoin.jpg

MFTファイル内のレコード番号39(1024 x 39 = 399,936 )を参照します。

レコードの更新により、update sequence04 00 となっている事を確認できます。

f:id:hideakii:20180203103620p:plain

次に、この JPEG ファイルを削除します。

>del e:\NotCoin.jpg

 MFTファイル内のレコード番号39 を参照します。
レコードの更新により、update sequence05 00 となっている事を確認できます。
また、ファイルが削除された事により、File レコードのシーケンス番号は 2 になった事を確認できます。

f:id:hideakii:20180203104150p:plain

 レコードを再利用してみます。

 >echo "Ancient Andes" > e:\gold.txt

  MFTファイル内のレコード番号39 を参照します。
レコードが再利用され、update sequence02 00 となっている事を確認できます。

f:id:hideakii:20180203105107p:plain

 

参考URL:

http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf

 

f:id:hideakii:20180203100509j:plain

 

$INDEX_ALLOCATION (0xA0)とVirtual Cluster Number (VCN)

Folderと$BITMAP (0xB0)」の続きです。

Windowsフォルダの $BITMAP (0xB0) は下記の状態です。VCN 0 から VCN 5 までが利用されている事を確認できます。

3F 00 00 00 00 00 00 00

0 0 1 1 1 1 1 1 ⇒ Bitmap ⇒ クラスタの利用状況

LCNとVCNの関係は下記となっています。これは、 ”Windows”フォルダの $INDEX_ALLOCATION (0xA0)と、VCN of this INDX buffer in the Index Allocation の内容から確認できます。

LCN 984 ⇒ VCN 0
LCN 985 ⇒ VCN 1
LCN 986 ⇒ VCN 2
LCN 987 ⇒ VCN 3
LCN 988 ⇒ VCN 4
LCN 989 ⇒ VCN 5

これらのクラスタが、どの様に繋がっているかを確認してみます。

 

$INDEX_ROOT (0x90)

まず$INDEX_ROOT (0x90)で利用しているVCNを確認します。Flags値から、Large indexが必要となっている事を確認できます。

Resident, Named
90 00 00 00 Attribute Type
58 00 00 00 Length (including this header)
00 Non-resident flag
04 Name length
18 00 Offset to the Name
00 00 Flags
06 00 Attribute Id (a)
38 00 00 00 Length of the Attribute
20 00 Offset to the Attribute (b)
00 Indexed flag
00 Padding
24 00 49 00 33 00 30 00 ⇒ $I30

Index Root
30 00 00 00 Attribute Type
01 00 00 00 Collation Rule
00 10 00 00 Size of Index Allocation Entry (bytes) ⇒ 4096
01 Clusters per Index Record ⇒ 1
00 00 00 Padding (Align to 8 bytes)

Index Header
10 00 00 00 Offset to first Index Entry ⇒ 16
28 00 00 00 Total size of the Index Entries ⇒ 40
28 00 00 00 Allocated size of the Index Entries ⇒ 40
01 Flags ⇒ Large index (Index Allocation needed)
00 00 00 Padding (align to 8 bytes)

Index Entry
00 00 00 00 00 00 00 00 File reference
18 00 Length of the index entry
00 00 Length of the stream
03 Flags ⇒ ??
00 00 00
05 00 00 00 00 00 00 00 VCN of the sub-node in the index allocation attribute

上記 Index Entry から、INDEX_ROOTからVCN 5 が参照されている事を確認できます。
次に、VCN 5の内容を確認してみます。

VCN 5(LCN 989)

VCN 5 (LCN 989)の Index Record を確認します。

Index Header

49 4E 44 58 Magic number 'INDX'
28 00 Offset to the Update Sequence
09 00 Size in words of the Update Sequence Number &Array (S)
9D 06 82 0C 00 00 00 00 $LogFile sequence number
05 00 00 00 00 00 00 00 VCN of this INDX buffer in the Index Allocation ⇒ 5
28 00 00 00 Offset to the Index Entries (a)
F8 01 00 00 Size of Index Entries (a) ⇒ 504
E8 0F 00 00 Allocated size of the Index Entries (a)
01 1 if not leaf node (b)
00 00 00 Padding (always zero)
02 00 Update sequence
00000000000000000000000000000000000000000000

Index Record 1

2407000000000100 MFT Reference of the file
7000 Size of this index entry
5200 Offset to the filename
0100 Index Flags
0000 Padding (align to 8 bytes)
3F05000000000100 MFT File Reference of the parent
C7FCC1272939D301 File creation time
C7FCC1272939D301 Last modification time
23629B61EB55D301 Last modification time for FILE record
C7FCC1272939D301 Last access time
0000000000000000 Allocated size of file
0000000000000000 Real size of file
0000001000000000 File Flags
08 Length of filename (F)
02 Filename namespace
44004900410047004E004F007E003100000000000000
00 00 00 00 00 00 00 00 VCN of index buffer with sub-nodes ⇒ VCN 0 ⇒ LCN 984

Index Record 2
snip
01 00 00 00 00 00 00 00 VCN of index buffer with sub-nodes ⇒ VCN 1 ⇒ LCN 985

Index Record 3
snip
02 00 00 00 00 00 00 00 VCN of index buffer with sub-nodes ⇒ VCN 2 ⇒ LCN 986

Index Record 4
snip
03 00 00 00 00 00 00 00 VCN of index buffer with sub-nodes ⇒ VCN 3 ⇒ LCN 987

Index Entry

00 00 00 00 00 00 02 00 File reference
18 00  Length of the index entry
00 00 Length of the stream
03 Flags ⇒ ??
00 00 00
04 00 00 00 00 00 00 00VCN 4 ⇒ LCN 988

 

まとめると、下記の繋がりとなります。

ROOT ⇒ VCN 5
VCN 5 ⇒ Index Records 1 ⇒ VCN 0
VCN 5 ⇒ Index Records 2 ⇒ VCN 1
VCN 5 ⇒ Index Records 3 ⇒ VCN 2
VCN 5 ⇒ Index Records 4 ⇒ VCN 3
VCN 5 ⇒ Index Entry ⇒ VCN 4

参考URL:

http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf

 

f:id:hideakii:20180121090355j:plain

Folderと$BITMAP (0xB0)

フォルダの$BITMAP属性について確認します。

まず、「Windows」フォルダのMFTレコード番号(FILEレコード番号)を確認します。

f:id:hideakii:20180120092819p:plain

 $MFT内でオフセット1375232に移動し、$Bitmap属性を探します。

$INDEX_ROOT (0x90)があります。$I30という名前が設定されています。(Resident, Named)

f:id:hideakii:20180120093421p:plain

続けて$INDEX_ALLOCATION (0xA0)があります。$I30という名前が設定されています。(Non-Resident, Named)

f:id:hideakii:20180120093521p:plain

$BITMAP (0xB0)

$BITMAP (0xB0)がありました。(Resident, Named)

f:id:hideakii:20180120093730p:plain

Standard Attribute Header

B0 00 00 00 Attribute Type ⇒ $BITMAP (0xB0)
28 00 00 00 Length (including this header) ⇒ 40
00 Non-resident flag
04 Name length
18 00 Offset to the Name
00 00 Flags
04 00 Attribute Id (a)
08 00 00 00 Length of the Attribute
20 00 Offset to the Attribute (b)
00 Indexed flag
00 Padding
24 00 49 00 33 00 30 00 The Attribute's Name ⇒ $I30

The Attribute (c)
3F 00 00 00 00 00 00 00

0 0 1 1 1 1 1 1 ⇒ Bitmap ⇒ クラスタの利用状況

 $INDEX_ALLOCATION (0xA0)

Bitmapを利用している $INDEX_ALLOCATION (0xA0) の DataRunを確認してみます。

DataRun 21 06 D8 03

Size of the Offset field ⇒2
D8 03 ⇒ LCN 984
Size of the Length field ⇒1
Length ⇒ 6

Index Header の VCN of this INDX buffer in the Index Allocation を確認してみます。

LCN 984 ⇒ VCN 0
LCN 985 ⇒ VCN 1
LCN 986 ⇒ VCN 2
LCN 987 ⇒ VCN 3
LCN 988 ⇒ VCN 4
LCN 989 ⇒ VCN 5

f:id:hideakii:20180120104856p:plain

参考URL:

http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf

 

f:id:hideakii:20180120105028j:plain

Win10 と Thumbnail Index

Windows 10 1709 環境の Thumbnail Index ファイルを確認します。残念ながら、不完全なパース結果となっています。

サンプルファイル thumbcache_idx.db を参照します。ファイルフォーマットについては、「Windows Explorer Thumbnail Cache database format specification」を参考にします。

Index file File header

f:id:hideakii:20180110184726p:plain

Note:ヘッダ部分の先頭4バイトから一致していません。割り当ててみましたが、間違っていると思います。

0C 00 30 20 ?
49 4D 4D 4D "IMMM" The signature (magic identifier)
20 00 00 00 Version
00 00 00 00 UnKnown
05 00 00 00 The number of entries used ? ⇒ 5
41 00 00 00 Number of entries ? ⇒ 65
65 00 00 00 UnKnown ? ⇒ 101
000010000000100000001000180000000000100000001000180000001800000018000000180000001800000018000000180000001800000001000000030000000E000000000000003100000008000000000000000000000000000000000000000000000000000000000000000000000000000000 ⇒ ???

Index entry

以前に確認したHNYのキャッシュ画像の Index entry を探します。

thumbcache_768.db ファイルにキャッシュされている画像の Entry hash 値は「69 E2 89 B3 06 B1 66 EB」となっています。

2.2. Cache entry

43 4D 4D 4D "CMMM" The signature (magic identifier)
06 E1 01 00 Cache entry size ⇒ 123,142
69 E2 89 B3 06 B1 66 EB Entry hash
20 00 00 00 00 00 00 00 File extension UTF-16 string with end-of-string character ⇒ filename_length? ⇒ 32
A7 E0 01 00 Identifier string size ⇒ Data Size?⇒ 123,047
DE 02 00 00 Padding size ⇒ width? ⇒ 734
80 02 00 00 Data size ⇒ height? ⇒ 640
00 00 00 00 Unknown (empty value)
E1 7A 3F 47 2B 6D EE 78 Data checksum Contains a CRC-64
64 55 95 7F FE 4F BD 1F ⇒ ? Header Checksum
6500620036003600620031003000360062003300380039006500320036003900 ⇒ e.b.6.6.b.1.0.6.b.3.8.9.e.2.6.9. ⇒ Identifier string ?

この値は Thumbcache Viwer の Cache Entry Hash カラムでも確認できます。 

f:id:hideakii:20180113085746p:plain

Entry hash 値をファイル thumbcache_idx.db 内で検索すると、下記 Index entry がヒットします。

f:id:hideakii:20180113090036p:plain

69 E2 89 B3 06 B1 66 EB Entry hash
80 E2 2D 00 00 00 00 00 ??
FF FF FF FF Cache entry offset in corresponding thumbcache_16
FF FF FF FF Cache entry offset in corresponding thumbcache_32
FF FF FF FF Cache entry offset in corresponding thumbcache_48
FF FF FF FF Cache entry offset in corresponding thumbcache_96
18 00 00 00 Cache entry offset in corresponding thumbcache_256 ⇒ 24
18 00 00 00 Cache entry offset in corresponding thumbcache_768 ⇒ 24
FF FF FF FF Cache entry offset in corresponding thumbcache_1280
FF FF FF FF Cache entry offset in corresponding thumbcache_1920
FF FF FF FF Cache entry offset in corresponding thumbcache_2560
FF FF FF FF sr?
FF FF FF FF wide?
FF FF FF FF exif?
FF FF FF FF wide_alternate?
FF FF FF FF custom_stream?

 上記では、キャッシュ画像が無い場合は FF FF FF FF となっています。

 

参考URL:

github.com

https://www.researchgate.net/publication/262327134_An_analysis_of_the_structure_and_behaviour_of_the_Windows_7_operating_system_thumbnail_cache

IThumbnailCache interface (Windows)

WTS_FLAGS enumeration (Windows)

 

f:id:hideakii:20180110183104j:plain

Windows 10とThumbnailCacheId

Windows 10 ver 1709 環境上における、ThumbnailCacheId とサムネイルキャッシュの関係を確認します。

キャッシュされているサムネイルデータをThumbcache Viewer を使い確認します。

thumbcache_768.db内には2件の画像がキャッシュされています。

C:\Users\forensics\AppData\Local\Microsoft\Windows\Explorer\thumbcache_768.db

eb66b106b389e269.jpg

f:id:hideakii:20180106093719p:plain

9990cded46f057a1.jpg

f:id:hideakii:20180106093842p:plain

キャッシュされている画像ファイルのメタデータは、Windows Searchのデータベースで確認できます。

C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb

Windows.EDB

ESEDatabaseViewツールを利用し、Windows.edbファイルを開きます。
SystemIndex_PropertyStoreコンテナを参照します。

f:id:hideakii:20180106095931p:plain

 コンテナ内ではサムネイルキャッシュのファイル名部分を検索します。

例えば、9990cded46f057a1.jpg であれば検索するパターンは下記になります。

 A1 57 F0 46 ED CD 90 99

 4655-System_ThumbnailCacheId のカラムで一致するデータを確認できます。

f:id:hideakii:20180106101339p:plain

 ファイルパスなどを確認します。

f:id:hideakii:20180106101618p:plain

 上記では、9990cded46f057a1.jpg の元ファイル名などを確認できましたが、eb66b106b389e269.jpg については一致するレコードがコンテナ内に存在しません。

ファイル eb66b106b389e269.jpg は、C:\2018フォルダ配下にあり、このフォルダはインデックス対象となっていません。

C:\2018フォルダをインデックスの対象に追加します。 

f:id:hideakii:20180106102335p:plain

インデックスが完了しました。

f:id:hideakii:20180106102633p:plain

一度OSを再起動した後、Windows.EDB ファイルの内容を確認します。
残念ながら、OSを再起動せずに最新のインデックス内容をWindows.edbへ反映する方法が分かりませんでした。

 4655-System_ThumbnailCacheId のカラムでファイル eb66b106b389e269.jpg と一致する項目を確認できます。

f:id:hideakii:20180106103646p:plain

 

キャッシュ画像の元ファイルがインデックスされている場合は、メタデータをWindows.edb から確認できます。
しかし、元ファイルがインデックスされていない場合は、どこで確認すればよいのでしょうか?

 

参考URL:

 

System.ThumbnailCacheId (Windows)

A unique value used as a key to cache thumbnails. The value changes when the name, volume, or data modified of an item changes.

 

www.swiftforensics.com

f:id:hideakii:20180106104047j:plain

Win10 と Thumbnail Cache

Windows 10 1709 環境の Thumbnail Cache ファイルをテストします。
サンプルの JPEG画像をPreview Paneで表示します。

f:id:hideakii:20180101105702p:plain

ユーザーのプロファイルフォルダ配下に、thumbcacheファイルが作成されている事を確認します。

C:\Users\forensics\AppData\Local\Microsoft\Windows\Explorer

f:id:hideakii:20180101105912p:plain

ファイルフォーマットについては「Windows Explorer Thumbnail Cache database format specification」と「read_thumbcache.h」を参考にしています。

thumbcache_768.dbをパースしてみます。

f:id:hideakii:20180101110610p:plain

2.1. File header

43 4D 4D 4D "CMMM" ⇒ The signature (magic identifier)
20 00 00 00 Version ⇒ ?(Windows 10)
05 00 00 00 Cache type ⇒ thumbcache_768.db?
00 00 00 00 Offset to first cache entry (Or the file header size)
18 00 00 00 Offset to first available cache entry ⇒ 24
18 78 0A 00 Number of cache entries

2.2. Cache entry

43 4D 4D 4D "CMMM" The signature (magic identifier)
06 E1 01 00 Cache entry size ⇒ 123,142
69 E2 89 B3 06 B1 66 EB Entry hash
20 00 00 00 00 00 00 00 File extension UTF-16 string with end-of-string character ⇒ filename_length? ⇒ 32
A7 E0 01 00 Identifier string size ⇒ Data Size?⇒ 123,047
DE 02 00 00 Padding size ⇒ width? ⇒ 734
80 02 00 00 Data size ⇒ height? ⇒ 640
00 00 00 00 Unknown (empty value)
E1 7A 3F 47 2B 6D EE 78 Data checksum Contains a CRC-64
64 55 95 7F FE 4F BD 1F ⇒ ? Header Checksum
6500620036003600620031003000360062003300380039006500320036003900 ⇒ e.b.6.6.b.1.0.6.b.3.8.9.e.2.6.9. ⇒ Identifier string ?

Thumbcache Viewer で可視化

f:id:hideakii:20180101113720p:plain

 Disk Cleanup

 Disk Cleanupツールを利用すると、 Thumbnail Cache ファイルが削除されます。

f:id:hideakii:20180101142327p:plain

 Disk Cleanupツールを実行すると、キャッシュファイルは ThumbCacheToDelete フォルダに移動されています。

f:id:hideakii:20180101142641p:plain

TMPファイル内には、キャッシュデータを確認できます。

f:id:hideakii:20180101142756p:plain

OSを再起動すると、ThumbCacheToDelete フォルダは削除されるようです。

下記図は、OS 再起動後 Orphan フォルダ配下に thmF9A.tmp ファイルが残っていた状態です。

f:id:hideakii:20180101143518p:plain

 

参考URL:

 

github.com

 

Thumbcache Viewer - Extract thumbnail images from the thumbcache_*.db and iconcache_*.db database files.

 

neosmart.net

Forensic Analysis of Windows Thumbcache files
https://pdfs.semanticscholar.org/97a4/a135acf7ef534992e18f643f577a6749cb3e.pdf

 

f:id:hideakii:20180101171003j:plain

EventLogとEVTX

eventlogedit が利用されると、イベントログ内で個別のレコードが削除されます。

下記Blogでは、eventlogeditがレコードを削除する仕組み、検出ツールとサンプルのEVTXファイルが紹介されています。

blog.fox-it.com

 サンプルEVTXファイルの内容を確認したいと思います。EVTXのファイル形式については、Windows XML Event Log (EVTX) format の資料を参考にしています。

 サンプルファイル post-Security.evtx をイベントビューアで開きます。イベントビューアでは「4616(S): The system time was changed.」のレコードを確認できません。

f:id:hideakii:20171223153142p:plain

 File header

f:id:hideakii:20171223141431p:plain

45 6C 66 46 69 6C 65 00 "ElfFile\x00" Signature
00 00 00 00 00 00 00 00 First chunk number
01 00 00 00 00 00 00 00 Last chunk number ⇒ 1
7F 00 00 00 00 00 00 00 Next record identifier ⇒ 127
80 00 00 00 Header size ⇒ 128
01 00 Minor version
03 00 Major version
00 10 Header block size(or chunk data offset) ⇒ 4096
02 00 Number of chunks ⇒ 2
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Unknown (Empty values)
00 00 97 1B File flags
1A 82 44 3F Checksum

 Chunk header(Chunk 1)Size 512

f:id:hideakii:20171223142406p:plain

45 6C 66 43 68 6E 6B 00 "ElfChnk\x00" Signature
01 00 00 00 00 00 00 00 First event record number ⇒ 1
66 00 00 00 00 00 00 00 Last event record number ⇒ 102
01 00 00 00 00 00 00 00 First event record identifier ⇒ 1
66 00 00 00 00 00 00 00 Last event record identifier ⇒ 102
80 00 00 00 Header size (or offset to pointer data) ⇒ 128
A0 FA 00 00 Last event record data offset ⇒ 64,160
80 FD 00 00 Free space offset ⇒ 64,896
10 78 56 8C Event records checksum
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Unknown (Empty values)
01 00 00 00 Unknown (flags?)
84 B9 53 5B Checksum

 Chunk header(Chunk 2)Size 512

4096+65536 = 69,632

f:id:hideakii:20171223143732p:plain

45 6C 66 43 68 6E 6B 00 "ElfChnk\x00"  Signature
67 00 00 00 00 00 00 00 First event record number ⇒ 103
7E 00 00 00 00 00 00 00 Last event record number ⇒ 126
67 00 00 00 00 00 00 00 First event record identifier ⇒ 103
7E 00 00 00 00 00 00 00 Last event record identifier ⇒ 126
80 00 00 00 Header size (or offset to pointer data) ⇒ 128
28 5D 00 00 Last event record data offset ⇒ 23,848
F8 61 00 00 Free space offset ⇒ 250.080
A1 A8 17 5D Event records checksum
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Unknown (Empty values)
01 00 00 00 Unknown (flags?)
5F 2D 86 33 Checksum

 Event record ID 104

f:id:hideakii:20171223150709p:plain

2A 2A 00 00  "\x2a\x2a\x00\x00" Signature
68 06 00 00 Size ⇒ 1,640
68 00 00 00 00 00 00 00 Event record identifier ⇒ 104
55 CB 22 91 22 74 D3 01 Written date and time ⇒ FILETIME (UTC): 12/13/2017 2:56:33 PM、FILETIME (local): 12/13/2017 11:56:33 PM

 

上記Size値から、レコード104は73,608~75,248の範囲だと分かります。
しかし、オフセット 74,288 には Event record ID 105 のシグネチャがあります。
この部分が削除されているレコードとなります。

f:id:hideakii:20171223152702p:plain

2A 2A 00 00  "\x2a\x2a\x00\x00" Signature
C0 03 00 00 Size ⇒ 960
69 00 00 00 00 00 00 00 Event record identifier ⇒  105
00 26 28 96 22 74 D3 01 ⇒ FILETIME (UTC): 12/13/2017 2:56:42 PM、FILETIME (local): 12/13/2017 11:56:42 PM

 

オフセット 75,248 には再び、 Event record ID 105 のシグネチャが登場します。 

f:id:hideakii:20171223153545p:plain

2A 2A 00 00 "\x2a\x2a\x00\x00" Signature
38 04 00 00 Size ⇒ 1080
69 00 00 00 00 00 00 00 Event record identifier ⇒  105
37 B8 ED 96 22 74 D3 01 ⇒ FILETIME (UTC): 12/13/2017 2:56:43 PM、FILETIME (local): 12/13/2017 11:56:43 PM

 

イベントビューアでは、12/13/2017 11:56:42 PM のレコードが無い事を確認できます。

参考URL:

blog.fox-it.com

 

github.com

github.com

Windows 10 and Windows Server 2016 security auditing and monitoring reference
https://www.microsoft.com/en-us/download/details.aspx?id=52630

[MS-EVEN6]: BinXml Example Using Templates

 

f:id:hideakii:20171223154827j:plain

RegistryとTransaction log files

Windows 10 環境で取得した ntuser.dat.LOG1 ファイルのデータ内容を確認します。

ファイルフォーマットについては「Windows registry file format specification」のNew format を参照しています。

 ファイルの先頭 512バイトは、Base block となっており、NTUSER.DAT ファイルの一部バックアップとなっています。(部分的には異なる)

f:id:hideakii:20171210091124p:plain

Log entries

オフセット512からLog entrieが開始されます。

f:id:hideakii:20171210092120p:plain

48 76 4C 45 Signature ⇒ HvLE
00 8E 01 00 Size ⇒ 101,888
00 00 00 00 Flags 
9B 01 00 00 Sequence number
00 50 0E 00 Hive bins data size ⇒ 937,984
0D 00 00 00 Dirty pages count ⇒ 13
4E 8D E6 65 CA 45 AE 85 Hash-1 
E7 5 DD 9B AE 69 9 EC 79 Hash-2 

 Dirty pages references

オフセット40から Dirty pages references が Dirty pages count 分(=13)続きます。

f:id:hideakii:20171210092829p:plain

00000000 Offset ⇒ 0
00100000 Size ⇒ 4096
00000300 Offset ⇒ 196,608
00100000 Size ⇒ 4096 
00600300 Offset ⇒ 221,184
00100000 Size ⇒ 4096
00300600 Offset ⇒ 405,504
00200000 Size ⇒ 8192
00C00600 Offset ⇒ 442,368
00100000 Size ⇒ 4096
00B00700 Offset ⇒ 503,808
00100000 Size ⇒ 4096
00E00700 Offset ⇒ 516,096
00100000 Size ⇒ 4096
00200800 Offset ⇒ 532,480
00100000 Size ⇒ 4096
00600B00 Offset ⇒ 745,472
00100000 Size ⇒ 4096
00000C00 Offset ⇒ 786,432
00100000 Size ⇒ 4096
00A00C00 Offset ⇒ 827,392
00800000 Size ⇒ 32768
00A00D00 Offset ⇒ 892,928
00100000 Size ⇒ 4096
00D00D00 Offset ⇒ 905,216
00400000 Size ⇒ 16,384

Dirty page

例えば、「RegistryとFile format(3)」で参照した UserInitMprLogonScript 値は NTUSER.DAT ファイル内の、Hive Bins Data のオフセット 443,304 にあります。

上記 Dirty pages reference の Offset 値から、オフセット  442,368 のDirty Page内にデータが含まれている事を確認できます。

NTUSER.DAT.LOG1 ファイル内では、Base block 512 + Log entrie 40 + Dirty pages references 104 + 4096 + 4096 + 4096 + 8192 = 21,136 からの 4096 バイトになります。

f:id:hideakii:20171210100005p:plain

30 00 00 00 Size ⇒ 48
76 6B Signature ⇒ vk
16 00 Name length ⇒ 22
3C 00 00 00 Data size ⇒ 60
28 33 0E 00 Data offset  ⇒ 930,600
01 00 00 00 Data type ⇒ REG_SZ
01 00 Flags 
04 00  Spare
55736572496E69744D70724C6F676F6E5363726970746D00 ⇒ UserInitMprLogonScriptm

削除データの復元

yarp: yet another registry parser を利用すると、削除データの復元が可能です。

このツールはトランザクションログにも対応しており、オプション指定により含める・含めないを選択できます。 

f:id:hideakii:20171216100611p:plain

--deleteオプションを利用した出力結果で、削除された値を確認できました。

---

Key path: Environment
Last written timestamp (UTC): 2017-12-09 05:58:21.726800
Access bits: 2

Value name: Path
Value type: REG_EXPAND_SZ
Data size: 102
Data (decoded):
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

Value name: TEMP
Value type: REG_EXPAND_SZ
Data size: 66
Data (decoded):
%USERPROFILE%\AppData\Local\Temp

Value name: TMP
Value type: REG_EXPAND_SZ
Data size: 66
Data (decoded):
%USERPROFILE%\AppData\Local\Temp

Value name: OneDrive
Value type: REG_SZ
Data size: 56
Data (decoded):
C:\Users\forensics\OneDrive

Associated deleted values below (may contain reallocated data):

Value name: UserInitMprLogonScript
Value type: REG_SZ
Data size: 60
Data (decoded):
c:\users\forensics\mrset.bat

---

 snip

---

Deleted values (all, may contain reallocated data):

Value name: UserInitMprLogonScript
Value type: REG_SZ
Data size: 60
Data (decoded):
c:\users\forensics\mrset.bat

 素晴らしい!

 

参考URL:

github.com

github.com

www.slideshare.net

f:id:hideakii:20171216101947j:plain