# Windows Forensics [Part 2]
Nối tiếp phần trước thì phần này mình sẽ giới thiệu về Event Log và Registry, đây là 2 artifact mà mình thường gặp nhất trong các chall CTF nên mình tách hẳn nó ra để có thể tìm hiểu được kĩ nhất.
## 1. Event Log
Event log là danh sách ghi lại các sự kiện diễn ra trên máy tính (windows) theo thứ tự thời gian.
Đối với các phiên bản windows từ phiên bản Vista tới nay thì event log được lưu trữ ở :
```C:\Windows\System32\winevt\Logs\```
Đặc điểm nhận dạng file event log là nó ```.evtx``` và công cụ để view file ```.evtx``` là Event Viewer. Event log trở thành một phần của Windows Forensics bởi vì nó chứa những thông tin rất quan trọng:
:::success
+ Ngày, giờ xảy ra sự kiện
+ Mức độ nghiêm trọng của sự kiện
+ Người dùng, ip liên quan đến sự kiện
+...
:::
Trong event log thì thật sự chứa rất rất nhiều log, với lượng thông tin khổng lồ như vậy thì trước hết mình phải xác định thứ mình cần tìm là gì, từ đó tìm ra log chứa thông tin đó cũng như event id của sự kiện.
Dưới đây là một số event cần chú ý khi gặp dạng bài event log :
**Security Log**
| Event ID | Description |
|----------|----------------------------------------------------------------------------------|
| 1102 | The audit log was cleared. (Security) |
| 4720 | A user account was created. |
| 4688 | A new process has been created. |
| 4698 | A scheduled task was created. |
| 4648 | A logon was attempted using explicit credentials. |
| 4625 | An account failed to log on. |
| 4634 | An account was logged off. |
| 4672 | Special privileges assigned to new logon. (Admin login) |
| 4624 | An account was successfully logged on. |
| 4776 | The domain controller attempted to validate the credentials for an account. (DC) |
| 4771 | Kerberos pre-authentication failed. |
**System Log**
| Event ID | Description |
|----------|------------------------------------------------------------------------------------|
| 7045 | A new service was installed in the system. (4697 in Security) |
| 7034 | The x service terminated unexpectedly. It has done this y time(s). |
| 7009 | A timeout was reached (x milliseconds) while waiting for the y service to connect. |
| 104 | The x log file was cleared. |
**Microsoft-Windows-TaskScheduler/Operational Log**
| Event ID | Description |
|----------|-------------------------------------------------------------------------------|
| 106 | The user x registered the Task Scheduler task y. (New Scheduled Task) |
| 141 | User x deleted Task Scheduler task y. |
| 100 | Task Scheduler started the x instance of the y task for user z. |
| 102 | Task Scheduler successfully finished the x instance of the y task for user z. |
**Microsoft-Windows-PowerShell/Operational Log**
| Event ID | Description |
|----------|-----------------------------------------------------------|
| 4104 | Creating Scriptblock text (1 of 1): (Scriptblock Logging) |
Việc ngồi đọc từng log như thế này thì rất mất thời gian nên mình dùng [chainsaw](https://github.com/WithSecureLabs/chainsaw), nó apply các ```detection logic rule``` như Sigma để phát hiện ra các log ghi lại các hành vi bất thường một cách nhanh chóng, một số event mà chainsaw có thể phân tích là :
| Event Type | Event ID |
|---------------------------- |-------- |
| Process Creation (Sysmon) | 1 |
| Network Connections (Sysmon) | 3 |
| Image Loads (Sysmon) | 7 |
| File Creation (Sysmon) | 11 |
| Registry Events (Sysmon) | 13 |
| Powershell Script Blocks | 4104 |
| Process Creation | 4688 |
| Scheduled Task Creation | 4698 |
| Service Creation | 7045 |
## Windows Registry
Ở phần trước thì mình nhắc đến registry khá nhiều, có thể thấy được mối liên hệ mật thiết giữa các key system process và registry. Về định nghĩa, Registry là một cơ sở dữ liệu phân cấp lưu trữ thông tin cấu hình và cài đặt hệ thống, nó lưu trữ các thông tin về phần mềm, hardware, người dùng, và các cài đặt hệ thống khác. Thông tin trong Registry được tổ chức dưới dạng cây, với các nhánh và khóa đại diện cho các phần khác nhau của hệ thống:

Registry có 5 hives, trong mỗi hive chứa rất nhiều registry key, cả registry hive và registry key đều là thư mục nhưng khác nhau ở chỗ registry key là thư mục con của registry hives.
Mỗi một hive sẽ đại diện cho một phần thông tin của hệ thống :
```
HKEY_CLASSES_ROOT (HKCR): mô tả loại file, phần mở rộng cũng như Object Linking và OLE.
HKEY_CURRENT_USER (HKCU): Lưu trữ thông tin và cài đặt của người dùng hiện tại.
HKEY_LOCAL_MACHINE (HKLM): Thông tin cấu hình cho cả hardware, software, drives và hệ thống, mọi user đăng nhập vào máy đều có thể truy cập vào HKLM.
HKEY_USERS (HKU): Lưu trữ tất cả dữ liệu của người dungf. trong hệ thống.
HKEY_CURRENT_CONFIG (HKCC): Chứa thông tin chi tiết về cấu hình phần cứng hiện đang gắn vào thiết bị.
```
Cấu trúc của Registry như sau :
```HIVE\KEY\SUBKEY\SUBKEY\...\...\VALUE```

Cũng giống như event log, lượng thông tin trong registry là rất lớn nên mình chỉ liệt kê một số key quan trọng dưới góc nhìn của người chơi forensic.
**HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer**
| Key | Value |
|-----------------------------|----------------------------------------------------------------------------------|
| \ComDlg32\LastVistedPidlMRU | Theo dõi ứng dụng mà người dùng đã sử dụng để mở và lưu tệp tin |
| \ComDlg32\OpenSavePidlMRU | Theo dõi tệp tin đã được truy cập |
| \Mountpoints2 | Chứa dữ liệu về các removable devices (USB,...) |
| \RecentDocs | Chứa thông tin về các file truy cập gần đây |
| \RunMRU | Lưu trữ lịch sử các lệnh đã nhập trong hộp thoại "Start → Run" |
| \TypedPaths | Theo dõi các đường dẫn mà người dùng đã nhập thủ công vào thanh địa chỉ Explorer |
| \UserAssist | Ghi lại thông tin về việc thực thi các chương trình giao diện đồ họa |
| \WordWheelQuery | Chứa thông tin liên quan đến truy vấn và tìm kiếm |
**HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run**
**Chức năng:** Chứa danh sách các chương trình sẽ tự động khởi chạy khi người dùng hiện tại đăng nhập vào hệ thống.
**Note:** Ảnh hưởng chỉ đến người dùng hiện tại.
**HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run:**
**Chức năng:** Chứa danh sách các chương trình sẽ tự động khởi chạy khi mọi người dùng đăng nhập vào hệ thống.
**Note:** Ảnh hưởng đến tất cả người dùng.
**HKLM\SYSTEM\CurrentControlSet\Enum\USB** : Lưu trữ thông tin về thiết bị USB bao gồm Vendor ID (VID) và Product ID (PID).
**HKLM\SYSTEM\MountedDevices**: Lưu trữ thông tin về các thiết bị được gắn kết và liên kết với các ổ đĩa và Volume GUID.
**HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation** : Chứa thông tin về cài đặt múi giờ của hệ thống
**HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName** : Chứa tên máy tính của hệ thống
**HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList** : Chứa thông tin về các tài khoản người dùng cục bộ.
**HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces**: Chứa thông tin cấu hình về các interfaces như địa chỉ IP, domain...
**HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache**: Lưu trữ thông tin về các ứng dụng đã chạy, thường được sử dụng để giám sát các tệp tin đã thực thi trước đó.
**HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters**: Quản lý việc prefetching trong hệ thống, làm tăng hiệu suất khi khởi động ứng dụng và hệ thống
**EnablePrefetcher Key:**
0 = Disabled
1 = Application prefetching enabled
2 = Boot prefetching enabled (chỉ áp dụng trên Windows 2003)
3 = Application và Boot prefetching enabled (mặc định).
Và cái cuối cùng mình muốn nhắc tới là SAM, đây là khóa rất quan trọng trong registry vì nó chứa thông tin về tài khoản người dùng và mật khẩu (ở dạng hash).
**HKEY_LOCAL_MACHINE\SAM\Domains\Account**: Chứa thông tin về tài khoản người dùng và nhóm trên hệ thống.
**HKEY_LOCAL_MACHINE\SAM\Domains\Users**: Chứa thông tin chi tiết về các tài khoản người dùng, bao gồm SID (Security Identifier), mật khẩu băm (hash), và các thông tin khác
Với lượng lớn thông tin như vậy thì sẽ hơi khó khăn nếu như không dùng tools, ở đây mình recommend 2 tool là [RECmd](https://ericzimmerman.github.io/#!index.md) và [Registry Explorer](https://ericzimmerman.github.io/#!index.md). Nhưng hãy nhớ rằng việc mình hiểu rõ được cái file mình đang thao tác nó có định dạng nào, cấu trúc ra sau cũng như hành vi của nó thì sẽ giúp mình sử dụng tool một cách hiệu quả hơn :hatching_chick:


**Và một số extension file có liên quan đến registry :**
| Extension | Value |
|-----------|-------------------------------------------------------------------------------------------------------------------------------------|
| .reg | Đây là loại tệp tin dạng văn bản chứa các lệnh Registry. Có thể sử dụng để nhập (import) hoặc xuất (export) các mục trong Registry. |
| .pol | Được sử dụng cho Group Policy Objects (GPO) và chứa các quy định cấu hình hệ thống |
| .dat | File mình hay gặp nhất, chứa dữ liệu registry, các bạn có thể tham khảo bài [Sổ đăng ký](https://hackmd.io/PrpBU3wrQIys5eeQhdhiSw), mình có nhắc tới một loại file .dat là NTUSER.DAT |
| .hive | Tệp nhị phân chứa Hive Registry |
| .log | Các hive Registry thường đi kèm với các tệp tin log để ghi lại các thay đổi được thực hiện trên Registry. |