SSCP Domain 4 · 14%

Xử lý sự cố & Phục hồi

Incident Response & Recovery

Từ kế hoạch IR đến điều tra pháp y số: vòng đời NIST SP 800-61, thu thập chứng cứ theo thứ tự dễ bay hơi, phân tích memory/disk/network, và hoạt động hậu sự cố để không lặp lại lỗi tương tự.

Mục tiêu chương / Learning objectives

1. Lý thuyết cốt lõi / Core theory

1.1. IR Plan — Kế hoạch xử lý sự cố (Incident Response Plan)

IR Plan cần có: Scope (loại sự cố nào được kích hoạt — malware, data breach, DDoS, insider threat); Roles & Responsibilities (IR Lead, Technical Analyst, Legal Counsel, PR/Communications, Executive Sponsor); Communication Tree (ai thông báo ai và theo kênh nào — email vs phone vs encrypted messaging); Escalation Matrix (sự cố nào cần báo cáo lên C-level, cơ quan pháp luật, regulators); Retention Policy (lưu chứng cứ bao lâu để phục vụ điều tra và tuân thủ).

Phân loại sự cố (Incident Classification): P1 Critical (ảnh hưởng toàn bộ business, data breach xác nhận) → IR Lead + CISO + Legal trong 15 phút. P2 High (ransomware cô lập, hệ thống quan trọng down) → IR Team trong 1 giờ. P3 Medium (malware cô lập) → business hours. P4 Low (policy violation, failed attempts) → standard ticket queue.

1.2. Vòng đời NIST SP 800-61 Rev 2 (IR Lifecycle)

Bốn giai đoạn:

1.3. Digital Forensics — Thu thập chứng cứ (Evidence Collection)

Order of Volatility (thứ tự thu thập từ dễ mất nhất đến bền vững nhất): CPU registers & cache → RAM (bộ nhớ) → Network connections & routing tables → Running processes → Temporary files → Disk storage → Backup/archival media. Thu thập RAM trước khi tắt máy vì tắt máy = mất toàn bộ dữ liệu RAM.

Chain of Custody: Ghi lại ai thu thập, khi nào, thiết bị gì, hash của evidence (MD5/SHA-256 để chứng minh không bị thay đổi). Không duy trì chain of custody → chứng cứ không được chấp nhận tại tòa án.

Disk imaging vs Live forensics: dd tạo bit-for-bit copy của toàn bộ disk (dead forensics — máy đã tắt). FTK Imager/Autopsy phân tích disk image. Live forensics thu thập RAM và trạng thái mạng trong khi máy vẫn chạy — ưu tiên khi nghi ngờ malware fileless sống hoàn toàn trong RAM.

1.4. Malware Analysis cơ bản & SOAR

Static analysis: Phân tích file mà không chạy — strings, file type, PE header, imports, hash check qua VirusTotal. Dynamic analysis: Chạy malware trong sandbox (Cuckoo Sandbox, Any.run) để quan sát hành vi: file tạo, registry changes, network connections, process spawned.

SOAR (Security Orchestration, Automation and Response): nền tảng tự động hóa quy trình IR. Khi SIEM phát cảnh báo brute force, SOAR tự động: block IP tại firewall → disable tài khoản bị tấn công → mở ticket trong ITSM → gửi notification cho IR team. Giảm MTTR từ giờ xuống phút.

1.5. Post-Incident Activities — PIR & RCA

PIR (Post-Incident Review) / Lessons Learned meeting trong 2 tuần sau incident. Nội dung: timeline đầy đủ, root cause (vd: unpatched CVE-2024-XXXX), contributing factors (thiếu MFA, SIEM rule chưa cover), impact (số user bị ảnh hưởng, dữ liệu bị lộ, downtime, cost ước tính), corrective actions với owner và deadline. Kết quả PIR được đưa vào cập nhật IR Plan và security controls.

2. Bài thực hành / Hands-on labs

🖥️ Nền tảng / Platform: Windows 11 + Ubuntu 22.04 LTS
🛠️ Công cụ / Tools: PowerShell 7, Bash

Lab 1 — Forensic Triage trên Windows (PowerShell)

OS: Windows 11 · Tool: PowerShell 7 (Run as Administrator) · Thực hiện trên máy nghi ngờ bị compromise

# BƯỚC 1: Thu thập thông tin RAM (processes) — volatile nhất
# Top 10 process ngốn RAM nhất
Get-Process | Sort-Object WorkingSet -Descending |
    Select-Object -First 10 Name, Id, Path, CPU, @{N='RAM_MB';E={[math]::Round($_.WorkingSet/1MB,1)}} |
    Format-Table -AutoSize

# BƯỚC 2: Kết nối mạng đang thiết lập — phát hiện C2 beacon
Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' } |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess |
    Format-Table -AutoSize

# BƯỚC 3: Map process đến kết nối mạng — tìm process đang kết nối ra ngoài
$conn = Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' -and $_.RemotePort -eq 443 } |
    Select-Object -First 1
if ($conn) {
    $proc = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue
    Write-Host "Process $($proc.Name) (PID $($proc.Id)) connected to $($conn.RemoteAddress):$($conn.RemotePort)"
    Write-Host "Path: $($proc.Path)"
}

# BƯỚC 4: Kiểm tra registry persistence — startup locations
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" |
    Format-List *
Get-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" |
    Format-List *

# BƯỚC 5: Scheduled Tasks bất thường — persistence phổ biến
Get-ScheduledTask | Where-Object { $_.State -eq 'Ready' } |
    Select-Object TaskName, @{N='Action';E={$_.Actions.Execute}} |
    Where-Object { $_.Action -match "powershell|cmd|wscript|mshta|rundll32" }

✅ Kết quả mong đợi / Expected output: Danh sách process với RAM usage và path thực thi. Process không có path rõ ràng hoặc chạy từ %TEMP% là đáng ngờ. Kết nối established đến IP lạ ngoài port 80/443 thông thường cần điều tra. Registry Run key chứa entry lạ = persistence mechanism. Scheduled task chạy PowerShell với encoded command = IOC mạnh.

Lab 2 — Linux Forensic Triage (Bash)

OS: Ubuntu 22.04 · Tool: Bash (sudo)

# BƯỚC 1: Process tree — xem toàn bộ cấu trúc process
ps auxf | head -40

# BƯỚC 2: Kết nối mạng đang thiết lập
lsof -i -n -P | grep ESTABLISHED

# BƯỚC 3: Netstat chi tiết với PID
netstat -antp 2>/dev/null | grep ESTABLISHED

# BƯỚC 4: Kiểm tra file descriptor của process đáng ngờ
# Thay 'suspicious_name' bằng tên process cần điều tra
SPID=$(pgrep -n bash)
ls -la /proc/$SPID/fd 2>/dev/null | head -20
cat /proc/$SPID/maps 2>/dev/null | grep -v ".so" | head -10

# BƯỚC 5: File mới tạo trong /tmp sau /etc/passwd (gần đây)
find /tmp /var/tmp -newer /etc/passwd -type f 2>/dev/null

# BƯỚC 6: Xem ai đang đăng nhập và lịch sử
who
last -n 20

# BƯỚC 7: Cron jobs hệ thống — persistence vector
ls -la /etc/cron* /var/spool/cron/crontabs/ 2>/dev/null
crontab -l 2>/dev/null

✅ Kết quả mong đợi / Expected output: ps auxf hiển thị cây process — process cha lạ (không phải systemd/sshd) spawn bash là đáng ngờ. File trong /tmp mới tạo gần đây (đặc biệt binary executable) = IOC mạnh. last hiển thị lịch sử đăng nhập — thời gian bất thường hoặc IP lạ cần điều tra. /proc/PID/maps hiển thị memory map — malware fileless thường không có backing file trên disk.

3. Tình huống doanh nghiệp / Real-world scenario

Bối cảnh:

Thứ Hai 8:15 sáng, nhân viên báo cáo không mở được file Word — có thông báo đòi tiền chuộc bằng Bitcoin. EDR alert: svchost.exe đang mã hóa hàng nghìn file trên network share. Đây là ransomware tấn công lan sang file server qua SMB.

NIST 800-61 Response:

  1. Detection & Analysis (T+0 phút): Xác nhận ransomware thông qua EDR alert + file extension lạ (.encrypted). Triage: bắt đầu từ máy bị ảnh hưởng đầu tiên (Patient Zero).
  2. Short-term Containment (T+5 phút): Ngắt ngay network adapter của máy Patient Zero và các máy bị ảnh hưởng. Disable tài khoản người dùng liên quan. Isolate network segment chứa file server.
  3. Evidence Preservation (T+10 phút): Dump RAM của Patient Zero trước khi tắt (dùng Magnet RAM Capture hoặc WinPmem). Tạo disk image. Hash tất cả evidence.
  4. Eradication (T+2 giờ): Xác định infection vector (phishing email? malicious macro?). Xóa toàn bộ ransomware binary và persistence. Vá lỗ hổng bị khai thác.
  5. Recovery (T+4 giờ): Restore file server từ backup sạch nhất trước thời điểm tấn công. Monitor chặt 72 giờ sau khôi phục.
  6. PIR (T+1 tuần): RCA: user mở macro trong email phishing. Action: triển khai macro blocking policy + security awareness training tức thì.

Bài học: Containment nhanh (ngắt mạng trong 5 phút đầu) giới hạn thiệt hại. Backup offline/immutable là "get out of jail free card" cho ransomware — không có backup sạch = không có recovery.

4. Tự kiểm tra / Knowledge check

  1. Order of Volatility là gì? Tại sao phải thu thập RAM trước khi thu thập disk image?
  2. Chain of Custody quan trọng như thế nào trong tố tụng hình sự về tội phạm mạng?
  3. Phân biệt short-term containment và long-term containment. Cho ví dụ mỗi loại.
  4. SOAR giảm MTTR bằng cách nào? Đưa ra ví dụ playbook tự động hóa cụ thể.
  5. Tại sao nên thực hiện PIR sau mỗi sự cố dù nhỏ? PIR khác RCA ở điểm gì?
C03: Nhận diện & Phân tích rủi ro Chương 5: Mật mã học
Thực hành trên công cụPowerShell 7 · Bash
Nền tảngWindows 11 · Ubuntu 22.04
Thời điểm phát hànhQ2/2026
Ngày biên soạn24/05/2026
Người biên soạnTrần Văn Hòa (MCT)
Phiên bảnv1.0
Zalo