# Windows Forensics [Part 1]
## 1/ Windows Forensics là gì ?
Windows Forensics là một nhánh trong Digital Forensics, nó liên quan tới việc thu thập, phân tích và giải mã các thông tin trên hệ điều hành windows. Đây là một mảng khá rộng nên rất khó để có thể tìm hiểu hết trong một bài viết nên mình chia nó ra nhiều phần, và phần đầu tiên chính là tìm hiểu về **windows process**.
## 2/ Windows Process Genealogy
Mình chọn nghiên cứu về Windows Process Genealogy trước tiên vì nó cho mình cái nhìn tổng quan và trọn vẹn về hệ điều hành windows cũng như cung cấp kiến thức để có thể làm một số bài về memory forensic. Ở bài viết này mình tập trung vào các ```key system process``` cũng như mối quan hệ giữa những process đó.

**SYSTEM**
System process là process đầu tiên khởi chạy ngay sau khi hệ điều hành windows khởi động, hầu hết các module, các kernel thread chạy bên dưới system process là các trình điều khiển, file hệ thống và một số tệp thực thi quan trọng. Đặc biệt, system process không có image path, nghĩa là không tồn tại tệp thực thi như system.exe, nó cũng không có parent process, pid của nó là 4 và luôn luôn chỉ có một system process chạy trong windows, nếu có nhiều hơn thì đây chính là điều bất thường.

**SMSS.EXE**
Smss process là tiến trình con của system process, nó là viết tắt của cụm ```Session Manager Subsystem```. Đây là process đầu tiên trong chế độ user, nhiệm vụ của nó là quản lý session, sử dụng thông tin từ registry để cấu hình session của người dùng cũng như tương tác với các thành phần win32 subsytem. Path của smss.exe là ```%SystemRoot%\system32\smss.exe``` và process con là ```csrss.exe, wininit.exe, winlogon.exe```.

**CSRSS.EXE**
Csrss.exe (Client/Server Runtime Subsystem) là một process quan trọng, nó hỗ trợ toàn bộ hệ thống user GUI gồm kiểm soát console windows, cũng như phân luồng và xử lý tín hiệu. Csrss.exe không có process con và path của nó là ```%SystemRoot%\system32\csrss.exe```.

**WININIT.EXE**
Wininit.exe là một process cốt lỗi xuất hiện lần đầu tiên trong windows XP, nó đọc và xử lý các lệnh lưu trữ bên trong tệp wininit.ini, cho phép chương trình được thực hiện ngay khi máy vẫn đang ở chế độ ```booting```, vậy nên wininit.exe hoạt động như một launcher cho phần lớn ứng dụng nền. Các process con của nó là ```services.exe, lsaiso.exe, lsass.exe``` và path là ```%SystemRoot%\system32\wininit.exe```.

**SERVICES.EXE**
Services.exe chịu trách nhiệm cho việc quản lý các dịch vụ hệ thống và liên kết động chúng với các tệp .dll tương ứng. Process này chịu trách nhiệm xử lý một loạt các dịch vụ bao gồm kết nối mạng, bảo mật, trình điều khiển và ghi nhật ký sự kiện. Process con của nó là ```svchost.exe``` và path là ```%SystemRoot%\system32\services.exe```.

**LSASS.EXE**
Lsass.exe (Local Security Authority Subsystem Service) là một process ở chế độ user, có nhiệm vụ xác thực người dùng bằng cách gọi các authentication package được chỉ định bên trong registry key. Thông thường các authentication packet này sẽ là ```kerberos``` cho các domain account hoặc là ```msv1_0``` cho local account. Ngoài xác thực người dùng thì lsass còn ghi các sự kiện vào ```Security Event Log``` và triển khai các chính sách bảo mật cục bộ như ```password policies``` và ```audit policies```. Lsass.exe thường không có process con nhưng vẫn có trường hợp ngoại lệ (rất hiếm), thế nên nếu thấy một process con của lsass thì đây có thể là dấu hiệu của hành vi trộm cắp data. Lsass lưu trữ hàm ```hash password``` nên nó cũng trở thành mục tiêu cho các ```dumping password attack``` và ```mimikatz``` là một trong những tool mà attacker hay dùng để dump password trong lsass. Path của lsass là ```%SystemRoot%\system32\lsass.exe```.

**LSAISO.EXE**
lsaio.exe hay còn gọi là Lsa Isolate , như cái tên thì nó là một process chạy trong môi trường ảo hóa bằng cách tận dụng công nghệ ảo hóa phần cứng. Lsaiso xuất hiên trong cây process khi bật ```credential guard``` trong win 10, điều này cung cấp tính năng bảo mật giúp chống lại các ``` credential dumping attack``` mà lsass phải đối mặt. Chỉ luôn có một lsaiso.exe xuất hiện và không có process con của nó, path của lsaiso là ```%SystemRoot%\system32\lsaiso.exe```

**SVCHOST.EXE**
Svchost.exe (Service Host Process) là một process lưu trữ dịch vụ, nó lưu trữ nhiều tệp .dll của nhiều dịch vụ để triển khai mô hình dịch vụ chia sẻ để giúp bảo toàn tài nguyên CPU. Nhưng điều này đã không còn hợp lệ từ windows 10 phiên bản 1703 trở đi, các dịch vụ bây giờ được lưu trong svchost.exe của riêng nó với điều kiện máy tính có bộ nhớ lớn hơn 3.5 GB. Số lượng svchost.exe phụ thuộc vào số lượng dịch vụ chạy trên máy, giống như lsass.exe thì svchost.exe cũng là mục tiêu phổ biến của của malwares vì tính chất phổ biến của nó, cho phép phần mềm độc hại dễ dàng ẩn nấp , ví dụ ```scvhost.exe``` có thể là malwares và khiến người dùng dễ nhầm lẫn với ```svchost.exe```.
Nó có các process con là ```Runtimebroker.exe, taskhostw.exe``` và path là ```%SystemRoot%\system32\svchost.exe```.

**TASKHOSTW.EXE**
Taskhostw.exe lưu trữ các tệp .dll liên quan đến ```task scheduled```,nó quản lý các task liên quan đến COM (Component Object Model) và các process khác. Taskhostw.exe không có process con và path là ```%SystemRoot%\system32\taskhostw.exe```.
**RUNTIMEBROKER.EXE**
Process này được giới thiệu trong win 8 và có sẵn trong win 10, nhiệm vụ của nó là kiểm tra các quyền cần thiết của các ứng dụng ```Windows Store```, chẳng hạn như quyền truy cập micro, truy cập vị trí. Runtimebroker không có process con và path của nó là ```%SystemRoot%\System32\runtimebroker.exe```

**WINLOGON.EXE**
Winlogon.exe xử lý các lần đăng nhập và đăng xuất của người dùng, nó launch UI đăng nhập để người dùng nhập thông tin vào, sau khi có được thông tin thì nó sẽ chuyển đến lsass.exe để xác thực, nếu xác thực thành công thì người dùng sẽ đăng nhập vào win, lúc này winlogon sẽ load các tệp NTUSER.DAT vào ```Current User Registry Hive``` và khởi động shell của người dùng thường là explorer.exe thông qua userinit.exe. Process con của winlogon.exe là ```explorer.exe``` và path là ``` %SystemRoot%\system32\winlogon.exe```

**USERINIT.EXE**
Userinit.exe sẽ thoát sau khi chạy các tập lên ban đầu và khởi tạo explorer.exe do đó sẽ không thấy userinit.exe trong ``` Task Manager ```.

Userinit.exe chịu trách nhiệm khởi tạo môi trường phiên người dùng sau khi người dùng đăng nhập vào hệ thống Windows. Path của nó là ```%SystemRoot%\system32\userinit.exe``` và ```explorer.exe``` vẫn là process con của nó.
**EXPLORER.EXE**
process này cung cấp shell hoặc giao diện người dùng mặc định thông qua đó người dùng có thể tương tác windows. Nó hiển thị taskbar, start menu... cũng như quản lý file và thư mục. Path của explorer.exe là ```%SystemRoot%\explorer.exe```

#### - Những điểm cần chú ý khi làm những bài về memmory forensic (windows) trong CTF :
- **Tìm suspicious process** : khi đề bài cho file mem thì mình sẽ dùng những tool thông dụng như Volatility2, Volatility3, Redline... để kiểm tra. Với những plugin như ```psscan, pslist, pstree``` để liệt kê ra các process, chú ý vào các mục như PID, PPID vì nó sẽ là yếu tố để xác định đâu là suspicious.
**vd:** process svchost.exe.ex với ppid 4824 là không phù hợp và tên process trông rất bất thường.

- **Tìm C2:** Với những bài CTF thì mình có thể dùng plugin ```netscan``` để check kết nối, chú ý vào port và service để phát hiện điều bất thường hoặc check event log còn ngoài thực tế khi rất khó để phát hiện ra C2 vì chả có cái C2 nào mà connect trực tiếp tới target cả.
- **Yara Scan:** Nhìn chung thì dùng yara rules sẽ nhanh chóng và hiệu quả hơn cả trong việc detect malwares, file độc hại. Đầu tiên là tải file yara rules về máy và dùng plugin ```YaraScan``` để nó quét.
*Note*: Thật ra thì tùy từng bài CTF thì mình sẽ có những hướng làm và công cụ khác nhau, tuy nhiên cốt lỗi nhất là mình phải có kiến thức về dạng đó và windows forensic là một trong những thứ mà mình cần phải biết.