Khi một cuộc tấn công xảy ra, áp lực lớn nhất của người điều tra không chỉ là ngăn chặn, mà là truy vết và dựng lại dòng thời gian (Timeline): Hacker đã vào từ đâu? Làm những gì? Và đã để lại những hậu quả gì? Nếu chỉ dùng Dashboard thông thường, anh em sẽ rất khó để vừa viết lời giải thích diễn giải vụ án, vừa lôi các dòng log thô ra làm bằng chứng pháp lý. Hôm nay, mình sẽ chia sẻ cách mình "đóng hồ sơ" một vụ án tấn công mạng từ A-Z bằng cách kết hợp hai vũ khí cực mạnh trong OpenSearch: ngôn ngữ PPL (Piped Processing Language) và Notebooks.
Vào mục Observability -> Logs (hoặc Query Workbench) và chạy câu lệnh sau để gom toàn bộ hành vi của IP nghi vấn 192.168.10.200, sắp xếp theo thứ tự thời gian tăng dần (sort + @timestamp):
source = incident-logs-* | where source.ip = '192.168.10.200'
| fields @timestamp, event.category, event.action, message
| sort + @timestamp
|
Mẹo xương máu: Giao diện Notebook của OpenSearch khá "tối giản", không có nút chọn text hay code sẵn. Để ép hệ thống hiểu, anh em hãy dùng các ký tự mật mã (Interpreter) ở ngay đầu dòng đầu tiên của mỗi ô (Paragraph):
%md
# BÁO CÁO ĐIỀU TRA SỰ CỐ (FORENSICS)
### Truy vết chuỗi tấn công (Kill Chain) từ IP `192.168.10.200`
Dưới đây là dòng thời gian (Timeline) chi tiết ghi lại toàn bộ hoạt động phá hoại của hacker...
Ô số 2 (Nhúng bảng log làm bằng chứng):
%ppl
source = incident-logs-* | where source.ip = '192.168.10.200' | fields @timestamp, event.category, event.action, message | sort + @timestamp
Bấm Run cho cả 2 ô, chúng ta sẽ có một trang hồ sơ vụ án cực kỳ trực quan và sinh động ngay trên giao diện Web.
Giai đoạn 1: Giả lập kịch bản tấn công (Cyber Kill Chain)
Để có dữ liệu điều tra, mình đã bắn một chuỗi log mô phỏng hành vi của một hacker chuyên nghiệp đi qua 4 bước chiến thuật vào Dev Tools:- Reconnaissance (Dò quét): Thử tấn công Directory Traversal quét file /etc/passwd.
- Brute Force (Dò mật khẩu): Thử đăng nhập tài khoản root nhưng thất bại.
- Compromise (Xâm nhập): Đăng nhập thành công vào hệ thống.
- Persistence (Nằm vùng): Tạo một user backdoor tên là hacker_backdoor để duy trì quyền truy cập lâu dài.
Giai đoạn 2: Dựng Timeline bằng chứng bằng ngôn ngữ PPL
Thay vì dùng cú pháp KQL hay Lucene rườm rà, mình sử dụng PPL. Cú pháp này sử dụng dấu gạch đứng | giống hệt như lệnh Linux Pipe, cực kỳ trực quan cho dân Security khi muốn lọc và bóp méo dữ liệu theo từng lớp.Vào mục Observability -> Logs (hoặc Query Workbench) và chạy câu lệnh sau để gom toàn bộ hành vi của IP nghi vấn 192.168.10.200, sắp xếp theo thứ tự thời gian tăng dần (sort + @timestamp):
source = incident-logs-* | where source.ip = '192.168.10.200'
| fields @timestamp, event.category, event.action, message
| sort + @timestamp
Giai đoạn 3: Lập hồ sơ vụ án bằng OpenSearch Notebooks
Dashboard tĩnh thường không có chỗ để chúng ta viết ghi chú điều tra. Do đó, Notebooks là nơi hoàn hảo để anh em SOC vừa gõ văn bản báo cáo, vừa nhúng các bảng log live làm bằng chứng.Mẹo xương máu: Giao diện Notebook của OpenSearch khá "tối giản", không có nút chọn text hay code sẵn. Để ép hệ thống hiểu, anh em hãy dùng các ký tự mật mã (Interpreter) ở ngay đầu dòng đầu tiên của mỗi ô (Paragraph):
- Để viết văn bản/tiêu đề (Markdown): Gõ mật mã %md ở đầu dòng.
- Để nhúng bảng log (PPL): Gõ mật mã %ppl ở đầu dòng.
Thực tế triển khai trong Notebook của mình:
Ô số 1 (Gõ chữ giải thích):%md
# BÁO CÁO ĐIỀU TRA SỰ CỐ (FORENSICS)
### Truy vết chuỗi tấn công (Kill Chain) từ IP `192.168.10.200`
Dưới đây là dòng thời gian (Timeline) chi tiết ghi lại toàn bộ hoạt động phá hoại của hacker...
Ô số 2 (Nhúng bảng log làm bằng chứng):
%ppl
source = incident-logs-* | where source.ip = '192.168.10.200' | fields @timestamp, event.category, event.action, message | sort + @timestamp
Bấm Run cho cả 2 ô, chúng ta sẽ có một trang hồ sơ vụ án cực kỳ trực quan và sinh động ngay trên giao diện Web.
Giai đoạn 4: Xuất bản Evidence phục vụ báo cáo Incident
Khi cấp trên hoặc cơ quan chức năng yêu cầu bàn giao bằng chứng, OpenSearch Notebook hỗ trợ tận răng 2 tính năng:- Xuất file PDF báo cáo: Bấm vào nút Reporting -> Download PDF ở góc trên cùng. Hệ thống sẽ kết xuất toàn bộ trang Notebook thành một file PDF báo cáo sự cố chuyên nghiệp, giữ nguyên định dạng chữ và bảng biểu.
- Xuất file log thô (CSV): Ngay góc bảng log, bấm Download as CSV để lấy dữ liệu thô làm bằng chứng pháp lý (Evidence log).