Võ Thị Quỳnh Nga
Intern
Để trực quan hóa trên OpenSearch, em sử dụng tập mock data trích xuất từ Secrepo. Đây là tập log ghi nhận các hành vi tấn công mạng được thu thập thực tế từ các phần mềm honeypot chuyên dụng (Amun và Glastopf)
- Sử dụng cú pháp đơn giản, hỗ trợ tự động điền
- Không thay đổi cấu trúc dữ liệu, chỉ đóng vai trò như một bộ lọc để giới hạn kết quả hiển thị.
- Hỗ trợ các toán tử logic cơ bản: and, or, not.
Ứng dụng: Lọc nhanh các sự kiện tấn công nhắm vào một cổng dịch vụ cụ thể hoặc từ một dải IP đáng ngờ.
Ví dụ: parsed_payload.victimPort: 3389 and channel: "amun.events"
Hình 1. Toàn bộ các bản ghi log ghi nhận hành vi dò quét vào cổng RDP 3389
- Mọi truy vấn từ DQL hay giao diện biểu đồ cuối cùng đều được Dashboards dịch ngầm sang Query DSL để gửi xuống Database.
- Được chia thành 2 loại cấu trúc chính: Leaf clauses (tìm kiếm chính xác một giá trị như term, match) và Compound clauses (kết hợp nhiều điều kiện logic như bool, must, must_not).
Ứng dụng: Sử dụng khi viết các script tự động hóa để tương tác với cơ sở dữ liệu, hoặc khi cần gom nhóm dữ liệu phức tạp.
Ví dụ:
Hình 2. Kết quả trả về top 5 IP tấn công nhiều nhất
- Cú pháp tuần tự, dễ đọc từ trái sang phải.
- Cho phép thực hiện các phép toán phức tạp ngay trên luồng dữ liệu như tìm kiếm, lọc, tính toán trường mới (eval), và đếm thống kê (stats) trong một dòng lệnh duy nhất.
- Sử dụng thông qua plugin Query Workbench trên Dashboards hoặc qua PPL API.
Ứng dụng: Phục vụ đắc lực cho công tác Threat Hunting và phân tích tương tác khi kỹ sư cần đào sâu vào dữ liệu mà không muốn phải viết các khối JSON DSL cồng kềnh.
Ví dụ:
Hình 3. Kết quả trả về top 10 IP attacker tấn công cổng 80
- Cho phép kiểm soát hoàn toàn từng pixel của biểu đồ: từ trục tọa độ, chú giải, đến việc gắn các thao tác click chuột để tạo biểu đồ động.
- Vega-Lite là phiên bản viết gọn của Vega, tự động hóa các bước thiết lập phức tạp.
Ứng dụng: Xây dựng các Dashboard SOC cấp cao, ví dụ:
- Heatmap thể hiện tương quan giữa Tọa độ địa lý của IP tấn công và thời gian.
- Network Graph vẽ đường đi của gói tin từ dải IP này sang dải IP khác.
Ví dụ:
Hình 4. Khai báo cấu trúc JSON và kết quả trực quan hóa dữ liệu dạng bong bóng bằng Vega
Khối data: OpenSearch Dashboards sẽ gửi đoạn JSON bên trong thuộc tính body trực tiếp xuống Database. Truy vấn này gom cụm để tìm ra 10 IP tấn công nhiều nhất, và bên trong mỗi IP đó, tìm tiếp 5 cổng mục tiêu mà IP đó hay quét.
Khối transform: Kết quả trả về từ OpenSearch là các mảng lồng nhau. Vega sử dụng lệnh flatten và calculate để ép phẳng mảng này thành các cột dữ liệu đơn giản giống như Excel (Gồm 3 cột: IP, Port, Count).
Khối mark & encoding:<strong> </strong>Khai báo mark: circle để báo cho Vega biết chúng ta muốn vẽ các điểm hình tròn. Trục Y được gắn với IP, trục X gắn với Port. Đặc biệt, thuộc tính size được nội suy từ biến AttackCount, nghĩa là IP nào quét vào cổng đó càng nhiều, bong bóng trên màn hình sẽ tự động phình to ra. Đồng thời khối tooltip giúp bạn di chuột vào bong bóng để xem chi tiết thông số.
DQL (Dashboards Query Language)
DQL là ngôn ngữ truy vấn mặc định trên thanh tìm kiếm của giao diện OpenSearch Dashboards Nó được thiết kế tối giản, thân thiện với người dùng cuối để lọc dữ liệu nhanh chóng.- Sử dụng cú pháp đơn giản, hỗ trợ tự động điền
- Không thay đổi cấu trúc dữ liệu, chỉ đóng vai trò như một bộ lọc để giới hạn kết quả hiển thị.
- Hỗ trợ các toán tử logic cơ bản: and, or, not.
Ứng dụng: Lọc nhanh các sự kiện tấn công nhắm vào một cổng dịch vụ cụ thể hoặc từ một dải IP đáng ngờ.
Ví dụ: parsed_payload.victimPort: 3389 and channel: "amun.events"
Hình 1. Toàn bộ các bản ghi log ghi nhận hành vi dò quét vào cổng RDP 3389
OpenSearch Query DSL (Domain Specific Language)
Query DSL là "ngôn ngữ mẹ đẻ" của OpenSearch. Nó dựa trên định dạng JSON và giao tiếp trực tiếp qua REST API (cổng 9200).- Mọi truy vấn từ DQL hay giao diện biểu đồ cuối cùng đều được Dashboards dịch ngầm sang Query DSL để gửi xuống Database.
- Được chia thành 2 loại cấu trúc chính: Leaf clauses (tìm kiếm chính xác một giá trị như term, match) và Compound clauses (kết hợp nhiều điều kiện logic như bool, must, must_not).
Ứng dụng: Sử dụng khi viết các script tự động hóa để tương tác với cơ sở dữ liệu, hoặc khi cần gom nhóm dữ liệu phức tạp.
Ví dụ:
Hình 2. Kết quả trả về top 5 IP tấn công nhiều nhất
PPL (Piped Processing Language)
PPL là một ngôn ngữ truy vấn hướng sự kiện, sử dụng ký tự ống dẫn “|” để truyền kết quả từ lệnh này sang lệnh khác.- Cú pháp tuần tự, dễ đọc từ trái sang phải.
- Cho phép thực hiện các phép toán phức tạp ngay trên luồng dữ liệu như tìm kiếm, lọc, tính toán trường mới (eval), và đếm thống kê (stats) trong một dòng lệnh duy nhất.
- Sử dụng thông qua plugin Query Workbench trên Dashboards hoặc qua PPL API.
Ứng dụng: Phục vụ đắc lực cho công tác Threat Hunting và phân tích tương tác khi kỹ sư cần đào sâu vào dữ liệu mà không muốn phải viết các khối JSON DSL cồng kềnh.
Ví dụ:
Hình 3. Kết quả trả về top 10 IP attacker tấn công cổng 80
Vega & Vega-Lite
Vega và Vega-Lite là các ngữ pháp trực quan hóa dựa trên JSON.- Cho phép kiểm soát hoàn toàn từng pixel của biểu đồ: từ trục tọa độ, chú giải, đến việc gắn các thao tác click chuột để tạo biểu đồ động.
- Vega-Lite là phiên bản viết gọn của Vega, tự động hóa các bước thiết lập phức tạp.
Ứng dụng: Xây dựng các Dashboard SOC cấp cao, ví dụ:
- Heatmap thể hiện tương quan giữa Tọa độ địa lý của IP tấn công và thời gian.
- Network Graph vẽ đường đi của gói tin từ dải IP này sang dải IP khác.
Ví dụ:
Hình 4. Khai báo cấu trúc JSON và kết quả trực quan hóa dữ liệu dạng bong bóng bằng Vega
Khối data: OpenSearch Dashboards sẽ gửi đoạn JSON bên trong thuộc tính body trực tiếp xuống Database. Truy vấn này gom cụm để tìm ra 10 IP tấn công nhiều nhất, và bên trong mỗi IP đó, tìm tiếp 5 cổng mục tiêu mà IP đó hay quét.
Khối transform: Kết quả trả về từ OpenSearch là các mảng lồng nhau. Vega sử dụng lệnh flatten và calculate để ép phẳng mảng này thành các cột dữ liệu đơn giản giống như Excel (Gồm 3 cột: IP, Port, Count).
Khối mark & encoding:<strong> </strong>Khai báo mark: circle để báo cho Vega biết chúng ta muốn vẽ các điểm hình tròn. Trục Y được gắn với IP, trục X gắn với Port. Đặc biệt, thuộc tính size được nội suy từ biến AttackCount, nghĩa là IP nào quét vào cổng đó càng nhiều, bong bóng trên màn hình sẽ tự động phình to ra. Đồng thời khối tooltip giúp bạn di chuột vào bong bóng để xem chi tiết thông số.
Bài viết liên quan
Được quan tâm
Bài viết mới