# Windows Forensics [Part 3]
Để kết thúc session này thì mình sẽ tìm hiểu một số artifact thường thấy trong windows (trừ những cái ở part 2).
## 1. Windows Recycle Bin
Windows recycle artifact lưu giữ thông tin có giá trị liên quan đến các mục đã xóa như tên của mục đã xóa, vị trí ban đầu của mục trước khi xóa, kích thước của mục đã xóa và ngày giờ mục đó bị xóa.
Ở Windows Vista, 7, 8, 10 and 11 thì windows recycle bin được lưu trữ ở ( truy cập bằng quyền admin) : ```C:\$Recycle.Bin\{SID}\$I######```
Khi một file bị xóa thì sẽ có hai tệp mới được tạo là '$R' và ' $I' (mỗi chữ cái được theo sau bởi một chuỗi sáu ký tự ngẫu nhiên)
Nội dung mục đã xóa sẽ được lưu trữ trong tệp $R###### trong khi metadata (ngày xóa tệp, đường dẫn tệp gốc và kích thước tệp) cho mục đó sẽ được lưu trữ trong tệp $I######.
Và tool dùng để parse các file như $I là [ $I Parse](https://df-stream.com/download/321/)

## 2. LNK file
LNK hay còn gọi là file shortcuts, nó không phải là tệp tin thực sự mà bạn đang muốn mở, mà chỉ là một liên kết tới đích thực sự của nó là một file khác.
Các tệp LNK cũng có thể cung cấp thông tin về hành vi và thói quen của người dùng. Ví dụ: bằng cách kiểm tra tên và vị trí của shortcuts, có thể xác định chương trình và tệp nào người dùng truy cập thường xuyên nhất. Bên cạnh đó attacker cũng sẽ lợi dụng chức năng point của lnk để cho nó trỏ tới một tệp độc hại nào đó.
Ở windows 10 thì tệp lnk có thể được tìm thấy ở ```C:\Users\<tên người dùng>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs``` hoặc ```C:\ProgramData\Microsoft\Windows\Start Menu\Programs```.
Có nhiều tool để parse file lnk nhưng mình vẫn hay dùng
[LECmd](https://f001.backblazeb2.com/file/EricZimmermanTools/net6/LECmd.zip)

## 3. Prefetch Files
file prefetch giúp tối ưu hóa việc khởi động các ứng dụng. Khi bạn khởi động một chương trình trên Windows, hệ điều hành sẽ ghi lại thông tin về cách chương trình đó được tải và sử dụng tài nguyên hệ thống như:
+ Tên ứng dụng
+ Path của ứng dụng
+ Timestamp
Thông tin này được lưu trong các tệp tin Prefetch để giúp hệ điều hành Windows tối ưu hóa quá trình khởi động trong các lần tiếp theo.
Đường dẫn để truy cập file prefetch là : ```C:\Windows\Prefetch\```

Cấu trúc tên của file là : ``` tên file sinh ra file pf + '-' + hash của đường dẫn nơi file được thực thi```.
Tool mình hay dùng để parse file .pf là [PECmd](https://f001.backblazeb2.com/file/EricZimmermanTools/net6/PECmd.zip).

## 4. Windows Browser
Windows Browser cũng là một artifact quan trọng mà mình nghĩ không nên bỏ qua khi tìm hiểu về windows forensics. Web browser chứa rất nhiều thông tin như:
```
+Cookies.
+Dữ liệu trang web được lưu trữ.
+Các tập tin đã tải xuống.
```
Dưới đây là một số web browser thông dụng và những thông tin mà mình cần quan tâm :
**Microsoft Edge (Chromium-based):**
| Info | Path |
|-----------------------------------|------------------------------------------------------------------------------|
| User Profile | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\* |
| History (SQLite Database) | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\History |
| Cookies (SQLite Database) | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\Network\Cookies |
| Cache | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\Cache\* |
| Sessions | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\Sessions\* |
| Settings and Other Configuration: | %LocalAppData%\Microsoft\Edge\User Data\[Default\|Profile X]\Preferences |
**Google Chrome**
| Info | Path |
|----------------------------------|----------------------------------------------------------------|
| User Profile | %LocalAppData%\Google\Chrome\User Data\Default\* |
| History (SQLite Database) | %LocalAppData%\Google\Chrome\User Data\Default\History |
| Cookies (SQLite Database) | %LocalAppData%\Google\Chrome\User Data\Default\Network\Cookies |
| Cache | %LocalAppData%\Google\Chrome\User Data\Default\Cache\* |
| Sessions | %LocalAppData%\Google\Chrome\User Data\Default\Sessions\* |
| Settings and Other Configuration | %LocalAppData%\Google\Chrome\User Data\Default\Preferences |
## 5. OST/PST file
OST và PST là những file sẽ lưu mail, attachments, notes và những dữ liệu có liên quan đến Microsoft Outlook.
| | OST | PST |
|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| Tác dụng | OST (Offline Storage Table) cho phép người dùng có thể làm việc offline và dữ liệu sẽ được tự động synchronised với Exchange Server khi có kết nối mạng trở lại. | PST (Personal Storage Table) được dùng để lưu trữ các data như bản copy mail, contacts, thông tin liên quan đến Outlook account,... trên local machine |
| Được tạo khi | OST được tạo khi người dùng config Outlook với caching exchange mode | PST được tạo khi người dùng tạo file Outlook data mới | |
| Kích thước | Kích thước lớn hơn | Kích thước nhỏ hơn (giới hạn về độ lớn tùy thuộc vào phiên bản Outlook đang sử dụng) |
Các bạn có thể tìm thấy file `ost` ngay sau khi setup account Outlook tại đường dẫn `%USERPROFILE%\AppData\Local\Microsoft\Outlook`

Để tạo được `.pst` file thì theo cách sau

Vì không có office bản quyền nên mình không tạo được 😭
Đúng như công dụng thì attacker có thể lợi dụng 2 loại file này để có được thông tin nhạy cảm của victim. Bình thường mình hay dùng [Kernel OST Viewer](https://www.nucleustechnologies.com/ost-viewer.html) để đọc những OST.
## 6. EML file
EML (Electronic Mail Format) có thể hiểu đơn giản EML file là email được saved dưới dạng plaintext
Vì là plaintext nên có thể xem được dễ dàng bằng bất kỳ editor nào
Ví dụ một file `eml` : https://github.com/FlexConfirmMail/Thunderbird/blob/master/sample.eml
**Note**: nếu muốn xem file eml bằng trình duyệt như Edge hoặc Chrome thì đổi extension từ `.eml` thành `.mht`
## 7. Alternative Data stream
Về phần này mình đã có đề cập qua trước đó tại wu KCSC recruitment ở bài ```An tơ nây típ``` nên mình sẽ gán [link](https://hackmd.io/mbqczHmURFW7ew8n2bfCsQ?view#7-an-t%C6%A1-n%C3%A2y-t%C3%ADp:~:text=n%E1%BB%99i%20dung%20file%20%3A-,7.%20an%2Dt%C6%A1%2Dn%C3%A2y%2Dt%C3%ADp,-%C4%90%C3%A2y%20l%C3%A0%20l%E1%BA%A7n) ở đây cho các bạn tham khảo
## 8. RDP cache
Như tên gọi thì RDP cache là cơ chế giúp cache lại data của RDP làm giảm dữ liệu phải gửi đến máy client. Đọc xong khái niệm thì chắc chắn ai cũng sẽ nghĩ ngay được là RDP cache sẽ được lưu trên server
Cache-files sẽ lưu bitmaps dưới dạng các titles, mỗi titles thường có kích thước là 64x64 pixels
Location cache-file: `%localappdata%\Microsoft\Terminal Server Client\Cache
`
Tools:
- RDP Cached Bitmap Extractor - https://www.guidancesoftware.com/app/RDP-Cached-Bitmap-Extractor
- bmc-tools - https://github.com/ANSSI-FR/bmc-tools
## 9. MFT
MFT (Master File Table) là một thành phần của NTFS file system. Nó là một database quan trọng chứa tất cả thông tin về mọi file và thư mục trong ổ cứng. MFT theo dõi vị trí của các file trong ổ cứng, đồng thời cũng lưu trữ các attributes, metadata của file như tên, size, ngày tạo, quyền truy cập,...
Tools: https://github.com/EricZimmerman/MFTECmd
## 10. Scheduld Task
Scheduld Task là những tác vụ sẽ được thực thi sau một khoảng thời gian nhất định, tương tự như cron job của linux.
Ta có thể tương tác với các Scheduld Task thông qua `Task Scheduler`

Ta có thể biết được một số thông tin như ngày tạo task, tần suất task thực thi, task sẽ thực thi điều gì và nhiều thông tin khác từ `Task Scheduler`
Để tạo task ta có thể tạo trực tiếp trong `Task Scheduler` hoặc dùng command line sau
```
schtasks /create /tn "TaskName" /tr "ExecutablePath" /sc ScheduleType /st StartTime /du Duration
```
Mình sẽ thử tạo một task gọi cmd.exe mỗi 1 phút với cmd sau
```
schtasks /create /tn "Test" /tr "cmd.exe" /sc minute
```
Với mỗi chu kỳ 1 phút thì cmd.exe sẽ được gọi, khi quan sát bằng process explorer ta sẽ biết được parent process của cmd.exe này là `svhost` chạy `Schedule Service`


Vì việc thêm vào `Scheduld Task` không đòi hỏi quyền cao, mọi user đều thêm được nên `Scheduld Task` thường được attacker lợi dụng để thực hiện `Peristence`. Ngoài ra ta cũng có thể lợi dụng `Scheduld Task` để leo quyền.
Ví dụ máy victim có một `Scheduld Task` sẽ thực thi một file ở quyền admin tại path `C:\Documents\haha.exe`, nhưng tại `C:\Documents\` thì ta có thể dễ dàng thêm sửa xóa file, do đó nếu đổi `haha.exe` thành 1 malicious exe thì ta có thể dễ dàng thực thi với quyền admin.
Bonus: nếu thỏa một số điều kiện thì `Scheduld Task` còn có thể sử dụng để Lateral Movement
Để detect new task creation thì ta sẽ lookup event id 4698
## 11. Powershell history
Thông thường mọi câu powershell cmd mà user gõ ra đều sẽ được lưu tại `%localappdata%\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt`

Attacker có thể lợi dụng file này để biết được hành vi sử dụng máy của victim, hoặc tệ hơn nửa có thể lấy được credentials nếu như useraname và password dạng plaintext được sử dụng trong các powershell command.