ISELAB SOC by Scenario
Featured 🔍 Elasticsearch

Giới thiệu Elasticsearch cho SOC Analyst

Hướng dẫn chi tiết cách sử dụng Elasticsearch và Kibana trong công việc SOC

⏱️ 15 phút đọc 📅 21/01/2025 👤 SOC Team

🔍 Elasticsearch là gì?

Elasticsearch là một công cụ tìm kiếm và phân tích dữ liệu phân tán, được xây dựng trên Apache Lucene. Trong môi trường SOC, Elasticsearch đóng vai trò là "bộ não" của hệ thống SIEM, giúp lưu trữ, tìm kiếm và phân tích hàng triệu sự kiện bảo mật mỗi ngày.

💡 Tại sao Elasticsearch phù hợp với SOC?

  • Tốc độ tìm kiếm: Tìm kiếm trong hàng triệu records chỉ trong vài giây
  • Khả năng mở rộng: Dễ dàng thêm nodes để xử lý dữ liệu lớn
  • Tính linh hoạt: Hỗ trợ nhiều loại dữ liệu (logs, metrics, traces)
  • Real-time: Cập nhật và tìm kiếm dữ liệu theo thời gian thực

🛡️ Tại sao SOC cần Elasticsearch?

🔍

Threat Hunting

Tìm kiếm các mối đe dọa tiềm ẩn trong dữ liệu lịch sử

📊

Phân tích xu hướng

Theo dõi và phân tích các xu hướng tấn công

🚨

Incident Response

Điều tra và phân tích sự cố bảo mật

📈

Báo cáo

Tạo báo cáo chi tiết cho management

📚 Các khái niệm cơ bản

Index

Index là nơi lưu trữ dữ liệu, tương tự như database trong hệ thống quan hệ. Mỗi index chứa một loại dữ liệu cụ thể.

# Ví dụ các index phổ biến trong SOC:
winlogbeat-* # Windows logs
filebeat-* # System logs
packetbeat-* # Network logs

Document

Document là đơn vị dữ liệu cơ bản, tương tự như một record trong database.

# Ví dụ document Windows Event Log:
{
  "@timestamp": "2025-01-21T02:15:33.000Z",
  "event.code": 4625,
  "host.name": "AnhLP-Laptop-01",
  "winlog.event_data.IpAddress": "212.132.125.106"
}

🎯 Hướng dẫn sử dụng Kibana

1. Discover - Khám phá dữ liệu

Discover là nơi bạn bắt đầu khám phá dữ liệu. Đây là công cụ chính để tìm kiếm và xem dữ liệu.

📋 Các bước sử dụng Discover:

  1. 1. Chọn Data View phù hợp (ví dụ: winlogbeat-*)
  2. 2. Thiết lập Time Range (ví dụ: Last 24 hours)
  3. 3. Sử dụng Search Bar để tìm kiếm
  4. 4. Xem kết quả trong Document Table

2. Data View - Quản lý dữ liệu

Data View giúp bạn tổ chức và quản lý các index một cách logic.

# Ví dụ tạo Data View cho Windows logs:
Name: Windows Logs
Index pattern: winlogbeat-*
Time field: @timestamp

3. Time Range - Thiết lập thời gian

Time Range giúp bạn giới hạn phạm vi tìm kiếm theo thời gian.

⏰ Các tùy chọn Time Range phổ biến:

  • Last 15 minutes: Để theo dõi sự cố đang diễn ra
  • Last 1 hour: Để phân tích sự cố gần đây
  • Last 24 hours: Để xem tổng quan ngày
  • Last 7 days: Để phân tích xu hướng

4. Query - Tìm kiếm dữ liệu

Query là cách bạn tìm kiếm dữ liệu cụ thể trong Elasticsearch.

# Ví dụ query tìm failed logins:
event.code:4625 # Windows failed login events

# Query phức tạp hơn:
event.code:4625 AND host.name:"AnhLP-Laptop-01"

# Query với time range:
event.code:4625 AND @timestamp:[2025-01-21T00:00:00 TO 2025-01-21T23:59:59]

5. Columns - Hiển thị dữ liệu

Columns giúp bạn chọn những trường dữ liệu quan trọng để hiển thị.

📊 Các trường quan trọng trong SOC:

  • @timestamp: Thời gian sự kiện
  • host.name: Tên máy chủ
  • event.code: Mã sự kiện (4624, 4625, etc.)
  • winlog.event_data.IpAddress: IP address
  • winlog.event_data.TargetUserName: Username

6. Filter - Lọc dữ liệu

Filter giúp bạn lọc dữ liệu theo các điều kiện cụ thể.

# Ví dụ filter cho brute force attack:
event.code:4625 # Failed login events
winlog.event_data.LogonType:10 # RDP logons
NOT winlog.event_data.IpAddress:192.168.* # External IPs

🚀 Mẹo nâng cao

💡 Sử dụng KQL (Kibana Query Language)

KQL là ngôn ngữ truy vấn đơn giản và mạnh mẽ của Kibana.

# Tìm kiếm failed logins từ IP cụ thể:
event.code:4625 AND winlog.event_data.IpAddress:212.132.125.106

# Tìm kiếm với wildcard:
host.name:*Laptop*

# Tìm kiếm với range:
@timestamp >= "2025-01-21T00:00:00"

📊 Sử dụng Aggregations

Aggregations giúp bạn thống kê và phân tích dữ liệu.

# Thống kê số lượng events theo IP:
event.code:4625
# Aggregation: Terms trên winlog.event_data.IpAddress
# Kết quả: Top IPs với số lượng events

🔍 Saved Searches

Lưu lại các query thường dùng để sử dụng lại.

💾 Các Saved Searches hữu ích:

  • Failed Logins: event.code:4625
  • Successful Logins: event.code:4624
  • RDP Connections: winlog.event_data.LogonType:10
  • Admin Activities: winlog.event_data.TargetUserName:admin*

🎯 Hướng dẫn sử dụng thực tế

1 Đăng nhập vào Elastic

Truy cập https://lab1.iselab.edu.vn và đăng nhập với tài khoản đã được cấp.

Hướng dẫn đăng nhập Elastic

Giao diện đăng nhập Elastic

2 Khám phá trang chủ

Sau khi đăng nhập, bạn sẽ thấy dashboard chính với các tính năng chính của Elastic.

Trang chủ Elastic

Dashboard chính của Elastic

3 Truy cập Analytics

Click vào "Analytics" để truy cập các công cụ phân tích dữ liệu như Discover, Dashboard, và Visualizations.

Trang Analytics

Trang Analytics với các công cụ phân tích

4 Khám phá tính năng Analytics

Trong Analytics, bạn có thể sử dụng các tính năng như Discover để tìm kiếm dữ liệu, tạo Dashboard để theo dõi metrics, và xây dựng Visualizations.

Tính năng Analytics

Các tính năng chính trong Analytics

5 Thêm Field làm Column

Trong Discover, bạn có thể thêm các field quan trọng làm column để dễ dàng theo dõi và phân tích dữ liệu.

Thêm Field làm Column

Hướng dẫn thêm field làm column trong Discover

6 Sử dụng Lens để Visualize dữ liệu

📊 Lens là gì?

Lens cho phép bạn tạo các biểu đồ thống kê (Bar chart, Line chart, Pie chart, Table...) bằng cách kéo thả các field từ dữ liệu. Đây là công cụ lý tưởng cho SOC Analyst để phân tích xu hướng, thống kê số lượng events, top sources, và nhiều hơn nữa.

Hướng dẫn sử dụng Lens

Giao diện Lens với các tùy chọn visualization

🔧 Các bước sử dụng Lens:

  1. Truy cập Lens: Từ menu Analytics → chọn Visualize LibraryCreate visualization → chọn Lens
  2. Chọn Data View: Chọn index pattern bạn muốn phân tích (ví dụ: winlogbeat-*)
  3. Chọn loại biểu đồ: Bar chart, Line, Pie, Table, Metric... tùy theo mục đích phân tích
  4. Kéo thả field: Kéo các field từ danh sách bên trái vào các trục (X-axis, Y-axis) hoặc metrics
  5. Cấu hình aggregation: Chọn Count, Sum, Average, Top values... để tổng hợp dữ liệu
  6. Apply filter: Thêm filter để lọc dữ liệu theo điều kiện (ví dụ: event.code: 4625)
  7. Save visualization: Lưu lại để sử dụng trong Dashboard hoặc report

💡 Ví dụ Use Case cho SOC:

  • Top 10 IPs failed login: Bar chart với X-axis = source.ip, Y-axis = Count, Filter = event.code: 4625
  • Timeline failed login: Line chart với X-axis = @timestamp, Y-axis = Count
  • Distribution by LogonType: Pie chart với Slice by = winlog.event_data.LogonType
  • Top users targeted: Table với Rows = user.name, Metrics = Count

💡 Mẹo sử dụng hiệu quả

  • Lưu searches: Sau khi tạo query hữu ích, nhớ lưu lại để sử dụng sau
  • Time picker: Luôn chọn khoảng thời gian phù hợp để giảm noise
  • Filters: Sử dụng filters để tập trung vào dữ liệu quan trọng
  • Columns: Chỉ hiển thị các field cần thiết để tăng hiệu suất
S

SOC Team

Đội ngũ chuyên gia SOC với nhiều năm kinh nghiệm

📅 Xuất bản: 21/01/2025 | ⏱️ 15 phút đọc | 🔍 Elasticsearch