# SOC automation project ## 1. Cấu trúc hệ thống - Công nghệ sử dụng: - Case Manager: TheHive - SIEM Tool: Wazuh - Automation Tool: Shuffle - Sơ đồ kiến trúc hệ thống: ![image](https://hackmd.io/_uploads/BkklKW_6le.png) ## 2. Cấu hình yêu cầu: - **Lưu ý:** Triển khai thông qua công cụ VMware, phiên bản Ubuntu sử dụng là 22.04.5 - Ubuntu Machine for Wazuh (4GB RAM) - Ubuntu Machine for TheHive (4GB RAM) - Ubuntu Machine for Shuffle (6GB RAM) - Windows 10 for Wazuh Agent (4GB RAM) ## 3. Cài đặt ## 3.1. Cài đặt Sysmon trên máy Windows 10 - Giới thiệu về Sysmon: Sysmon (System Monitor) là một tiện ích nằm trong bộ công cụ Sysinternals Suite do Microsoft phát triển. Công cụ này được cài đặt như một Windows system service và driver, giúp ghi lại chi tiết các hoạt động cấp thấp của hệ điều hành Windows vào Windows Event Log, đặc biệt hữu ích cho mục đích giám sát an ninh, phân tích hành vi, và điều tra sự cố trong hệ thống SOC. - Thực hiện tải Sysmon thông qua đường dẫn sau: [Sysmon Download](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon) - Sau khi cài đặt xong ta cần phải tải thêm file cấu hình cho Sysmon: [Sysmon Modular Configuration](https://github.com/olafhartong/sysmon-modular/blob/master/sysmonconfig.xml) - Sau khi cài đặt xong ta thực hiện giải nén file Sysmon.zip và đặt file sysmonconfig.xml vào chung thư mục sau khi giải nén: - ![image](https://hackmd.io/_uploads/SkVjha_6eg.png) - ![image](https://hackmd.io/_uploads/H1yz66_Tex.png) - Tiếp đến mở Powershell với quyền admin: - Di chuyển đến thư mục đã giải nén và thực hiện lệnh sau: ``` .\Sysmon64.exe -i .\sysmonconfig.xml ``` - ![image](https://hackmd.io/_uploads/S1ERT6d6ee.png) - Thực hiện kiểm tra Sysmon đã cài đặt thành công hay chưa bằng lệnh: ``` Get-Service Sysmon64 ``` - ![image](https://hackmd.io/_uploads/BJyMRadpel.png) - Một cách khác để kiểm tra là thông qua Event Viewer. Truy cập vào Applications and Services Logs -> Microsoft -> Windows -> Sysmon: - ![image](https://hackmd.io/_uploads/ryMiRau6ee.png) ## 3.2. Cài đặt công cụ Wazuh trên máy Ubuntu - **Giới thiệu về công cụ Wazuh**: - Wazuh là một nền tảng bảo mật miễn phí và mã nguồn mở, tích hợp cả hai chức năng Phát hiện và Ứng phó mở rộng (XDR – Extended Detection and Response) và Quản lý thông tin và sự kiện bảo mật (SIEM – Security Information and Event Management). - Wazuh cung cấp khả năng bảo vệ toàn diện cho các điểm cuối (endpoints) và tải công việc trên nền tảng đám mây (cloud workloads), giúp tổ chức phát hiện và phản ứng hiệu quả với các mối đe dọa. - **Các tính năng chính của Wazuh**: - Phát hiện xâm nhập (Intrusion Detection): Giám sát hệ thống để phát hiện các dấu hiệu truy cập trái phép hoặc hoạt động độc hại. - Phân tích dữ liệu nhật ký (Log Data Analysis): Thu thập và phân tích log từ nhiều nguồn khác nhau nhằm nhận diện các sự cố an ninh tiềm ẩn. - Giám sát tính toàn vẹn của tệp (File Integrity Monitoring): Theo dõi các thay đổi đối với những tệp và thư mục quan trọng, cảnh báo khi có chỉnh sửa trái phép. - Phát hiện lỗ hổng bảo mật (Vulnerability Detection): Xác định các lỗ hổng đã biết trong phần mềm và phần cứng bên trong mạng. - Đánh giá cấu hình (Configuration Assessment): Kiểm tra cấu hình hệ thống để đảm bảo tuân thủ các chính sách và tiêu chuẩn an toàn thông tin. - Ứng phó sự cố (Incident Response): Cung cấp công cụ và khả năng hỗ trợ phản ứng nhanh chóng, giảm thiểu tác động của sự cố an ninh. - Tuân thủ quy định (Regulatory Compliance): Hỗ trợ tổ chức đáp ứng các yêu cầu tuân thủ bằng cách cung cấp các kiểm soát bảo mật và công cụ báo cáo cần thiết. - Bảo mật đám mây (Cloud Security): Cung cấp khả năng giám sát và bảo vệ cho hạ tầng đám mây, đảm bảo an toàn trên nhiều môi trường triển khai khác nhau. - **Cách cài đặt:** - Thực hiện câu lệnh sau: ``` curl -sO https://packages.wazuh.com/4.13/wazuh-install.sh && sudo bash ./wazuh-install.sh -a ``` - ![image](https://hackmd.io/_uploads/S1VNMA_pxe.png) - Sau khi cài đặt ta nhận được thông tin đăng nhập để truy cập vào Wazuh dashboard: - ![image](https://hackmd.io/_uploads/B1A-N0dTxg.png) - Truy cập vào Wazuh dashboarh thông qua url: ``https://<IP_address>`` - ![image](https://hackmd.io/_uploads/B1kQrAdTxx.png) - ![image](https://hackmd.io/_uploads/HkXbr0Oaxl.png) - Tiếp theo ta thực hiện cấu hình tạo Wazuh agent cho máy windows10: - ![image](https://hackmd.io/_uploads/SyO_rAdTee.png) - ![image](https://hackmd.io/_uploads/HJ2RSCO6lg.png) - ![image](https://hackmd.io/_uploads/Hk9JIA_pxl.png) - ![image](https://hackmd.io/_uploads/H15ZIROTel.png) - Tiếp theo ta thực hiện câu lệnh sau trên máy Windows10 để cài đặt agent: ``` Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.13.1-1.msi -OutFile $env:tmp\wazuh-agent; msiexec.exe /i $env:tmp\wazuh-agent /q WAZUH_MANAGER='192.168.153.166' WAZUH_AGENT_NAME='Windows10' ``` - Tiếp theo ta thực hiện lệnh sau để khởi tạo Wazuhsvc service: ``` NET START Wazuh ``` - ![image](https://hackmd.io/_uploads/Skx080dpeg.png) - Tiếp theo ta thực hiện cấu hình file ``ossec.conf`` nhằm gửi Sysmon log đến Wazuh: - File nằm ở đường dẫn: ``C:\Program Files (x86)\ossec-agent\ossec.conf`` - Ta cấu hình như sau: - ![image](https://hackmd.io/_uploads/S1eAvRd6lg.png) - Tiếp đến ta khởi động lại Wazuh service: ``` Restart-Service WazuhSvc ``` - Tiếp đến kiểm tra trên Wazuh dashboard xem Sysmon log từ máy Windows10 đã gửi đến thành công hay chưa: - ![image](https://hackmd.io/_uploads/Hkh190_alx.png) - ![image](https://hackmd.io/_uploads/HJPW5Aupgl.png) - ![image](https://hackmd.io/_uploads/H1L5FCO6lx.png) ## 3.3. Cài đặt công cụ TheHive - **Giới thiệu về công cụ TheHive**: - TheHive là một nền tảng phản ứng sự cố bảo mật mã nguồn mở (SIRP – Security Incident Response Platform) được thiết kế nhằm hỗ trợ Trung tâm vận hành an ninh (SOC), Đội phản ứng sự cố an ninh máy tính (CSIRT) và Đội ứng cứu khẩn cấp máy tính (CERT) trong việc quản lý và xử lý sự cố an ninh một cách hiệu quả. - TheHive cung cấp một môi trường làm việc cộng tác, nơi các chuyên gia an ninh có thể phân tích, theo dõi và xử lý các sự cố bảo mật một cách nhanh chóng và có tổ chức. - **Các tính năng chính của TheHive** - Quản lý sự cố (Case Management): Cho phép tạo và quản lý các “case” (sự cố) với thông tin chi tiết bao gồm các tác vụ, dấu hiệu (observables), và nhật ký hoạt động. - Làm việc cộng tác (Collaboration): Nhiều người dùng có thể cùng làm việc trên một case đồng thời, giúp tăng cường phối hợp nhóm và nâng cao hiệu quả xử lý sự cố. - Tích hợp (Integration): Dễ dàng tích hợp với các công cụ bảo mật khác như MISP (Malware Information Sharing Platform) và Cortex để thực hiện phân tích tự động và chia sẻ thông tin đe dọa. - Quản lý cảnh báo (Alert Management): Tiếp nhận cảnh báo từ nhiều nguồn khác nhau, hỗ trợ phân loại, ưu tiên và xử lý nhanh chóng các sự cố. - Bảng điều khiển tùy chỉnh (Customizable Dashboards): Cung cấp khả năng trực quan hóa dữ liệu sự cố và theo dõi các chỉ số hiệu suất (KPIs) thông qua các bảng điều khiển do người dùng tự định nghĩa. - **Khả năng triển khai và mở rộng:** - Dưới dạng máy chủ đơn lẻ (standalone node), phù hợp với môi trường nhỏ hoặc thử nghiệm. - Hoặc trong mô hình cụm (clustered environment), phục vụ cho tổ chức quy mô lớn cần khả năng chịu tải và độ sẵn sàng cao. - **Cách cài đặt:** chi tiết cách cài đặt tham khảo thông qua: [Installation Guid](https://docs.strangebee.com/thehive/installation/installation-guide-linux-standalone-server/) - Đầu tiên ta thực hiện cài đặt dependencies cho TheHive: ``` sudo apt update sudo apt install wget curl gnupg coreutils apt-transport-https git ca-certificates ca-certificates-java software-properties-common python3-pip lsb-release unzip ``` - Tiếp theo ta cài đặt java-11-amazon-corretto-jdk: ``` wget -qO- https://apt.corretto.aws/corretto.key | sudo gpg --dearmor -o /usr/share/keyrings/corretto.gpg echo "deb [signed-by=/usr/share/keyrings/corretto.gpg] https://apt.corretto.aws stable main" | sudo tee -a /etc/apt/sources.list.d/corretto.sources.list sudo apt update sudo apt install java-common java-11-amazon-corretto-jdk echo JAVA_HOME="/usr/lib/jvm/java-11-amazon-corretto" | sudo tee -a /etc/environment export JAVA_HOME="/usr/lib/jvm/java-11-amazon-corretto" ``` - Thực hiện kiểm tra version java: ``` java -version ``` - ![image](https://hackmd.io/_uploads/HyHzARdpge.png) - Tiếp đến thực hiện cài đặt Apache Cassandra để làm cơ sở dữ liệu cho TheHive: ``` wget -qO - https://downloads.apache.org/cassandra/KEYS | sudo gpg --dearmor -o /usr/share/keyrings/cassandra-archive.gpg echo "deb [signed-by=/usr/share/keyrings/cassandra-archive.gpg] https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list sudo apt update sudo apt install cassandra ``` - Thực hiện kiểm tra Cassandra đã được cài đặt: ``` systemctl status cassandra ``` - ![image](https://hackmd.io/_uploads/Hy6kkyKage.png) - Thực hiện thay đổi owner thư mục ``/var/lib/cassandra`` ``` sudo chown -R cassandra:cassandra /var/lib/cassandra ``` - Tiếp theo ta thực hiện cài đặt Elasticsearch: ``` wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elasticsearch-7.x.list sudo apt update sudo apt install -y elasticsearch ``` - Ta cài đặt TheHive: ``` wget -O /tmp/thehive_5.5.10-1_all.deb https://thehive.download.strangebee.com/5.5/deb/thehive_5.5.10-1_all.deb wget -O /tmp/thehive_5.5.10-1_all.deb.sha256 https://thehive.download.strangebee.com/5.5/sha256/thehive_5.5.10-1_all.deb.sha256 wget -O /tmp/thehive_5.5.10-1_all.deb.asc https://thehive.download.strangebee.com/5.5/asc/thehive_5.5.10-1_all.deb.asc ``` - Tải public key và import GPG keyring: ``` wget -O /tmp/strangebee.gpg https://keys.download.strangebee.com/latest/gpg/strangebee.gpg ``` ``` gpg --import /tmp/strangebee.gpg ``` - Kiểm tra package signature: ``` gpg --verify /tmp/thehive_5.5.10-1_all.deb.asc /tmp/thehive_5.5.10-1_all.deb ``` - ![image](https://hackmd.io/_uploads/rJBJGyKTlx.png) - key fingerprint phải khớp với giá trị ``0CD5 AC59 DE5C 5A8E 0EE1 3849 3D99 BB18 562C BC1C`` - Cài đặt package: ``` sudo apt-get install /tmp/thehive_5.5.10-1_all.deb ``` - Tiếp theo ta thực hiện cấu hình Cassandra: ``` sudo nano /etc/cassandra/cassandra.yaml ``` - ![image](https://hackmd.io/_uploads/BJ1-EkY6lg.png) - Ở mục ``listen_address`` ta nhập địa chỉ IP của máy cài đặt TheHive: - ![image](https://hackmd.io/_uploads/HkrdNJYpxl.png) - ![image](https://hackmd.io/_uploads/Sk4s41YTeg.png) - ![image](https://hackmd.io/_uploads/Sk9aN1KTeg.png) - Sau khi lưu file cấu hình ta thực hiện lệnh sau: ``` sudo systemctl stop cassandra sudo rm -rf /var/lib/cassandra/* sudo systemctl start cassandra sudo systemctl enable cassandra ``` - Tiếp đến ta thực hiện cấu hình Elasticsearch ``` sudo nano /etc/elasticsearch/elasticsearch.yml ``` - ![image](https://hackmd.io/_uploads/SJy6BJK6xl.png) - ![image](https://hackmd.io/_uploads/S156hgFaeg.png) - Sau khi cấu hình thực hiện lệnh: ``` sudo systemctl start elasticsearch sudo systemctl enable elasticsearch ``` - Cuối cùng ta thực hiện cấu hình TheHive: - Thực hiện lệnh sau để thay đổi owner của thư mục ``/opt/thp`` cho user và group ``thehive`` ``` chown -R thehive:thehive /opt/thp ``` - Kiểm tra: - ![image](https://hackmd.io/_uploads/SycWuJYaxx.png) - Thực hiện cấu hình thông qua câu lệnh: ```` sudo nano /etc/thehive/application.conf ```` - ![image](https://hackmd.io/_uploads/SJIcdkFpeg.png) - ![image](https://hackmd.io/_uploads/Bk9-alYpxe.png) - Tiếp đến ta thực hiện câu lệnh để khởi động TheHive và cho phép dịch vụ này chạy khi bật máy: ``` sudo systemctl start thehive sudo systemctl enable thehive ``` - Thực hiện kiểm tra các dịch vụ cassandra, elasticsearch và TheHive: - ![image](https://hackmd.io/_uploads/Sk8DpxYpxl.png) - ![image](https://hackmd.io/_uploads/BkI_6xFaxx.png) - ![image](https://hackmd.io/_uploads/B1EKagKpgx.png) - Tiếp theo ta truy cập giao diện web của TheHive thông qua url: ``http://192.168.153.167:9000`` - ![image](https://hackmd.io/_uploads/HJeCTeKTgx.png) - Sử dụng tài khoản admin mặc định trong hướng dẫn: - Username: admin@thehive.local - Password: secret - ![image](https://hackmd.io/_uploads/HyteRlFTel.png) - ![image](https://hackmd.io/_uploads/ryYPClYTxx.png) - ![image](https://hackmd.io/_uploads/HJqG0et6xg.png) ## 3.4. Cài đặt công cụ Shuffle - **Giới thiệu về công cụ Shuffle:** - Shuffle là một nền tảng tự động hóa quy trình bảo mật (SOAR – Security Orchestration, Automation and Response) mã nguồn mở, được thiết kế để giúp các trung tâm vận hành an ninh (SOC) tự động hóa các tác vụ điều tra và phản ứng sự cố. - Công cụ này cho phép các nhà phân tích bảo mật xây dựng các quy trình xử lý (workflow) bằng giao diện kéo – thả trực quan, giúp tiết kiệm thời gian và giảm thiểu lỗi thủ công trong quá trình phản ứng với các mối đe dọa. - **Các chức năng chính:** - Tự động hóa phản ứng sự cố: Tự động thực thi các hành động như thu thập log, phân tích cảnh báo, cô lập endpoint hoặc gửi thông báo dựa trên các trigger sự kiện. - Tích hợp mạnh mẽ: Hỗ trợ hàng trăm ứng dụng bảo mật phổ biến như TheHive, Wazuh, MISP, VirusTotal, Slack, Gmail, ELK, giúp luân chuyển dữ liệu và ra quyết định nhanh chóng. - Xây dựng workflow trực quan: Cho phép người dùng dễ dàng tạo luồng tự động bằng thao tác kéo – thả, không cần viết mã phức tạp. - Hỗ trợ API mở: Cho phép tích hợp với các hệ thống nội bộ hoặc công cụ bảo mật tuỳ chỉnh thông qua REST API. - Triển khai linh hoạt: Có thể triển khai trên Docker, Kubernetes, hoặc máy chủ on-premise, phù hợp cho cả môi trường nghiên cứu và sản xuất. - **Cách cài đặt:** - Ta sẽ triển khai ứng dụng Shuffle thông qua Docker. - Thực thi tập lệnh sau: ``` sudo apt update && sudo apt install -y docker.io docker-compose sudo systemctl enable docker sudo systemctl start docker git clone https://github.com/Shuffle/Shuffle.git cd Shuffle sudo docker-compose up -d ``` - Sau khi cài đặt xong ta truy cập vào ứng dụng thông qua url: ``http://your-ip:3001`` - ![image](https://hackmd.io/_uploads/S154XZFage.png) - Thực hiện tạo tài khoản và đăng nhập: - ![image](https://hackmd.io/_uploads/H1GRmZtalx.png) ## 4. Thực thi ứng dụng Mimikatz và tạo detection rules trên Wazuh - Đầu tiên ta sẽ thêm thư mục ``Downloads`` trên máy Windows 10 vào ``Exclusion`` - Ta vào ``Windows Security`` chọn mục ``Virus & threat protection`` - ![image](https://hackmd.io/_uploads/S11BLZFpel.png) - ![image](https://hackmd.io/_uploads/S1tLI-Ypxg.png) - Chọn ``Folder`` - ![image](https://hackmd.io/_uploads/HJRP8bKaxl.png) - Chọn Thư mục ``Downloads`` - ![image](https://hackmd.io/_uploads/BJS2IWYalg.png) - Tiếp theo ta cài đặt Mimikatz thông qua [link](https://github.com/ParrotSec/mimikatz/blob/master/x64/mimikatz.exe) - ![image](https://hackmd.io/_uploads/S1RGPZt6ee.png) - Tiếp đến ta thực thi file Mimikatz.exe: - ![image](https://hackmd.io/_uploads/SJy4r7F6gl.png) - Quay lại Wazuh dashboard để kiểm tra xem có alert nào được tạo hay không: - ![image](https://hackmd.io/_uploads/B1VcrQF6el.png) - Ta thấy không có alert nào được tạo. Lý do là vì theo mặc định, Wazuh không ghi nhật ký tất cả sự kiện. Do đó ta cần cấu hình lại Wazuh thông qua file ``ossec.conf``. Ngoài ra, Wazuh cho phép ta tự tạo rule để theo dõi các event cụ thể. Khi một event xảy ra, Wazuh sẽ tạo ra alert tương ứng giúp hỗ trợ tìm kiếm và điều tra hiệu quả. - Thực hiện cấu hình file ``ossec.conf`` ``` nano /var/ossec/etc/ossec.conf ``` - ![image](https://hackmd.io/_uploads/BJOkvQYpxl.png) - Chỉnh sửa tại đây: - ![image](https://hackmd.io/_uploads/ryrfw7tall.png) - Sau khi chỉnh sửa, khởi động lại Wazuh manager: ``` systemctl restart wazuh-manager ``` - Sau khi cấu hình Wazuh sẽ tạo thư mục ``archives`` để lưu nhật ký: - ![image](https://hackmd.io/_uploads/HJ3RwmYpxg.png) - Ta cũng phải chỉnh sửa lại file ``filebeat.yml`` ``` sudo nano /etc/filebeat/filebeat.yml ``` - ![image](https://hackmd.io/_uploads/BJEHO7FTge.png) - Khởi động lại Filebeat: ``` systemctl restart filebeat ``` - Tiếp theo ta vào Wazuh dashboard để tạo index cho archives: - ![image](https://hackmd.io/_uploads/HkXNtQF6xl.png) - ![image](https://hackmd.io/_uploads/B1dHFXYpel.png) - ![image](https://hackmd.io/_uploads/HyWIKmKTle.png) - ![image](https://hackmd.io/_uploads/HJu8FQYpll.png) - Quay lại trang Discover để kiểm tra xem index đã được tạo chưa: - ![image](https://hackmd.io/_uploads/rJx-qmt6le.png) - Thực thi lại ``Mimikatz.exe`` - ![image](https://hackmd.io/_uploads/rkad9XFTlx.png) - Nhập từ khóa "mimikatz" ở thanh tìm kiếm ta thấy event đã được Wazuh ghi lại: - ![image](https://hackmd.io/_uploads/Hyos9QtTee.png) - Tiếp đến ta tạo rule để sinh alert khi phát hiện hoạt động của file ``Mimikatz.exe`` - ![image](https://hackmd.io/_uploads/H1rwjmK6gx.png) - ![image](https://hackmd.io/_uploads/rJm5sQKTgx.png) - ![image](https://hackmd.io/_uploads/H1MpsmKagl.png) - ![image](https://hackmd.io/_uploads/HJl1h7Fpxx.png) - Copy rule sau: ``` <rule id="100002" level="10"> <if_group>sysmon_event1</if_group> <field name="win.eventdata.originalFileName" type="pcre2">(?i)mimikatz\.exe</field> <description>Mimikatz Usage Detected</description> <mitre> <id>T1003</id> </mitre> </rule> ``` - ![image](https://hackmd.io/_uploads/HyFmhQK6ll.png) - Tiếp đến ta đổi tên ``Mimikatz.exe`` và thực thi: - ![image](https://hackmd.io/_uploads/rk6Nl4K6le.png) - ![image](https://hackmd.io/_uploads/B1UqnQKpxx.png) - ![image](https://hackmd.io/_uploads/Syha3QKpxg.png) - Ta thấy alert vẫn được tạo kể cả thay đổi tên của file ``Mimikatz.exe``. Lý do là rule của ta phát hiện dựa trên ``originalFileName``. - ![image](https://hackmd.io/_uploads/SkT_gEFTxl.png) - ![image](https://hackmd.io/_uploads/Hknsb4Y6xx.png) - ![image](https://hackmd.io/_uploads/SJFqWEK6gg.png) ## 5. Tự động tạo alert thông qua Shuffle - Ta quay lại với công cụ Shuffle để tạo workflow nhằm tự động thực hiện các công việc sau: - Nhận alert từ Wazuh khi phát hiện hoạt động của file ``Mimikatz.exe`` - Tạo hash report bằng cách gọi API đến [Vitustotal](https://www.virustotal.com/gui/home/upload) - Gửi alert đến TheHive để tạo case. - Gửi thông báo đến người điều tra thông qua Telegram bot. - **Cách thực hiện:** - Tạo một workflow mới: - ![image](https://hackmd.io/_uploads/rJCkSNY6gl.png) - ![image](https://hackmd.io/_uploads/r1Z6I4Yplx.png) - Sau khi tạo workflow: - ![image](https://hackmd.io/_uploads/B1IHPVYpll.png) - Ta thực hiện các bước sau để cập nhật các app bị thiếu: - ![image](https://hackmd.io/_uploads/SyIKvNFTlg.png) - ![image](https://hackmd.io/_uploads/r1JcDNFaxg.png) - Tiếp theo ta quay lại workflow để tạo webhook để lấy alert từ Wazuh dashboard: - Sau khi tạo webhook, nhấn ``Start`` - ![image](https://hackmd.io/_uploads/HJ9cu4Faxg.png) - ![image](https://hackmd.io/_uploads/r1orF4t6el.png) - Lưu workflow: - ![image](https://hackmd.io/_uploads/SJeoKEY6eg.png) - Ta thực hiện cấu hình lại Wazuh server để webhook có thể nhận alert từ Wazuh: ``` sudo nano /var/ossec/etc/ossec.conf ``` ``` <integration> <name>shuffle</name> <hook_url>Paste_webhook_url_here</hook_url> <rule_id>100002</rule_id> <alert_format>json</alert_format> </integration> ``` - ![image](https://hackmd.io/_uploads/SJ4d24K6ge.png) - **Lưu ý:** Với tag <rule_id> ta đặt id tương ứng với rule đã tạo trên Wazuh dashboard. - Ta khởi động lại Wazuh manager: ``` systemctl restart wazuh-manager ``` - Chạy lại ``mimikatz.exe`` trên máy windows 10 để kiểm tra workflow: - ![image](https://hackmd.io/_uploads/B1dvySKagl.png) - Workflow đã chạy thành công: - ![image](https://hackmd.io/_uploads/HkiZgBFpel.png) - Tiếp theo ta trích xuất chuỗi băm SHA256 từ Wazuh alert: - ![image](https://hackmd.io/_uploads/HJ4jbSFpge.png) - ![image](https://hackmd.io/_uploads/S1pEfSFple.png) - Thực hiện lưu và chạy lại workflow: - ![image](https://hackmd.io/_uploads/SJIczrtpgg.png) - ![image](https://hackmd.io/_uploads/ByTjMrYage.png) - ![image](https://hackmd.io/_uploads/H1FnMSY6ex.png) - Đổi tên ``Receive_alert`` sang ``Get_SHA256`` - ![image](https://hackmd.io/_uploads/HkcZmrt6xx.png) - Tiếp theo ta cần gửi chuỗi băm SHA256 đến Virustotal để phân tích: - ![image](https://hackmd.io/_uploads/rJfD4BKTgl.png) - Lấy key API: - ![image](https://hackmd.io/_uploads/BJcaErYaee.png) - ![image](https://hackmd.io/_uploads/B1jerSYpgg.png) - Nhập key API của Virustotal: - ![image](https://hackmd.io/_uploads/HkGzSBKagg.png) - ![image](https://hackmd.io/_uploads/HkIOrBYTgx.png) - Lưu và chạy lại workflow: - ![image](https://hackmd.io/_uploads/SJem0UrK6el.png) - ![image](https://hackmd.io/_uploads/H13fwSYall.png) - Tiếp theo ta gửi kết quả từ Virustotal đến TheHive: - ![image](https://hackmd.io/_uploads/ry6aDSYall.png) - Tiếp đến ta chuyển sang TheHive để tạo user và organization mới: - ![image](https://hackmd.io/_uploads/HkFp_HFTgl.png) - ![image](https://hackmd.io/_uploads/HkUBKBtTel.png) - ![image](https://hackmd.io/_uploads/HyjIFHF6ll.png) - Click vào organization và tạo user mới: - ![image](https://hackmd.io/_uploads/HJf1cSKaee.png) - ![image](https://hackmd.io/_uploads/HJyZ9HKTxg.png) - ![image](https://hackmd.io/_uploads/H1WH9rt6ee.png) - ![image](https://hackmd.io/_uploads/ryBU5rKTex.png) - Tiếp theo ta sẽ tạo mật khẩu cho tài khoản ``analyst`` và key API cho tài khoản ``SOAR`` - ![image](https://hackmd.io/_uploads/BJ7hqSFagx.png) - ![image](https://hackmd.io/_uploads/rJDp5Btpxg.png) - ![image](https://hackmd.io/_uploads/ryzxjBFagl.png) - ![image](https://hackmd.io/_uploads/ryxWsBKTeg.png) - Copy API key vừa tạo vào ``Authenticate TheHive`` - ![image](https://hackmd.io/_uploads/B1K2irFTge.png) - Ở mục ``Find Actions`` chọn ``Create alert``: - ![image](https://hackmd.io/_uploads/SyaWhrKpeg.png) - Vào mục ``Advanced`` để cấu hình alert: - ![image](https://hackmd.io/_uploads/Hkn4aBKTxl.png) - Paste vào phần ``Body``: ``` { "description": "Mimikatz Detected on host:$exec.text.win.system.computer", "externallink": "${externallink}", "flag": false, "pap": 2, "severity": $exec.severity, "source": "$exec.pretext", "sourceRef": "RuleID $exec.rule_id", "status": "New", "summary": "Mimikatz Activity Detected on host: $exec.text.win.system.computer and the Process Id: $exec.text.win.eventdata.processId and the Commandline: $exec.text.win.eventdata.commandLine", "tags": ["T1003"], "title": "$exec.title", "tlp": 2, "type": "Internal" } ``` - ![image](https://hackmd.io/_uploads/HyDHeIY6lg.png) - Lưu và chạy lại workflow: - ![image](https://hackmd.io/_uploads/SJtTf8KTxx.png) - ![image](https://hackmd.io/_uploads/rySk78F6gl.png) - Tiếp theo ta vào TheHive đăng nhập bằng tài khoản ``analyst@test.com`` để kiểm tra alert được tạo: - ![image](https://hackmd.io/_uploads/B1sSQLYpgl.png) - ![image](https://hackmd.io/_uploads/SJ0L78Fpee.png) - ![image](https://hackmd.io/_uploads/BJYuXIFaxx.png) - Alert đã được gửi thành công tới TheHive. Tiếp đến ta thực hiện tạo Telegram Bot để thông báo đến nhà phân tích: - Hướng dẫn tạo Telegram Bot: [link](https://vietnix.vn/tao-bot-telegram/?utm_term=&gad_campaignid=21448222547) - Thêm Telegram Bot vào workflow: - ![image](https://hackmd.io/_uploads/HyvWSIYplx.png) - Thêm key API của Telegram Bot vào mục ``Api token``: - ![image](https://hackmd.io/_uploads/ryNFLUY6ll.png) - Paste vào mục ``Message``: ``` Time:$exec.text.win.eventdata.utcTime\n Title: $exec.title\n Host: $exec.text.win.system.computer\n ``` - Nhập ID của tài khoản nhận message từ Bot vào mục ``Chat id``(Vào Telegram tìm ``@userinfobot`` và gửi lệnh ``/start``) - Lưu và chạy lại workflow: - ![image](https://hackmd.io/_uploads/ByCCuUYpgx.png) - Ta nhận được thông báo từ Telegram Bot: - ![image](https://hackmd.io/_uploads/SkXT_Ltpex.png) ## 6. Tạo response workflow cho sự cố tấn công SSH - **Mục tiêu**: Tạo một workflow tự động phản ứng với sự cố tấn công SSH xảy ra trên máy Ubuntu sử dụng Wazuh, Shuffle và TheHive. - **Các bước thực hiện**: - Tạo Wazuh agent mới: - ![image](https://hackmd.io/_uploads/rkx_tQqaex.png) - ![image](https://hackmd.io/_uploads/SyzBFmqTxg.png) - Mở Ubuntu terminal và chạy lệnh: ``` wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.13.1-1_amd64.deb && sudo WAZUH_MANAGER='192.168.153.166' WAZUH_AGENT_NAME='Ubuntu' dpkg -i ./wazuh-agent_4.13.1-1_amd64.deb ``` - ![image](https://hackmd.io/_uploads/r1v0Ym9Tll.png) - Khởi động agent: ``` sudo systemctl daemon-reload sudo systemctl enable wazuh-agent sudo systemctl start wazuh-agent ``` - ![image](https://hackmd.io/_uploads/SkEmqm9axg.png) - Cài đặt SSH server lên máy Ubuntu mục tiêu: ``` sudo apt update sudo apt install openssh-server -y sudo systemctl start ssh sudo systemctl enable ssh sudo systemctl status ssh ``` - ![image](https://hackmd.io/_uploads/BJXKc796xg.png) - Tiếp theo tại máy tấn công ta cài đặt công cụ ``Hydra`` để thực hiện tấn công SSH: ``` sudo apt install hydra ``` - Tiếp theo ta tự tạo danh sách username và password. Có thể kiếm trên Github: - ![image](https://hackmd.io/_uploads/H1sHnX96le.png) - Ta thực hiện tấn công SSH lên máy mục tiêu: ``` hydra -L username.txt -P password.txt ssh://192.168.153.130 ``` - ![image](https://hackmd.io/_uploads/rJBQ6mqplg.png) - Log thu được trên máy mục tiêu: - ![image](https://hackmd.io/_uploads/H19Kp7qpee.png) - Ta truy cập Wazuh dashboard để quan sát event thu được từ máy mục tiêu: - Vào mục ``Threat Hunting`` - ![image](https://hackmd.io/_uploads/BywjTQ5age.png) - Vào mục ``Explore agent`` chọn máy mục tiêu: - ![image](https://hackmd.io/_uploads/Sy4eCQ9axe.png) - Chọn mục ``Event`` cạnh ``Dashboard`` - ![image](https://hackmd.io/_uploads/BkOUAm56eg.png) - ![image](https://hackmd.io/_uploads/HJIi07cTel.png) - ![image](https://hackmd.io/_uploads/B1H60X5pge.png) - Ta quan sát thấy có rất nhiều event mức độ 5 liên quan đến SSH brute-force attack. Ta sẽ tạo rule kích hoạt alert khi có nhiều hơn 5 event có nội dung ``sshd: Attempt to login using a non-existent user`` xảy ra trong vòng 60 giây. Alert này sẽ được kích hoạt mỗi khi tấn công SSH xảy ra từ đó workflow phản ứng sẽ tự động thực hiện để ứng phó với cuộc tấn công. - Thực hiện tạo rule: - ![image](https://hackmd.io/_uploads/ry_3lN5plg.png) - ![image](https://hackmd.io/_uploads/B1uag4qaeg.png) - ![image](https://hackmd.io/_uploads/HJj1-V5agl.png) - Thêm vào rule mới: ``` <rule id="5764" level="10" frequency="5" 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> ``` - Giải thích rule : Rule 5764 với mức độ nghiêm trọng 10 có mô tả là ``Multiple SSH login attempts using non-existent usernames.`` được kích hoạt khi rule 5710 xuất hiện 5 lần trở lên trong vòng 60 giây được gán MITRE ID là T1110 đại diện cho kỹ thuật ``Brute-force``. - ![image](https://hackmd.io/_uploads/Skh9WE9pll.png) - Sau khi lưu ta thực hiện ``Reload`` và thực hiện lại tấn công SSH: - ![image](https://hackmd.io/_uploads/Sy1n745Teg.png) - Ta xem lại event trên Wazuh dashboard thì thấy RuleID 5764 được kích hoạt thành công: - ![image](https://hackmd.io/_uploads/HkEe4N9pxe.png) - ![image](https://hackmd.io/_uploads/HyaWN49Tgg.png) - Tiếp đến ta thực hiện tạo workflow phản ứng sự cố trên Shuffle: - Tạo workflow mới: - ![image](https://hackmd.io/_uploads/ryviNVqTxl.png) - ![image](https://hackmd.io/_uploads/r1reBNcpgl.png) - Tạo Webhook và nhấn ``Start``: - ![image](https://hackmd.io/_uploads/By-dB4calx.png) - ![image](https://hackmd.io/_uploads/Hyi8BNqagx.png) - Thêm webhook url vào file cấu hình của Wazuh: ``` sudo nano /var/ossec/etc/ossec.conf ``` ``` <integration> <name>shuffle</name> <hook_url>http://192.168.153.168:3001/api/v1/hooks/webhook_2d05c16b-d63c-449d-9ffd-8ab855db3157</hook_url> <rule_id>5764</rule_id> <alert_format>json</alert_format> </integration> ``` - ![image](https://hackmd.io/_uploads/HklQ8Vc6ex.png) - Khởi động lại Wazuh manager: ``` systemctl restart wazuh-manager ``` - Thực hiện lại tấn công và quan sát kết quả trên Shuffle: - ![image](https://hackmd.io/_uploads/Byup8Vq6ge.png) - ![image](https://hackmd.io/_uploads/H1X1DEq6el.png) - Tiếp đến ta trích xuất IP nguồn và gửi đến VirusTotal để phân tích: - ![image](https://hackmd.io/_uploads/HkQ8wV9Teg.png) - ![image](https://hackmd.io/_uploads/Hy_qP45pxx.png) - Thực hiện chạy lại workflow để quan sát kết quả trả về từ VirusTotal: - ![image](https://hackmd.io/_uploads/HyFeONcpee.png) - ![image](https://hackmd.io/_uploads/HyDG_Vc6eg.png) - ![image](https://hackmd.io/_uploads/ryYQuVcTxe.png) - Từ kết quả phản hồi ta thấy không phát hiên IP độc hại vì ta đang thực hiện tấn công thông qua địa chỉ IP private. - Ta sẽ sử dụng cơ chế ``Wazuh's Active Response`` để thực hiện tự động chặn địa chỉ IP của máy thực hiện tấn công SSH trên máy Ubutu. - **Giới thiệu về cơ chế ``Wazuh's Active Response``**: - **Nguyên lý cốt lõi**: Khi Wazuh phát hiện một sự kiện đáng ngờ (dựa trên quy tắc – rule – trong bộ quy tắc của nó), Active Response sẽ kích hoạt và thực thi các script (kịch bản) trên các endpoint được giám sát (như máy chủ, máy trạm). Các script này có thể chặn IP độc hại, xóa file nguy hiểm, vô hiệu hóa tài khoản, hoặc thực hiện các hành động tùy chỉnh khác. - **Kích hoạt**: Dựa trên các tiêu chí như ID quy tắc cụ thể (ví dụ: rule ID 5764 cho tấn công brute-force SSH), mức độ cảnh báo (alert level), hoặc nhóm quy tắc. Khi điều kiện khớp, lệnh sẽ được gửi từ Wazuh manager đến agent trên endpoint để thực thi. - Thực hiện cấu hình Wazuh manager: ``` sudo nano /var/ossec/etc/ossec.conf ``` - Cấu hình ở đây: - ![image](https://hackmd.io/_uploads/rkIxjVqaxl.png) ``` <command>firewall-drop</command> <location>local</location> <rules_id>5764</rules_id> <timeout>no</timeout> ``` - Giải thích: - firewall-drop: câu lệnh có chức năng chặn IP - local: nơi thực hiện lệnh, cụ thể là trên agent - 5764: Chỉ định Rule ID sẽ kích hoạt lệnh - no: thời gian có hiệu lực của câu lệnh, trong trường hợp này là vô thời hạn. - ![image](https://hackmd.io/_uploads/HkiIiV5Tee.png) - Thực hiện lưu file và khởi động lại Wazuh Manager ``` systemctl restart wazuh-manager ``` - Ta kiểm tra cấu hình vừa lưu bằng cách sử dụng script có tên là ``/var/ossec/bin/agent_control``: - ![image](https://hackmd.io/_uploads/SJfA6E9Tll.png) - Kiểm tra danh sách agent được tạo: - ![image](https://hackmd.io/_uploads/S1KeANqpel.png) - Kiểm tra danh sách active-response được tạo: - ![image](https://hackmd.io/_uploads/SkNVCV9Tex.png) - Tiếp đến ta quay lại với Shuffle và thêm ``HTTP`` app vào workflow nhằm lấy Wazuh API JWT: - ![image](https://hackmd.io/_uploads/r1ffyHcpex.png) - Tuy nhiên để có thể lấy được JWT ta cần thông tin đăng nhập cần thiết: - Thực hiện giải nén file ``wazuh-install-files.tar`` được cài sẵn lúc tải Wazuh: ``` tar -xvf wazuh-install-files.tar ``` - ![image](https://hackmd.io/_uploads/BkvzxSc6xg.png) - Lấy thông tin đăng nhập trong file ``wazuh-passwords.txt``: - ![image](https://hackmd.io/_uploads/rycOgr9pel.png) - Sử dụng câu lệnh sau để lấy JWT: ``` curl -u username:password -k -X GET "https://your_IP:55000/security/user/authenticate?raw=true" ``` - Quay lại Shuffle và copy câu lệnh trên vào ``Http`` app: - ![image](https://hackmd.io/_uploads/rJ-0WS56gg.png) - ![image](https://hackmd.io/_uploads/Sk4ODHqaxe.png) - Thêm ``Wazuh`` app vào workflow: - Mục ``Apikey``chọn ``GET_Wazuh_JWT`` - ![image](https://hackmd.io/_uploads/r1MAGB56el.png) - ![image](https://hackmd.io/_uploads/HkeXXr5ale.png) ``` {"data":{"srcip":"$exec.all_fields.data.srcip"}} ``` - ![image](https://hackmd.io/_uploads/HkopHrcTge.png) ``` $exec.all_fields.agent.id ``` - ![image](https://hackmd.io/_uploads/Hyw-UBqpee.png) - Ta thực hiện tấn công SSH và xem kết quả từ Wazuh: - ![image](https://hackmd.io/_uploads/SJclPB5pel.png) - ![image](https://hackmd.io/_uploads/BkcTPB5axx.png) - ![image](https://hackmd.io/_uploads/r1v0wH9Tge.png) - kiểm tra trên máy mục tiêu ta thấy địa chỉ IP tấn công đã được chặn: ``` iptables -L ``` - ![image](https://hackmd.io/_uploads/S1AM_B9pel.png) - Ping đến máy tấn công: - ![image](https://hackmd.io/_uploads/SJucdS5aeg.png) - Từ máy tấn công Ping đến máy mục tiêu: - ![image](https://hackmd.io/_uploads/rk16Or5Txx.png) - Ta thực hiện xóa danh sách chặn trên máy mục tiêu: ``` sudo iptables -F ``` - ![image](https://hackmd.io/_uploads/r1ot4Uq6ge.png) - Tiếp đến ta sẽ thực hiện thêm ``user input trigger`` vào workflow để thực hiện gửi thông báo đến nhà phân tích và cấp quyền quyết định có thực hiện chặn IP hay không. - Đầu tiên ta tạo một workflow mới có nhiệm vụ gửi tin nhắn đến nhà phân tích thông qua Telegram Bot: - ![image](https://hackmd.io/_uploads/rk1f9rqpgg.png) - Cấu hình Telegram Bot tương tự như các phần trên: - ![image](https://hackmd.io/_uploads/B13hqScpex.png) - Quay trở lại với workflow chính ta thêm vào ``user input trigger`` - ![image](https://hackmd.io/_uploads/r1RviHqTgx.png) - Thực hiện xóa nhánh cũ: - ![image](https://hackmd.io/_uploads/rkajjH56xx.png) - Cấu hình ``user input trigger``: - Mục ``Information`` ta nhập như sau: ``` Dectect SSH attack on host: $exec.all_fields.predecoder.hostname\n\nAttacker IP: $source_ip\n\nWould you like to block this IP:$source_ip ? ``` - Mục ``Input options`` ta chọn ``Subflow`` và chọn workflow ``Send alert to anlyst by Telegram Bot`` - ![image](https://hackmd.io/_uploads/SkBw-85Tll.png) - Thực hiện lưu và chạy lại, sau đó chuyển qua workflow ``Send alert to anlyst by Telegram Bot`` để chỉnh sửa cấu hình Telegram Bot: - Ở mục ``Message`` ta nhập như sau: ``` $exec.information\n\nBlock :http://192.168.153.168:3001$received_alert.api_continue\n\nAbort: http://192.168.153.168:3001$exec.api_abort ``` - ![image](https://hackmd.io/_uploads/HJzn-U9Tel.png) - Lưu lại workflow và chạy lại: - ![image](https://hackmd.io/_uploads/SJxZGI96le.png) - Ta nhận được tin nhắn từ Telegram Bot: - ![image](https://hackmd.io/_uploads/BJa7fL9Tge.png) - Để thực hiện block ta truy cập vào link tương ứng và kiểm tra phản hồi của Wazuh ở workflow chính. - ![image](https://hackmd.io/_uploads/BkAiM8cael.png) - Ta thấy phản hồi thành công nghĩa là IP đã được chặn trên máy mục tiêu. Ta vào máy mục tiêu để kiểm tra kết quả: - ![image](https://hackmd.io/_uploads/BJfMBLcTgl.png) - Cuối cùng ta thêm TheHive vào workflow chính để tạo case: - ![image](https://hackmd.io/_uploads/SkqsHI56xx.png) - Cấu hình ``Body`` như sau: ``` { "description": "Multiple SSH login attempts using non-existent usernames on host: $exec.all_fields.predecoder.hostname", "externallink": "${externallink}", "flag": false, "pap": 2, "severity": $exec.severity, "source": "$exec.pretext", "sourceRef": "RuleID $exec.rule_id", "status": "New", "summary": "Multiple SSH login attempts using non-existent usernames on host: $exec.all_fields.predecoder.hostname from source IP:$exec.all_fields.data.srcip", "tags": ["T1110"], "title": "$exec.title", "tlp": 2, "type": "Internal" } ``` - Lưu và chạy lại workflow, kiểm tra case mới được tạo trên TheHive: - ![image](https://hackmd.io/_uploads/B1TyuU9ple.png) - Đăng nhập bằng tài khoản ``analyst@test.com`` - ![image](https://hackmd.io/_uploads/HJr-O89Tee.png) - ![image](https://hackmd.io/_uploads/HyRfOI5Teg.png) ## 7. Video DEMO - [Demo mimikatz alert](https://youtu.be/_K7Tgk1dh-4) - [Demo SSH attack response](https://youtu.be/AUuPpwhlIg0) (Thực hiện SSH attack thủ công) ## CẢM ƠN VÌ ĐÃ ĐỌC. HY VỌNG BÀI VIẾT NÀY SẼ CÓ ÍCH