OpenCTI Threat Intelligence
| Pack name | OpenCTI Threat Intelligence |
| Version | 1.0.1 |
| Vendor | OpenCTI |
| Capabilities | Connector (pull · enrichment) |
| Categories | Threat Intelligence · Security |
Overview
Pack cung cấp connector kéo threat intelligence indicator từ OpenCTI về enrichment store của SecOps, bao gồm:
- 1 pull connector (
opencti-ti) — truy vấn GraphQL API của OpenCTI, đồng bộ indicator theo watermarkmodified - Enrichment entity
threat_indicator— IOC dạng IP, domain, URL, file hash kèm score, confidence, MITRE tactic/technique, malware family, TLP marking
Yêu cầu trước khi cài đặt
| Yêu cầu | Chi tiết |
|---|---|
| OpenCTI 5.12+ | GraphQL API bật sẵn tại https://<opencti-host>/graphql |
| API token | Settings → Security → Users → chọn user → copy Token. User cần quyền đọc Indicators và Stix Core Relationships |
| Kết nối mạng | SecOps collector phải tới được host OpenCTI. Connector đặt allow_private_hosts=True nên hỗ trợ OpenCTI đặt trong mạng nội bộ |
| Quyền platform | Role Content Pack Manager để cài pack, Log Source Manager để tạo connector |
⚠️ URL phải trỏ thẳng vào endpoint GraphQL, ví dụ
https://opencti.corp.local/graphql. Nhập URL gốc (https://opencti.corp.local) sẽ khiến Test Connection fail.
Cài đặt
- Vào Marketplace → tìm "OpenCTI Threat Intelligence" → Install
- Vào Data Collection → Data Connectors → Add Connection → chọn connector type
opencti-ti - Điền cấu hình (bảng bên dưới) → Test Connection → Save
- Kiểm tra Enrichment → Threat Indicators sau chu kỳ poll đầu tiên
Cấu hình connector
| Field | Key | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|---|
| OpenCTI URL | opencti_url | string | ✅ | Endpoint GraphQL, ví dụ https://opencti.corp.local/graphql |
| OpenCTI Token | opencti_token | password | ✅ | API token của user OpenCTI (gửi dạng Authorization: Bearer <token>) |
| Poll Interval (minutes) | time_interval | int | ✅ | Chu kỳ đồng bộ, khuyến nghị 15 phút |
| Lookback Hours | lookback_hours | int | — | Cửa sổ lấy dữ liệu lần chạy đầu (chưa có watermark). Hợp lệ 1–24, mặc định 24 |
Khi đẩy cấu hình qua API, kiểu dữ liệu phải khớp chính xác:
opencti_url/opencti_tokenlà chuỗi có nháy,time_interval/lookback_hourslà số không nháy.{ "opencti_url": "https://opencti.corp.local/graphql", "opencti_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "time_interval": 15, "lookback_hours": 24 }
Cách connector hoạt động
Mỗi chu kỳ poll, connector chạy 3 truy vấn GraphQL rồi hợp nhất kết quả:
| # | Truy vấn | Mục đích | Bộ lọc |
|---|---|---|---|
| 1 | indicators | Lấy indicator mới tạo hoặc vừa được sửa | revoked = false, pattern_type = stix, modified > since — sắp xếp modified asc, phân trang 100 record |
| 2 | stixCoreRelationships | Tìm quan hệ indicates mới phát sinh (indicator được gắn thêm vào malware / attack pattern) | relationship_type = indicates, created_at > since |
| 3 | indicators theo ID | Lấy đầy đủ những indicator chỉ xuất hiện ở truy vấn 2 mà chưa có ở truy vấn 1 | batch 100 ID mỗi lần |
Kết quả truy vấn 1 và 3 được merge theo id (ưu tiên bản từ truy vấn 1 vì mới hơn). Sau khi yield hết record, watermark được đẩy về thời điểm bắt đầu job chứ không phải timestamp của record cuối — tránh bỏ sót indicator được sửa trong lúc job đang chạy.
idem_key của mỗi record là {instance_id}:ti:{indicator_id} → indicator được cập nhật thay vì nhân bản qua các lần đồng bộ.
Truy vấn 2 giải quyết trường hợp indicator không đổi nhưng vừa được gắn quan hệ với một malware hoặc technique mới — nếu chỉ dựa vào
modifiedthì thông tin MITRE / malware family sẽ không bao giờ được cập nhật.
Enrichment Entity — threat_indicator
| Field | Nguồn OpenCTI | Mô tả |
|---|---|---|
id | id | STIX ID của indicator |
pattern | pattern | Pattern STIX gốc, ví dụ [ipv4-addr:value = '203.0.113.10'] |
pattern_type | pattern_type | Luôn là stix (connector chỉ lấy pattern STIX) |
observable_value | Trích từ pattern | Giá trị IOC thuần (IP / domain / URL / hash) — đây là field dùng để đối chiếu log |
indicator_type | x_opencti_main_observable_type | IPv4-Addr, Domain-Name, Url, StixFile… |
indicator_types | indicator_types | Danh sách phân loại STIX gốc |
threat_type | Derived | Ưu tiên indicator_types[0]; nếu trống thì suy từ malware family (malware), rồi từ label theo từ khóa (phishing, botnet, c2, malware, scanning, exploit); cuối cùng fallback malicious-activity |
malware_family | Quan hệ tới Malware | Tên họ malware liên quan |
mitre_tactics | Quan hệ tới AttackPattern | Danh sách TAxxxx |
mitre_techniques | Quan hệ tới AttackPattern | Danh sách Txxxx |
score | x_opencti_score | Điểm tin cậy IOC, mặc định 50 nếu OpenCTI không trả |
confidence | confidence | Độ tin cậy nguồn, mặc định 0 |
detection | x_opencti_detection | Indicator có được đánh dấu dùng cho detection hay không, mặc định false |
revoked | revoked | Luôn false (đã lọc ở query) |
valid_from / first_seen | valid_from | Thời điểm indicator bắt đầu có hiệu lực |
valid_until | valid_until | Thời điểm hết hiệu lực |
modified | modified | Lần sửa gần nhất trên OpenCTI |
description | description | Mô tả indicator |
labels | objectLabel[].value | Nhãn phân loại của OpenCTI |
markings | objectMarking[].definition | TLP marking (TLP:CLEAR, TLP:AMBER…) |
observable_valueđược trích bằng regex lấy giá trị trong dấu nháy sau dấu=của pattern STIX. Pattern phức hợp (nhiều điều kiệnAND/OR) chỉ lấy được giá trị đầu tiên — cân nhắc lọc bớt loại pattern này ở phía OpenCTI nếu cần độ chính xác cao.
Troubleshooting
| Triệu chứng | Nguyên nhân | Cách xử lý |
|---|---|---|
| Test Connection fail | URL thiếu /graphql | Nhập đầy đủ https://<host>/graphql |
| Test Connection fail, log báo 401 | Token sai hoặc user bị disable | Tạo lại token trong Settings → Security → Users |
Save cấu hình bị chặn: Lookback hours cannot exceed 24 | lookback_hours > 24 | Đặt lại trong khoảng 1–24 |
Save bị chặn: Lookback hours must be a valid integer | Nhập chuỗi vào field int | Nhập số nguyên, hoặc để trống để dùng mặc định 24 |
| Đồng bộ 0 record | Không có indicator nào modified trong cửa sổ lookback | Bình thường với tenant ít cập nhật. Kiểm tra bằng cách sửa 1 indicator trên OpenCTI rồi chờ chu kỳ kế tiếp |
| Thiếu indicator dù đã tạo trên OpenCTI | Indicator có pattern_type khác stix hoặc đang revoked | Connector chỉ lấy pattern STIX chưa bị thu hồi — đây là hành vi thiết kế |
mitre_techniques / malware_family trống | Indicator chưa có quan hệ indicates tới AttackPattern / Malware | Bổ sung quan hệ trên OpenCTI; chu kỳ kế tiếp truy vấn 2 sẽ kéo về |
| Sync chậm / timeout | Tenant có lượng indicator lớn, phân trang 100/lần | Tăng time_interval, giảm lookback_hours cho lần khởi tạo |
Checklist sau khi cài:
- Connector type
opencti-tixuất hiện trong danh sách Log Source - Test Connection trả về thành công
- Sau 1 chu kỳ poll, Enrichment → Threat Indicators có dữ liệu
-
observable_valuecủa record mẫu đúng định dạng IOC mong đợi
Hỗ trợ
- Lỗi platform/Góp ý pack: Dùng tính năng feedback trên trang Marketplace
Last updated: 2026-07-30 · Vendor: OpenCTI · Author: secops-team