# Windows Memory Forensics

## 1. Introduction

Phân tích dữ liệu bộ nhớ đề cập đến việc kiểm tra chi tiết bộ nhớ vật lý (RAM) của một hệ thống và rất quan trọng để hiểu trạng thái hiện tại của máy tính hoặc các hoạt động mà nó đã thực hiện trong quá khứ. Trong các tình huống như hệ thống bị treo, tấn công phần mềm độc hại hoặc các vi phạm an ninh khác, dữ liệu được lưu trữ trong RAM có thể chứa thông tin quan trọng.

Trong phần phân tích dữ liệu bộ nhớ trên Windows này, AccessData FTK Imager được sử dụng để chụp kết xuất bộ nhớ và các công cụ Volatility3 được sử dụng để phân tích kết xuất bộ nhớ. Mục đích và cách cài đặt các công cụ này được cung cấp dưới đây.

### 1.1. AccessData FTK Imager

AccessData FTK Imager là một sản phẩm phần mềm tiêu chuẩn công nghiệp cung cấp cho các chuyên gia pháp y số một bộ công cụ mạnh mẽ. Nó cho phép người dùng tạo, kiểm tra và phân tích hình ảnh dữ liệu từ nhiều phương tiện và hệ thống tệp khác nhau, bao gồm ổ cứng, USB, CD/DVD, SAN, RAID, đĩa Jaz/Zip và thậm chí cả RAM. Các hình ảnh được tạo bằng FTK Imager cho phép kiểm tra chi tiết bằng chứng kỹ thuật số trong khi vẫn bảo toàn tính toàn vẹn của nó. Điều này rất quan trọng trong các quy trình pháp y vì khả năng chấp nhận dữ liệu làm bằng chứng tại tòa phụ thuộc vào cách nó được thu thập và xử lý.

FTK Imager có giao diện dễ sử dụng giúp các chuyên gia pháp y tiết kiệm thời gian và công sức trong việc thu thập, phân tích và báo cáo bằng chứng kỹ thuật số. Với khả năng mở các tệp hình ảnh, xem nội dung của chúng và trích xuất dữ liệu quan trọng, phần mềm giúp người dùng hoàn thành công việc của họ một cách nhanh chóng và hiệu quả. Ngoài ra, FTK Imager có khả năng xác minh tính toàn vẹn của tệp bằng các giá trị băm MD5 và SHA1, đóng vai trò quan trọng trong việc chứng minh tính toàn vẹn và tính xác thực của dữ liệu được thu thập.

Tóm lại, các bước cài đặt như sau:

1. Khởi chạy trình hướng dẫn cài đặt.
2. Chấp nhận thỏa thuận cấp phép.
3. Chọn thư mục cài đặt.
4. Cài đặt hoàn tất.

Sau khi cài đặt, bạn có thể mở ứng dụng và bắt đầu sử dụng nó.

<figure><img src="/files/A4woQMWMtVcarKgij1xK" alt=""><figcaption></figcaption></figure>

### **1.2. Volatility3**

Volatility là một ứng dụng phân tích bộ nhớ mã nguồn mở. Nó có sẵn cho cả môi trường Linux và Windows. Volatility là một công cụ mạnh mẽ để phân tích thông tin có trong RAM của hệ điều hành. Tương thích với nhiều loại hệ điều hành và định dạng kết xuất bộ nhớ, Volatility cung cấp một khung toàn diện để phân tích bộ nhớ. Nó được viết bằng Python và có một thư viện plug-in mở rộng.

Volatility được sử dụng để phân tích các kết xuất bộ nhớ thu được bằng các công cụ như LiME. Nó cho phép người dùng liệt kê các DLL, các tiến trình trong RAM, kết nối mạng, các tệp đang mở, khóa registry và hơn thế nữa. Nó cũng có thể được sử dụng để phát hiện phần mềm độc hại, tìm kiếm mã ẩn và phân tích hoạt động chung của người dùng trên hệ thống. Volatility là một trong những công cụ phân tích dữ liệu bộ nhớ được sử dụng rộng rãi nhất và là điều cần thiết để thực hiện phân tích bộ nhớ chi tiết.

**Lưu ý:** Python3 hoặc phiên bản Python cao hơn phải được cài đặt trên hệ thống để sử dụng Volatility3.

Đầu tiên, cài đặt python3.

Sau khi cài đặt Python, vui lòng kiểm tra phiên bản:

<figure><img src="/files/7sx47LL2K456DtZ3ewc8" alt=""><figcaption></figcaption></figure>

Cài đặt mô-đun Python "snappy". Bạn có thể tải xuống phiên bản dựng sẵn từ: <https://pypi.org/project/python-snappy/#files>

Để cài đặt, hãy sử dụng lệnh sau:

```bash
pip install .\python_snappy-0.7.1-py3-none-any.whl
```

<figure><img src="/files/YfWXzUMwVzhYTsicmlvB" alt=""><figcaption></figcaption></figure>

Sau đó tải xuống Volatility3.

Tải xuống Volatility3: <https://github.com/volatilityfoundation/volatility3/releases/tag/v2.5.2>

Các nội dung của tệp "<mark style="color:red;">`requirements.txt`</mark>" nằm trong thư mục cài đặt Volatility phải được cài đặt trước khi sử dụng Volatility. Sử dụng lệnh sau để cài đặt:

```bash
pip install -r .\requirements.txt
```

<figure><img src="/files/xPxuQU5B6RLVkroUUwAO" alt=""><figcaption></figcaption></figure>

Để xác minh rằng công cụ Volatility đã được cài đặt thành công, hãy sử dụng lệnh sau:

```bash
python.exe .\vol.py -h
```

<figure><img src="/files/keMBM3OCIHKEe4oPYsBq" alt=""><figcaption></figcaption></figure>

## 2. Capturing Memory Dumps

Trên hệ thống Windows, ảnh kết xuất bộ nhớ, là ảnh chụp nhanh của bộ nhớ hệ thống (RAM) được lưu trữ trên đĩa để phân tích sau, là rất cần thiết cho pháp y và gỡ lỗi.

Điều này đặc biệt quan trọng khi hệ thống được khởi động lại, bởi vì thông tin được lưu trữ trong bộ nhớ sẽ bị mất khi hệ thống khởi động lại. Do đó, điều quan trọng là phải chụp ảnh nhanh bộ nhớ và lưu trữ nó một cách an toàn để truy cập sau này cho mục đích phân tích lỗi hoặc điều tra pháp y.

Dữ liệu bộ nhớ có thể chứa thông tin quan trọng về các chương trình đang chạy, hoạt động của người dùng, trạng thái hệ thống và phần mềm độc hại tiềm ẩn. Do đó, một bước cơ bản trong việc bảo toàn tính toàn vẹn của thông tin để phân tích trong tương lai là lưu trữ nó một cách an toàn trong bộ nhớ trước khi nó bị mất.

Một số công cụ kết xuất bộ nhớ có thể được sử dụng cho phân tích pháp y bộ nhớ trên hệ thống Windows bao gồm:

* **WinDbg (Windows Debugger):**

  Đây là một công cụ được phát triển bởi Microsoft, cung cấp các khả năng gỡ lỗi và phân tích chuyên sâu trong hệ điều hành Windows. Nó cung cấp các tính năng mở rộng để mở và phân tích các tệp kết xuất bộ nhớ.
* **Volatility Framework:**

  Một khung phân tích bộ nhớ mã nguồn mở, có các plugin có thể kiểm tra các tệp kết xuất bộ nhớ Windows và cung cấp nhiều tùy chọn phân tích để trích xuất các tạo tác cụ thể của HĐH.
* **Magnet RAM Capture:**

  Đây là một công cụ chụp ảnh kết xuất bộ nhớ nhanh chóng và hiệu quả. Nhờ giao diện đơn giản, nó có thể dễ dàng được sử dụng bởi tất cả các cấp độ người dùng và có thể nhanh chóng chụp nội dung của RAM.
* **Belkasoft Evidence Center:**

  Đây là một công cụ pháp y số toàn diện có thể phân tích một loạt các tạo tác kỹ thuật số, bao gồm các tệp kết xuất bộ nhớ.
* **AccessData FTK Imager:**

  Được biết đến với khả năng tạo và phân tích ảnh đĩa, nó cũng có thể xem các tệp kết xuất bộ nhớ và thực hiện phân tích đơn giản.
* **Rekall (trước đây là Volatility Fork):**

  Một khung pháp y bộ nhớ mã nguồn mở và tiên tiến được tách ra từ Volatility, được biết đến với khả năng phân tích nâng cao hơn.
* **MemDump:**

  Đây là một công cụ dòng lệnh đơn giản có thể nhanh chóng kết xuất nội dung của RAM ra đĩa ở định dạng thô.

Có một số lý do tại sao việc kết xuất bộ nhớ lại rất quan trọng đối với phân tích pháp y. Pháp y số là về thu thập, bảo tồn, phân tích và báo cáo dữ liệu từ các thiết bị kỹ thuật số để phân tích pháp y. Khi làm như vậy, việc chụp ảnh kết xuất bộ nhớ cung cấp một ảnh chụp nhanh về trạng thái hiện tại của hệ thống, chứa thông tin quan trọng trên nhiều mặt trận. Thông tin này bao gồm:

* **Các chương trình và tiến trình đang chạy:** Ảnh kết xuất bộ nhớ chứa một danh sách chi tiết tất cả các chương trình và tiến trình đang chạy trên một hệ thống. Thông tin này có thể được sử dụng để phát hiện sự hiện diện của phần mềm độc hại hoặc các tiến trình độc hại trên hệ thống.
* **Lỗi hệ thống:** Khi xảy ra lỗi hoặc sự cố hệ thống, ảnh kết xuất bộ nhớ có thể cung cấp thông tin quan trọng để hiểu nguyên nhân của các sự kiện này. Các đoạn mã bị lỗi, rò rỉ bộ nhớ hoặc trình điều khiển không tương thích có thể gây ra những vấn đề này.
* **Kết nối mạng:** Thông tin mạng như các kết nối mạng đang hoạt động và các cổng đang mở có thể được trích xuất từ ảnh kết xuất bộ nhớ. Điều này rất quan trọng để xác định máy chủ bên ngoài nào mà hệ thống đang giao tiếp hoặc hoạt động mạng độc hại.
* **Hoạt động của người dùng và thông tin phiên:** Hoạt động của người dùng, chẳng hạn như đăng nhập hệ thống, truy cập tệp và thông tin phiên, có thể được lưu trữ trong ảnh kết xuất bộ nhớ. Điều này có thể đặc biệt có giá trị trong việc phân tích truy cập trái phép hoặc các mối đe dọa từ bên trong.
* **Khóa mật mã và dữ liệu nhạy cảm:** Trong một số trường hợp, khóa mật mã, mật khẩu và các thông tin nhạy cảm khác có thể được trích xuất từ ảnh kết xuất bộ nhớ và được sử dụng để truy cập vào dữ liệu được bảo vệ hoặc giải mã các liên lạc được mã hóa.
* **Phân tích phần mềm độc hại:** Để tránh bị phát hiện, phần mềm độc hại thường sử dụng nhiều kỹ thuật khác nhau. Ảnh kết xuất bộ nhớ cung cấp một nguồn tài nguyên phong phú để phân tích sự hiện diện và hành vi của phần mềm đó.

Tóm lại, ảnh kết xuất bộ nhớ là vô giá đối với các cuộc điều tra pháp y số, hiểu hoạt động tội phạm, đánh giá bảo mật hệ thống và ứng phó với các vi phạm tiềm ẩn. Do đó, có thể nói rằng ảnh kết xuất bộ nhớ đóng một vai trò quan trọng trong phân tích pháp y.

### **2.1. Sử dụng FTK Imager để Chụp Bộ nhớ từ Hệ thống Windows**

Sau khi mở ứng dụng AccessData FTK Imager, chọn "File" -> "Capture Memory" để bắt đầu quá trình chụp ảnh.

<figure><img src="/files/gugmO8hL5pYqaIOcmmd4" alt=""><figcaption></figcaption></figure>

Để bắt đầu quá trình kết xuất bộ nhớ, hãy chỉ định đường dẫn và tên của hình ảnh bộ nhớ sẽ được chụp và nhấp vào nút Capture Memory.

* **Include Pagefile:** Trong hệ điều hành Windows, khi không có đủ dung lượng trong RAM vật lý, hệ điều hành sẽ sử dụng một tệp trên đĩa (thường là C:\pagefile.sys) làm bộ nhớ ảo. Vì vậy, nếu bạn muốn bao gồm khu vực này trong hình ảnh, tùy chọn "Include pagefile" nên được chọn.

<figure><img src="/files/GGaQiz95eVxL2OOeoag8" alt=""><figcaption></figcaption></figure>

Bạn có thể truy cập tệp kết xuất bằng cách đi đến đường dẫn bạn đã chỉ định sau khi quá trình nhập hình ảnh hoàn tất.

<figure><img src="/files/QAO8dqMcShE1QjRhol7D" alt=""><figcaption></figcaption></figure>

## 3. Analyzing the Memory Dump

Memory dump analysis đóng một vai trò quan trọng trong cả điều tra pháp y và khắc phục sự cố hệ thống. Một ảnh kết xuất bộ nhớ thu được từ hệ thống cung cấp thông tin toàn diện về các tiến trình đang chạy, các phiên người dùng đang hoạt động, kết nối mạng và phần mềm độc hại có thể có. Bài học này cung cấp hướng dẫn từng bước để phân tích chi tiết ảnh kết xuất bộ nhớ.

Dưới đây là các công cụ có thể được sử dụng cho pháp y bộ nhớ trên hệ thống Windows và mô tả ngắn gọn về chúng:

* **Volatility:** Volatility là một khung phân tích bộ nhớ mã nguồn mở hỗ trợ nhiều hệ điều hành và định dạng kết xuất bộ nhớ. Nó cung cấp một loạt các tính năng cho hoạt động của người dùng và phân tích phần mềm độc hại.
* **Rekall:** Một công cụ mã nguồn mở khác được thiết kế để chụp và phân tích kết xuất bộ nhớ. Tương tự như Volatility, Rekall có hỗ trợ hệ điều hành rộng rãi và cho phép phân tích chi tiết.
* **Belkasoft Evidence Center:** Belkasoft Evidence Center, một nền tảng điều tra pháp y số toàn diện, có thể thu thập và phân tích dữ liệu từ các nguồn dữ liệu kỹ thuật số khác nhau cũng như kết xuất bộ nhớ. Nó có thể phân tích hoạt động của người dùng, lịch sử Internet và phương tiện truyền thông xã hội.

Trước khi có thể thực hiện phân tích kết xuất bộ nhớ, các công cụ thích hợp phải được cài đặt và cấu hình. Volatility, một trong những công cụ phân tích bộ nhớ phổ biến nhất, được ưa chuộng vì nó tương thích với nhiều hệ điều hành và định dạng kết xuất bộ nhớ.

### 3.1. Volatility 3

Volatility quản lý quy trình phân tích bộ nhớ trong 3 khía cạnh chính:

* Các lớp bộ nhớ (Memory Layers)
* Các mẫu và đối tượng (Templates and Objects)
* Bảng ký hiệu (Symbol Tables)

#### Memory Layers

Memory Layers là một trong những khối xây dựng chính mà Volatility 3 sử dụng để thực hiện phân tích bộ nhớ. Memory layers đại diện cho các tài nguyên bộ nhớ khác nhau như bộ nhớ vật lý, bộ nhớ ảo và hệ thống tệp. Các lớp này cung cấp sự trừu tượng giữa các phần khác nhau của ảnh bộ nhớ được phân tích, cho phép công cụ truy cập ảnh bộ nhớ ở các cấp độ khác nhau. Ví dụ: một lớp bộ nhớ vật lý cung cấp quyền truy cập trực tiếp vào ảnh bộ nhớ thô, trong khi một lớp dịch địa chỉ ảo mô phỏng bố cục bộ nhớ ảo của hệ điều hành. Điều này cho phép Volatility linh hoạt hơn trong việc xử lý các loại cấu trúc bộ nhớ và hệ điều hành khác nhau.

#### **Templates and Objects**

Volatility 3 sử dụng cả Mẫu (Templates) và Đối tượng (Objects) để biểu diễn các cấu trúc trong bộ nhớ. Các Mẫu chứa các định nghĩa về cấu trúc dữ liệu trong bộ nhớ, trong khi Đối tượng là các thể hiện cụ thể được tạo theo các mẫu. Ví dụ: danh sách tiến trình của một hệ điều hành có thể được định nghĩa bằng một mẫu và mỗi tiến trình có thể được tạo dưới dạng một đối tượng tương ứng. Cấu trúc này cho phép Volatility nhận ra các cấu trúc dữ liệu phức tạp trong bộ nhớ và trình bày chúng cho người dùng. Truy cập vào dữ liệu trong ảnh bộ nhớ là nhất quán và dễ hiểu thông qua các đối tượng và mẫu.

#### **Symbol Tables**

Bảng ký hiệu chứa các địa chỉ và bố cục của các cấu trúc dữ liệu và các hàm được sử dụng bởi kernel hệ điều hành và các thành phần hệ thống khác, và cho phép Volatility nhận ra và diễn giải các cấu trúc cụ thể trong ảnh bộ nhớ. Ví dụ: bảng ký hiệu Windows có thể chứa các vị trí của các lệnh gọi hệ thống, các đối tượng hệ điều hành và các cấu trúc kernel quan trọng khác. Volatility 3 sử dụng các bảng ký hiệu này để xác định cấu trúc dữ liệu nào sẽ sử dụng khi phân tích ảnh bộ nhớ và cách diễn giải chúng.

Volatility 3 lưu trữ tất cả điều này trong một ngữ cảnh (context) đóng vai trò là vùng chứa cho tất cả các lớp và bảng khác nhau cần thiết để phân tích bộ nhớ.

Một loạt các plug-in và lệnh được cung cấp bởi Volatility đáp ứng các nhu cầu phân tích bộ nhớ khác nhau và cho phép người dùng thực hiện phân tích hệ thống chuyên sâu. Tuy nhiên, để thực hiện phân tích kết xuất hiệu quả, người dùng phải có hiểu biết tốt về hệ điều hành và cấu trúc của hệ thống mà kết xuất được lấy từ đó.

**Một số lệnh Volatility3 cơ bản và cách sử dụng chúng trong phân tích kết xuất bộ nhớ Windows được hiển thị bên dưới:**

* Để xem hệ điều hành, phiên bản và các thông tin cơ bản khác từ tệp kết xuất bộ nhớ:

```bash
python vol.py -f <memory_dump> windows.info
```

* Để lấy user account hashes từ cơ sở dữ liệu SAM:

```bash
python vol.py -f <memory_dump> windows.hashdump
```

* Để hiển thị danh sách các tiến trình đang chạy trên hệ thống:

```bash
python vol.py -f <memory_dump> windows.pslist
```

* Để liệt kê các DLL được tải bởi các tiến trình đang chạy:

```bash
python vol.py -f <memory_dump> windows.dlllist
```

**Lưu ý:** Điều quan trọng là phải xem các tiến trình đang sử dụng thư viện nào.

* Để tìm kiếm các phân đoạn bộ nhớ chứa mã độc hại tiềm ẩn:

```bash
python vol.py -f <memory_dump> windows.malfind
```

* Hiển thị cấu trúc cây của các tiến trình và hiển thị mối quan hệ cha/con:

```bash
python vol.py -f <memory_dump> windows.pstree
```

* Để quét và liệ t kê the drivers (các trình điều khiển) trên hệ thống:

```bash
python vol.py -f <memory_dump> windows.driverscan
```

* Để liệt kê các driver modules đã cài đặt trên hệ thống:

```bash
python vol.py -f <memory_dump> windows.drivermodule
```

* Nó quét tất cả các tiến trình trong bộ nhớ, không giống như pslist, nó cũng liệt kê các tiến trình đã kết thúc nhưng vẫn còn dấu vết trong bộ nhớ:

```bash
python vol.py -f <memory_dump> windows.psscan
```

* Liệt kê các đối số dòng lệnh của các tiến trình đang chạy. Điều này có thể được sử dụng để hiểu cách các tiến trình được bắt đầu.

```bash
python vol.py -f <memory_dump> windows.cmdline
```

* Để liệt kê các hive registry:

```bash
python vol.py -f <memory_dump> windows.registry.hivelist
```

* Để thực hiện quét các hive registry:

```bash
python vol.py -f <memory_dump> windows.registry.hivescan
```

* Để liệt kê các mô-đun kernel Windows đã cài đặt:

```bash
python vol.py -f <memory_dump> windows.modules
```

* Để liệt kê tất cả các kết nối mạng cho tất cả các tiến trình:

```bash
python vol.py -f <memory_dump> windows.netscan
```

* Cho phép bạn quét kết xuất bộ nhớ Windows bằng các quy tắc YARA:

```bash
python vol.py -f <memory_dump> yarascan.YaraScan --yara-rules "/path/to/yara_rules.yar"
```

Để tìm hiểu thêm về Volatility 3, bạn có thể truy cập: <https://volatility3.readthedocs.io/en/latest/basics.html>

## 4. Basic Memory Analysis

Các Nguyên tắc Cơ bản về Pháp y Bộ nhớ là một khía cạnh thiết yếu của pháp y số, cung cấp thông tin quan trọng để hiểu các vi phạm an ninh tiềm ẩn hoặc lỗi hệ thống. Phân tích kết xuất bộ nhớ là một phần cơ bản của quy trình pháp y số và được thực hiện với các công cụ nâng cao như Volatility.

Trước khi tiến hành quy trình phân tích kết xuất bộ nhớ, bạn có thể truy cập danh sách các plug-in của Volatility 3 có sẵn cho pháp y bộ nhớ Windows bằng cách chạy lệnh sau:

```bash
python vol.py --help | findstr windows.
```

<figure><img src="/files/LZNBcc1PMnbiwAbeIcqr" alt=""><figcaption></figcaption></figure>

Kiểm tra đầu ra trợ giúp của một plugin để biết thông tin chi tiết về plugin đó:

```bash
python vol.py windows.pslist.PsList -h
```

<figure><img src="/files/YrZfu3WMDHEPKUmOCiZ9" alt=""><figcaption></figcaption></figure>

### 4.1. Process of Memory Dump Analysis

Một "Phân tích Kết xuất Bộ nhớ Windows" cơ bản nên bao gồm các bước sau:

* Image Identification
* Processes and Threads
* Network Connections
* Registry Analysis
* File Analysis
* Malware Analysis
* Service Analysis

#### Image Identification

Bước đầu tiên là xác minh loại và định dạng của tệp kết xuất bộ nhớ cần phân tích. Bước này rất quan trọng đối với tính chính xác của phân tích vì việc lựa chọn cấu hình phù hợp ảnh hưởng trực tiếp đến độ tin cậy của kết quả phân tích. Các yếu tố như phiên bản hệ điều hành, kiến trúc và phiên bản kernel phải được xác định chính xác.

Để xác minh tính toàn vẹn của tệp kết xuất bộ nhớ, bạn có thể sử dụng "`md5sum`" hoặc các thuật toán băm thay thế để nhanh chóng lấy giá trị băm của tệp.

```bash
CertUtil -hashfile .\mimi.mem MD5
```

<figure><img src="/files/FAAcq6HlZQK9DXQejr61" alt=""><figcaption></figcaption></figure>

#### Processes and Threads

Ở bước này, một danh sách toàn diện các tiến trình và luồng đang chạy trên hệ thống được thu thập. Danh sách này sẽ giúp xác định các tiến trình đáng ngờ hoặc độc hại và phân biệt giữa hoạt động bình thường và bất thường trên hệ thống. Ngoài ra, cây tiến trình và các mối quan hệ cha-con có thể cung cấp các manh mối có giá trị để theo dõi phần mềm độc hại.

Với Volatility 3 "<mark style="color:red;">`windows.pslist`</mark>", "<mark style="color:red;">`windows.pstree`</mark>", "<mark style="color:red;">windows.psscan</mark>", bạn có thể xem và phân tích các tiến trình đang chạy.

Thông tin chi tiết trong đầu ra của plugin Windows.pslist như sau:

* **PID:** Process Identifier (Mã định danh Tiến trình) là số duy nhất của tiến trình.
* **PPID:** Parent Process Identifier (Mã định danh Tiến trình Cha) là PID của tiến trình cha đã khởi động tiến trình này.
* **ImageFileName:** Tên của tiến trình.
* **Offset(V):** Giá trị bù ảo cho biết vị trí của tiến trình trong bộ nhớ trong không gian địa chỉ ảo.
* **Threads:** Số lượng luồng có trong tiến trình.
* **Handles:** Số lượng tham chiếu đến các tài nguyên hệ thống như các tệp đang mở, khóa registry, kết nối mạng, v.v.
* **Session:** Số phiên mà tiến trình thuộc về.
* **Wow64:** Hiển thị xem tiến trình có đang chạy trên hệ thống con Windows-on-Windows 64-bit hay không. Điều này thường chỉ ra liệu một ứng dụng 32-bit có đang chạy trên một hệ thống 64-bit hay không.
* **CreatedTime:** Ngày và giờ tiến trình được tạo.
* **ExitTime:** Nếu tiến trình bị tắt, trường này hiển thị thời gian tiến trình bị tắt. Nếu tiến trình vẫn đang chạy, trường này chứa "N/A" (không có sẵn).
* **File Output:** Hiển thị xem thông tin tệp được xuất về tiến trình có khả dụng hay không. Trạng thái "Disabled" cho biết rằng việc xuất thông tin này bị chặn.

Sử dụng tất cả các chi tiết trên, các lệnh đã thực thi cần được phân tích từng lệnh một và nếu có các lệnh bất thường, quy trình pháp y số được tiếp tục cụ thể cho các lệnh đó.

```handlebars
python.exe .\vol.py -f ..\mimi.mem windows.pslist
```

<figure><img src="/files/Fu5j6pjBnntCtmVRP1OW" alt=""><figcaption></figcaption></figure>

#### Network Connections

Bằng cách kiểm tra các kết nối mạng đang hoạt động và đã qua, có thể xác định những máy chủ bên ngoài nào đang giao tiếp thông qua hệ thống. Loại phân tích này đóng một vai trò quan trọng trong việc phát hiện các vi phạm dữ liệu hoặc kết nối đến các máy chủ điều khiển và chỉ huy (C2). Một kiểm tra chi tiết về các cổng đang mở và lưu lượng mạng có thể phát hiện các cuộc tấn công mạng bên ngoài hoặc truy cập từ xa trái phép.

Với plugin "<mark style="color:red;">`windows.netscan`</mark>" có trong Volatility 3, bạn có thể xem và phân tích các truy cập mạng hiện đang hoạt động trên kết xuất bộ nhớ. Các chi tiết của đầu ra này như sau:

* **Offset:** Giá trị bù thập lục phân cho biết vị trí của đối tượng kết nối mạng trong bộ nhớ.
* **Protocol:** Giao thức đang sử dụng (ví dụ: TCPv4, UDPv4, v.v.).
* **LocalAddr:** Địa chỉ IP của máy cục bộ.
* **LocalPort:** Số cổng được sử dụng bởi máy cục bộ để giao tiếp.
* **ForeignAddr:** Địa chỉ IP của máy từ xa.
* **ForeignPort:** Số cổng của máy từ xa.
* **State:** Trạng thái của kết nối mạng (ví dụ: "`ESTABLISHED`" có nghĩa là kết nối đang hoạt động, "`LISTENING`" có nghĩa là cổng đang ở chế độ nghe).
* **PID:** Số nhận dạng tiến trình của tiến trình đã thiết lập kết nối.
* **Owner:** Tên tệp của tiến trình đã thiết lập kết nối.
* **Created:** Ngày và giờ kết nối được tạo.

```bash
python.exe .\vol.py -f ..\mimi.mem windows.netscan
```

<figure><img src="/files/FxskqRmK97LD7QQQiMnu" alt=""><figcaption></figcaption></figure>

Ví dụ: lệnh "findstr" có thể được sử dụng để áp dụng một bộ lọc để tìm tiến trình giao tiếp với một địa chỉ IP cụ thể.

```bash
python.exe .\vol.py -f ..\mimi.mem windows.netscan | findstr "172.16.8.132"
```

<figure><img src="/files/7ospA04qTOFDXHAiwPlQ" alt=""><figcaption></figcaption></figure>

#### Registry Analysis

Phân tích registry là rất quan trọng trong quy trình pháp y số vì registry chứa thông tin mở rộng về cấu hình hệ điều hành, cài đặt hệ thống và người dùng, các ứng dụng đã cài đặt và phần cứng. Phần mềm độc hại và các hoạt động của người dùng thường để lại dấu vết trong registry, vì vậy phân tích registry đóng một vai trò quan trọng trong việc giúp theo dõi các thay đổi hệ thống, hoạt động của người dùng và các sự kiện hệ thống và xác định các hành động độc hại. Thông tin registry cũng được sử dụng để tạo dòng thời gian của các sự kiện và thu thập thông tin hệ thống quan trọng như tài khoản người dùng và cài đặt mạng.

Plugin "<mark style="color:red;">`windows.registry.hivelist`</mark>" liệt kê các hive registry đang hoạt động trong bộ nhớ. Hive là một tệp chứa một phần cụ thể của registry (ví dụ: HKEY\_LOCAL\_MACHINE hoặc HKEY\_USERS). Plugin HiveList cung cấp các địa chỉ vật lý của các hive này trong bộ nhớ, các tệp chúng tương ứng và đường dẫn của chúng trong hệ thống. Nói tóm lại, nó được sử dụng để xác định những tệp registry nào được tải trong bộ nhớ và vị trí của chúng.

Plugin "<mark style="color:red;">`windows.registry.hivescan`</mark>" quét cấu trúc registry trong bộ nhớ và phát hiện các hive bất thường hoặc ẩn tiềm ẩn. Plugin này được sử dụng để tìm các hive không được tải hoặc hiển thị khi sử dụng các kỹ thuật liệt kê tiêu chuẩn. Điều này đặc biệt quan trọng trong trường hợp phần mềm độc hại hoặc người dùng cố gắng xóa dấu vết của nó, vì những hành động như vậy có thể để lại các hive ẩn hoặc bị xóa một nửa trong cấu trúc registry.

```bash
python.exe .\vol.py -f ..\memdump.mem windows.registry.hivelist
```

<figure><img src="/files/Jq4EbiYMnlWYv66b9yo3" alt=""><figcaption></figcaption></figure>

Các giá trị registry quan trọng cần được kiểm tra và xem xét các điểm bất thường trong quá trình pháp y số.

Một số giá trị registry được coi là quan trọng như sau:

* **Run keys:** Các chương trình tự động khởi động khi người dùng đăng nhập hoặc trong khi khởi động hệ thống (<mark style="color:red;">`HKLM\Software\Microsoft\Windows\CurrentVersion\Run`</mark>, <mark style="color:red;">`HKCU\Software\Microsoft\Windows\CurrentVersion\Run`</mark>).
* **Services:** Chi tiết về các dịch vụ và trình điều khiển hệ thống. Các dịch vụ độc hại có thể được ẩn ở đây (<mark style="color:red;">`HKLM\System\CurrentControlSet\Services`</mark>).
* **Shell extensions:** Các mục được thêm vào shell hệ thống. Chúng có thể được kiểm tra để xác minh rằng chúng không độc hại. (<mark style="color:red;">`HKLM\Software\Microsoft\Windows\CurrentVersion\Shell Extensions`</mark>)
* **Mounted devices:** Bản ghi của các thiết bị được gắn trong hệ thống giúp xác định các thiết bị được gắn. (<mark style="color:red;">`HKLM\System\MountedDevices`</mark>)
* **UserAssist Keys:** Danh sách các chương trình được người dùng khởi động, có thể được sử dụng để phân tích hành vi của người dùng. (<mark style="color:red;">`HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist`</mark>)

#### File Analysis

Bước tiếp theo là kiểm tra cấu trúc tệp và thư mục trên hệ thống. Các tệp do phần mềm độc hại để lại, các tệp tạm thời hoặc các tệp đã bị xóa nhưng vẫn còn trong RAM có thể rất quan trọng để hiểu cách sự cố diễn ra.

Volatility3 sử dụng plugin "<mark style="color:red;">`windows.filescan`</mark>" để quét các đối tượng tệp trong kết xuất bộ nhớ. Plugin này liệt kê các đối tượng tệp do hệ điều hành quản lý và cung cấp cho nhà phân tích các địa chỉ trong bộ nhớ, tên tệp và thông tin liên quan khác của các đối tượng tệp. Ngoài ra, bạn có thể nhận được thông tin về các tệp bị xóa hoặc ẩn, thời điểm các tệp này được tạo, sửa đổi hoặc truy cập và vị trí của các tệp này trong bộ nhớ.

```bash
python.exe .\vol.py -f ..\memdump.mem windows.filescan
```

<figure><img src="/files/0Um7OiFaPdyWTLlBdcg8" alt=""><figcaption></figcaption></figure>

#### Malware Analysis

Ở bước này, kết xuất bộ nhớ được kiểm tra các tạo tác phần mềm độc hại. Phần mềm độc hại thường sử dụng các kỹ thuật tinh vi để ngụy trang, vì vậy việc quét chi tiết các chữ ký, các tiến trình ẩn hoặc các cơ chế tải độc hại là bắt buộc.

Plugin "<mark style="color:red;">`windows.vmayarascan`</mark>" có trong Volatility 3 là một plugin quan trọng để kiểm tra các mối đe dọa tiềm ẩn hoặc thông tin quan trọng trong kết xuất bộ nhớ.

{% code overflow="wrap" %}

```bash
python.exe .\vol.py -f ..\memdump.mem yarascan.YaraScan --yara-file .\yara\search_mimikatz.yar
```

{% endcode %}

<figure><img src="/files/VpdcQt9dwKbqMFVLMqV1" alt=""><figcaption></figcaption></figure>

Nội dung của "search\_mimikatz.yar" như sau:

<figure><img src="/files/uR9mfqe92RYXAShfsHoJ" alt=""><figcaption></figcaption></figure>

#### Service Analysis

Trên hệ thống Windows, các dịch vụ thường chạy dưới dạng các tiến trình nền giúp hệ điều hành và các ứng dụng chạy đúng cách.

Tuy nhiên, phần mềm độc hại có thể giả mạo là các dịch vụ hợp pháp hoặc sửa đổi các dịch vụ hợp pháp để tạo ra các chức năng độc hại. Do đó, việc thực hiện "phân tích dịch vụ" trong pháp y Windows là rất quan trọng để xác định các cấu hình dịch vụ độc hại hoặc đáng ngờ, các đường dẫn dịch vụ đã sửa đổi, các dịch vụ từ các nhà phân phối không xác định và các dịch vụ gây ra hoạt động mạng bất thường.

Plugin "<mark style="color:red;">`windows.svcscan`</mark>" của Volatility 3 liệt kê tất cả các dịch vụ hệ thống và thông tin của chúng, đường dẫn tệp dịch vụ, chi tiết cấu hình và trạng thái. Nó cung cấp thông tin quan trọng như trạng thái đang chạy của các dịch vụ, các loại khởi động, đường dẫn tệp nhị phân và tên dịch vụ. Nó cũng được sử dụng để phát hiện các cấu hình dịch vụ độc hại hoặc đáng ngờ.

Các chi tiết sau được bao gồm trong đầu ra của plugin này:

* **Offset:** Địa chỉ của dịch vụ trong registry hoặc bộ nhớ hệ thống. Địa chỉ này có thể được sử dụng để truy cập trực tiếp vào thông tin cấu trúc của dịch vụ.
* **Order:** Thứ tự khởi động của các dịch vụ. Chỉ định thứ tự khởi động các dịch vụ khi hệ thống được khởi tạo hoặc khi các dịch vụ được khởi động theo yêu cầu.
* **PID:** Mã định danh tiến trình (PID) của dịch vụ. "N/A" có nghĩa là dịch vụ không có ID tiến trình hoặc đang chạy dưới dạng dịch vụ hệ thống ở chế độ nền.
* **Start:** Loại khởi động của dịch vụ. Các ví dụ được đưa ra dưới đây:
  * `SERVICE_DEMAND_START`: Dịch vụ được khởi động thủ công khi cần thiết.
  * `SERVICE_SYSTEM_START`: Dịch vụ khởi động tự động khi khởi động hệ thống.
* **State:** Trạng thái hiện tại của dịch vụ. Các ví dụ được đưa ra dưới đây:
  * `SERVICE_STOPPED`: Dịch vụ hiện đang dừng.
  * `SERVICE_RUNNING`: Dịch vụ đang chạy.
* **Type:** Loại dịch vụ xác định danh mục mà dịch vụ hoạt động. Các ví dụ được đưa ra dưới đây:
  * `SERVICE_KERNEL_DRIVER`: Một trình điều khiển chạy ở cấp độ kernel.
  * `SERVICE_FILE_SYSTEM_DRIVER`: Một trình điều khiển xử lý các hoạt động hệ thống tệp.
  * `SERVICE_WIN32_SHARE_PROCESS`: Một dịch vụ Win32 trong đó nhiều dịch vụ chạy trong cùng một tiến trình.
* **Name:** Tên do hệ thống xác định của dịch vụ. Nó thường đề cập đến các chức năng của dịch vụ hoặc các thành phần mà nó xử lý.
* **Display:** Tên của dịch vụ khi nó được trình bày trong giao diện người dùng. Nó là tên dễ hiểu hơn xuất hiện trong các công cụ quản lý dịch vụ hoặc các ngăn cấu hình hệ thống.
* **Binary:** Đường dẫn đến tệp thực thi cho dịch vụ. N/A có nghĩa là không có tệp thực thi nào cho dịch vụ hoặc thông tin này không thể được truy cập. Đối với trình điều khiển dịch vụ, các đường dẫn như "\Driver" hoặc "\FileSystem" thường được hiển thị.

```bash
python.exe .\vol.py -f ..\mimi.mem windows.svcscan
```

<figure><img src="/files/z7R2bD1U0r1EerKVcyXL" alt=""><figcaption></figcaption></figure>

Các yếu tố khác nhau cần tìm kiếm để phát hiện các dịch vụ bất thường như sau:

* **Hành vi bất thường:** Các điểm bất thường như một dịch vụ thường khởi động với '`SERVICE_SYSTEM_START`' được đặt thành '`SERVICE_DEMAND_START`' có thể cho thấy các thay đổi độc hại. Đặc biệt, hãy theo dõi những thay đổi trong các loại khởi động dịch vụ hệ thống quan trọng.
* **Tình huống bất ngờ:** Việc dừng đột ngột (`SERVICE_STOPPED`) các dịch vụ, đặc biệt là các dịch vụ liên quan đến bảo mật, có thể cho thấy hoạt động độc hại trên hệ thống.
* **Các loại dịch vụ bất thường:** Nếu các loại dịch vụ quan trọng như `SERVICE_KERNEL_DRIVER` hoặc `SERVICE_FILE_SYSTEM_DRIVER` có các tên hoặc cấu hình không mong muốn, bạn nên điều tra hành vi của chúng.
* **Tên đáng ngờ:** Tên dịch vụ không xác định hoặc bất thường, đặc biệt nếu chúng được đánh vần tương tự như các tên dịch vụ đã biết (ví dụ: "Netmaan" thay vì "Netman"), có thể là dấu hiệu cho thấy phần mềm độc hại đang cố gắng mạo danh các dịch vụ này.
* **Đường dẫn không hợp lệ:** Kiểm tra các đường dẫn nơi đặt các tệp thực thi dịch vụ. Nếu các đường dẫn này nằm ngoài các thư mục hệ thống hoặc ở các vị trí bất thường (chẳng hạn như thư mục tệp tạm thời), điều này có thể cho biết sự hiện diện của một dịch vụ độc hại.
* **Các dịch vụ bất thường:** Để phát hiện các dịch vụ bất thường, việc làm quen với trạng thái bình thường của hệ thống là rất quan trọng. Ví dụ: bạn có thể xác định các dịch vụ đáng ngờ đã được thêm vào hoặc sửa đổi bằng cách so sánh chúng với danh sách các dịch vụ mặc định dự kiến sẽ chạy sau khi cài đặt HĐH.

## 5. Case Studies and Practical Examples

Trong phần này, chúng ta sẽ xem xét các kịch bản thực tế và các ví dụ thực tế liên quan đến pháp y bộ nhớ trên Windows. Chương này sử dụng các trường hợp thực tế để chứng minh cách các quy trình pháp y số được triển khai, cách các thách thức khác nhau được khắc phục và cách đánh giá kết quả.

### 5.1. Use Case-1

* **Trường hợp:** Phát hiện Port Scan Activity
* **Chi tiết:** Port scanning là một kỹ thuật được sử dụng để xác định những cổng nào đang mở trên các thiết bị trong một mạng. Các tác nhân độc hại có thể sử dụng thông tin này để xác định các lỗ hổng trong các hệ thống mục tiêu và mở rộng bề mặt tấn công của chúng.
* **Phát hiện:** Để phát hiện hoạt động quét cổng trong quá trình phân tích kết xuất bộ nhớ, các plugin "<mark style="color:red;">`windows.pslist`</mark>", "<mark style="color:red;">`windows.cmdline`</mark>" hoặc "<mark style="color:red;">`windows.netscan`</mark>" có thể được sử dụng với Volatility3.

Khi phân tích các tiến trình bằng plugin "<mark style="color:red;">`windows.pslist`</mark>", tiến trình "nmap.exe" nổi bật, có thể được sử dụng cho "port scanning".

```bash
python.exe .\vol.py -f ..\nmap.mem windows.pslist
```

<figure><img src="/files/hOaRD9ONANe9iijLfHay" alt=""><figcaption></figcaption></figure>

Tất cả các chi tiết của lệnh nmap có thể được xem bằng cách kiểm tra số PID (ID tiến trình) "`7356`" của tiến trình "`nmap.exe`" liên quan bằng plugin "<mark style="color:red;">`windows.cmdline`</mark>".

```bash
python.exe .\vol.py -f ..\nmap.mem windows.cmdline --pid 7356
```

<figure><img src="/files/6YPE7Ueo7582KyOffrxo" alt=""><figcaption></figcaption></figure>

### 5.2. Use Case-2

* **Trường hợp:** Phát hiện Brute Force Attacks
* **Chi tiết:** Đúng như tên gọi, các cuộc tấn công brute-force sử dụng các phương pháp brute-force để đoán thông tin đăng nhập như tên người dùng và mật khẩu. Loại tấn công này thường liên quan đến nhiều lần thử đăng nhập nhanh chóng và liên tiếp.
* **Phát hiện:** Các plugin "<mark style="color:red;">`windows.cmdline`</mark>" và "<mark style="color:red;">`windows.netscan`</mark>" có thể được sử dụng với Volatility3 để phát hiện hoạt động brute-force trong quá trình phân tích kết xuất bộ nhớ.

Sau khi thực thi plugin "<mark style="color:red;">`netscan`</mark>" và kiểm tra đầu ra, rõ ràng là có quá nhiều gói `SYN_SENT`. Đây có thể là hoạt động quét cổng, nhưng PID liên quan cần được phân tích để chắc chắn.

```bash
python.exe .\vol.py -f ..\thc.mem windows.netscan
```

<figure><img src="/files/vTGEZiqnhpuzXrDlHBgp" alt=""><figcaption></figcaption></figure>

Một cuộc tấn công brute-force SSH bằng công cụ "hydra" được phát hiện bằng cách kiểm tra PID đã tạo ra các gói mạng liên quan.

```bash
python.exe .\vol.py -f ..\thc.mem windows.cmdline --pid 7176
```

<figure><img src="/files/PfEzjTsqI0hL0uEnD6Yq" alt=""><figcaption></figcaption></figure>

### 5.3. Use Case-3

* **Trường hợp:** Phát hiện Credential-Dumping (Khai thác Thông tin Đăng Nhập)
* **Chi tiết:** Credential dumping là quá trình lấy thông tin đăng nhập (chẳng hạn như mật khẩu và khóa) từ một hệ thống. Phần mềm độc hại và những kẻ tấn công có thể sử dụng thông tin này để giành quyền truy cập vào các hệ thống khác.
* **Phát hiện:** Để phát hiện hoạt động credential dumping trong quá trình phân tích kết xuất bộ nhớ, các plugin "<mark style="color:red;">`windows.pslist`</mark>" và "<mark style="color:red;">`windows.cmdline`</mark>" có thể được sử dụng với Volatility3.

Khi kiểm tra các tiến trình bằng plugin "<mark style="color:red;">`windows.pslist`</mark>", tiến trình "`mimikatz.exe`" có thể được sử dụng trong hoạt động "credential dumping" là đáng chú ý.

```bash
python.exe .\vol.py -f ..\mimi2.mem windows.pslist
```

<figure><img src="/files/FfxTzS8YUI2RAA6n8xwi" alt=""><figcaption></figcaption></figure>

Kiểm tra số PID (ID tiến trình) "6676" của tiến trình "`mimikatz.exe`" tương ứng bằng plugin "windows.cmdline" cho thấy tất cả các chi tiết của lệnh "`mimikatz`". Các tham số "`privilege::debug`" và "`sekurlsa::logonpasswords`" cho biết hoạt động credential dumping khi các đối số lệnh được kiểm tra.

```bash
python.exe .\vol.py -f ..\mimi2.mem windows.cmdline --pid 6676
```

<figure><img src="/files/23Xrh4OkdwUUrqkQWUZh" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viettaliii.gitbook.io/home/soc-and-dfir/dfir/windows-memory-forensics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
