在資安事件中,常常聽到客戶資料遭外洩,這時大家就會想說,是不是 Web Server 或公司內部電腦是否有木馬病毒入侵,但是並不是什麼案件都是被植入執行程式,而是利用SQL語法的盲點或該網站漏洞進行攻擊,有些企業尤其是電商,對資安概念較不注重,前台資料送往後台時沒做一些字串過濾與篩檢直接跟資料庫溝通,導致資料庫回傳出不該傳的資料出現,好比客戶名單或非正常登入後台,我用SQLite簡單展示SQL語法盲點,我們先看 DB Table:
目前分類:數位鑑識 (14)
- Oct 21 Thu 2021 10:17
數位鑑識-網站資料外洩之SQL語法盲點
- Oct 12 Tue 2021 11:09
數位鑑識-人為操作調查之USB插拔紀錄(USB devices)
在企業界裡,很多大公司或機敏性較高的公家單位,對機密資料外流嚴重性非常重視,尤其像台積電這種大公司以及軍方單位,最害怕的就是有內賊把內部資料外流出去,畢竟這些單位的網路都是封閉的,所以就有可能會用USB外接儲存裝置把內部資料流出,不過這些單位在這方面的防護都做得非常好,但我還是介紹一下,要是有外接裝置插入,我們可以從哪裡調查。
可以從 Registry 裡找到外接裝置插入這台電腦相關的安裝資訊,如圖:
- Oct 05 Tue 2021 20:45
數位鑑識-人為操作調查之檔案開啟紀錄(Jumplist)
在數位鑑識裡,有可能遇到公司想調查離職員工的使用電腦,或是檢警調查嫌犯電腦的操作紀錄等…,我們可以從 C:\Users\[使用者名稱]\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations 這個路徑下的檔案做解析,如下圖:
- Oct 01 Fri 2021 09:34
數位鑑識-可疑程式調查之程式保護技術(程式加殼)
在調查惡意程式時,我們應該得先瞭解惡意程式是怎麼撰寫的,因為您要是更熟悉製作手法就越能知道我該從哪裡下手調查,這次我用簡單方式來講解程式加殼,以前很多惡意程式被多家防毒軟體掌握,導致無法對該電腦進行執行,因此加殼手法在惡意程式上越來越常見,我們看下圖:
- Sep 21 Tue 2021 22:44
數位鑑識-惡意程式調查之程式執行痕跡
我們在調查一台主機時,往往會想知道這台主機到底執行過哪些程式,以及他到底是什麼時間啟動的,在 Windows 的數位鑑識調查裡,可以從 C:\Windows\Prefetch 裡的 .pf 檔案去做解析可得知這台電腦到底執行過哪些程式,但 Windows 版本不同,他的 Binary 格式也有所不同,像 XP、Server 2003 他跟 Win7、Server 2008 Binary 位移就不一樣,而且他們的執行時間只記錄最後一次那筆,到 Win8 後他執行時間都會有紀錄,Win10 後他的 Binary 又多做一層壓縮演算法,所以要先解壓在解析 .pf 檔,看解析後的下圖:
- Sep 17 Fri 2021 09:06
數位鑑識-惡意程式調查之權限異常
我們在尋找可疑程式或檔案時,看到工作管理員或其它第三方工具檢視正在執行的程序,往往最多的程序執行位置落在 C:\Windows\System32,但是這麼多的程序又不知道到底是不是 Windows 自身的程式還是被人惡意放入在該位置執行的,您或許會調查他的數位簽章,可是 System32 裡的程式並不是每個都有簽章,那我們該如何判斷該程序是否是 Windows 自身的程式,我提供一個方向讓大家可以參考看看。
據我所知道的在 C:\Windows 這目錄底下包含子目錄的執行程式(.exe),它的可完整操作權限使用者名稱為:Trusterinstaller,他可以完全控制、修改、執行、讀取、寫入,但其他使用者權限如:SYSTEM、Administrators、Users 只能執行與讀取,我們可以進入到 C:\Windows 這目錄找一隻執行程式(.exe),按右鍵 > 內容 > 安全性看看他的權限結構,如圖:
- Sep 14 Tue 2021 09:33
數位鑑識-惡意程式調查之開機啟動
在調查惡意程式時,尤其是木馬類型的程式,他基本特性就是要常駐,不能因為重開機就停止運作,不然就沒任何作用跟一般垃圾檔案沒兩樣,所以它得一直維持它的運作方法就是寫入開機啟動,但寫開機啟動方法好幾個,我舉常見的這四種方式。
1.Registry
- Sep 11 Sat 2021 22:24
數位鑑識調查-Linux Ext4 格式邏輯分析(刪除檔案回復)
在上一篇 Ext4 的介紹,最後講到我們可以從 Ext4 的一個地方有機會找到該筆刪除檔案的檔案實體位置,這個地方就是 Ext4 Journal ,我們可以從 Inode 表裡找到它,它在表裡編號為 8,Journal 裡面記錄著 Ext4 裡檔案與目錄的變化,是記載著這些檔案、目錄 Inode 內容,所以我們可以從這裡找到那筆刪除檔案還沒被修改成已刪除的 Inode 內容,找到這筆 Inode 內容後,就能看到他檔案實體位置資訊,藉此將這筆刪除檔案復原,當然 Journal 也是有最大 Size 限制,換句話說時間經過太久或檔案變動過多,也是可能被覆蓋資訊,那就來看下面尋找刪除檔案方法展示圖:
這張圖是上一篇介紹的刪除檔案 Inode 內容資訊
- Sep 09 Thu 2021 09:27
數位鑑識調查-Linux Ext4 格式邏輯分析(檔案資訊)
在前幾篇文章講完 Windows 使用為主的 NTFS 硬碟邏輯格式,這次來分享 Linux 常用的硬碟邏輯格式 Ext4,因為本人習慣用 Windows 系統,所以 Ext4 邏輯是用 Windows 去解析此格式的硬碟,雖然 Windows 不支援 Ext4 但解析硬碟格式邏輯資料方式都是一樣的,不管是什麼作業系統。
我以簡單方式說明,其實 Ext4 一開始從 Super Block 找到 Inode 位置,我們就可以用遞迴方式解析該硬碟底下所有目錄與檔案,Inode 簡單來說就是紀錄硬碟內的檔案與目錄詳細資訊,感覺跟 NTFS 的 MFT 表很像但沒比它記錄的結構邏輯這麼複雜,所以一開始會從 Root 在 Inode 編號為 2 開始解析,資料結構內容如下:
- Sep 06 Mon 2021 21:36
數位鑑識調查-NTFS 格式邏輯分析(刪除檔案)
NTFS 刪除檔案其實只是在 MFT 表裡的 File Record Header 結構中的 Flage 為 0,系統就會知道這筆資料已被刪除,他所存放的硬碟空間位置將會釋出,該位置隨時都有可能被新進的檔案覆蓋,當被覆蓋時刪除的檔案就救不回來了,除非你有做備份或還原點, 我們知道 MFT 表就是一張索引表紀錄著每個目錄與檔案的詳細資訊,當該筆檔案索引被註記為刪除後,這筆索引也隨時有可能被新進的檔案或目錄所取代,當索引被取代就算你 0x80 檔案實體位置還沒被覆蓋也難以找回你所刪除的檔案,尤其現在的 Windows 10 系統背後讀寫非常之頻繁,每次刪除檔案後過個幾秒後,就找不到剛刪除的痕跡,索引跟實體很快就被覆蓋了,資料越來越不好救,除非是非系統磁區(非C:磁區)。下圖為 File Record Header 結構中的 Flage 狀態:
正常檔案:
- Sep 03 Fri 2021 22:47
數位鑑識調查-NTFS 格式邏輯分析(Attribute List)
今天來說說 Attribute List 也就是 MTF 表的 0x20 ,這個 0x20 在MFT表裡是不常出現的,通常是MFT表單一檔案資訊內的 Attribute 資訊太多可能寫入空間會不夠,畢竟 MFT 表一筆資料空間只有 65536 Byte ,就會把一些 Attribute 資訊分散在 MFT 表其他位置,再把分散在哪的這些資訊記錄在 0x20,所以舉個例子,我上次說過檔案內文資訊存放在 0x80 裡,但這檔案的 MFT 表資訊並沒 0x80 的紀錄,我們就要到 0x20 去找該檔案的 0x80 資訊存放在 MFT 表的位置,再從該位置找到 0x80 資訊把檔案內文讀取出來,如下圖:
- Sep 02 Thu 2021 22:14
數位鑑識調查-NTFS 格式邏輯分析(目錄結構)
在上一篇講到 NTFS 檔案儲存邏輯,有區分兩種 Resident 以及 Non Resident ,在目錄結構的資訊紀錄也是有分該兩種,只不過檔案的資訊都記錄在0x80,但目錄的 Resident 是記錄在 0x90 Non Resident 則記錄在 0xA0 所以簡單來說,目錄底下的子目錄或子檔案數量不多,可把這些資訊記錄在 MFT 表內,就會把這些資訊寫在 0x90 內容底下,如下圖:
- Aug 29 Sun 2021 21:42
數位鑑識調查-NTFS 格式邏輯分析(檔案儲存)
在做數位鑑識調查時我們最怕一件事,就是破壞證物,因為證物一旦被破壞與剛開始的不一樣,往往在法庭上是不被公認這是有效證據,因此我們取得到原始證物時會再做一份副本,這時會在原始證物與副本做 Hash 值比對,要是兩邊 Hash 都一樣就能以這為依據,在法庭上就能說我在副本調查到的證據,原始證物也會有一樣的跡證,畢竟兩份是一模一樣的。
回到主題,在我們調查的證物大多數是 Windows 作業系統的硬碟,通常 Windows 的主要磁區格式邏輯幾乎為 NTFS ,這時就得瞭解 NTFS 在儲存檔案邏輯是什麼?NTFS 儲存檔案的內文記錄在 MFT 表中的0x80裡,但我有看過的案例中,曾經有遇過內文存在0x30中,不過那少之又少檔案Size也很小,我們回到0x80,在0x80裡有分Resident以及Non Resident這兩種,Resident 通常出現的狀況是,檔案 Size 不大內文可儲存在 MFT 表裡,換句話說內容存在 MFT 表的0x80屬於 Resident 如下圖:
- Aug 27 Fri 2021 22:04
數位鑑識調查-NTFS 格式邏輯分析(時間戳記)
我們在做數位鑑識調查的時候,不管委託的案件是否是機密人為竊取或是惡意程式入侵外流,一定會要求委託人是否能提供案件發生的日期範圍,我們就可以在調查上縮小範圍,因為一顆硬碟裡的檔案起碼幾十萬個以上在起跳,要是很久沒重灌的電腦或是伺服器,那檔案百萬跑不掉,這麼多的檔案要一個一個看,很多人會說我先到旁邊睡一下,因此時間範圍是非常重要,能縮小你查看範圍也有效的檢視該案件發生正確時間。
我們可以從很多系統日誌去作調查,但那些日誌很多都是用特別編碼做資料儲存,不是簡單明文記錄,所以得花時間去做解碼才能把系統資訊解析出來。
不過我這次要分享的是,存在硬碟邏輯磁區NTFS格式裡所記錄的檔案所有時間戳記,有些時間戳記是你按檔案->右鍵->內容是看不到的,那我就開始介紹吧!
在NTFS邏輯格式裡,他的檔案訊息是記錄在$MFT裡,有聽過的人應該都會說MFT表(Master File Table),這表裡面記錄的檔案 Attribute 可能會有這幾種:
0x10 STANDARD INFORMATION
0x20 ATTRIBUTE LIST
0x30 FILE NAME
0x40 OBJECT ID
0x50 SECURITY DESCRIPTOR
0x60 VOLUME NAME
0x70 VOLUME INFORMATION
0x80 DATA
0x90 INDEX ROOT
0xA0 INDEX ALLOCATION
0xB0 BITMAP
0xC0 REPARSE POINT
0xD0 EA INFORMATION
0xE0 EA
0x100 LOGGED UTILITY STREAM
以上的這些 Attribute 並不是每個檔案都會有這些資訊,就舉個幾個例子0x80所記錄的就是檔案身體存放在硬碟的什麼地方,但並不是每個檔案都會有0x80的資訊,因為我也有看過檔案身體存放在0x30裡,不過那檔案Size通常很小。0x90就是記錄目錄底下子檔案訊息,所以看到0x90就知道這是個目錄不是檔案,看到0x80就是檔案不是目錄。好這些不是這文章的主題,我們要調查時間戳記要看的是0x10以及0x30,我們在右鍵內容看到的建立時間、修改時間、存取時間是記錄在0x10裡面,但0x10裡面還有一個時間是 MFT changed time 也有人講 Entry modify time,他其實是該檔案有修改到MFT表裡的任何資訊這時間就會變動,舉例來說:檔案修改、移動、更名、屬性變動等…都會影響到這時間變化。再來就是0x30裡的時間,其實這裡一樣有這四個時間,建立時間、修改時間、存取時間、MFT changed time,但特別的是檔案剛建立時這四個時間會落在這建立的時間,當檔案名稱變更後,建立時間、修改時間會更0x10的建立時間、修改時間一樣,但存取時間、MFT changed time就會有所變化,0x30時間通常要用工具去查看,不然一般右鍵內容也是看不到的,更何況0x10的建立時間、修改時間、存取時間是可以容易被人為竄改,所以0x30還是有它的參考性。
NTFS裡還有一個檔案也有紀錄檔案變動日誌,內容如下:
37252,425932,FileCreate, *Close*,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:53:54
52999,596562,FileDelete, *Close*,WindowsUpdate.20180706.150824.564.1.etl,2018/07/13 09:53:54
37251,36871,DataExtend,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:53:55
37251,36871,DataOverwrite, DataExtend,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:53:56
466432,466430,DataExtend,ReportingEvents.log,2018/07/13 09:53:58
37253,467942,FileCreate,DLLHOST.EXE-88F23425.pf,2018/07/13 09:53:58
37253,467942,DataExtend, FileCreate,DLLHOST.EXE-88F23425.pf,2018/07/13 09:53:58
37253,467942,DataExtend, FileCreate, *Close*,DLLHOST.EXE-88F23425.pf,2018/07/13 09:53:58
563008,562976,DataExtend, DataTruncation,SvcRestartTask,2018/07/13 09:53:59
563008,562976,DataExtend, DataTruncation, *Close*,SvcRestartTask,2018/07/13 09:53:59
37254,467942,FileCreate,SVCHOST.EXE-678BC29E.pf,2018/07/13 09:54:00
37254,467942,DataExtend, FileCreate,SVCHOST.EXE-678BC29E.pf,2018/07/13 09:54:00
37254,467942,DataExtend, FileCreate, *Close*,SVCHOST.EXE-678BC29E.pf,2018/07/13 09:54:00
37255,467942,FileCreate,SVCHOST.EXE-EC10D95C.pf,2018/07/13 09:54:03
37255,467942,DataExtend, FileCreate,SVCHOST.EXE-EC10D95C.pf,2018/07/13 09:54:03
37255,467942,DataExtend, FileCreate, *Close*,SVCHOST.EXE-EC10D95C.pf,2018/07/13 09:54:03
37259,467942,FileCreate,SVCHOST.EXE-F916FF55.pf,2018/07/13 09:54:04
37259,467942,DataExtend, FileCreate,SVCHOST.EXE-F916FF55.pf,2018/07/13 09:54:04
37259,467942,DataExtend, FileCreate, *Close*,SVCHOST.EXE-F916FF55.pf,2018/07/13 09:54:04
37251,36871,DataOverwrite, DataExtend, *Close*,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:54:05
37251,36871,RenameOldName,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:54:05
37251,596586,RenameNewName,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:54:05
37251,596586,RenameNewName, *Close*,5f62f729098efaf94166f38f936481c6006e19eb,2018/07/13 09:54:05
36871,596586,FileDelete, *Close*,92d7bc1871eea88a1915845bd7deb86f,2018/07/13 09:54:05
上面資訊是我自己寫程式解析出來的,第一欄位就是該檔案MFT表的編號,第二欄位是該檔案父目錄在MFT表的編號,下一個欄位就是檔案做了什麼動作,再來是檔案名稱,最後重要的欄位就是發生的時間,這可以拿來做重要參考,但是這日誌還是有資料最大限制,超過就會覆蓋掉先前記錄,所以在系統碟裡大部分都在C磁區,覆蓋率非常高,因為系統經常讀讀寫寫的,尤其是 Win10 讀寫的非常誇張,日誌的日期都大概只能看到近期的一兩天導致不好調查,不然這裡面資訊非常豐富。
以上是我分享給各位NTFS邏輯格式時間戳調查經驗,希望大家會喜歡這篇文章。
最後分享給大家這是我的粉絲團,對資安數位鑑識有興趣的可以參考看看,不吝嗇給個讚跟追蹤吧!
facebook.com/rexlintechnology