Mục tiêu chương / Learning objectives
- Áp dụng 3 phương pháp nhận diện rủi ro: asset-based, threat-based và vulnerability-based.
- Thực hiện threat modeling với phương pháp STRIDE trên một hệ thống web cụ thể.
- Phân tích điểm CVSS (Base/Temporal/Environmental) để ưu tiên vá lỗ hổng.
- Cấu hình và phân tích alert từ SIEM — phân biệt true positive và false positive.
- Phân biệt IOC (Indicator of Compromise) và IOA (Indicator of Attack); ứng dụng STIX/TAXII.
- Mô tả chương trình giám sát liên tục (ISCM) theo NIST SP 800-137.
1. Lý thuyết cốt lõi / Core theory
1.1. Phương pháp nhận diện rủi ro (Risk Identification Methods)
Ba cách tiếp cận nhận diện rủi ro:
- Asset-based (Tài sản làm trọng tâm): Bắt đầu từ inventory tài sản, xác định giá trị từng tài sản, sau đó liệt kê mối đe dọa và lỗ hổng với từng tài sản. Phù hợp với tổ chức có CMDB tốt.
- Threat-based (Mối đe dọa làm trọng tâm): Bắt đầu từ danh sách tác nhân đe dọa (APT groups, insider threats, script kiddies), phân tích TTP (Tactics, Techniques, Procedures) của từng actor để xác định rủi ro.
- Vulnerability-based (Lỗ hổng làm trọng tâm): Quét lỗ hổng định kỳ, phân tích kết quả, map lỗ hổng với tài sản và mối đe dọa để xác định rủi ro.
1.2. Threat Modeling — Phương pháp STRIDE
STRIDE là framework phân loại mối đe dọa do Microsoft phát triển:
| Ký hiệu | Mối đe dọa | Vi phạm CIA | Ví dụ |
|---|---|---|---|
| S | Spoofing (Giả mạo danh tính) | Authentication | Phishing, ARP spoofing |
| T | Tampering (Giả mạo dữ liệu) | Integrity | SQL injection, MITM |
| R | Repudiation (Chối bỏ) | Non-repudiation | Xóa log, không có audit trail |
| I | Information Disclosure (Lộ thông tin) | Confidentiality | Dữ liệu không mã hóa, misconfigured S3 |
| D | Denial of Service (Từ chối dịch vụ) | Availability | DDoS, resource exhaustion |
| E | Elevation of Privilege (Leo thang đặc quyền) | Authorization | Privilege escalation, sudo misconfig |
1.3. CVSS — Hệ thống tính điểm lỗ hổng (Common Vulnerability Scoring System)
CVSS v3.1 gồm 3 nhóm metric: Base Score (đặc tính cố định của lỗ hổng: Attack Vector, Complexity, Privileges Required, User Interaction, Scope, CIA Impact — điểm 0.0–10.0); Temporal Score (thay đổi theo thời gian: exploit code availability, remediation level, report confidence); Environmental Score (điều chỉnh theo context của tổ chức: tài sản bị ảnh hưởng quan trọng đến mức nào).
Thực tế vận hành: Base Score 9.8 trên hệ thống dev nội bộ không kết nối internet có thể ít nguy hiểm hơn Base Score 7.0 trên web server public. Environmental Score giúp ưu tiên đúng. SLA vá lỗ hổng điển hình: Critical (9.0–10.0) → 24–72 giờ; High (7.0–8.9) → 7 ngày; Medium (4.0–6.9) → 30 ngày; Low → 90 ngày.
1.4. SIEM & Giám sát bảo mật (Security Information and Event Management)
SIEM tổng hợp log từ nhiều nguồn (firewall, IDS, servers, endpoints), chuẩn hóa định dạng (Syslog/CEF/LEEF), lưu trữ tập trung và phân tích correlation để phát hiện mối đe dọa. Các use case phát hiện phổ biến: brute force (nhiều lần đăng nhập thất bại từ cùng IP), lateral movement (đăng nhập thành công sau nhiều thất bại, rồi truy cập nhiều hệ thống khác), data exfiltration (upload lớn bất thường).
1.5. Threat Intelligence & Giám sát liên tục (Threat Intel & ISCM)
IOC (Indicator of Compromise): Bằng chứng của compromise đã xảy ra — IP độc hại, domain, file hash, registry key lạ. IOA (Indicator of Attack): Hành vi cho thấy đang có tấn công — process injection, credential dumping, lateral movement pattern. IOA có giá trị hơn vì phát hiện attack trước khi compromise hoàn toàn.
STIX (Structured Threat Information eXpression): định dạng chuẩn mô tả threat intelligence. TAXII (Trusted Automated eXchange of Intelligence Information): giao thức trao đổi STIX giữa các tổ chức. ISCM (Information Security Continuous Monitoring — NIST SP 800-137): chương trình giám sát liên tục gồm định nghĩa chiến lược → thiết lập chương trình → triển khai → phân tích & báo cáo → phản hồi → review.
1.6. Định lượng rủi ro — Công thức SLE / ARO / ALE (Quantitative Risk Analysis)
Phân tích rủi ro định lượng (Quantitative Risk Analysis) dùng con số để tính toán tổn thất kỳ vọng, giúp đưa ra quyết định đầu tư bảo mật dựa trên dữ liệu tài chính:
- SLE (Single Loss Expectancy — Tổn thất đơn lẻ): Tổn thất tài chính khi sự cố xảy ra một lần.
SLE = Giá trị tài sản (Asset Value) × Exposure Factor (EF)
EF = % tài sản bị mất/hỏng khi sự cố xảy ra (0–100%) - ARO (Annualized Rate of Occurrence — Tần suất xảy ra hàng năm): Số lần sự cố dự kiến xảy ra trong 1 năm. ARO = 0.25 nghĩa là xảy ra 1 lần mỗi 4 năm.
- ALE (Annualized Loss Expectancy — Tổn thất kỳ vọng hàng năm):
ALE = SLE × ARO
Ví dụ tính toán thực tế (Worked Example)
| Tài sản | Database server chứa dữ liệu khách hàng |
| Asset Value | $200,000 |
| Exposure Factor | 30% (EF = 0.3) |
| SLE | $200,000 × 0.3 = $60,000 |
| ARO | 0.25 (xảy ra 1 lần mỗi 4 năm) |
| ALE | $60,000 × 0.25 = $15,000/năm |
Ứng dụng ALE để biện hộ chi phí kiểm soát bảo mật: Nếu ALE của rủi ro là $15,000/năm, bất kỳ biện pháp kiểm soát nào có chi phí dưới $15,000/năm đều có thể biện hộ tài chính (cost < ALE = justified). Ví dụ: triển khai IDS $8,000/năm → ROI rõ ràng. Đây là công cụ chính để trình bày với ban lãnh đạo không có nền tảng kỹ thuật.
2. Bài thực hành / Hands-on labs
Lab 1 — Phân tích log SIEM-style trên Windows (PowerShell)
OS: Windows Server 2022 · Tool: PowerShell 7 (Run as Administrator)
# Event ID 4625 = Đăng nhập thất bại — phát hiện brute force
# Top 10 tài khoản bị tấn công brute force
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 100 |
Group-Object -Property { $_.Properties[5].Value } |
Sort-Object Count -Descending |
Select-Object -First 10 Name, Count
# Phân tích theo nguồn IP (Properties[19] = Source IP)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 500 |
Group-Object -Property { $_.Properties[19].Value } |
Sort-Object Count -Descending |
Select-Object -First 10 Name, Count
# Event ID 4624 = Đăng nhập thành công — theo dõi sau brute force
# Xem tất cả login thành công trong 1 giờ qua
Get-WinEvent -LogName Security |
Where-Object { $_.Id -eq 4624 -and $_.TimeCreated -gt (Get-Date).AddHours(-1) } |
Select-Object TimeCreated, @{N='User';E={$_.Properties[5].Value}}, @{N='IP';E={$_.Properties[18].Value}} |
Format-Table -AutoSize
# Thống kê theo Event ID — bức tranh tổng quan bảo mật 1 giờ
Get-WinEvent -LogName Security |
Where-Object { $_.TimeCreated -gt (Get-Date).AddHours(-1) } |
Group-Object Id |
Sort-Object Count -Descending |
Select-Object -First 15 Name, Count
✅ Kết quả mong đợi / Expected output: Bảng top tài khoản bị brute force với số lần thất bại. IP nào có số lần cao bất thường (vd >50 lần) là dấu hiệu tấn công brute force. Nếu tiếp theo thấy Event 4624 (thành công) từ cùng IP sau nhiều 4625 (thất bại) — đây là tín hiệu credential stuffing đã thành công, cần leo thang ngay.
Lab 2 — Threat hunting trong Linux log (Bash)
OS: Ubuntu 22.04 · Tool: Bash
# Top IP tấn công SSH brute force
grep "Failed password" /var/log/auth.log | \
awk '{print $11}' | sort | uniq -c | sort -rn | head -20
# Danh sách username bị tấn công
grep "Failed password" /var/log/auth.log | \
awk '{print $9}' | sort | uniq -c | sort -rn | head -20
# Xem đăng nhập SSH thành công — ai đã vào được?
grep "Accepted password\|Accepted publickey" /var/log/auth.log | \
awk '{print $9, $11}' | sort | uniq -c | sort -rn
# Log lỗi hệ thống trong 1 giờ qua — IOC cấp hệ thống
journalctl --since "1 hour ago" -p err --no-pager | tail -50
# Kiểm tra sudo usage — ai đã dùng sudo và làm gì?
grep "sudo:" /var/log/auth.log | grep "COMMAND" | tail -30
# Tìm kiếm kết nối mạng bất thường
ss -tlnp | grep -v "127.0.0.1\|::1"
✅ Kết quả mong đợi / Expected output: IP nào có hàng trăm lần thất bại là IOC brute force — add vào blocklist (fail2ban). Nếu thấy đăng nhập thành công từ IP lạ — IOC compromise. Sudo log cho thấy lệnh nào được thực thi với quyền root. Threat hunting thực tế: tìm username lạ (không phải user thật) được dùng brute force — thường là username mặc định như admin, test, oracle.
3. Tình huống doanh nghiệp / Real-world scenario
Bối cảnh:
SIEM phát cảnh báo lúc 2:37 sáng: 847 lần đăng nhập thất bại vào portal HR từ một IP tại Romania trong 15 phút, tiếp theo là 1 lần đăng nhập thành công với tài khoản của trưởng phòng kế toán. Ngay sau đó, tài khoản này truy cập vào thư mục lưu báo cáo tài chính và tải về 3.2 GB dữ liệu.
Phân tích và xử lý:
- Threat modeling: STRIDE → Spoofing (dùng credential giả), Information Disclosure (lộ dữ liệu tài chính), Elevation of Privilege (nếu tài khoản kế toán có quyền cao).
- IOC thu thập: IP Romania (IOC network), tài khoản bị compromise (IOC user), time pattern 2:37 sáng (IOA behavioral), volume 3.2 GB trong thời gian ngắn (IOA anomaly).
- Containment ngay: Block IP, disable tài khoản, revoke active sessions, isolate hệ thống HR portal.
- CVSS Assessment: Exploit đơn giản (AV:N, AC:L), không cần đặc quyền (PR:N), tác động Confidentiality: High → Base Score ~ 9.1 Critical.
- Threat intel sharing: Publish IP và IOC lên TAXII feed nội bộ để các hệ thống khác cập nhật blocklist.
Bài học: IOA (upload bất thường lúc 2:37 sáng) phát hiện attack đang diễn ra. IOC (IP Romania) giúp block và threat intel sharing. Cả hai cần thiết cho SIEM correlation rule hiệu quả.
4. Tự kiểm tra / Knowledge check
- STRIDE phân loại mối đe dọa theo tiêu chí gì? Đặc điểm "Repudiation" liên quan đến yêu cầu bảo mật nào?
- Một lỗ hổng CVSS Base Score 9.5 trên máy chủ dev offline. Environmental Score nên điều chỉnh thế nào? Tại sao?
- Phân biệt IOC và IOA. Loại nào hữu ích hơn cho phát hiện sớm và tại sao?
- SIEM phát cảnh báo "2000 failed logins trong 1 phút". Đây là true positive hay có thể là false positive? Cần thu thập thêm thông tin gì?
- STIX và TAXII phục vụ mục đích gì trong threat intelligence ecosystem?