0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

🚨 Xây Dựng Pipeline Triage IOC Với Suricata + ML + Docker

Đăng vào 1 ngày trước

• 3 phút đọc

🚨 Xây Dựng Pipeline Triage IOC Với Suricata + ML + Docker

Honeypots tạo ra rất nhiều log ồn ào. Thách thức là làm thế nào để nhanh chóng xác định IP nào xứng đáng nhận sự chú ý của bạn và IP nào chỉ là tiếng ồn nền? Trong bài viết này, tôi sẽ hướng dẫn cách tôi xây dựng một pipeline triage IOC tiếp nhận telemetry từ Suricata/Zeek, đánh giá các IP nghi ngờ, áp dụng machine learning không giám sát và xuất ra các danh sách chặn có thể hành động.

🌐 Vấn Đề

Nếu bạn đã từng chạy một honeypot như T-Pot, bạn sẽ biết đến:

  • Gigabyte các cảnh báo Suricata/Zeek
  • Hàng ngàn IP nguồn duy nhất
  • Vô số false positive

Việc phân loại thủ công tất cả những điều này không thể mở rộng. Tôi muốn có một pipeline có thể tự động:

  1. Tập hợp hoạt động theo IP
  2. Đánh giá từng IP về hành vi nghi ngờ
  3. Sử dụng ML để đánh dấu các bất thường
  4. Xuất ra các file case dễ đọc cho con người + danh sách chặn

🛠️ Pipeline Triage IOC

Tôi đã xây dựng một công cụ Python (ioc_triage.py) tiếp nhận log NDJSON và sản xuất các đầu ra có cấu trúc.

Tính Năng Chính

  • Tiếp nhận log từ Suricata/Zeek/T-Pot
  • Tập hợp các đặc điểm như lưu lượng/min, cổng duy nhất, entropy, độ bùng nổ
  • Đánh giá dựa trên quy tắc (có thể cấu hình qua config.yaml)
  • Machine Learning không giám sát (IsolationForest + LOF + OCSVM, tùy chọn PyOD HBOS+COPOD)
  • Kết hợp quy tắc + ML → tầng kết hợp (quan sát, điều tra, block_candidate)

Đầu Ra:

  • CSV theo từng IP
  • File case JSON
  • Danh sách chặn (theo IP và prefix)

⚙️ Cách Thức Hoạt Động

1. Tiếp Nhận

Đọc log NDJSON từ Suricata:

bash Copy
python scripts/ioc_triage.py \
  --input data/samples/raw.ndjson \
  --hours 72 -vv

2. Tập Hợp

Tính toán cho từng IP nguồn:

  • Lưu lượng/phút
  • Cổng src/dst duy nhất
  • Độ bùng nổ (biến thể hoạt động)
  • Entropy cổng
  • Số lượng cảnh báo

3. Đánh Giá

Cấu hình trọng số quy tắc trong scripts/config.yaml:

yaml Copy
score:
  weights:
    flows_per_min: 2.0
    unique_dst_ports: 1.6
    unique_src_ports: 1.3
    alert_count: 0.8
    max_severity: 0.6
  thresholds:
    block: 7.0
    investigate: 3.5

4. Machine Learning

Sử dụng phát hiện bất thường không giám sát:

  • IsolationForest
  • LocalOutlierFactor
  • OneClassSVM (Tùy chọn PyOD HBOS+COPOD)

Điểm số được chuẩn hóa và kết hợp thành ml_score + ml_confidence.

5. Kết Hợp

Quy tắc + ML = tier_combined → quyết định cuối cùng: quan sát, điều tra hoặc block_candidate.

📦 Cài Đặt

Clone repository:

bash Copy
git clone https://github.com/YOUR-USERNAME/ioc-triage-pipeline.git
cd ioc-triage-pipeline

Cài đặt các yêu cầu:

bash Copy
pip install -r requirements.txt

(Các tùy chọn ML thêm):

bash Copy
pip install pyod scikit-learn

Hoặc chạy qua Docker:

bash Copy
docker build -t ioc-triage .
docker run -it --rm -v $(pwd):/app ioc-triage \
    python scripts/ioc_triage.py --input data/samples/raw.ndjson --hours 72 -vv

🔍 Ví Dụ Đầu Ra

Copy
ip  score   ml_score    tier    ml_tier tier_combined   reason
61.184.87.135   9.455   0.944   block_candidate block   block_candidate flows/min cao, độ bùng nổ cao, nhiều cổng

Đầu Ra:

  • data/outputs/enriched.csv → các đặc điểm theo từng IP
  • cases/.json → file case
  • outputs/blocklist_combined.tsv → danh sách chặn đã hợp nhất
  • outputs/blocklist_combined_prefix.tsv → prefix /24 + /48 đã được tổng hợp

🙌 Tại Sao Điều Này Quan Trọng

Dự án này biến tiếng ồn thô từ honeypot thành thông tin có thể hành động:

  • Các nhà phân tích có thể tập trung vào các mối đe dọa có độ tin cậy cao
  • Danh sách chặn tự động cập nhật
  • Bạn có thể tinh chỉnh ngưỡng & tỷ lệ ô nhiễm ML

Nó cũng rất tuyệt vời cho sinh viên (như tôi!) để thể hiện kỹ năng ML + an ninh mạng theo cách thực tế, sẵn sàng cho portfolio.

📚 Những Gì Tiếp Theo?

  • Thử nghiệm các mô hình deep learning (autoencoders, transformers)
  • Thêm làm giàu chủ động (WHOIS, VirusTotal, AbuseIPDB)
  • Xây dựng dashboard cho triage trực tiếp

👉 GitHub Repository

Nếu bạn quan tâm đến honeypots, ML hoặc thông tin về mối đe dọa, hãy cho tôi biết và đánh giá ⭐ trên GitHub về những tính năng bạn muốn thấy tiếp theo!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào