# Xây dựng môi trường mô phỏng xử lý sự cố bảo mật sử dụng Wazuh, TheHive và SOAR
## Giới Thiệu
Trong quá trình học tập, mình nhận ra rằng chỉ học lý thuyết hoặc làm các lab rời rạc vẫn chưa đủ để nắm vững quy trình phát hiện, phân tích và phản hồi sự cố trong thực tế. Vì vậy, mình quyết định tự xây dựng một mô hình lab SOC cá nhân mô phỏng môi trường thực tế nhằm thực hành toàn bộ vòng đời của một sự cố – từ lúc log được ghi nhận, cảnh báo được tạo, đến lúc case được mở, phân tích IOC và cuối cùng là tự động hóa phản ứng.
## Các Thành Phần
Mô hình lab mình xây dựng bao gồm nhiều thành phần mã nguồn mở, phổ biến trong các tổ chức thực tế:
* `Wazuh` được triển khai như một HIDS (Host-based Intrusion Detection System) để thu thập log từ các máy chủ và endpoint, đồng thời tạo ra cảnh báo dựa trên rule.
* `TheHive` đóng vai trò như một nền tảng quản lý sự cố (incident response platform), nơi các cảnh báo từ Wazuh được chuyển thành case để analyst xử lý.
* `VirusTotal` được sử dụng để thực hiện enrichment các IOC (như IP, hash, domain...) bằng cách quét và phân tích với hơn 70 công cụ antivirus và dịch vụ khác, giúp quá trình điều tra nhanh chóng và hiệu quả hơn.
* `Shuffle`, một nền tảng SOAR (Security Orchestration, Automation, and Response), được mình sử dụng để xây dựng các playbook nhằm tự động hóa các hành động như gửi cảnh báo, update case trạng thái, hoặc phản ứng như block IP,…
## Kiến trúc hệ thống
Sơ đồ dưới đây mô tả kiến trúc tổng thể của hệ thống. Các luồng xử lý bắt đầu từ việc Wazuh thu thập log, gửi cảnh báo đến TheHive, thực hiện enrichment IOC với VirusTotal, và phản hồi tự động thông qua Shuffle.

Sau khi nắm được sơ lược về kiến trúc thì mình sẽ xác định cách triển khai các thiết bị:
* Wazuh Manager và TheHive mình sẽ sử dụng cloud của Digital Ocean để triển khai 2 máy này.
* Máy SOC Analyst sẽ là máy chính của mình, Windows 10 mình sẽ thiết lập trên VMware.
* Shuffle thì mình sử dụng nền tảng web.
## Cấu hình
### Wazuh Manager
Trên Digital Ocean vào Create -> Droplet và tạo máy ảo sau khi xong thì sẽ được như sau:

Sau đó vào phần Networking để tạo Firewall, ở phần Inbound thì bạn nên để source là IP Public của bạn để có thể truy cập tới VM nhé.

Các bước cơ bản đã xong thì mình sẽ tiến hành cài đặt Wazuh. Bạn có thể truy cập vào https://documentation.wazuh.com/current/quickstart.html để cài đặt. Đồng thời phải lưu ý là tùy vào lượng Agent mà bạn phải setup dụng lượng cho VM cụ thể như sau:

Sau khi lệnh cài đặt đã chạy xong thì mình sẽ được Username và Password như sau:

Kiểm tra kết nối tới Wazuh Dashboard, trên Cloud bạn vào Droplet và copy ip public của VM Wazuh, tiếp đến vào Browser và nhập `http://ip_public`.

Đến đây thì đã xong VM của Wazuh Manager.
### Kết nối Agent
Vào phần Deloy Agent và nhập IP Public, Tên Agent của Wazuh Manager như sau:

Kéo xuống dưới sẽ thấy hướng dẫn như sau, ta chỉ cần copy rồi chạy bên máy Agent ở Powershell dưới quyền admin là được:

Sau khi chạy mà có bị invalid thì bạn có thể khác phục bằng cách tìm mục server và tìm Wazuh rồi START nó thủ công nhé.

Cuối cùng lên Wazuh Dashboard và kiểm ra lại Agent đã được Active chưa.

Như thế này là được rồi :D, chúng ta sẽ đến với giai đoạn tiếp theo với TheHive.
### TheHive
Tương tự Wazuh Manager, chúng ta phải tạo VM rồi add firewall sẽ được như sau:

Về Cách cài đặt và cấu hình thì khá nhiều bước và dài mình để các từ bước mình làm ở đây [Github](https://github.com/nhatminhsc/SOC-Automation-Project?tab=readme-ov-file) và bạn có thể tham khảo thêm trên trang của [TheHive](https://docs.strangebee.com/thehive/installation/step-by-step-installation-guide/) nhé.
Cuối cùng bạn truy cập TheHive, `http://ip_public:9000` như sau là được rồi nhé.

## Thiết lập và chỉnh sửa nguồn thập log ở Agent
Ngoài các nguồn log như Security, Application, . . . thì ở project này mình sẽ lấy log thêm ở phần Sysmon.
Trước tiên thì phải lấy địa chỉ log của Sysmon như sau:

Sau khi có được phần này ta sẽ ghi vào nó file ossec.conf để Wazuh Manager thu thập log ở Sysmon.

Sau đó thì nhớ phải restart lại Wazuh nhé.

Sau khi đã chạy xong thì mình sẽ thử chạy mimikatz ở Agent và Dashboard có xem được log alert hay chưa

Ở Dashboard thì chẳng thấy gì cả :'<

Ở đây thì việc mình lấy log ở Sysmon nhưng do chưa có rule cũng match với log mà Agent gửi lên Manager nên hiện thời vẫn chưa sinh ra được alert đó.
Để có thể lấy được log chính xác và sinh ra alert thì mình phải đi qua từng giai đoạn gửi, match rule rồi sinh ra alert của Wazuh.
Đầu tiền mình phải chỉnh file `/var/ossec/etc/ossec.conf` ở 2 lựa chọn này ở 2 mục `logall` thành `yes` (Mặc định là nó để `no` nha)

tại sao lại chỉnh thành `yes` như thế thì là đây

Việc này giúp cho những log chúng ta lấy dù chưa có rule để match nhưng vẫn được ghi lại chứ không bị bỏ qua.
Và để có thể lấy được những log này lên được dashboard thì phải chỉnh `/etc/filebeat/filebeat.yml` ở mục `archives` thành true nữa.

> Và nhớ restart cho bất kỳ sự chỉnh sửa ở dịch vụ nào nhé.
Sau đó lên Dashboard và check lại, nhận được như này thì đã lấy được log thành công.

Khi mở ra xem kỹ hơn thì mình sẽ nhắm vào field này để viết rule ở mục sau:

à và đừng quên tạo Indext pattern trước rồi hả tìm kiếm nha.

## Viết Rule cho Mimikatz
Trước tiên thì mình sẽ tham khảo các rule có sẵn của Wazuh về Sysmon rồi mình sẽ custom lại từ nó :>>>
Bắt đầu mình sẽ viết 1 rule về việc chạy tiến trình mới nên mình sẽ tìm và xem qua các rule sysmon event 1.

Đây rồi, giờ thì mò mẫn rồi custom lại thoi :v
Copy đoạn rule đó rồi qua file custom rule để thiết lập riêng với các rule có sẵn nhé, ngoài ra thì rule mình set thì sẽ có id > 100000.
Sau nhiều lần thử thì mình sẽ viết thế này

Để kiểm tra field mình sử dụng ở rule có hoạt động đúng không thì mình sẽ thay đổi cả tên của mimikatz để thử:

Sau đó mình sẽ chạy file `FindMe` này

Sau đó lên Dashboard để kiếm tra thành quả :)))

tuyệt vời !!!, ngoài ra bạn có thể tham khảo thêm về `syntax` của rule ở [đây](https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html)
## Thiếp lập Shuffle
Vào Web của Shuffle và đăng ký tài khoản, sau đó bạn kéo 1 webhook và đặt trên cho nó, rồi qua `Change_Me` để add thêm biến $exec thì được như sau:

Sau đó, các bạn có thể vào `/var/ossec/etc/ossec.conf` hoặc có thể cấu hình qua Wazuh Dashboard, mình thì hay sửa file cấu hình ở trên Dashboard, trước khi lưu thì nó sẽ check file có hợp lệ hay không rồi mới được phép lưu, giúp mình tránh được các cái sai không đáng có :>>>
Dưới đây là đoạn mình cấu hình để tích hợp gửi các Alert qua cho webhook trên shuffle
```
<integration>
<name>shuffle</name>
<hook_url>https://shuffler.io/api/v1/hooks/webhook_4f294a44-73c4-42de-ba09-e6574522f120</hook_url>
<rule_id>100002</rule_id>
<alert_format>json</alert_format>
</integration>
```

Bạn có thể tham khảo thêm hoặc tùy biến ở [đây](https://wazuh.com/blog/integrating-wazuh-with-shuffle/) nhé
Vì shuffle đã có đoạn script để wazuh gửi dữ liệu sẵn ở `/var/ossec/integrations/` nên bạn chỉ cần khai báo thêm `integration` ở `ossec.conf` là được rồi nhé

Sau đó bạn vào Agent để chạy mimikatz để test xem đã gửi alert lên webhook thành công chưa:

Bạn nhận được như thế này là Webhook đã hoạt động đúng rồi nhé.

## Workflow về quy trình xử lý cảnh báo bảo mật tự động
Sau khi nhận được Alert qua Webhook rồi thì mình sẽ xây dựng Workflow về cảnh báo tự động như sau:
1. Nhận cảnh báo: Hệ thống phát hiện Mimikatz và gửi alert sang Shuffle.
2. Xử lý ban đầu: Shuffle nhận alert, trích xuất SHA256 hash từ file bị nghi ngờ.
3. Phân tích: Gửi hash lên VirusTotal để kiểm tra mức độ uy tín.
4. Tạo hồ sơ điều tra: Gửi thông tin sang TheHive để tạo alert cho SOC.
5. Thông báo nhân sự: Gửi email cho SOC analyst để bắt đầu điều tra.
### Thiết lập Regex nhận hash từ alert
Đổi `find Actions` trên shuffle của Chang Me thành `Regex capture group`, mình có ý định là sẽ lấy phần hash của alert đó ra để enrichment nên sẽ lấy field của hash và thêm 1 regex phù hợp.

Sau khi thiết lập xong thì bạn bấm vào cái nút kế bên chữ `Detail` y như hình bên dưới để áp dụng thử Action đã thay đổi.

Khi `Change_Me` bắt được dữ liệu như này, là hash256 của alert thì bạn đã thành công rồi.

### Enrichment với VirusTotal
Để enrichment thì mình sẽ dùng VirusTotal như sau, `Find action` ở dạng `Get a hash report`, còn Apikey thì bạn qua VirusTotal lấy nhé, id thì bạn chọn cái regex.

Bạn tiến hành chạy lại và nhận được các thông tin như sau thì là thành công.

Trong mớ nội dung đó bạn sẽ thấy cái field như sau:

`Malicious: 66`
Đây chính là nó !!!!

### Thiết lập TheHive tạo Case với Alert từ Shuffle
Tạo Organisation trong TheHive

Tạo User trong TheHive

Tương tự với User tiếp theo nhưng chọn `Type: service` nhé, tổng sẽ được 2 user như sau:

* `User: SOAR` sẽ đảm nhận việc trigger các alert được gửi từ Shuffle.
* `User: user1` sẽ đảm nhận việc của SOC analyst.
Ở người dùng SOAR này mình sẽ tạo API key

TheHive trên Shuffle thì thiết lập như sau nhé:

`API key` là của User SOAR của TheHive còn, URL là `ip_public` của TheHive và `port`
Còn dưới đây là nội dung mình đã thiết lập cho `tab simple` để gửi các thông tin được chỉ định ở các field qua TheHive để tạo Case.
```
Title: $exec.title
Tags: ["T1003"]
Summary: Mimikatz activity detection on host: $exec.text.win.system.computer and the process ID is: $exec.text.win.eventdata.processId and the command line is: $exec.text.win.eventdata.commandLine
Severity: 2
Type: Internal
Tlp: 2
Status: New
Sourceref: "Rule: 100002"
Source: Wazuh
Pap: 2
Decription: Mimikatz Detected on host: $exec.text.win.system.computer from user: $exec.text.win.eventdata.user
```
Run Execution để thử xem có được không nhé

Boommmmmm, nó bị lỗi rồi, và nó làm mình mất nhiều giờ mà cũng không fix được :))), mình thất bại thật rồi.
Nhưng không sao, `tab simple` không được thì mình sẽ thử qua `tab advance` coi sao, và bất ngờ là nó thành công. (biết thế qua đây làm sớm hơn :=))

Mình sẽ điền phần nội dung dưới định dạng JSON như sau:
```
{
"description": "Mimikatz Detected on host: $exec.text.win.system.computer from user: $exec.text.win.eventdata.user",
"externallink": "",
"pap": 2,
"severity": 2,
"source": "Wazuh",
"sourceRef": "Rule: 100002",
"status": "New",
"summary": "Mimikatz activity detection on host: $exec.text.win.system.computer and the process ID is: $exec.text.win.eventdata.processId and the command line is: $exec.text.win.eventdata.commandLine",
"tags": ["T1003"],
"title": "$exec.title",
"tlp": 2,
"type": "Internal"
}
```
Cách mà mình viết được đoạn JSON là mở đoạn lỗi khi nãy, sẽ có phần body chưa nội dung JSON mà mình gửi qua TheHive rồi mình set lại các value bằng các field để nó truyền giá trị vào. (tiện ghê đỡ phải viết lại từ đầu :>, đôi khi thấy gặp lỗi cũng giúp mình mò được nhiều thứ hơn)

Và cuối cùng là bên TheHive cũng đã nhận được alert với nội dung như sau:

Tuyệt vời !!!, đã tạo được case từ cảnh báo của Wazuh.
### Thiết lập gửi cảnh báo qua Email
Vào Shuffle và chọn phần app và nối nhưng trong ảnh dưới đây.

Sau đó ta sẽ cấu hình vài thứ ở Email:
```
Find Action: Send email shuffle
Recipients: <your_email_address>
subject: Mimikatz Detected !!!
Body: $exec.text.win.eventdata.utcTime
Title: $exec.title
Host: $exec.text.win.system.computer
```
Và Run Execution để chạy flow và kiểm tra email thoi :>

Thành công rồi !!!
Tới đây thì Workflow của giai đoạn về việc tự động hóa cảnh báo khi có alert từ Wazuh, tạo Case qua TheHive và gửi cảnh báo qua email cũng đã hoàn thành.
## WorkFlow phản ứng với SSH attack
### Kết nối Agent Ubuntu
Đầu tiên bắt đầu từ việc tạo Agent ubuntu thoai.
Chọn hệ điều hành, nhập IP Wazuh Manager, tên Agent

Giờ thì chỉ cần copy lệnh và paste vào máy ubuntu.

Sau đó, Vào mục Overview nếu thấy Agent được `Active` thế này thì thêm Agent thành công.

Tiếp theo, cài đặt SSH trên máy Ubuntu sẽ được sử dụng làm mục tiêu cho cuộc tấn công SSH.
```
sudo apt update
sudo apt install openssh-server -y
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh
```

Mình sẽ tiến hành tấn công SSH từ 1 máy khác với công cụ là hydra với câu lệnh như sau:
```
hydra -L users.txt -P passwords.txt ssh://<ip_target>
```
> Có thể cài hydra qua lệnh sau:
> sudo apt update && sudo apt install -y hydra
### Viết Rules cho Brute-force SSH
Đây là quá trình hydra thực hiện brute force

Bây giờ chúng ta sẽ thử lên Dashboard xem đã có thể detected được Alert hay chưa ở `Threat Intelligence -> Threat Hunting`

Dễ thấy các Alert đang được để ở mức cảnh báo là 5, để nhấn mạnh vào sự kiện này ta sẽ tạo một rule để kích hoạt cảnh báo khi sự kiện Level 5 “sshd: Attempt to login using a non-existent user” xảy ra hơn ba lần trong vòng 60 giây, cho thấy đang có một cuộc tấn công brute-force SSH diễn ra.
Vào `Server Management ->Rules -> custom rules`

```
<rule id="5764" level="10" frequency="3" timeframe="60">
<if_matched_sid>5710</if_matched_sid>
<same_source_ip />
<description>Multiple SSH login attempts using non-existent usernames.</description>
<mitre>
<id>T1110</id>
</mitre>
</rule>
```
Đây là rules mới với ý nghĩa như sau:
* `rule id` : id mới cho rule
* `level` : mức level
* `frequency` : Rule sẽ kích hoạt nếu điều kiện xảy ra tối thiểu 3 lần
* `timeframe`: trong vòng 60 giây
* `if_matched_sid`: chỉ kích hoạt nếu rule 5710 xuất hiện
* `<same_source_ip />` : Chỉ tính các sự kiện đến từ cùng một địa chỉ IP nguồn.
* `description`: mô tả
* `MITRE ATT&CK ID T1110 (Bruce force)`: giúp mapping với kỹ thuật tấn công trong mitre Framework
Ngoài ra thì cách mà mình viết được rules này thì mình tham khảo các rules mặc định khác, rồi biến tấu thêm bằng cách xem trong `Syntax Rules` của Wazuh có option nào thích hợp rồi mình thử và thử thoai :=))


Còn các option trong Rules thì bạn có thể xem ở [đây](https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html)
Sau khi đã lưu cấu hình Rules mà bạn muốn xong thì phải tiến hành reset lại Wazuh Manager nhé.
Xong rồi thì mình thử attack lại xem rule đã trigger được chưa.

Đã xuất hiện, như thế là rules đã hoạt động đúng nhé.
### Thiết lập shuffle
thiết lập webhook nhận alert từ Wazuh.

Bạn copy dòng Webhook url ở đây để tích hợp nó vào Wazuh để gửi Alert lên webhook nhé.

Sau đó vào `Server management -> settings -> edit configuration` để tích hợp shuffle nhé.

Sau đó bạn click vào webhook và nhấn `start` và run execution.
Nếu bạn nhận được các thông tin như này thì đã hoạt động rồi nhé.

Sau đó thì mình sẽ lọc cái IoC cần thiết để gửi cho VirusTotal, xem qua nội dung thì mình thấy được các thông tin sau:

Vì đây là `Brute force attack` nên mình sẽ lấy `IoC` là `IP` cụ thể là ở phần `data.srcip` như trong hình, đó là ip đã thực hiện hành vi brute force.

### Thiết lập VirusTotal
Sau đó ở VirusTotal, mình sẽ lấy thông tin từ `src_ip` như sau:

Ở chổ `Find Actions` phải đổi qua `Get an ip address report` nhé.
Sau đó lưu và Run workflow lại thoi.

xem kỹ hơn về nội dung của VirusTotal thì sẽ thấy nội dung:

Vì đó là ip nội bộ của mình nên VirusTotal phân loại nó là độc hại.
Trước khi đi tới phần `block IP` thì mình sẽ nói ngắn gọn qua `Active-reponse` ở Wazuh.
1. Wazuh Active Response cho phép tự động phản ứng với mối đe dọa bằng cách chạy sẵn script hoặc lệnh, thường dùng để chặn IP độc hại nhằm bảo vệ hệ thống.
2. Active Response là tính năng của Wazuh cho phép tự động thực hiện hành động (như chặn IP, dừng tiến trình) khi phát hiện mối đe dọa.
Ví dụ:
* Chặn IP sau nhiều lần đăng nhập SSH thất bại.
* Chặn IP sau khi phát hiện quét cổng.
Sau đây thì mình sẽ đi phần cài đặt như sau:

```
<active-response>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5764</rules_id>
<timeout>no</timeout>
</active-response>
```
* `firewall-drop`: Lệnh sẽ thực thi script để chặn địa chỉ IP.
* `rules_id`: Xác định các ID rule sẽ kích hoạt Active Response.
* `local`: Chỉ định lệnh sẽ chạy trên chính agent nơi phát hiện mối đe dọa.
* `no`: Chỉ định việc chặn sẽ duy trì vô thời hạn và cần can thiệp thủ công để gỡ bỏ.
Chúng ta cần chỉ định hành động cần thực hiện khi phát hiện mối đe dọa. Wazuh đã cung cấp các tập lệnh mặc định, như `firewall-drop`, sử dụng tường lửa của hệ thống để chặn IP. Các bạn có thể tìm thấy nó ở `/var/ossec/active-response/bin/`

Cách mà Active-reponse hoạt động như sau:
Trong file cấu hình của Wazuh Manager, phần Active Response sẽ khai báo lệnh (command) và các rule ID tương ứng. Khi hệ thống phát hiện một alert có rule ID trùng với cấu hình trong Active Response, Wazuh Manager sẽ gửi lệnh tới Agent. Agent sẽ thực thi script firewall-drop trên chính máy của nó để chặn IP nguồn gây ra sự kiện.
Bên cạnh đó, ta còn có `agent_control` là công cụ của Wazuh dùng để quản lý và giám sát agent từ Manager, cho phép liệt kê, khởi động lại, xóa và kiểm tra trạng thái agent.
Ngoài ra, tiện ích `agent_control` của Wazuh có thể được sử dụng để chặn thủ công các địa chỉ IP cụ thể trên các điểm cuối được giám sát của bạn.

Lệnh: `./agent_control -L`
Lệnh này sẽ hiển thị tất cả các active-reponse đã được cấu hình, cho phép chúng ta chọn phản hồi phù hợp để chặn địa chỉ IP.
<!-- Bây giờ chúng ta sẽ thử block thủ công bằng `agent_control`, cụ thể là sẽ chặn không cho `Agent_Ubuntu` tới 8.8.8.8 của google
Mà trước đó thì ta phải chắc là ubuntu của mình có thể ping tới 8.8.8.8.

Bây giờ ta sẽ chạy active reponse command như sau:
```./agent_control -b 8.8.8.8 -f firewall-drop0 -u 002```

* `-b 8.8.8.8`: Specifies the IP address to be targeted by the active response
* `-f firewall-drop0`: Indicates the active response command to execute. firewall-drop is a standard script in Wazuh designed to block IP addresses using the system's firewall
* `-u 002`: Identifies the agent by its unique ID (002) on which the active response should be executed.
Tiếp đến, ta thử ping ở trên máy ubuntu.

Đã bị chặn rồi nhé.
Ta cũng có thể xem log của Active-reponse ở `/var/ossec/logs/active-responses.log `
 -->
### Thiết lập lấy API KEY cho Wazuh
Bây giờ sẽ tới phần quan trọng nhất là thực hiện trên Shuffle
Tuy nhiên, để có được API JWT, bạn cần phải có thông tin xác thực cần thiết.
Ở đây, bạn có thể dụng lệnh: `tar -xvf wazuh-install-files.tar`

Sau đó vào `wazuh-install-files` và lấy thông tin xác thực ở file `wazuh-password.txt`

Sau đó mình sẽ điền user và password vào câu lệnh sau:
```
curl -u username:password -k -X GET "https://192.168.204.150:55000/security/user/authenticate?raw=true"
```
Sau đó, mình lên Shuffle và dùng app http và thiết lập như sau:

Tiếp đến ta sẽ nối thêm với app của Wazuh và cấu hình như sau:



Sau khi thiết lập xong thì ta sẽ Save và execute workflow 1 lần nữa kiểm tra.

Được rồi, bây giờ ta sẽ kiểm tra xem máy ubuntu có thể ping tới 8.8.8.8 được nữa không.

Như vậy là workflow của chúng ta đang thực hiện đúng
### Thiết lập lựa chọn cho SOC analyst
Tiếp đến ta sẽ thêm lựa chọn của SOC analyst để lựa chọn có Block IP hay không.

và phần data ở wazuh sẽ sửa lại là IP đã thực hiện hành vi Brute-force

Sau đó chúng ta run lại workflow, bạn có thể thấy ở User Input thì sẽ thấy trạng thái là `WAITING`

song song thì địa chỉ Email bạn điền vào sẽ nhận được thông báo như sau:

Nhấn vào lựa chọn `TRUE` thì bạn sẽ được dẫn tới trang này.

Sau khi ấn nút `Continue` mình sẽ vào máy tấn công để ping thử.

trên máy `Agen_ubuntu`

Như này thì đã chặn thành công.
### Thiết lập TheHive
Sau cùng thì ta sẽ tích hợp thêm TheHive để tạo Case cho Alert về SSH.

Thiết lập trên TheHive như sau:
```
{
"description": "Multiple SSH login attempts using non-existent usernames.",
"externallink": "",
"pap": 2,
"severity": 2,
"source": "Wazuh",
"sourceRef": "Rule: 5764",
"status": "New",
"summary": "Multiple SSH login attempts using non-existent usernames on host: $exec.all_fields.agent.name from source IP: $exec.all_fields.data.srcip",
"tags": ["T1110"],
"title": "$exec.title",
"tlp": 2,
"type": "Internal"
}
```
Cuối cùng thông tin nhận được bên TheHive


## Tổng kết
Qua quá trình triển khai và thực hiện lab, mình đã xây dựng thành công một môi trường SOC mô phỏng, tích hợp Wazuh, TheHive, VirusTotal và Shuffle SOAR để phát hiện, phân tích, và phản ứng tự động trước các mối đe dọa như Mimikatz và SSH brute-force.
Lab đã giúp mình:
* Hiểu rõ kiến trúc và luồng dữ liệu từ thu thập log, phân tích rule, đến phản hồi sự cố.
* Thực hành viết custom rules trong Wazuh để nâng cao khả năng phát hiện.
* Sử dụng Shuffle để tự động hóa enrichment, tạo case, gửi email và kích hoạt Active Response.
* Áp dụng Active Response để chặn IP độc hại trực tiếp từ agent.
Mô hình này tuy còn đơn giản so với hệ thống SOC thực tế, nhưng hoàn toàn có thể mở rộng thêm các nguồn log, tích hợp thêm công cụ threat intel khác, hoặc bổ sung các kịch bản phản ứng phức tạp hơn. Đây là nền tảng vững chắc để phát triển kỹ năng vận hành và tự động hóa SOC trong môi trường thực tế.
## References
[TheHive Document](https://docs.strangebee.com/thehive/installation/step-by-step-installation-guide/#thehive-installation-and-configuration)
[Wazuh Document](https://documentation.wazuh.com/current/index.html)
[My GitHub](https://github.com/nhatminhsc/SOC-Automation-Project?tab=readme-ov-file)
[Syntax Rules in Wazuh](https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html)
[Wazuh API](https://documentation.wazuh.com/current/user-manual/api/reference.html#tag/Active-response/operation/api.controllers.active_response_controller.run_command)