Nếu coi toàn bộ lĩnh vực an toàn thông tin như một hệ thống tri thức thì:
- CVE sẽ trả lời: Có lỗ hổng nào?
- CWE sẽ trả lời: Lỗi lập trình nằm ở đâu?
- CAPEC sẽ trả lời: Kẻ tấn công sẽ khai thác lỗi đó như thế nào?
- MITRE ATT&CK sẽ trả lời: Sau khi khai thác thành công, attacker sẽ làm gì tiếp theo?
Khác với CVE, CAPEC không mô tả một lỗ hổng cụ thể trên một sản phẩm hay phiên bản phần mềm nhất định. Thay vào đó, CAPEC mô tả một mẫu tấn công (Attack Pattern), tức là cách thức hoặc phương pháp mà kẻ tấn công sử dụng để khai thác một hoặc nhiều điểm yếu. Vì là mô hình tấn công mang tính tổng quát, một CAPEC có thể áp dụng cho nhiều ứng dụng, nền tảng và công nghệ khác nhau nếu chúng tồn tại các điểm yếu (CWE) tương tự. Mỗi mẫu tấn công trong CAPEC được định danh bằng một mã ID duy nhất. Chẳng hạn, CAPEC-66 mô tả mẫu tấn công SQL Injection, bao gồm các điều kiện tiên quyết, quy trình khai thác, hậu quả, biện pháp giảm thiểu và mối liên hệ với các điểm yếu (CWE) tương ứng. Mối quan hệ thường được biểu diễn ý hiểu như sau.
CVE
▼
CWE (Điểm yếu)
▼
CAPEC (Khai thác điểm yếu như thế nào)
▼
MITRE ATT&CK (Kỹ thuật được sử dụng trong chiến dịch)
Nếu xem phần Execution Flow của CAPEC-66 (SQL Injection), chúng ta sẽ thấy CAPEC không chỉ nói rằng "đây là một cuộc tấn công SQL Injection", mà còn mô tả toàn bộ chuỗi các bước mà kẻ tấn công thực hiện để đạt được mục tiêu. Có thể hình dung Execution Flow như một kịch bản (playbook) hoặc sơ đồ tư duy của attacker. Nhờ đó, người học Pentest không chỉ biết phải gửi payload gì, mà còn hiểu vì sao payload đó có tác dụng và ứng dụng phản ứng như thế nào ở từng giai đoạn.
Input
▼
No Validation
▼
SQL Parser
▼
Execute SQL
▼
Extract Data
| Bước | Ý nghĩa |
|---|---|
| Input | Kẻ tấn công xác định điểm nhập liệu có khả năng ảnh hưởng đến câu lệnh SQL, chẳng hạn như tham số URL, form đăng nhập, tham số trong API, giá trị hoặc tên cookie hoặc thậm chí trong cả HTTP Header. |
| No Validation | Dữ liệu đầu vào không được kiểm tra hoặc lọc đúng cách, hoặc có kiểm tra nhưng bị bypass bằng một cách nào đó. Đây là điều kiện tiên quyết để SQL Injection xảy ra. |
| SQL Parser | Ứng dụng ghép dữ liệu đầu vào vào câu lệnh SQL và chuyển tới Database Management System (DBMS). Trình phân tích cú pháp (SQL Parser) của DBMS hiểu phần dữ liệu độc hại như một phần của câu lệnh SQL hợp lệ thay vì dữ liệu thông thường. |
| Execute SQL | DBMS thực thi câu lệnh SQL đã bị thay đổi. Tại thời điểm này, attacker có thể thay đổi logic truy vấn, đọc dữ liệu, ghi dữ liệu hoặc thực thi các chức năng nguy hiểm tùy theo quyền của tài khoản cơ sở dữ liệu. |
| Extract Data | Kẻ tấn công quan sát phản hồi từ ứng dụng để thu thập dữ liệu. Dữ liệu có thể được trả về trực tiếp (Union-based), gián tiếp thông qua thông báo lỗi (Error-based), hoặc suy luận từ thời gian phản hồi và hành vi của ứng dụng (Blind SQL Injection). |
Nhiều người nghĩ CAPEC chỉ là một cơ sở dữ liệu để tham khảo. Thực tế, giá trị của nó nằm ở việc chuẩn hóa tư duy tấn công. Một Security Researcher có thể tiếp cận một mã nguồn theo chuỗi suy luận sau:
Đọc code
▼
Xác định CWE
▼
Tra CAPEC để biết các hướng khai thác
▼
Thiết kế testcase để thử nghiệm các điểm bất thường
▼
Tìm Primitive (Cái gì đó để bạn confirm đó là bug)
▼
Ghép thành Exploit
Primitive là khả năng mà kẻ tấn công đạt được sau khi khai thác thành công một điểm yếu. Một primitive riêng lẻ thường chưa đủ nguy hiểm. Ví dụ, chỉ với SQL Injection không thì chưa chắc đã nguy hiểm. Nhưng nếu từ SQL Injection ấy, mà DBMS có khả năng thực thi lệnh thông qua một function nào đó (một primitive thứ hai), kết hợp chúng nó lại với nhau, chúng có thể dẫn đến việc chiếm quyền hoàn toàn hệ thống. Tóm lại, Primitive mà là một "viên gạch" cơ bản để từ đó tạo ra một chuỗi, các bước khai thác hoàn chỉnh (exploit chain).
Trong khi đó, một Pentester / Vulnerability Assesment thường đi theo hướng ngược lại
Quan sát chức năng
▼
Nhận diện Attack Surface (nhét input được vào chỗ nào)
▼
Đối chiếu với các Attack Pattern trong CAPEC
▼
Xây dựng kịch bản theo Attack Pattern đó
▼
Chứng minh khả năng khai thác bằng việc thử liên tục các kịch bản và TÌM RA ĐIỂM KHÁC BIỆT
Sau khi khai thác thành công SQL Injection từ Website Public Internet, để chiếm quyền kiểm soát Database (Database Composmise) thì câu chuyện mới chỉ dừng ở khai thác ban đầu (Initial Exploitation).
Website Public Internet
▼
MITRE ATT&CK : Exploit Public Facing Application (T1190)
▼
CAPEC-66
▼
CWE-89
▼
Database compromise
Một nhóm APT sẽ không dừng lại sau khi đọc được dữ liệu từ cơ sở dữ liệu. Mục tiêu của họ thường là xâm nhập lâu dài, đánh cắp thông tin hoặc kiểm soát toàn bộ hệ thống một cách SÂU và RỘNG. ATT&CK tập trung vào hành vi của adversary trong toàn bộ chuỗi tấn công. Sau khi chiếm quyền kiểm soát Public Website Internet, chuỗi hành động của kẻ tấn công sau đó có thể diễn ra như sau.
Credential Dumping từ Database của Public Website Internet
▼
Web Shell Upload
▼
Command Execution
▼
Credential Dumping tài khoản trên máy chủ
▼
Lateral Movement
▼
Data Exfiltration
Nếu ánh xạ sang MITRE ATT&CK, toàn bộ chuỗi này sẽ trở thành một tập hợp các Techniques.
| Giai đoạn | MITRE ATT&CK Technique |
|---|---|
| Thu thập tài khoản | T1003 – Database Credential Dumping |
| Upload web shell | T1105 – Ingress Tool Transfer |
| Thực thi lệnh | T1059 – Command and Scripting Interpreter |
| Tiếp tục thu thu thập tài khoản hệ điều hành | T1003 – OS Credential Dumping |
| Tìm cách di chuyển ngang tới các máy tính khác (có thể sử dụng tài khoản đã đánh cắp để đăng nhập vào máy chủ khác ngang hàng) | T1021 – Remote Services |
| Đánh cắp dữ liệu | T1041 – Exfiltration Over C2 Channel |
Có thể thấy, CAPEC và MITRE ATT&CK không thay thế nhau mà bổ sung cho nhau. Nếu CAPEC mô tả phương pháp khai thác một điểm yếu, thì ATT&CK mô tả những kỹ thuật mà attacker sử dụng sau khi đã xâm nhập thành công.
Minh hoạ bên trên cũng là ví dụ điển hình cho chiến dịch của nhóm APT28 (còn được gọi là Fancy Bear), được nhiều báo cáo phân tích trong nhiều năm. Nhóm này thường nhắm đến các cơ quan chính phủ, tổ chức quân sự, doanh nghiệp quốc phòng, viện nghiên cứu và các tổ chức quốc tế tại châu Âu và Bắc Mỹ. Thời kỳ đầu, chúng tập trung khai thác các dich vụ, ứng dụng đang mở truy cập Internet (Internet-facing) mà có tồn tại các lỗ hổng như SQL Injection.
APT28 đã khai thác tối đa nhiều CAPEC trong suốt các chiến dịch:
- CAPEC-66 – SQL Injection
- CAPEC-126 – Path Traversal
- CAPEC-88 – OS Command Injection
- CAPEC-201 – XML External Entity (XXE)
- CAPEC-664 – Server-Side Request Forgery (SSRF)
Không có một kỹ thuật nào đủ hay duy nhất để tạo nên một chiến dịch tấn công APT. Một lỗ hổng như SQL Injection, Remote Code Execution, hay Path Traversal chỉ đóng vai trò là điểm khởi đầu (Initial Access) châm ngòi cho cuộc tấn công mà thôi.