diff --git a/content/Incident Response/Computer Security Incident Handling Guide (NIST SP 800-61 Revision 2).md b/content/Incident Response/Computer Security Incident Handling Guide (NIST SP 800-61 Revision 2).md new file mode 100644 index 000000000..f6bd42ac5 --- /dev/null +++ b/content/Incident Response/Computer Security Incident Handling Guide (NIST SP 800-61 Revision 2).md @@ -0,0 +1,1255 @@ + +#cyber_security #soc #incident_response #nist +### **1. Giới thiệu chung** + +**Tóm tắt nội dung chính** + +Phần này giúp ta hiểu: tại sao NIST lại soạn thảo tài liệu này, ai nên đọc nó và cách nó được tổ chức ra sao. Đây là phần “đặt nền móng” trước khi đi sâu vào kỹ thuật xử lý sự cố (incident handling). + +--- + +#### **1.1 Thẩm quyền và vai trò của NIST** + +**NIST (National Institute of Standards and Technology)** là một tổ chức thuộc chính phủ Hoa Kỳ, có trách nhiệm thiết lập các tiêu chuẩn và hướng dẫn để đảm bảo an ninh thông tin cho các cơ quan liên bang Mỹ, theo luật **FISMA (Federal Information Security Management Act)**. + +Mặc dù đối tượng chính là các cơ quan chính phủ, nhưng tài liệu của NIST cũng rất hữu ích cho các tổ chức tư nhân và quốc tế – miễn là họ có nhu cầu thiết lập năng lực xử lý sự cố chuyên nghiệp và hiệu quả. + +👉 **Ứng dụng thực tế:** + +Nếu bạn làm ở ngân hàng, công ty công nghệ, cơ quan nhà nước, hay bất kỳ đơn vị nào có hệ thống CNTT quan trọng, bạn đều có thể dựa vào tài liệu này để xây dựng **quy trình xử lý sự cố** cho tổ chức mình – thay vì “chữa cháy” theo kiểu ngẫu hứng. + +--- + +#### **1.2 Mục đích và phạm vi tài liệu** + +Mục tiêu chính của tài liệu này là: +- Hướng dẫn các tổ chức **xây dựng năng lực phản ứng sự cố (Incident Response Capability)** +- Đưa ra quy trình **phát hiện, phân tích, xử lý và phục hồi sau sự cố** +- Cung cấp các lời khuyên áp dụng được với nhiều nền tảng công nghệ khác nhau + +Điểm hay là tài liệu không bó buộc theo một hệ điều hành hay phần mềm cụ thể – tức là dù bạn dùng Windows, Linux, hệ thống máy chủ vật lý hay cloud, bạn đều có thể áp dụng được. + +👉 **Ứng dụng thực tế:** + +Nhiều tổ chức ở Việt Nam khi bị tấn công (ví dụ: mã hóa tống tiền – ransomware) thường **không biết phải làm gì trước**. Tài liệu này cung cấp một **khung chuẩn** để không hoảng loạn và xử lý bài bản, ví dụ: xác định sự cố, cách cô lập, thu thập bằng chứng, thông báo, phục hồi,… + +--- + +#### **1.3 Đối tượng người đọc** + +Tài liệu này hướng đến nhiều vai trò khác nhau trong tổ chức: +- **CSIRT/IR team**: Đội xử lý sự cố +- **Sysadmin/Netadmin**: Quản trị hệ thống và mạng +- **CISO/CIO**: Lãnh đạo về an toàn thông tin +- **IT Helpdesk**: Bộ phận hỗ trợ người dùng +- **Pháp lý, truyền thông nội bộ**: Có thể liên quan trong các giai đoạn thông báo hoặc hậu sự cố + +👉 **Ứng dụng thực tế:** + +Ngay cả khi bạn **không phải chuyên gia bảo mật**, việc hiểu được các bước xử lý sự cố sẽ giúp bạn **phối hợp tốt hơn** khi khủng hoảng xảy ra. Ví dụ: nếu bạn là quản lý dự án hoặc giám đốc IT, bạn cần biết khi nào nên báo cho ai, cần báo cáo những gì, và nên tránh hành động gì gây ảnh hưởng bằng chứng. + +--- + +#### **1.4 Cấu trúc tài liệu** + +Tài liệu gồm 4 phần chính và nhiều phụ lục: +- **Phần 2**: Tổ chức năng lực xử lý sự cố (chính sách, đội ngũ, quy trình) +- **Phần 3**: Các bước xử lý sự cố (phát hiện, phân tích, phản ứng, phục hồi) +- **Phần 4**: Phối hợp và chia sẻ thông tin +- **Phụ lục**: Tình huống thực tế, dữ liệu cần thu thập, FAQ, công cụ tham khảo,… + +👉 **Ứng dụng thực tế:** + +Nếu bạn được giao nhiệm vụ viết **kế hoạch xử lý sự cố** cho công ty, thì đây là tài liệu có thể dùng làm xương sống. Chỉ cần theo dõi đúng các phần, bạn sẽ biết phải có gì trong **chính sách**, **quy trình**, cần xây dựng đội ngũ ra sao và tập huấn thế nào. + + +--- + + +### **2. Tổ chức năng lực phản ứng sự cố (Incident Response Capability)** + +**Tóm tắt nội dung chính** + +Phần này trình bày lý do tổ chức cần xây dựng một đội ngũ và quy trình để xử lý các sự cố an ninh mạng. NIST không chỉ nói về mặt kỹ thuật, mà còn đề cập đến **chính sách, mô hình tổ chức, nhân sự và phối hợp nội bộ**. + +--- + +#### **2.1 Phân biệt Sự kiện (Event) và Sự cố (Incident)** + +Đây là một trong những khái niệm dễ gây nhầm lẫn nhất khi mới tiếp cận chủ đề xử lý sự cố. + +**Event (Sự kiện) là gì?** + +> **Event** là bất kỳ hoạt động nào có thể quan sát được trên hệ thống hoặc mạng. Nó **không nhất thiết là xấu**. + +Ví dụ: +- Người dùng đăng nhập vào hệ thống → là một event. +- Máy chủ nhận yêu cầu truy cập web → cũng là một event. +- Firewall chặn một gói tin đáng ngờ → cũng là một event. + +**Incident (Sự cố) là gì?** + +> **Incident** là khi xảy ra **vi phạm hoặc đe dọa đến việc vi phạm** các chính sách an ninh thông tin, hoặc các hành vi sử dụng hệ thống sai quy định. + +Một sự kiện chỉ được gọi là **sự cố** khi: +- Nó gây ra hậu quả về an toàn thông tin (mất mát, xâm nhập, tấn công,…) +- Nó **có khả năng gây ra vi phạm** (ví dụ: hacker đang dò quét lỗ hổng) + +**So sánh nhanh: Event vs Incident** + +|**Tiêu chí**|**Event (Sự kiện)**|**Incident (Sự cố)**| +|---|---|---| +|Tính chất|Trung lập, có thể bình thường hoặc bất thường|Luôn là hành vi gây nguy hại hoặc vi phạm| +|Tần suất|Diễn ra liên tục hàng giờ|Ít hơn, nhưng có ảnh hưởng lớn hơn| +|Ví dụ|Người dùng đăng nhập, firewall log, ping,…|Ransomware tấn công hệ thống, đánh cắp dữ liệu, phishing…| +|Phản ứng|Chưa cần phản ứng|Cần xử lý khẩn cấp hoặc có quy trình rõ ràng| + +👉 **Ứng dụng thực tế:** + +Tổ chức cần có các công cụ như **SIEM** hoặc **Hệ thống giám sát log** để lọc ra hàng ngàn **event**, từ đó phát hiện đâu là **incident**. Điều này giúp tránh **báo động giả (false positives)** và không bỏ sót sự cố nghiêm trọng. + +--- + +#### **2.2 Vì sao cần phản ứng sự cố (Why Incident Response is Necessary)** + +**Vấn đề đặt ra** + +Trong thời đại ngày nay, hầu như tổ chức nào cũng có thể bị: +- Tấn công mạng +- Mất dữ liệu khách hàng +- Lộ thông tin cá nhân +- Gián đoạn dịch vụ do virus hoặc DDoS + +Vì vậy, không thể chỉ “hy vọng là không có gì xảy ra” mà cần chuẩn bị trước để **phản ứng kịp thời khi sự cố xảy ra**. + +**Lợi ích của việc xây dựng năng lực phản ứng sự cố** + +1. **Giảm thiểu thiệt hại** + - Xử lý nhanh giúp giảm thời gian dịch vụ bị gián đoạn, giảm mất mát dữ liệu. +2. **Tuân thủ pháp lý** + - Đối với các tổ chức chính phủ và tài chính, luật yêu cầu phải có đội xử lý sự cố và báo cáo định kỳ (ví dụ: FISMA, OMB A-130 ở Mỹ). +3. **Chuẩn hóa phản ứng** + - Có quy trình giúp nhân viên không lúng túng, biết nên báo cáo cho ai, làm gì trước tiên. +4. **Phân tích để cải thiện** + - Mỗi sự cố là một “bài học” quý. Ghi lại sự cố và rút kinh nghiệm sẽ giúp tổ chức ngày càng vững chắc hơn. +5. **Phòng ngừa tốt hơn** + - Khi đã xử lý một sự cố, tổ chức sẽ dễ phát hiện những điểm yếu tồn tại để khắc phục sớm hơn. + +👉 **Ví dụ thực tế:** +- **Một ngân hàng bị gửi email phishing đến nhân viên.** Nếu không có đội IR theo dõi, email sẽ lọt vào và người dùng bấm vào link → lộ thông tin. +- Nhưng nếu đã có quy trình: + - Có hệ thống phát hiện email lạ + - Nhân viên được đào tạo báo cáo kịp thời + - Đội IR can thiệp sớm: chặn tên miền, reset mật khẩu, cảnh báo toàn công ty + → Nguy cơ bị đánh cắp tiền hoặc dữ liệu sẽ giảm mạnh. + +--- + +#### **2.3 Chính sách, kế hoạch và quy trình phản ứng sự cố** + +**Tóm tắt nội dung chính** + +Không thể phản ứng hiệu quả nếu không có sẵn **chính sách rõ ràng**, **kế hoạch hành động**, và **quy trình chi tiết**. Phần này giúp bạn hiểu tổ chức cần xây dựng gì trước khi sự cố xảy ra, và cụ thể từng tài liệu nên bao gồm những nội dung gì. + +--- + +##### **2.3.1 Nội dung chính sách (Incident Response Policy)** + +**Chính sách (Policy)** là văn bản cấp cao nhất, thể hiện **cam kết của lãnh đạo** và quy định những nguyên tắc chung khi xử lý sự cố. + +**Các nội dung chính cần có trong chính sách:** +1. **Cam kết của ban lãnh đạo** + - Xác nhận đây là hoạt động quan trọng, có ngân sách và được ưu tiên. +2. **Mục tiêu chính sách** + - Bảo vệ tài sản thông tin, giảm thiểu rủi ro và thiệt hại từ sự cố. +3. **Phạm vi áp dụng** + - Áp dụng cho tất cả hệ thống, người dùng, nhà cung cấp,… có liên quan đến tài nguyên thông tin. +4. **Định nghĩa sự cố và các thuật ngữ** + - Để đảm bảo ai cũng hiểu đúng về “incident”, “event”, “breach”… +5. **Vai trò, trách nhiệm, quyền hạn** + - Ai là người được phép ra quyết định ngắt kết nối? + - Ai được phép thu thập log hoặc tiếp cận dữ liệu nhạy cảm? + - Phân định rõ vai trò giữa CSIRT, IT, pháp lý, HR,… +6. **Phân loại mức độ sự cố** + - Theo mức độ nghiêm trọng để ưu tiên xử lý. +7. **Chỉ số đo lường hiệu quả** + - Ví dụ: thời gian phản hồi trung bình, số sự cố đã xử lý đúng hạn,… +8. **Mẫu biểu báo cáo và liên hệ** + - Có form chuẩn để ghi nhận sự cố, báo cáo, liên lạc,… + +👉 **Ứng dụng thực tế:** + +Khi xảy ra sự cố, nếu không có chính sách rõ ràng thì rất dễ **rối loạn trách nhiệm**, ai cũng sợ đụng vào. Có chính sách rồi thì việc xử lý có thể được thực thi nhanh gọn, đúng quyền hạn. + +--- + +##### **2.3.2 Nội dung kế hoạch (Incident Response Plan – IRP)** + +**Kế hoạch (Plan)** là văn bản cụ thể hóa chính sách – hướng dẫn tổ chức làm thế nào để xây dựng, duy trì và cải tiến năng lực phản ứng sự cố. + +**Các thành phần chính của kế hoạch:** +1. **Sứ mệnh và mục tiêu của đội IR** + - Ví dụ: “Đảm bảo thời gian phản hồi sự cố nghiêm trọng dưới 4 giờ” +2. **Chiến lược và mục tiêu dài hạn** + - Nâng cấp công cụ, huấn luyện định kỳ, mở rộng đội ngũ, phối hợp với bên ngoài,… +3. **Được lãnh đạo phê duyệt** + - Là cơ sở để xin ngân sách, nhân sự và thực thi. +4. **Mô hình đội phản ứng sự cố** + - Trung tâm tập trung (centralized) hay phân tán (distributed)? + - Làm việc 24/7 hay chỉ trong giờ hành chính? +5. **Cách liên lạc nội bộ và bên ngoài** + - Có sẵn danh sách liên hệ khẩn cấp (email, điện thoại, người thay thế,…) +6. **Tiêu chí đo lường hiệu quả kế hoạch** + - Ví dụ: % sự cố được xử lý trong SLA, % bài học rút ra sau mỗi sự cố,… +7. **Lộ trình nâng cao năng lực phản ứng sự cố** + - Đào tạo, diễn tập, cập nhật SOP, áp dụng công cụ SIEM,… + +👉 **Ứng dụng thực tế:** + +Khi công ty bị mã hóa toàn bộ dữ liệu bởi ransomware, một kế hoạch tốt sẽ giúp biết ngay: +- Ai được quyền ngắt kết nối hệ thống? +- Có bản backup không? Nằm ở đâu? +- Ai thông báo cho lãnh đạo? Cho khách hàng? + +--- + +##### **2.3.3 Nội dung quy trình (Procedure – SOP)** + +**Quy trình (Standard Operating Procedures – SOP)** là hướng dẫn cụ thể các bước cần làm trong từng tình huống cụ thể. + +**Nội dung cần có trong SOP:** +1. **Quy trình phát hiện và báo cáo sự cố** + - Nhân viên phát hiện → Báo cho bộ phận nào? Bằng hình thức nào? +2. **Quy trình phân tích và xác nhận sự cố** + - Ai phân tích log? Dựa vào công cụ nào? Bao lâu phải phản hồi? +3. **Quy trình phân loại và đánh giá mức độ nghiêm trọng** + - Sự cố có ảnh hưởng đến dữ liệu khách hàng? Có lan rộng không? +4. **Quy trình phản ứng: cô lập, xử lý, phục hồi** + - Khi nào cần ngắt kết nối? Khôi phục hệ thống từ đâu? +5. **Quy trình ghi nhận và lưu giữ bằng chứng** + - Có mẫu checklist nào? Ai phụ trách ghi log và chụp màn hình? +6. **Quy trình thông báo nội bộ và bên ngoài** + - HR, pháp lý, truyền thông có vai trò gì? +7. **Quy trình tổ chức lessons learned** + - Sau mỗi sự cố, tổ chức họp đánh giá, rút kinh nghiệm, cập nhật SOP. + +👉 **Ứng dụng thực tế:** + +SOP giúp mọi người **không bị rối** khi xảy ra khủng hoảng. Ví dụ: +- Một server bị nghi nhiễm mã độc → SOP hướng dẫn cụ thể: ai vào xem log, ai tách máy ra khỏi mạng, ai phụ trách thông báo, ai giữ nguyên hiện trạng để phục vụ forensics,… + +--- + +##### **2.3.4 Chia sẻ thông tin với bên ngoài** + +Chia sẻ thông tin khi xảy ra sự cố là việc **rất nhạy cảm** nhưng cũng rất cần thiết. Nếu làm không đúng, bạn có thể: +- Vi phạm pháp luật (về bảo mật dữ liệu cá nhân) +- Làm lộ thông tin nhạy cảm cho kẻ tấn công +- Gây mất niềm tin từ khách hàng hoặc đối tác + +**Nội dung cần chuẩn bị trong chính sách chia sẻ thông tin:** +1. **Các bên ngoài cần chia sẻ** + - Pháp luật: công an, Cục An toàn thông tin + - Đối tác kỹ thuật: ISP, nhà cung cấp phần mềm + - Khách hàng bị ảnh hưởng + - Truyền thông đại chúng (nếu cần thiết) +2. **Quy tắc chia sẻ** + - Ai được phép chia sẻ? Qua kênh nào? + - Chia sẻ thông tin nào và mức độ chi tiết ra sao? + - Cần có chữ ký số, email mã hóa hoặc NDA (hợp đồng bảo mật) không? +3. **Các tình huống nên chia sẻ** + - Phát hiện mã độc mới lây lan qua email + - Phát hiện tài khoản bị đánh cắp từ hệ thống bên ngoài +4. **Kịch bản phối hợp** + - Cần diễn tập trước với các bên ngoài để tránh lúng túng thật sự + +👉 **Ứng dụng thực tế:** + +Trong một công ty thương mại điện tử, nếu có dấu hiệu **lộ thông tin thẻ tín dụng khách hàng**, bộ phận phản ứng sự cố phải biết: +- Có nghĩa vụ báo cáo vụ việc cho **Cục An toàn thông tin**, hoặc ngân hàng? +- Có phải thông báo cho khách hàng không? +- Có thể chia sẻ hash của mã độc cho đội CERT để cùng phân tích không? + +--- + +#### **2.4 Cấu trúc đội ngũ phản ứng sự cố (Incident Response Team Structure)** + +**Tóm tắt nội dung chính** + +Đội phản ứng sự cố là “bộ não hành động” khi sự cố xảy ra. Phần này sẽ giúp bạn hiểu có những **mô hình tổ chức đội IR nào**, **cách chọn mô hình phù hợp**, và **các kỹ năng cần có trong đội**. Quan trọng hơn, làm sao để phối hợp tốt với các phòng ban còn lại trong công ty. + +--- + +##### **2.4.1 Các mô hình đội ngũ (IR Team Models)** + +Tùy theo quy mô, lĩnh vực và ngân sách, tổ chức có thể chọn 1 trong 3 mô hình sau: + +**1. Centralized (Tập trung)** + +Toàn bộ đội IR đặt tại một đơn vị chính – thường là trụ sở hoặc trung tâm CNTT. +- **Ưu điểm**: Dễ quản lý, đồng bộ quy trình, tiết kiệm chi phí +- **Nhược điểm**: Thiếu linh hoạt nếu có nhiều chi nhánh hoặc vùng hoạt động khác nhau + +👉 Phù hợp với: doanh nghiệp nhỏ, vừa; tổ chức chỉ hoạt động ở 1-2 địa điểm. + +**2. Distributed (Phân tán)** + +Các chi nhánh hoặc khu vực tự có đội IR riêng, báo cáo về trung tâm điều phối. +- **Ưu điểm**: Phản ứng nhanh tại chỗ, có hiểu biết đặc thù từng khu vực +- **Nhược điểm**: Dễ thiếu đồng bộ, khó duy trì chất lượng nhân sự đồng đều + +👉 Phù hợp với: tập đoàn lớn, ngân hàng có chi nhánh toàn quốc, doanh nghiệp đa quốc gia. + +**3. Coordinated/Hybrid (Phối hợp hoặc kết hợp)** + +Kết hợp cả 2: có đội IR trung tâm và các đầu mối kỹ thuật tại các bộ phận/chi nhánh. +- **Ưu điểm**: Cân bằng giữa quản lý và phản ứng nhanh +- **Nhược điểm**: Cần quy trình phối hợp tốt, rõ vai trò từng cấp + +👉 Phù hợp với: tổ chức có ngân sách tốt, cần vừa kiểm soát vừa linh hoạt. + +--- + +##### **2.4.2 Cách chọn mô hình phù hợp** + +Để chọn mô hình phù hợp, hãy trả lời 3 câu hỏi sau: + +|**Câu hỏi**|**Nếu câu trả lời là…**|**Gợi ý mô hình**| +|---|---|---| +|Công ty bạn hoạt động ở nhiều nơi?|Có → cần phản ứng nhanh ở địa phương|Distributed hoặc Hybrid| +|Có đủ ngân sách và nhân sự chuyên biệt?|Có → có thể xây đội riêng từng nơi|Distributed hoặc Hybrid| +|Muốn kiểm soát tập trung, giảm chi phí?|Có → muốn quy trình rõ ràng, tiết kiệm|Centralized| + +👉 **Ví dụ thực tế**: + +- **Startup CNTT nhỏ** → Chọn **centralized**, thuê 1-2 người IR chính. +- **Ngân hàng lớn với 100 chi nhánh** → Chọn **hybrid**, mỗi vùng có focal point, nhưng vẫn báo về SOC trung tâm. +- **Tập đoàn đa quốc gia** → Chọn **distributed**, mỗi quốc gia có một CSIRT. + +--- + +##### **2.4.3 Thành phần và kỹ năng nhân sự** + +Một đội IR hiệu quả không chỉ cần người biết kỹ thuật – mà còn cần cả những vai trò **hỗ trợ, điều phối, pháp lý**… + +**Vai trò và kỹ năng chính:** + +|**Vai trò**|**Kỹ năng cần có**| +|---|---| +|**Incident Handler**|Phân tích log, điều tra forensics, viết báo cáo sự cố| +|**Team Lead**|Quản lý sự kiện, điều phối công việc, giao tiếp với lãnh đạo| +|**Forensics Analyst**|Thu thập bằng chứng, phân tích hình ảnh hệ thống, malware| +|**Threat Analyst**|Theo dõi IOC, tình hình threat intelligence| +|**Communications Officer**|Giao tiếp nội bộ, thông báo sự cố, truyền thông công chúng| +|**Pháp lý (Legal)**|Xác định nghĩa vụ pháp lý khi lộ dữ liệu, xử lý bằng chứng| +|**HR / Compliance**|Phối hợp điều tra khi liên quan đến nhân sự nội bộ| + +👉 **Ứng dụng thực tế:** +- Nhân viên IR nên được huấn luyện định kỳ về: nhận diện phishing, điều tra malware, forensics cơ bản, dùng SIEM, dùng Splunk, ELK,… +- Nên có **sơ đồ thay thế (backup)** phòng khi người chính vắng mặt trong tình huống khẩn cấp. + +--- + +##### **2.4.4 Sự phối hợp nội bộ (Internal Coordination)** + +Đội IR không thể hoạt động đơn độc. Khi xảy ra sự cố, cần phối hợp với: + +**Các bộ phận cần phối hợp:** + +1. **IT Operations** + - Giúp cô lập máy, khôi phục hệ thống, cấp quyền truy cập +2. **Security Team** + - Phân tích log, hỗ trợ điều tra kỹ thuật chuyên sâu +3. **Helpdesk / Support** + - Nhận thông báo ban đầu từ người dùng, hướng dẫn thao tác +4. **Pháp lý & HR** + - Hỗ trợ xử lý liên quan đến hành vi nhân viên, quy định luật +5. **Truyền thông nội bộ & PR** + - Đảm bảo thông tin ra ngoài được kiểm soát và chính xác + +👉 **Kỹ thuật phối hợp hiệu quả:** +- Xây dựng **sơ đồ liên lạc khẩn cấp** +- Diễn tập xử lý sự cố định kỳ với tất cả bộ phận liên quan +- Dùng **playbook** rõ ràng: “ai làm gì khi sự cố X xảy ra” + +--- + +#### **2.5 Các dịch vụ mà đội phản ứng có thể cung cấp (Services Provided by the IR Team)** + +**Tóm tắt nội dung chính** + +Đội phản ứng sự cố không chỉ đơn thuần “dập lửa khi cháy” – mà còn có thể cung cấp rất nhiều dịch vụ **phòng ngừa, tư vấn và hỗ trợ an toàn thông tin**, góp phần bảo vệ tổ chức một cách chủ động. + +--- + +**Phân loại dịch vụ** + +NIST chia dịch vụ của đội IR thành 3 nhóm: + +##### **2.5.1. Dịch vụ phản ứng (Reactive Services)** + +Đây là nhiệm vụ “cốt lõi” – xử lý khi sự cố thực sự xảy ra. + +|**Dịch vụ**|**Mô tả thực tế**| +|---|---| +|**Xử lý sự cố (Incident Handling)**|Phát hiện – phân tích – xử lý – phục hồi – lessons learned| +|**Điều phối khẩn cấp**|Làm đầu mối điều phối khi khủng hoảng diễn ra| +|**Thu thập bằng chứng**|Forensics, lưu trữ log, hỗ trợ điều tra nội bộ hoặc pháp lý| + +👉 **Ví dụ:** Khi bị ransomware, đội IR sẽ tách máy bị nhiễm, phân tích mã độc, phục hồi từ backup, viết báo cáo,… + +--- + +##### **2.5.2. Dịch vụ phòng ngừa (Proactive Services)** + +Giúp tổ chức sẵn sàng ứng phó và giảm nguy cơ bị tấn công. + +|**Dịch vụ**|**Mô tả thực tế**| +|---|---| +|**Đào tạo và nâng cao nhận thức**|Tổ chức workshop về phishing, social engineering,…| +|**Phân tích lỗ hổng**|Hỗ trợ scan hệ thống, phát hiện điểm yếu bảo mật| +|**Đánh giá log định kỳ**|Kiểm tra các dấu hiệu bất thường trong log hệ thống| +|**Xây dựng playbook và SOP**|Cung cấp quy trình phản ứng cho các tình huống điển hình| +|**Thử nghiệm (Diễn tập)**|Tổ chức tabletop exercise, red team vs blue team| + +👉 **Ví dụ:** Đội IR tổ chức một cuộc diễn tập “phishing giả định” để kiểm tra mức độ cảnh giác của nhân viên. + +--- + +##### **2.5.3. Dịch vụ hỗ trợ (Security Quality Improvement)** + +Tư vấn để nâng cao chất lượng hệ thống bảo mật chung của tổ chức. + +|**Dịch vụ**|**Mô tả**| +|---|---| +|**Tư vấn xây dựng chính sách an toàn thông tin**|Hỗ trợ phòng IT hoặc CISO soạn chính sách phản ứng sự cố| +|**Đánh giá và cải tiến hệ thống SIEM**|Hướng dẫn cách lọc log, viết use case hiệu quả| +|**Phân tích xu hướng sự cố**|Rút ra các pattern từ sự cố cũ để phòng ngừa sự cố mới| + +👉 **Ví dụ:** Đội IR nhận thấy trong 3 tháng gần nhất có 20 sự cố từ USB dính malware → Kiến nghị ban hành chính sách **cấm cắm USB lạ vào hệ thống**. + +--- + +#### **2.6 Tổng kết và khuyến nghị (Summary and Recommendations)** + +**Tóm tắt nội dung chính** + +Phần này tổng hợp lại những điểm cốt lõi cần ghi nhớ khi xây dựng và vận hành năng lực phản ứng sự cố trong tổ chức. Đây là kim chỉ nam giúp bạn không bị “lạc hướng”. + +**Tổng kết các ý chính** + +1. **Xử lý sự cố là một phần quan trọng của an toàn thông tin** + - Không thể chỉ trông cậy vào tường lửa hay phần mềm diệt virus +2. **Cần xây dựng chính sách, kế hoạch, quy trình rõ ràng** + - Không có tài liệu – thì không thể phối hợp tốt khi khủng hoảng xảy ra +3. **Tổ chức phải chọn mô hình đội IR phù hợp** + - Tùy vào quy mô, năng lực và cơ cấu vận hành +4. **Đội IR cần kỹ năng đa dạng và phối hợp chặt chẽ** + - Gồm kỹ thuật, truyền thông, pháp lý, quản trị và vận hành +5. **Không chỉ “chữa cháy” mà còn phải “phòng ngừa”** + - Đào tạo, diễn tập, phân tích xu hướng là điều không thể thiếu + + +**Khuyến nghị từ NIST** + +|**Khuyến nghị**|**Ý nghĩa thực tiễn**| +|---|---| +|**Lãnh đạo cần cam kết từ đầu**|Không có ngân sách và quyền lực thì đội IR sẽ không thể hoạt động hiệu quả| +|**Phải cập nhật tài liệu thường xuyên**|Vì mối đe dọa luôn thay đổi| +|**Đào tạo liên tục**|Không chỉ cho đội IR mà cho cả toàn tổ chức| +|**Xây dựng cơ chế chia sẻ thông tin an toàn**|Giúp phối hợp với bên ngoài như cơ quan chức năng, nhà cung cấp| +|**Đo lường hiệu quả đội IR**|Ví dụ: thời gian phản hồi, số sự cố xử lý thành công,…| + + +--- + + +### **3. Quy trình xử lý sự cố (Incident Handling Process)** + +**Tóm tắt chương** + +Chương này đi sâu vào **4 giai đoạn chính** của xử lý sự cố: +1. **Chuẩn bị (Preparation)** +2. **Phát hiện & Phân tích (Detection & Analysis)** +3. **Khoanh vùng, xử lý và phục hồi (Containment, Eradication & Recovery)** +4. **Hậu sự cố (Post-Incident Activity)** + +Bước đầu tiên là **chuẩn bị** – nếu làm tốt khâu này, thì khi sự cố xảy ra bạn sẽ **không hoảng loạn** mà biết cần làm gì, ai xử lý, xử lý như thế nào. + +--- + +#### **3.1 Giai đoạn chuẩn bị (Preparation)** + +**Tóm tắt nội dung chính** + +Chuẩn bị chính là **“vũ khí” sẵn sàng trong kho** để chiến đấu với sự cố khi nó xảy ra. Giai đoạn này bao gồm từ việc thiết lập đội ngũ, công cụ, quy trình đến đào tạo nhận thức cho toàn tổ chức. + +--- + +##### **3.1.1 Sẵn sàng xử lý (Readiness)** + +> **Tình huống giả định:** + +> Một sáng thứ Hai, nhân viên chăm sóc khách hàng tại một công ty thương mại điện tử nhận ra email trả lời từ khách dường như đã bị thay đổi nội dung – và có một link lạ chèn vào. Không ai biết đây có phải là lỗi kỹ thuật hay là dấu hiệu của hacker? Mọi người rối lên, người thì gửi ticket, người thì gọi hotline nội bộ… nhưng không ai biết chắc: **đây có phải là sự cố không, và nếu có thì ai xử lý?** + +Đây là điển hình của một tổ chức **chưa có sự chuẩn bị**. + +**Vậy cần chuẩn bị gì?** + +**1. Chính sách, kế hoạch, SOP:** +– Như đã nói ở phần 2.3, đây là các tài liệu “định hướng” và “hành động” cho toàn bộ quá trình IR. + +**2. Đội ngũ CSIRT hoặc người phụ trách IR:** +– Dù không có hẳn đội riêng, cần chỉ định **focal point** – người chịu trách nhiệm khi có sự cố. + +**3. Kênh tiếp nhận và báo cáo sự cố:** +– Ví dụ: +- Email: incident@tencongty.com +- Hotline nội bộ: số điện thoại trực ca +- Mẫu báo cáo ngắn (có mô tả, thời gian, người phát hiện, ảnh minh họa…) + +**4. Công cụ hỗ trợ xử lý:** +– SIEM như Splunk, ELK +– Antivirus, EDR như Crowdstrike, SentinelOne +– Ticketing system như Jira, ServiceNow + +**5. Quản lý tài sản và baseline hệ thống:** +– Biết mình có những gì thì mới biết cái gì đang bị “không bình thường”. +– Ví dụ: Máy chủ web thường truyền 5GB/ngày, bỗng dưng có 100GB outbound → khả năng cao là bị tấn công. + +**6. Bảo mật đầu vào (hardening):** +– Vô hiệu hóa dịch vụ không cần thiết +– Cập nhật bản vá (patching) +– Kiểm soát tài khoản admin + +--- + +##### **3.1.2 Phòng ngừa sự cố (Prevention)** + +Phòng ngừa là một phần quan trọng của chuẩn bị. Một tổ chức tốt sẽ cố gắng **giảm khả năng bị tấn công ngay từ đầu**, thay vì chỉ phản ứng sau khi đã có chuyện. + +**Các cách phòng ngừa thực tế:** + +**1. Đào tạo nhận thức (Security Awareness Training):** + +> **Câu chuyện có thật:** + +> Một công ty lớn tại Singapore bị lộ thông tin tài khoản quản lý do **trợ lý giám đốc** mở một email giả mạo từ “bộ phận nhân sự”. Dù hệ thống bảo mật rất tốt, nhưng một cú nhấp chuột sai đã mở đường cho hacker. + +→ Giải pháp: tổ chức huấn luyện nhận biết email lừa đảo (phishing), khuyến khích nhân viên **báo cáo email lạ thay vì bấm vào.** + +**2. Chính sách sử dụng thiết bị cá nhân (BYOD):** + +– Nếu nhân viên dùng điện thoại riêng để truy cập email công ty → cần quy định bảo mật rõ ràng: cài passcode, không root, cài phần mềm MDM. + +**3. Giới hạn quyền truy cập:** + +– Dùng mô hình **least privilege** – chỉ cấp đúng quyền cần thiết, tránh trường hợp tài khoản bị lộ có thể truy cập quá nhiều hệ thống. + +**4. Kiểm tra bảo mật định kỳ:** + +– Kiểm thử thâm nhập (pentest) + +– Đánh giá cấu hình + +– Quét lỗ hổng bằng Nessus, OpenVAS,… + +--- + +**Câu chuyện tổng hợp: Công ty A và bài học từ một lần suýt “cháy lớn”** + +Công ty A hoạt động trong lĩnh vực fintech, không có đội xử lý sự cố riêng mà giao hết cho team IT lo luôn bảo mật. Một ngày, hệ thống nhận được cảnh báo từ hệ thống giám sát rằng có đăng nhập bất thường từ địa chỉ IP ở Nga vào tài khoản admin. + +Cả team loay hoay: +- “Có phải tấn công thật không?” +- “Giờ phải làm gì?” +- “Ngắt mạng hay cứ theo dõi tiếp?” + +→ Cuối cùng phải mất hơn 3 tiếng để xác định là **tài khoản bị lộ qua một dịch vụ bên thứ ba.** + +Sau vụ việc, công ty: +- Thành lập một nhóm IR nhỏ +- Mua license Splunk + Crowdstrike +- Đào tạo lại nhân viên +- Xây hotline nội bộ và quy trình phản ứng + +**Từ đó về sau, chỉ cần 10 phút để xác minh – và cô lập hệ thống nếu có cảnh báo nghiêm trọng.** + +--- + +#### **3.2 Phát hiện và phân tích sự cố (Detection & Analysis)** + +**Tóm tắt nội dung chính** + +Bạn không thể xử lý sự cố nếu **không phát hiện ra nó**. Đây là giai đoạn xác định xem một sự kiện có thực sự là **sự cố an toàn thông tin hay không**, và nếu có thì **mức độ nghiêm trọng** của nó là gì. Phần này hướng dẫn bạn cách phân tích log, nhận diện dấu hiệu tấn công, và đánh giá rủi ro dựa trên dữ liệu. + +--- + +##### **3.2.1 Các kênh tấn công phổ biến (Attack Vectors)** + +Một số con đường mà kẻ tấn công thường lợi dụng để xâm nhập vào hệ thống: + +|**Kênh tấn công**|**Mô tả & ví dụ thực tế**| +|---|---| +|**Email (Phishing)**|Giả dạng email từ HR để lừa người dùng bấm vào link độc hại| +|**Web**|Truy cập vào website có chèn mã độc (drive-by download)| +|**USB/Thiết bị ngoại vi**|Nhân viên cắm USB lạ vào máy → bị nhiễm mã độc| +|**Remote Access**|RDP không bảo mật, VPN không MFA| +|**Ứng dụng bị lỗi**|Khai thác lỗ hổng trên các phần mềm lỗi thời (vd: Log4Shell)| +|**Chuỗi cung ứng (Supply Chain)**|Hacker tấn công qua nhà cung cấp phần mềm (như vụ SolarWinds)| + +👉 **Thực tiễn:** + +Nhiều doanh nghiệp bị tấn công **không phải vì hệ thống yếu**, mà vì một nhân viên click nhầm link, hoặc một nhà cung cấp bên ngoài bị xâm nhập → “mở cửa sau” cho hacker. + +--- + +##### **3.2.2 Dấu hiệu nhận biết sự cố (Signs of an Incident)** + +**1. Dấu hiệu rõ ràng (Definitive)** +- File mã độc được phát hiện +- Tài khoản đăng nhập vào lúc 2h sáng từ IP lạ +- Có cảnh báo từ hệ thống SIEM/EDR: “Ransomware Detected” + +**2. Dấu hiệu khả nghi (Indicators)** +- CPU/mạng tăng bất thường +- Dữ liệu outbound lớn bất thường +- User gọi hỗ trợ vì “máy chạy chậm bất thường” +- Log ghi nhận hành vi lạ: nhiều lần đăng nhập sai liên tiếp + +👉 **Thực tế:** +**Dấu hiệu rõ ràng → Xử lý ngay** +**Dấu hiệu khả nghi → Điều tra thêm trước khi phản ứng** + +--- + +##### **3.2.3 Nguồn thông tin dự đoán và chỉ thị (Sources of Precursors & Indicators)** + +**Precursors (Dấu hiệu báo trước)** +- Email đe dọa tấn công hệ thống +- Hacker khoe dữ liệu công ty bạn bị rò rỉ trên darkweb +- Threat Intel feed cảnh báo nhóm APT đang nhắm đến ngành của bạn + +**Indicators (Chỉ thị đang xảy ra)** +- Cảnh báo từ SIEM (Splunk, ELK,…) +- EDR phát hiện hành vi bất thường +- Log hệ thống ghi nhận thay đổi quyền truy cập lạ + +|**Nguồn thông tin**|**Vai trò**| +|---|---| +|**SIEM/EDR/IDS**|Tự động cảnh báo bất thường| +|**Nhân viên người dùng**|Báo cáo hành vi lạ (máy tự restart, mất file)| +|**Threat Intelligence Feed**|Cung cấp thông tin về lỗ hổng, mã độc, nhóm hacker| +|**Logs hệ thống**|Ghi lại mọi hoạt động: login, network, thay đổi cấu hình| + +👉 **Gợi ý:** + +Nên có kênh khuyến khích **nhân viên báo cáo nghi ngờ sự cố**, ví dụ như email security@congty.com hoặc biểu mẫu nội bộ. + +--- + +##### **3.2.4 Cách phân tích sự cố (Incident Analysis)** + +**Các bước phân tích điển hình:** + +1. **Tổng hợp các nguồn cảnh báo** + - Từ SIEM, người dùng, Threat Intel,… +2. **Tìm dấu hiệu khớp (correlation)** + - Dùng Splunk/ELK để tìm xem IP A có liên quan đến login nào? + - Người dùng B có click vào link nào trong email? +3. **Xác minh mức độ đáng tin** + - Dấu hiệu này là thật hay báo động giả? +4. **Truy tìm root cause** + - Entry point ban đầu là đâu? Tài khoản bị lộ hay hệ thống bị lỗi? +5. **Ghi nhận timeline sự kiện** + - Giúp truy ngược và dựng lại diễn biến + +**Tình huống minh họa:** + +> Splunk cảnh báo có login từ Trung Quốc vào lúc 3h sáng bằng tài khoản admin. +> → SOC Analyst tìm trong log VPN → thấy IP lạ đăng nhập +> → Tra tiếp thấy tài khoản đó được dùng để truy cập database +> → Cross-check threat intel: IP này từng xuất hiện trong nhóm APT27 +> → Đánh giá đây là sự cố nghiêm trọng → Bắt đầu giai đoạn phản ứng + +--- + +##### **3.2.5 Ghi chép lại sự cố (Incident Logging)** + +Mọi hành động trong quá trình điều tra cần được **ghi lại đầy đủ và có cấu trúc**. + +**Nội dung nên có trong log sự cố:** +- Mô tả ngắn gọn sự kiện +- Người phát hiện và thời gian phát hiện +- Ai đã xử lý, vào thời điểm nào +- Phân tích sơ bộ và bước tiếp theo +- Link đến log, ảnh chụp màn hình (screenshot), file .pcap,… + +👉 **Thực tiễn:** + +Ghi log tốt giúp: +- Tổng hợp bài học rút ra +- Phục vụ pháp lý, bảo hiểm +- Dùng lại cho diễn tập và đào tạo + +--- + +##### **3.2.6 Phân loại mức độ ưu tiên (Incident Prioritization)** + +Không phải sự cố nào cũng cần xử lý ngay lập tức. Bạn cần **phân loại để ưu tiên**. + +|**Tiêu chí**|**Ví dụ**| +|---|---| +|**Tác động (Impact)**|Có lộ dữ liệu không? Có ảnh hưởng dịch vụ không?| +|**Phạm vi (Scope)**|Một user hay toàn bộ hệ thống bị ảnh hưởng?| +|**Khả năng tái diễn (Likelihood)**|Lỗ hổng này có thể bị khai thác thêm không?| +|**Khung thời gian**|Cần xử lý trong vòng bao lâu?| + +**Mức ưu tiên đề xuất:** +- **Cao**: Ransomware, xâm nhập trái phép vào hệ thống core +- **Trung bình**: Malware lẻ, phishing chưa có thiệt hại +- **Thấp**: Báo cáo khả nghi nhưng chưa có dấu hiệu vi phạm + +👉 **Gợi ý:** + +Có thể dùng bảng đánh giá 3 mức độ (Impact × Likelihood) để quyết định ưu tiên. + +--- + +##### **3.2.7 Gửi thông báo (Incident Notification)** + +Khi xác định sự cố, cần **gửi thông báo** kịp thời đến các bên liên quan. Tùy mức độ sự cố, thông báo có thể khác nhau: + +|**Đối tượng**|**Nội dung thông báo**| +|---|---| +|**Đội kỹ thuật (IT, SOC)**|Chi tiết kỹ thuật, yêu cầu hành động cụ thể| +|**Lãnh đạo/CISO**|Tình trạng, rủi ro, ảnh hưởng kinh doanh| +|**Pháp lý/HR**|Nếu liên quan đến nhân sự, dữ liệu cá nhân| +|**Người dùng/Khách hàng**|Nếu cần cảnh báo hoặc yêu cầu đổi mật khẩu| +|**Cơ quan nhà nước**|Nếu có nghĩa vụ báo cáo (như lộ thông tin người dùng)| + +**Nguyên tắc viết thông báo:** +- **Ngắn gọn – rõ ràng – chính xác** +- Có đầu mối liên hệ để phản hồi +- Không đưa thông tin nhạy cảm qua email + +--- + +#### **3.3 Khoanh vùng, xử lý triệt để và phục hồi (Containment, Eradication & Recovery)** + +**Tóm tắt nội dung chính** + +Khi sự cố đã được xác nhận, đây là lúc bạn **ra tay hành động**: +- **Khoanh vùng**: Ngăn sự cố lan rộng +- **Xử lý triệt để**: Xóa bỏ tác nhân gây hại +- **Phục hồi**: Khôi phục hệ thống về trạng thái ổn định + +Làm không kỹ → hậu quả lặp lại. Làm quá sớm → mất bằng chứng. Làm quá trễ → lan rộng ra toàn hệ thống. + +--- + +##### **3.3.1 Chiến lược khoanh vùng (Containment Strategy)** + +**Tại sao cần khoanh vùng sớm?** + +> Nếu bạn phát hiện nhà mình đang cháy, việc đầu tiên không phải là “dập ngay lửa” mà là **ngăn đám cháy lan sang nhà hàng xóm**. Trong bảo mật cũng vậy: **containment trước, xử lý sau.** + +**Các chiến lược khoanh vùng thường dùng:** + +|**Chiến lược**|**Mô tả thực tế**|**Khi nào dùng**| +|---|---|---| +|**Ngắt kết nối mạng**|Rút cáp, chặn IP, cô lập Wi-Fi|Khi sự cố có dấu hiệu lan rộng, mã độc tự lây| +|**Chuyển sang VLAN cô lập**|Đưa hệ thống nghi ngờ sang mạng riêng|Dùng trong môi trường ảo hóa, cloud| +|**Ngắt tài khoản**|Disable user/email nghi ngờ|Khi nghi bị đánh cắp credentials| +|**Chặn dịch vụ cụ thể**|Block port, chặn ứng dụng|Khi chỉ có 1 dịch vụ (vd: RDP) bị khai thác| + +**Câu chuyện thực tế:** + +> Một công ty logistics phát hiện ransomware đang mã hóa file trên một server. +> Nếu không khoanh vùng sớm, chỉ trong 30 phút, toàn bộ hệ thống có thể **“nằm viện”**. +> → Họ lập tức: +- > Chặn toàn bộ outbound traffic từ subnet bị nhiễm +- > Tạm ngưng backup tự động (tránh backup dữ liệu đã bị mã hóa) +- > Ngắt kết nối máy nghi nhiễm khỏi AD + > → Giúp ngăn lan rộng và giữ nguyên bằng chứng. + +--- + +##### **3.3.2 Thu thập và bảo quản bằng chứng (Evidence Collection & Preservation)** + +**Vì sao cần bảo quản bằng chứng?** +- Phục vụ **điều tra nguyên nhân gốc (root cause)** +- Cần thiết cho **pháp lý hoặc bảo hiểm** +- Giúp **phân tích forensic và threat intel** + +**Những gì cần thu thập:** + +|**Loại bằng chứng**|**Cụ thể**| +|---|---| +|**File độc hại**|EXE, DLL, JS, v.v. từ máy nghi nhiễm| +|**Memory dump**|RAM tại thời điểm xảy ra sự cố| +|**Network capture**|Gói tin qua Wireshark/tcpdump| +|**Log hệ thống**|Login, event viewer, firewall, VPN, SIEM logs| +|**Lịch sử trình duyệt**|URL, cookie, session – nếu dính đến phishing| + +**Nguyên tắc bảo quản:** +- Dùng **hash SHA256** để chứng minh dữ liệu không bị thay đổi +- Ghi lại **người thu thập – thời gian – công cụ – địa điểm** +- Nếu được, nên **sao lưu dữ liệu gốc và phân tích trên bản copy** + +👉 **Cảnh báo thực tế:** + +Nhiều tổ chức “diệt virus trước – rồi mới điều tra” → Mất hết bằng chứng → Không thể biết root cause và **tấn công lại sau 1 tháng**! + +--- + +##### **3.3.3 Xác định máy chủ tấn công (Identifying Attacking Hosts)** + +**Tại sao phải truy ngược?** +- Xác định **entry point ban đầu** +- Biết được hacker đã **làm gì và đi tới đâu** +- Giúp **ngăn chặn các cuộc tấn công tương tự** + +**Cách truy vết máy chủ tấn công:** + +|**Cách làm**|**Mô tả**| +|---|---| +|**Phân tích log SIEM**|Tìm IP bất thường, hành vi lateral movement| +|**Truy dấu DNS, netflow**|Theo dõi kết nối ra ngoài: kết nối đến C2 server?| +|**Check threat intelligence**|IP/Domain có nằm trong IOC của nhóm APT nào không?| +|**Sandbox mã độc**|Cho file chạy trong môi trường ảo để xem hành vi| + +**Ví dụ thực tế:** + +> Một server bị nghi nhiễm mã độc. SOC tìm thấy IP 185.**_._**.103 gửi command qua port 443. +- > Cross-check IOC → IP này liên quan đến nhóm APT41 +- > Sau đó kiểm tra 5 server khác → thấy cùng connect đến IP đó + > → Xác định toàn bộ subnet đã bị xâm nhập âm thầm → mở rộng khoanh vùng + +--- + +##### **3.3.4 Khôi phục hệ thống (System Recovery)** + +Sau khi đã: +- Ngăn sự cố lan rộng (containment) +- Loại bỏ mã độc, backdoor (eradication) +- Thu thập đủ bằng chứng +→ Bước tiếp theo là **khôi phục hệ thống an toàn và sạch sẽ**. + +**Nguyên tắc khôi phục:** + +1. **Khôi phục từ backup sạch** + - Không dùng bản backup đã bị mã độc chạm vào +2. **Đưa vào môi trường sandbox test trước** + - Khởi động lại máy/ứng dụng trong môi trường kín để chắc chắn không còn mã độc +3. **Đổi credentials & kiểm tra quyền truy cập** + - Tất cả tài khoản admin phải được reset và kiểm tra log +4. **Cập nhật bản vá** + - Lỗi đã bị khai thác phải được vá trước khi vận hành lại +5. **Giám sát tăng cường sau phục hồi** + - Dùng SIEM/EDR theo dõi sát sao 24-48h đầu sau khi khôi phục + +**Tình huống minh họa:** + +> Sau khi xử lý mã độc tống tiền, công ty A định khôi phục server từ backup trước đó 3 ngày. Tuy nhiên, họ quên kiểm tra kỹ log và backup đã bị cài shell ngầm → 1 tuần sau hacker quay lại. + +→ Bài học: **Không khôi phục vội vàng khi chưa xác nhận an toàn tuyệt đối.** + +--- + +##### **3.3.5 Cân bằng giữa khôi phục nhanh và đảm bảo an toàn** + +**Tóm tắt nội dung chính** + +Khi hệ thống quan trọng gặp sự cố, doanh nghiệp buộc phải **ra quyết định nhanh chóng**: +- Nếu khôi phục vội → có thể bỏ sót mã độc, làm mất bằng chứng +- Nếu xử lý quá kỹ → dịch vụ ngưng trệ lâu, mất uy tín, thiệt hại doanh thu + +Phần này hướng dẫn cách **cân bằng giữa tốc độ và an toàn**, theo mô hình hành động thực tiễn đã được nhiều tổ chức áp dụng thành công. + +**Chiến lược đề xuất:** + +**1. Tách khôi phục dịch vụ khỏi hệ thống gốc** + +Không nên “vá vội” hệ thống bị xâm nhập rồi bật lại. Thay vào đó: + +|**Việc cần làm**|**Lý do**| +|---|---| +|Dựng lại hệ thống từ **backup sạch**|Đảm bảo không dính mã độc| +|Khôi phục tạm thời trên **hạ tầng mới**|Cho dịch vụ chạy lại nhanh| +|Giữ nguyên hệ thống bị tấn công|Để phân tích forensic và root cause| + +👉 **Thực tế:** Điều này giúp vừa **giảm downtime**, vừa **đảm bảo điều tra đầy đủ**. + + +**2. Triển khai mô hình “Song song: Clean & Investigate”** + +|**Nhánh Clean (khôi phục)**|**Nhánh Investigate (phân tích)**| +|---|---| +|Dựng bản sao hệ thống sạch|Cô lập máy nhiễm| +|Đổi toàn bộ mật khẩu, khóa cổng|Dump RAM, log, hệ thống| +|Giám sát hoạt động sau khôi phục|Tìm backdoor, xác định entry point| + +👉 **Lợi ích**: Không ảnh hưởng quá nhiều đến kinh doanh nhưng vẫn xử lý chuyên sâu phía sau. + + +**3. Ưu tiên khôi phục theo mức độ quan trọng** + +Không cần bật lại toàn bộ cùng lúc. Chia hệ thống thành 3 nhóm: + +|**Nhóm**|**Ưu tiên khôi phục**|**Ví dụ**| +|---|---|---| +|**Critical**|Ngay lập tức|Cổng thanh toán, dịch vụ khách hàng| +|**Important**|Sau 4–6 giờ|Dashboard quản trị, báo cáo| +|**Non-essential**|Sau 24–48 giờ|Email marketing, thống kê nội bộ| + + +**4. Kết hợp với kế hoạch BCP & DRP** + +- Dự phòng site (DR site) +- Tài khoản khẩn cấp (break-glass account) +- Phương án khôi phục offline tạm thời +- Soạn sẵn kịch bản truyền thông nếu downtime kéo dài + +👉 Điều này giúp không phải “ngồi họp rồi mới nghĩ ra giải pháp” trong khủng hoảng. + + +**5. Ra quyết định dựa trên risk-based approach** + +Không có quyết định hoàn hảo – mà có quyết định **phù hợp với rủi ro**. + +|**Cân nhắc**|**Ví dụ**| +|---|---| +|Phục hồi sớm có thể bị tái nhiễm?|Nếu root cause chưa xác định| +|Chậm hơn 1 giờ có mất khách hàng không?|Nếu là hệ thống thanh toán| +|Có backup nào thật sự sạch?|Backup hôm qua có bị mã độc không?| + +👉 CISO, CTO và team IR nên **ra quyết định cùng nhau**, có tài liệu risk matrix đi kèm. + + +**Ví dụ minh họa thực tế** + +> Một ngân hàng bị lộ tài khoản email nội bộ, hacker dùng để gửi phishing giả mạo giao dịch quốc tế. +> Dịch vụ email cực kỳ quan trọng, nếu tắt 12h sẽ ảnh hưởng đến khách hàng. + +✅ Cách xử lý: + +- Khóa toàn bộ tài khoản nghi bị lộ +- Mở lại dịch vụ email với chính sách giới hạn: không cho gửi file đính kèm, không gửi external +- Trong lúc đó, team phân tích email bị xâm nhập, thu thập log, trace IP +- Sau 6h khôi phục đầy đủ quyền gửi/nhận khi xác minh hệ thống đã sạch + +→ **Tổng downtime: 1.5 giờ** nhưng vẫn thu đủ bằng chứng và ngăn chặn sự cố lan rộng. + +--- + +#### **3.4 Các hoạt động sau sự cố (Post-Incident Activity)** + +**Tóm tắt nội dung chính** + +Sau khi sự cố đã được xử lý, dịch vụ đã được khôi phục – việc cần làm tiếp theo **không phải là thở phào nhẹ nhõm và quên đi**, mà là nhìn lại, phân tích và học từ chính những gì đã xảy ra. + +--- + +##### **3.4.1 Rút kinh nghiệm (Lessons Learned)** + +**Tại sao cần rút kinh nghiệm?** + +> “Kẻ thông minh học từ sai lầm của mình. Kẻ khôn hơn học từ sai lầm của người khác. Nhưng kẻ tệ nhất là… không học gì cả.” +> — Trích từ một buổi họp rút kinh nghiệm sau sự cố thật sự. + +Việc rút kinh nghiệm sau mỗi sự cố giúp tổ chức: +- Nhận diện lỗ hổng trong quy trình, chính sách, công cụ +- Cải tiến playbook, SOP và nâng cao kỹ năng đội IR +- Tránh lặp lại cùng một lỗi trong tương lai + +--- + +**Cách tổ chức buổi họp Lessons Learned:** + +|**Thành phần cần có**|**Vai trò**| +|---|---| +|**Team xử lý sự cố**|Trình bày lại timeline, cách xử lý| +|**Lãnh đạo kỹ thuật/CISO**|Đưa ra quyết định cải tiến, phân bổ nguồn lực| +|**Phòng ban liên quan**|Đóng góp góc nhìn: Helpdesk, Legal, HR,…| + +--- + +**Câu hỏi nên đặt ra trong buổi họp:** + +- Phát hiện sự cố có nhanh không? Có thể nhanh hơn không? +- Các bước phản ứng có rõ ràng không? Ai bị động? +- Có hành động nào gây mất bằng chứng không? +- Phối hợp giữa các bộ phận có thông suốt không? +- Dịch vụ khôi phục có đúng hạn không? Có gì đáng lo? + +👉 **Gợi ý:** Ghi lại tất cả lesson learned thành **bảng tổng hợp**, gửi toàn team để học tập. + +--- + +##### **3.4.2 Phân tích và tái sử dụng dữ liệu (Data Analysis & Reuse)** + +Dữ liệu trong sự cố không chỉ phục vụ điều tra – mà còn là **nguồn nguyên liệu quý giá** cho: + +- Cải tiến hệ thống giám sát +- Đào tạo đội SOC +- Viết use case mới cho SIEM +- Cập nhật threat intelligence nội bộ + +--- + +**Ví dụ ứng dụng:** + +|**Dữ liệu từ sự cố**|**Có thể tái sử dụng để…**| +|---|---| +|**File mã độc (.exe/.js)**|Cho vào hệ thống sandbox nội bộ để trích hành vi| +|**Log mạng bị khai thác**|Viết use case cảnh báo trong Splunk/ELK| +|**IOC: IP, domain, hash**|Cập nhật vào threat feed nội bộ| +|**Timeline của attacker**|Làm bài huấn luyện SOC: “Dự đoán bước tiếp theo của attacker”| + +--- + +**Tình huống thực tế:** + +> Một ngân hàng phát hiện máy chủ bị dùng làm trạm C2 (Command & Control). +> Sau khi xử lý, họ trích toàn bộ log và packet để huấn luyện nhân viên: +> **“Nếu anh/chị là SOC analyst, làm thế nào phát hiện điều này sớm hơn?”** + +→ Kết quả: Viết thêm được 3 use case mới cho hệ thống SIEM. + +--- + +##### **3.4.3 Lưu trữ bằng chứng (Evidence Retention)** + +**Tại sao cần lưu trữ bằng chứng?** + +- Phục vụ pháp lý khi có khiếu kiện, tranh chấp +- Đáp ứng yêu cầu của quy định (vd: ngân hàng, bảo hiểm, PCI DSS) +- Làm cơ sở cho việc báo cáo với cơ quan chức năng + +--- + +**Thời gian lưu trữ gợi ý (tùy ngành):** + +|**Loại dữ liệu**|**Thời gian lưu gợi ý**| +|---|---| +|**Log hệ thống**|6 – 12 tháng| +|**Log liên quan sự cố**|1 – 3 năm (nếu nghiêm trọng)| +|**Ảnh snapshot máy bị nhiễm**|Tối thiểu 6 tháng| +|**Memory dump, packet capture**|1 năm nếu có mã độc phức tạp| + +👉 **Lưu ý:** Nếu dữ liệu liên quan đến **cá nhân (PII)** → phải tuân thủ **quy định bảo vệ dữ liệu** (như Nghị định 13/2023 tại Việt Nam hoặc GDPR). + +--- + +**Nguyên tắc bảo quản bằng chứng:** + +|**Yêu cầu**|**Thực hành**| +|---|---| +|**Nguyên vẹn (Integrity)**|Dùng hash SHA256, lưu dấu vết log truy cập| +|**Bảo mật (Confidentiality)**|Mã hóa và phân quyền truy cập| +|**Có thể kiểm toán (Auditability)**|Lưu lại quá trình xử lý, ai làm gì, khi nào| + +--- + +**Gợi ý cách lưu trữ:** + +- Dùng hệ thống **Digital Evidence Locker** (có thể mã hóa và kiểm soát truy cập) +- Tách biệt nơi lưu trữ evidence và hệ thống vận hành +- Có bảng excel mô tả: tên vụ việc, ID, loại file, hash, người phụ trách + +--- + + +#### **3.5 Checklist xử lý sự cố** + +**Tóm tắt nội dung chính** + +Đây là bảng **tổng hợp các bước quan trọng nhất** trong suốt vòng đời xử lý sự cố – từ lúc phát hiện đến khi kết thúc. Một bản checklist tốt giúp: + +- **Không bỏ sót bước quan trọng** +- Dễ dàng theo dõi tiến độ xử lý +- Chuẩn hóa quy trình cho mọi loại sự cố + +--- + +**Checklist xử lý sự cố theo NIST SP 800-61r2** + +|**Giai đoạn**|**Việc cần làm**|**Đã thực hiện?**| +|---|---|---| +|**1. Chuẩn bị (Preparation)**||| +|– Chính sách & SOP hiện hành|Có ban hành, phổ biến, cập nhật chưa?|[ ]| +|– Đội IR được phân công rõ vai trò|Có danh sách người phụ trách và liên hệ?|[ ]| +|– Công cụ sẵn sàng (SIEM, EDR, forensics)|Đã triển khai và kiểm thử định kỳ?|[ ]| +|**2. Phát hiện & phân tích (Detection)**||| +|– Nhận cảnh báo / báo cáo nghi vấn|Qua SIEM, EDR, Helpdesk, người dùng?|[ ]| +|– Xác nhận dấu hiệu là sự cố hay false positive|Có đủ log, IOC, dữ liệu?|[ ]| +|– Ưu tiên sự cố theo mức độ impact|Ảnh hưởng đến dịch vụ, dữ liệu, uy tín,…?|[ ]| +|**3. Khoanh vùng, xử lý và phục hồi (Contain/Eradicate/Recover)**||| +|– Cô lập hệ thống nghi nhiễm|Tách khỏi mạng, ngắt quyền admin?|[ ]| +|– Thu thập và lưu giữ bằng chứng|RAM, log, file độc hại, hình ảnh máy,…?|[ ]| +|– Xác định nguyên nhân & điểm vào|Phishing? RDP? Lỗ hổng phần mềm?|[ ]| +|– Khôi phục hệ thống sạch|Dựng lại từ backup? Cập nhật bản vá?|[ ]| +|– Tăng cường giám sát sau sự cố|Log alert? Kiểm soát truy cập?|[ ]| +|**4. Sau sự cố (Post-Incident)**||| +|– Tổ chức họp lessons learned|Có phân tích nguyên nhân, lỗ hổng quy trình?|[ ]| +|– Cập nhật playbook / SOP|Có cập nhật nội dung mới từ sự cố vừa xử lý?|[ ]| +|– Lưu trữ bằng chứng và báo cáo đầy đủ|Lưu file, hash, nhật ký, báo cáo sự cố?|[ ]| + +👉 **Gợi ý thực tiễn:** +- In ra và dán tại bàn làm việc của đội IR hoặc SOC +- Tích hợp thành checklist số trong hệ thống quản lý sự cố (ticketing) + +--- + +#### **3.6 Tổng kết và khuyến nghị** + +**Tóm tắt nội dung chính** + +Chương 3 là phần trọng tâm nhất trong toàn bộ tài liệu NIST SP 800-61r2. Nếu coi xử lý sự cố như một “cuộc chiến”, thì chương này là bản **kế hoạch tác chiến chuẩn chỉnh** để mọi tổ chức áp dụng. + +--- + + **Tổng kết những gì bạn cần nhớ:** + +|**Giai đoạn**|**Mục tiêu chính**| +|---|---| +|**Chuẩn bị**|Có sẵn chính sách, đội ngũ, công cụ, SOP| +|**Phát hiện**|Nhận biết sớm qua log, cảnh báo, người dùng| +|**Khoanh vùng**|Ngăn chặn lan rộng, giữ bằng chứng| +|**Xử lý**|Loại bỏ tác nhân, phục hồi hệ thống| +|**Phục hồi**|Đưa dịch vụ hoạt động lại an toàn| +|**Hậu sự cố**|Học hỏi – cải tiến – lưu trữ bằng chứng| + +--- + +**Khuyến nghị từ NIST và kinh nghiệm thực tế** + +|**Khuyến nghị**|**Ứng dụng thực tế**| +|---|---| +|Đừng đợi có sự cố mới nghĩ đến quy trình|Phải chuẩn bị từ hôm nay: chính sách, đội ngũ, diễn tập| +|Có tài liệu rõ ràng nhưng cũng phải linh hoạt|Sự cố xảy ra luôn có yếu tố bất ngờ| +|Chia vai trò rõ ràng, không ai “ôm hết”|Một người điều phối – một người kỹ thuật – một người truyền thông| +|Ghi chép mọi thứ, kể cả thao tác nhỏ|Vừa để học, vừa để bảo vệ tổ chức về pháp lý| +|Mỗi sự cố là một bài học miễn phí (nếu học kịp)|Đừng bỏ qua buổi rút kinh nghiệm sau mỗi lần “cháy”| + +Xem thêm: [[Playbook xử lý ransomware – Khôi phục nhanh + Forensic]] + + +--- + + +### **4. Phối hợp và chia sẻ thông tin (Coordination and Information Sharing)** + +**Tóm tắt nội dung chính** + +Khi xảy ra sự cố, không chỉ team kỹ thuật mới bị ảnh hưởng – mà còn liên quan đến **khách hàng, đối tác, cơ quan nhà nước, truyền thông**. Việc chia sẻ thông tin đúng người, đúng lúc, đúng nội dung là **chìa khóa để kiểm soát tình hình**, tránh khủng hoảng truyền thông, vi phạm pháp lý và mất lòng tin từ cộng đồng. + +--- + +#### **4.1 Phối hợp với các bên liên quan (Coordination)** + +##### **4.1.1 Các loại mối quan hệ phối hợp** + +|**Bên liên quan**|**Vai trò khi xảy ra sự cố**| +|---|---| +|**Nội bộ (IT, SOC, pháp lý, HR, truyền thông)**|Phối hợp phản ứng, điều tra, truyền thông| +|**Đối tác kỹ thuật (ISP, nhà cung cấp phần mềm)**|Cung cấp thông tin, hỗ trợ khắc phục| +|**Cơ quan quản lý (Cục ATTT, công an, ngân hàng nhà nước)**|Nhận báo cáo bắt buộc, phối hợp điều tra| +|**Khách hàng**|Nhận cảnh báo, hướng dẫn bảo vệ dữ liệu cá nhân| +|**Đội IR quốc gia (VD: VNCERT/CC)**|Hỗ trợ kỹ thuật, phân tích mã độc, chia sẻ IOC| + +--- + +##### **4.1.2 Cần có gì để phối hợp hiệu quả?** + +- **Thông tin liên hệ khẩn cấp (Emergency Contact List)** + → Ví dụ: số hotline nội bộ, email bảo mật, người phụ trách mỗi đơn vị +- **Phân quyền thông tin**: ai được nói gì, với ai +- **Tài liệu mẫu sẵn (template)**: thông báo nội bộ, cho khách hàng, cho báo chí +- **Đào tạo & diễn tập**: tất cả phòng ban đều nên tham gia ít nhất 1 tabletop mỗi năm + +👉 **Tình huống thực tế**: + +Một sàn thương mại điện tử bị phát hiện rò rỉ dữ liệu tài khoản. Vì không có ai “được phép phát ngôn”, bộ phận chăm sóc khách hàng trả lời sai thông tin → khiến sự cố nhỏ **bị thổi bùng thành khủng hoảng truyền thông**. + +--- + +#### **4.2 Kỹ thuật chia sẻ thông tin (Sharing Techniques)** + +##### **4.2.1 Chia sẻ thủ công (Ad Hoc Sharing)** + +- Gửi email có mã hóa (PGP/GPG) +- Gọi điện thoại hoặc gặp trực tiếp +- Gửi file bằng công cụ bảo mật (như Google Drive giới hạn quyền, WeTransfer có mật khẩu) + +**Ưu điểm:** đơn giản, nhanh + +**Nhược điểm:** dễ bị sai sót, khó mở rộng + +--- + +##### **4.2.2 Chia sẻ bán tự động** + +- Dùng nền tảng chia sẻ IOC như **MISP**, **OpenCTI**, hoặc **STIX/TAXII** +- Tích hợp SIEM hoặc SOAR để lấy IOC từ cộng đồng + +**Ưu điểm:** nhanh, có cấu trúc + +**Nhược điểm:** cần thiết lập hạ tầng trước + +--- + +##### **4.2.3 Các vấn đề cần lưu ý khi chia sẻ** + +|**Rủi ro**|**Cách giảm thiểu**| +|---|---| +|Lộ thông tin nhạy cảm|Gỡ PII, ẩn thông tin nội bộ trước khi gửi| +|Gửi sai đối tượng|Sử dụng whitelist, có quy trình kiểm duyệt| +|Không đồng nhất định dạng dữ liệu|Chuẩn hóa IOC theo STIX, CSV, JSON,…| + +👉 **Mẹo nhỏ**: Luôn đặt tên file, hash, tag rõ ràng để tiện tra cứu về sau. + +--- + +#### **4.3 Chia sẻ thông tin một cách chọn lọc (Selective Sharing)** + +Không phải cứ “biết gì thì nói hết” – mà cần chia sẻ **đúng thông tin, đúng người, đúng thời điểm**. + +--- + +##### **4.3.1 Thông tin ảnh hưởng đến doanh nghiệp** + +|**Thông tin nào nên giữ kín?**|**Gợi ý xử lý**| +|---|---| +|Số lượng tài khoản bị lộ cụ thể|Chia sẻ nội bộ, báo cáo cơ quan chức năng| +|Lỗ hổng zero-day chưa vá được|Không công khai đến khi có bản vá| +|Quy trình điều tra nội bộ, nhân sự liên quan|Chia sẻ giới hạn trong nhóm quản lý & pháp lý| + +--- + +##### **4.3.2 Thông tin kỹ thuật có thể chia sẻ** + +|**Thông tin nào nên chia sẻ rộng rãi?**|**Mục tiêu**| +|---|---| +|IOC: IP, domain, hash mã độc|Để cộng đồng cảnh báo lẫn nhau| +|Hành vi mã độc (behavioral pattern)|Hỗ trợ viết detection rules| +|Timeline tấn công (không chứa PII)|Làm ví dụ training, học tập| + +--- + +**Câu chuyện thực tế:** + +> Sau khi bị tấn công bằng một biến thể mới của ransomware, một công ty Fintech đã chia sẻ IOC và hành vi mã độc lên MISP của cộng đồng ngân hàng. +> → 3 ngân hàng khác phát hiện dấu hiệu tương tự trong hệ thống và ngăn chặn sớm, **tránh thiệt hại hàng tỷ đồng.** + +--- + +#### **4.4 Tổng kết và khuyến nghị** + +|**Nội dung cần nhớ**|**Ghi nhớ nhanh**| +|---|---| +|Phối hợp nội bộ không rõ ràng|→ dễ phản ứng chậm, trả lời sai thông tin| +|Không nên chia sẻ mọi thứ|→ phải kiểm soát rò rỉ dữ liệu và PII| +|Có công cụ chia sẻ bán tự động|→ giúp tiết kiệm thời gian, chia sẻ hiệu quả| +|Cộng đồng chia sẻ mạnh mẽ|→ cả hệ sinh thái an toàn hơn| diff --git a/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 1 - Introduction.md b/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 1 - Introduction.md new file mode 100644 index 000000000..ae8870d28 --- /dev/null +++ b/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 1 - Introduction.md @@ -0,0 +1,1314 @@ +#cyber_security #machine_learning +### **1. Giới thiệu chung** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo Calix giới thiệu tổng quan về khóa học “Machine Learning for Cyber” – một khóa học giúp chúng ta hiểu rõ cách áp dụng các kỹ thuật học máy (machine learning) vào việc giải quyết các bài toán trong lĩnh vực **an ninh mạng (cybersecurity)**. Thầy nêu rõ mục tiêu, các khái niệm chính, công cụ sử dụng và lộ trình học tập. + +--- + +#### **1.1. Mục tiêu bài học** + +Sau khi hoàn thành bài học này, người học sẽ: + +- Hiểu được **các phương pháp học máy** cơ bản và cách chúng hoạt động. + +- Biết được **tầm quan trọng của việc lựa chọn đặc trưng (features)** trong dữ liệu. + +- Nắm được vai trò của **tập dữ liệu (datasets)** và cách chuẩn bị chúng. + +- Biết lý do tại sao học máy lại **đặc biệt quan trọng trong lĩnh vực an ninh mạng**. + +- Phân biệt được **deep learning** và **machine learning**. + +- Có cái nhìn tổng quan về **Big Data (dữ liệu lớn)** và mối quan hệ giữa nó với ML và Cybersecurity. + +--- + +#### **1.2. Các thuật ngữ chính trong bài học** + +Trong phần này, thầy đề cập đến một số thuật ngữ quan trọng: + +- **Machine Learning (Học máy)**: Các phương pháp giúp máy tính học từ dữ liệu để đưa ra dự đoán hoặc phân loại. + +- **Cybersecurity (An ninh mạng)**: Lĩnh vực bảo vệ hệ thống máy tính khỏi tấn công, truy cập trái phép hoặc phá hoại. + +- **Big Data (Dữ liệu lớn)**: Lượng dữ liệu khổng lồ mà máy tính thông thường không xử lý nổi. + +- **Deep Learning (Học sâu)**: Một nhánh của học máy, sử dụng mạng nơ-ron sâu để xử lý dữ liệu phức tạp. + +--- + +#### **1.3. Các công cụ được sử dụng** + +Trong suốt khóa học, người học sẽ làm quen với nhiều công cụ phổ biến trong lĩnh vực học máy và dữ liệu: + +- **Ngôn ngữ lập trình**: Python + +- **Thư viện**: Numpy, Pandas, Sklearn, Tensorflow + +- **Nền tảng xử lý song song**: Hadoop, Spark + +- **Hạ tầng tính toán**: AWS (Amazon Web Services), GPU, CPU, TPU + +Ví dụ thực tế: Khi huấn luyện mô hình học sâu để phát hiện mã độc, ta có thể dùng TensorFlow để xây dựng mạng nơ-ron và dùng GPU để xử lý nhanh hơn. + +--- + +#### **1.4. Môi trường học tập** + +Người học được khuyến nghị sử dụng các công cụ như: + +- **Máy ảo (Virtual Machine)**: Ubuntu 14.04 hoặc 16.04 (64-bit), hoặc Mac. + +- **Framework học máy**: TensorFlow và Scikit-learn + +- **Nếu xây dựng máy vật lý**: cần CPU mạnh, GPU từ GTX 980 trở lên, RAM ít nhất 32GB, ổ SSD 1TB – tổng chi phí khoảng $1,500 - $2,000. + +--- + +**Ghi nhớ** + +- Đây là **bài học nền tảng**, giúp người học định hình tư duy về việc dùng ML cho các bài toán bảo mật. + +- Không cần hiểu hết mọi công cụ ngay lập tức. Quan trọng là nắm được **bức tranh tổng thể**: ML là gì, tại sao nó cần thiết, và ta sẽ học gì trong khóa học này. + + +--- + + +### **2. Vì sao cần Machine Learning trong An ninh mạng?** + +**Tóm tắt nội dung** + +Trong phần này, thầy Ricardo giải thích lý do tại sao **học máy (machine learning)** lại trở thành một **công cụ thiết yếu** trong việc giải quyết các thách thức an ninh mạng ngày nay. Lý do chính: **con người không thể xử lý hết dữ liệu** và **các cuộc tấn công ngày càng tinh vi, đa dạng**. + +--- + +#### **2.1. Khối lượng dữ liệu khổng lồ** + +Trong môi trường số hiện đại, mỗi ngày có **hàng triệu log, cảnh báo, kết nối mạng** được tạo ra bởi các thiết bị, ứng dụng, và hệ thống bảo mật. Việc **phân tích thủ công gần như là bất khả thi**. + +Ví dụ: + +- Một tổ chức trung bình có thể thu thập **hơn 10 triệu sự kiện log mỗi ngày** từ các hệ thống bảo mật như firewall, IDS/IPS, endpoint, v.v. + +- Nếu mỗi chuyên viên SOC đọc 1 log mỗi giây thì cũng cần hơn **115 ngày để xem hết 10 triệu log!** + +--- + +#### **2.2. Việc xây dựng mô hình bằng tay là quá phức tạp** + +- Viết quy tắc phát hiện (rule-based detection) thủ công như: “Nếu IP nằm trong blacklist thì cảnh báo” có thể áp dụng cho một số trường hợp đơn giản. + +- Tuy nhiên, **kẻ tấn công ngày càng khôn ngoan**, họ thay đổi phương pháp, IP, cách thức – dẫn đến **mô hình thủ công lỗi thời nhanh chóng**. + +ML có thể **học từ dữ liệu quá khứ**, nhận diện **mẫu hành vi nguy hiểm** ngay cả khi chưa từng xuất hiện trước đó (zero-day behavior). + +--- + +#### **2.3. Machine Learning có thể tự học mô hình** + +Thay vì lập trình cụ thể “nếu… thì…”, ML sử dụng dữ liệu huấn luyện để **tự tìm ra mối quan hệ ẩn** giữa các biến (features) và kết quả (như “bị tấn công” hay “bình thường”). + +Ví dụ: Nếu trong quá khứ, mỗi khi có: + +- Lượng traffic tăng đột biến + +- Gửi nhiều request đến 1 domain trong thời gian ngắn + +- Cùng 1 User Agent truy cập nhiều địa chỉ + +→ Thì thường dẫn đến hành vi tấn công DDoS → ML có thể học được mô hình này để cảnh báo sớm. + +--- + +#### **2.4. Tăng tốc độ và độ chính xác trong phát hiện** + +- ML giúp **giảm thời gian phát hiện** từ hàng giờ xuống còn vài phút hoặc thậm chí vài giây. + +- Một số mô hình deep learning còn đạt độ chính xác **trên 95%** trong phân loại phần mềm độc hại. + +--- + +#### **2.5. Khả năng thích ứng** + +- Các mô hình ML có thể được **huấn luyện lại** khi dữ liệu thay đổi, cho phép chúng **thích nghi với mối đe dọa mới**. + +- Điều này giúp hệ thống an ninh **linh hoạt và thông minh hơn theo thời gian**, không bị “già cỗi”. + +--- + +**Ghi nhớ** + +- Cybersecurity không còn là bài toán của riêng con người. Dữ liệu quá nhiều, tấn công quá nhanh, và rủi ro quá lớn. + +- ML là công cụ để **giảm gánh nặng thủ công**, **phát hiện hành vi bất thường nhanh hơn**, và **phòng thủ chủ động hơn**. + + +--- + + +### **3. Machine Learning là gì?** + +**Tóm tắt nội dung** + +Trong phần này, thầy Ricardo đi thẳng vào khái niệm **machine learning (học máy)** – không chỉ là một từ thời thượng, mà là **một tập hợp các phương pháp** giúp máy tính **tự động học từ dữ liệu**, từ đó đưa ra **dự đoán**, **phân loại**, hoặc **phát hiện** những mẫu (pattern) mà con người khó nhận ra. + +--- + +#### **3.1. Định nghĩa dễ hiểu** + +**Machine Learning (ML)** là tập hợp các phương pháp cho phép: + +- Máy tính **học từ dữ liệu có sẵn** + +- Sau đó **dự đoán hoặc phân loại** các dữ liệu mới chưa từng thấy + +- Dựa trên một mô hình đã học (learned model) + +Ví dụ: Nếu bạn cho máy “xem” hàng ngàn email được gắn nhãn là “spam” hoặc “không spam”, thì nó có thể học để tự động phát hiện spam trong tương lai. + +--- + +#### **3.2. Cách hoạt động tổng quan** + +Một mô hình ML cần 2 thành phần chính: + +- **Dữ liệu (data)**: Đầu vào của hệ thống. Dữ liệu càng chất lượng thì mô hình học càng tốt. + +- **Thuật toán học (learning algorithm)**: Cách máy “học” từ dữ liệu. + +Một cách dễ hình dung: + +> Mô hình ML giống như học sinh, dữ liệu là sách vở, còn thuật toán học là phương pháp học (ghi nhớ, rút gọn, tổng hợp…). + +--- + +#### **3.3. Dự đoán, phân nhóm hay phát hiện?** + +Các phương pháp ML được áp dụng cho nhiều nhiệm vụ: + +- **Phân loại (classification)**: Dự đoán nhãn (label), ví dụ: “email này là spam hay không?” + +- **Hồi quy (regression)**: Dự đoán giá trị liên tục, ví dụ: “nhiệt độ ngày mai là bao nhiêu?” + +- **Phân nhóm (clustering)**: Gom các mẫu dữ liệu thành nhóm có đặc điểm tương đồng, ví dụ: “phân nhóm người dùng có hành vi lạ”. + +- **Phát hiện bất thường (anomaly detection)**: Phát hiện hành vi không bình thường trong hệ thống mạng – rất quan trọng trong cybersecurity. + +--- + +#### **3.4. Mô hình có thể là hình học** + +Nhiều thuật toán ML dựa trên **hình học**, như: + +- Khoảng cách giữa các điểm dữ liệu (distance metric) + +- Các đường phân tách tuyến tính (linear boundaries) + +Ví dụ: Giống như bạn vẽ một đường chia học sinh giỏi và học sinh khá trên biểu đồ điểm toán – đường này chính là mô hình. + +--- + +#### **3.5. ML không phải là “magic”** + +ML **không tự động hiểu dữ liệu** – bạn phải: + +- Cung cấp dữ liệu đúng cách (tiền xử lý, chọn đặc trưng phù hợp) + +- Đánh giá mô hình sau khi huấn luyện + +Nó giống như dạy học sinh học: bạn phải **soạn giáo án tốt**, **kiểm tra đánh giá đúng**, và **chỉnh sửa nếu học sinh học sai**. + +--- + +**Ghi nhớ** + +- ML là quá trình **học từ dữ liệu**, không phải lập trình ra các quy tắc thủ công. + +- Mục tiêu là **tạo ra mô hình có thể dự đoán đúng trong tương lai**. + +- Hiểu được bản chất của mô hình là hình học (distance, boundaries) giúp bạn dễ hình dung hơn về cách máy hoạt động. + + +--- + + +### **4. Big Data là gì và tại sao nó quan trọng?** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo giải thích về khái niệm **Big Data (dữ liệu lớn)** – một trong những lý do chính khiến việc sử dụng Machine Learning trở nên **bắt buộc** trong lĩnh vực an ninh mạng (và nhiều lĩnh vực khác). Bởi vì khi dữ liệu quá nhiều, con người không thể xử lý nổi, chỉ có máy móc mới làm nổi. + +--- + +#### **4.1. Big Data là gì?** + +**Big Data** là khối lượng dữ liệu quá lớn đến mức: + +- Không thể xử lý trên một máy tính bình thường (VD: 8GB RAM, CPU đời mới). + +- Không thể mở Excel ra xem từng dòng một như trước nữa. + +- Phải dùng **các công cụ đặc biệt**, **máy tính mạnh hơn** hoặc **nhiều máy chạy song song**. + +Ví dụ: Một công ty tài chính mỗi ngày có thể sinh ra **hàng terabyte (TB)** log giao dịch – đây là Big Data. + +--- + +#### **4.2. Tại sao Big Data lại phổ biến trong cybersecurity?** + +- Mỗi thiết bị mạng, firewall, máy chủ, người dùng… đều tạo ra log. + +- Mỗi sự kiện truy cập, gửi mail, tải file, kết nối đến IP lạ… đều được ghi lại. + +- Tấn công mạng (như APT, ransomware) có thể tạo ra hàng ngàn sự kiện nhỏ trong vài phút. + +→ Tất cả tạo nên một **lượng dữ liệu khổng lồ**, phức tạp, và đa dạng. + +--- + +#### **4.3. Cần gì để xử lý Big Data?** + +Muốn xử lý được Big Data, ta cần: + +**Cách 1: Máy tính mạnh hơn** + +- Dùng **GPU (Graphics Processing Unit)**: xử lý tính toán song song, rất nhanh. + +- Dùng **CPU đa lõi (multi-core)**: nhiều lõi chạy cùng lúc. + +- Một số còn dùng **TPU (Tensor Processing Unit)** – chip chuyên cho AI. + +**Cách 2: Dùng nhiều máy tính chạy song song (distributed computing)** + +- Sử dụng công cụ như **Hadoop** hay **Apache Spark**. + +- Dữ liệu được chia nhỏ và xử lý cùng lúc trên nhiều máy tính (giống như chia bài cho nhiều người cùng chơi). + +--- + +#### **4.4. ML và Big Data: “Cặp đôi hoàn hảo”** + +- **Machine Learning cần dữ liệu** để học → Big Data cung cấp dữ liệu dồi dào. + +- **Big Data quá lớn để phân tích thủ công** → ML giúp phân tích tự động, nhanh chóng, chính xác. + +Nói cách khác, Big Data là “nhiên liệu”, còn ML là “động cơ” để khai thác sức mạnh của dữ liệu. + +--- + +#### **4.5. Ứng dụng thực tế** + +- **Phát hiện xâm nhập mạng (Intrusion Detection)**: Phân tích hàng triệu log để phát hiện hành vi tấn công. + +- **Phân tích hành vi người dùng (UBA)**: Theo dõi hành vi bất thường của user trong hệ thống lớn. + +- **Phân loại email**: Dùng ML để phân tích hàng triệu email và phát hiện lừa đảo (phishing). + +--- + +**Ghi nhớ** + +- Big Data là **thực tế tất yếu** trong kỷ nguyên số, đặc biệt ở các tổ chức lớn. + +- Bạn không thể “đọc” từng dòng log bằng mắt – phải dùng công cụ, phải dùng ML. + +- ML không chỉ “chịu đựng” được Big Data – mà còn **phát huy sức mạnh nhất khi có nhiều dữ liệu**. + + +--- + + +### **5. Các thuật ngữ căn bản trong Machine Learning** + +**Tóm tắt nội dung** + +Phần này giải thích các **khái niệm cốt lõi** mà bất kỳ ai học ML đều phải nắm rõ: supervised learning (học có giám sát), unsupervised learning (học không giám sát), features (đặc trưng), datasets (tập dữ liệu), và cách đánh giá mô hình (evaluation). Đây là nền tảng để bạn hiểu rõ các mô hình hoạt động ra sao. + +--- + +#### **5.1. Supervised Learning (Học có giám sát)** + +**Khái niệm** + +- Dữ liệu có **nhãn (label)** đi kèm. + +- Mô hình học cách **liên kết đặc trưng (features)** với nhãn đầu ra. + +- Giống như bạn dạy học sinh bằng cách **cho bài tập có đáp án**. + +**Quy trình** + +![[Pasted image 20250729102856.png]] + +1. Chia dữ liệu thành 2 phần: + + - **Train Data (dữ liệu huấn luyện)**: để mô hình học. + + - **Test Data (dữ liệu kiểm tra)**: để đánh giá mô hình. + + +2. Dùng thuật toán → tạo ra **classifier (bộ phân loại)**. + +3. Đưa X_test vào mô hình → so sánh kết quả Y_test dự đoán với nhãn thật. + +**Ví dụ** + +- Dự đoán email là “spam” hay “ham” (thư thường). + +- Phân loại địa chỉ IP là “bình thường” hay “nguy hiểm”. + +--- + +#### **5.2. Unsupervised Learning (Học không giám sát)** + +**Khái niệm** + +- Dữ liệu **không có nhãn**. + +- Mô hình cố gắng **tìm ra cấu trúc ẩn hoặc phân nhóm (clusters)** bên trong dữ liệu. + +**Quy trình** + +![[Pasted image 20250729102936.png]] + +1. Thu thập dữ liệu. + +2. Áp dụng thuật toán **clustering (gom cụm)** như K-means. + +3. Xem kết quả phân nhóm có ý nghĩa gì không. + +**Ví dụ** + +- Phân nhóm người dùng theo hành vi truy cập web. + +- Phát hiện **hành vi bất thường** trong log hệ thống – thường dùng trong an ninh mạng khi chưa biết mẫu tấn công. + +--- + +#### **5.3. Các thuật ngữ quan trọng khác** + +**Feature (Đặc trưng)** + +- Là những thông tin mô tả mẫu dữ liệu. + +- Ví dụ: Trong email, các feature có thể là: số từ “free”, có đính kèm file không, ngôn ngữ sử dụng, v.v. + +**Dataset (Tập dữ liệu)** + +- Là tập hợp nhiều mẫu dữ liệu để huấn luyện mô hình. + +- Gồm cả dữ liệu đầu vào (features) và đầu ra (labels – nếu là supervised). + +**Pre-processing (Tiền xử lý dữ liệu)** + +- Là bước làm sạch, định dạng lại dữ liệu để mô hình học tốt hơn. + +- Ví dụ: chuẩn hóa số liệu, chuyển text thành số, loại bỏ dữ liệu thiếu. + +**Performance metrics (Chỉ số đánh giá mô hình)** + +Một số chỉ số phổ biến: + +- **Accuracy (Độ chính xác)**: bao nhiêu % mẫu dự đoán đúng. + +- **Precision / Recall / F1-score**: dùng khi dữ liệu mất cân bằng (VD: tấn công mạng rất hiếm, nên cần đo đúng loại). + +- **Confusion Matrix**: ma trận phân tích đúng/sai giữa các lớp dự đoán và thực tế. + +--- + +**So sánh nhanh: Supervised vs Unsupervised** + +|**Đặc điểm**|**Supervised Learning**|**Unsupervised Learning**| +|---|---|---| +|Có nhãn dữ liệu?|Có|Không| +|Bài toán điển hình|Phân loại (classification)|Gom nhóm (clustering)| +|Mục tiêu|Dự đoán nhãn cho dữ liệu mới|Tìm cấu trúc ẩn trong dữ liệu| +|Ví dụ ứng dụng|Phát hiện spam, phân loại IP|Phân cụm hành vi truy cập bất thường| + +--- + +**Ghi nhớ** + +- **Supervised**: có đáp án → dạy máy dự đoán. + +- **Unsupervised**: không có đáp án → để máy tự “nhìn hình đoán chữ”. + +- Feature và pre-processing **cực kỳ quan trọng** – như chọn nguyên liệu ngon trước khi nấu ăn. + +- Đánh giá mô hình không chỉ dựa vào accuracy – phải chọn đúng **chỉ số phù hợp với bài toán**. + + +--- + + +### **6. Các thuật toán phổ biến trong Machine Learning** + +**Tóm tắt nội dung** + +Phần này giới thiệu những **thuật toán cốt lõi** được dùng rộng rãi trong cả nghiên cứu và ứng dụng thực tế – từ các bài toán đơn giản như phân loại email, đến các bài toán phức tạp như phát hiện mã độc, dự đoán hành vi tấn công mạng. + +--- + +#### **6.1. Naive Bayes** + +- Dựa trên định lý Bayes và **giả định độc lập giữa các đặc trưng**. + +- Rất nhanh và hiệu quả trong các bài toán phân loại văn bản (text classification). + +**Ví dụ**: Phân loại email là spam/ham dựa trên tần suất từ như “free”, “click”, “money”. + +✅ **Ưu điểm**: Tốc độ nhanh, ít tài nguyên. +❌ **Nhược điểm**: Giả định đơn giản (các feature không phụ thuộc lẫn nhau). + +--- + +#### **6.2. Decision Trees (Cây quyết định)** + +- Mô hình cây: chia nhỏ dữ liệu theo các điều kiện “nếu – thì” để đi đến quyết định. + +- Dễ hiểu và giải thích. + +**Ví dụ**: Nếu IP nằm trong blacklist → kiểm tra cổng kết nối → nếu đúng port bất thường → cảnh báo. + +✅ **Ưu điểm**: Dễ trực quan, giải thích được. +❌ **Nhược điểm**: Dễ overfit (học quá kỹ dữ liệu train). + +--- + +#### **6.3. Random Forest** + +- Là tập hợp nhiều cây quyết định → bỏ phiếu để ra kết quả. + +- Giảm nguy cơ overfitting và tăng độ chính xác. + +✅ **Ưu điểm**: Mạnh hơn Decision Tree, hoạt động tốt với dữ liệu nhiều chiều. + +--- + +#### **6.4. K-Nearest Neighbors (KNN)** + +- Khi gặp dữ liệu mới, mô hình **so sánh khoảng cách** đến K điểm gần nhất trong dữ liệu huấn luyện → lấy đa số để quyết định. + +**Ví dụ**: IP A có hành vi tương tự 3 IP đã bị đánh giá là tấn công → dự đoán IP A cũng nguy hiểm. + +✅ **Ưu điểm**: Đơn giản, không cần huấn luyện trước. +❌ **Nhược điểm**: Tốn thời gian tính khoảng cách, không hiệu quả với dữ liệu lớn. + +--- + +#### **6.5. Linear Regression (Hồi quy tuyến tính)** + +- Dùng để dự đoán **giá trị số** bằng cách học một đường thẳng phù hợp với dữ liệu. + +**Ví dụ**: Dự đoán số lượng kết nối mạng bất thường dựa trên thời gian trong ngày. + +--- + +#### **6.6. Logistic Regression** + +- Dùng cho **phân loại nhị phân**, dù tên có “regression”. + +- Dự đoán xác suất thuộc một nhãn (VD: 0 hoặc 1). + +**Ví dụ**: Xác suất một request là tấn công hay không. + +--- + +#### **6.7. Neural Networks (Mạng nơ-ron)** + +- Mô hình mô phỏng cách hoạt động của não người, gồm nhiều lớp xử lý. + +- Mỗi lớp học một biểu diễn trừu tượng hơn của dữ liệu. + +**Ứng dụng**: Phát hiện mã độc, nhận diện hình ảnh, xử lý ngôn ngữ. + +✅ **Ưu điểm**: Khả năng học dữ liệu phức tạp. +❌ **Nhược điểm**: Cần dữ liệu lớn, tốn tài nguyên tính toán. + +--- + +#### **6.8. Support Vector Machines (SVM)** + +- Tìm ra đường biên phân tách tối ưu giữa các lớp. + +- Có thể dùng kernel để phân lớp phi tuyến tính. + +✅ **Ưu điểm**: Hiệu quả với dữ liệu nhiều chiều, rõ ràng. + +--- + +**Ghi nhớ** + +- Mỗi thuật toán có **ưu – nhược điểm riêng**, không có mô hình “thần thánh”. + +- Quan trọng là hiểu **dữ liệu của bạn thuộc dạng gì** (nhiễu, nhiều chiều, mất cân bằng?) để chọn mô hình phù hợp. + +- Trong thực tế, thường phải **thử nhiều mô hình**, **đánh giá bằng số liệu**, rồi mới chọn cái tốt nhất. + + +--- + + +### **7. Deep Learning là gì? Khác gì với Machine Learning?** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo giải thích **Deep Learning (học sâu)** chính là một nhánh con của Machine Learning, nhưng mạnh mẽ hơn nhiều nhờ khả năng học **tự động từ dữ liệu lớn** và **không cần đặc trưng thủ công**. Đây là công nghệ đứng sau các ứng dụng “AI hiện đại” như nhận diện khuôn mặt, dịch ngôn ngữ, ChatGPT… + +--- + +#### **7.1. Deep Learning là gì?** + +- Là **một loại đặc biệt của mạng nơ-ron nhân tạo (Neural Network)**, nhưng có **nhiều lớp ẩn (hidden layers)** giữa đầu vào và đầu ra. + +- Càng nhiều lớp → càng “deep” → học được các biểu diễn phức tạp hơn. + +Ví dụ đơn giản: + +- ML: cần kỹ sư viết feature “tên miền lạ” → mô hình mới phát hiện tấn công. + +- DL: tự học ra đặc trưng như “domain có pattern đáng ngờ” mà không cần con người thiết kế. + +--- + +#### **7.2. Sự khác biệt giữa Machine Learning và Deep Learning** + +|**Tiêu chí**|**Machine Learning**|**Deep Learning**| +|---|---|---| +|Cần tạo feature thủ công|Có|Không (tự học từ dữ liệu thô)| +|Dữ liệu cần thiết|Có thể học với tập nhỏ|Cần tập dữ liệu rất lớn| +|Tài nguyên xử lý|Có thể chạy bằng CPU thông thường|Cần GPU mạnh để huấn luyện| +|Giải thích mô hình|Dễ hiểu, dễ giải thích|Khó hiểu, “hộp đen”| +|Ứng dụng tiêu biểu|Spam filter, dự đoán giá, phân loại đơn giản|Nhận diện khuôn mặt, dịch tự động, chatbot AI| + +--- + +#### **7.3. Vì sao Deep Learning bùng nổ từ 2012?** + +- **Sức mạnh GPU**: giúp xử lý nhanh hàng triệu phép nhân ma trận. + +- **Big Data**: có nhiều dữ liệu hơn để huấn luyện mô hình phức tạp. + +- **Thuật toán tối ưu**: như backpropagation, ReLU, dropout… được cải thiện. + +- **Kết quả vượt trội**: Trong nhiều bài toán như nhận dạng ảnh, dịch ngôn ngữ, Deep Learning **đánh bại tất cả mô hình ML truyền thống**. + +--- + +#### **7.4. Cách Deep Learning hoạt động** + +- Input (dữ liệu thô) → đi qua nhiều lớp tính toán → càng vào sâu, càng trừu tượng. + +- Ở lớp đầu: học cạnh, màu (trong ảnh). + +- Ở lớp giữa: học hình dạng, cấu trúc. + +- Ở lớp cuối: học concept như “mặt người”, “hành vi tấn công”. + +--- + +#### **7.5. Deep Learning và Cybersecurity** + +Deep Learning đã được áp dụng hiệu quả vào nhiều bài toán an ninh mạng: + +- **Phân loại phần mềm độc hại (malware classification)**: dùng DL để phân tích binary như ảnh. + +- **Phát hiện hành vi bất thường** trong hệ thống mạng. + +- **Nhận diện ngôn ngữ độc hại** trong log hoặc email phishing. + +--- + +**Ghi nhớ** + +- Deep Learning không thay thế Machine Learning, mà **mở rộng và nâng cấp khả năng học từ dữ liệu lớn**. + +- Khi nào dùng DL? + + - Khi có **nhiều dữ liệu**. + + - Khi bài toán **phức tạp hoặc phi cấu trúc** (ảnh, chuỗi, ngôn ngữ…). + + +- DL mạnh nhưng **tốn tài nguyên**, cần hiểu rõ **điều kiện áp dụng** để không lãng phí. + + +--- + + +### **8. Pipeline (Quy trình) Machine Learning điển hình** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo trình bày quy trình chung để xây dựng một mô hình machine learning. Đây là **“xương sống”** của bất kỳ dự án học máy nào – dù bạn làm phát hiện xâm nhập mạng, phân loại email, hay dự đoán hành vi tấn công. + +--- + +#### **8.1. Các bước trong pipeline ML** + +**Bước 1: Thu thập dữ liệu (Data Collection)** + +- Dữ liệu có thể từ nhiều nguồn: + + - Log hệ thống + + - Tập tin .csv, .arff, .libsvm + + - Dữ liệu từ IDS, firewall, honeypot, endpoint, cloud… + +> Ví dụ: Tập dữ liệu NSL-KDD dùng để huấn luyện mô hình phát hiện xâm nhập mạng. + +--- + +**Bước 2: Tiền xử lý dữ liệu (Pre-processing)** + +- Là bước **làm sạch và chuẩn bị dữ liệu** để đưa vào mô hình: + + - Xử lý thiếu dữ liệu (missing values) + + - Mã hóa dữ liệu dạng text (VD: tcp/udp → số) + + - Chuẩn hóa hoặc scale giá trị (min-max, z-score…) + +> Dữ liệu chưa xử lý giống như nguyên liệu chưa sơ chế – rất khó “nấu ăn” đúng. + +--- + +**Bước 3: Vector Space Model (Biểu diễn dữ liệu thành vector)** + +- Mọi dữ liệu (text, hình ảnh, network flow…) đều phải **chuyển thành dạng số** (vector) thì mô hình mới hiểu được. + +- Ví dụ: + + - Với text → dùng Bag-of-Words hoặc TF-IDF + + - Với ảnh → ma trận pixel + + - Với dữ liệu mạng → các chỉ số như duration, protocol, byte in/out… + +> Bước này giúp dữ liệu có dạng **đồng nhất và có thể tính toán được**. + +--- + +**Bước 4: Áp dụng thuật toán học máy (Apply ML Algorithm)** + +- Chọn một mô hình phù hợp: Naive Bayes, KNN, Decision Tree, Neural Network… + +- Chia dữ liệu thành tập train/test + +- Huấn luyện mô hình trên tập train + +> Trong bảo mật, có thể dùng Random Forest để phân loại packet, hoặc dùng Deep Learning để phát hiện hành vi tấn công dựa trên log chuỗi. + +--- + +**Bước 5: Đánh giá mô hình (Evaluation)** + +- Dùng tập test để kiểm tra độ chính xác: + + - Accuracy + + - Precision / Recall / F1-score + + - Confusion Matrix + + +- Tùy bài toán mà chọn chỉ số phù hợp. Ví dụ: + + - Với tấn công mạng (thường rất hiếm): **Precision và Recall quan trọng hơn Accuracy** + +--- + +#### **8.2. Mối liên kết giữa các bước** + +- Từng bước **liên kết chặt chẽ với nhau**: + + - Dữ liệu đầu vào chất lượng → pre-processing dễ dàng hơn. + + - Feature tốt → mô hình học hiệu quả hơn. + + - Đánh giá đúng → chọn được mô hình phù hợp nhất. + +> Nếu 1 bước làm sai, cả pipeline có thể “sập đổ”. + +--- + +**Ghi nhớ** + +- Pipeline ML gồm 5 bước: **Dữ liệu → Tiền xử lý → Vector hóa → Huấn luyện mô hình → Đánh giá**. + +- Đây là **quy trình tiêu chuẩn**, được dùng trong mọi ứng dụng từ AI đến cybersecurity. + +- Làm tốt pipeline giúp bạn **hiểu rõ toàn bộ vòng đời của một mô hình ML thực thụ** – không chỉ “chạy code cho xong”. + + +--- + + +### **9. Định dạng dữ liệu và ví dụ thực tế** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo giới thiệu các **định dạng dữ liệu phổ biến** trong Machine Learning, đặc biệt là trong lĩnh vực an ninh mạng, cũng như **ví dụ cụ thể** về cách dữ liệu được trình bày để đưa vào mô hình học máy. + +--- + +#### **9.1. Vì sao định dạng dữ liệu lại quan trọng?** + +- Mọi mô hình học máy đều cần **đầu vào là dữ liệu dạng số**. + +- Định dạng dữ liệu quyết định cách bạn xử lý, đọc, và huấn luyện mô hình. + +- Một số công cụ ML như **WEKA**, **scikit-learn**, **libsvm** chỉ chấp nhận định dạng nhất định. + +--- + +#### **9.2. Các định dạng dữ liệu phổ biến** + +**1. CSV (.csv – Comma-Separated Values)** + +- Cấu trúc đơn giản, dễ đọc. + +- Mỗi dòng là một mẫu dữ liệu. + +- Các giá trị cách nhau bằng dấu phẩy. + +**Ví dụ:** + +``` +0,tcp,http,SF,162,4528,0,0,0,1,...,normal +``` + +Ở đây: + +- 0: duration + +- tcp: protocol type + +- http: service + +- normal: label (bình thường) + +✅ **Ưu điểm**: dễ xem bằng Excel, đọc bằng Python (pandas). +❌ **Nhược điểm**: không có thông tin định dạng (kiểu dữ liệu). + +--- + +**2. LibSVM format (.libsvm)** + +- Dùng phổ biến trong các công cụ như SVM hoặc XGBoost. + +- Dữ liệu được biểu diễn dạng: [label] [index]:[value] ... + +**Ví dụ:** + +``` +1 1:0.53 3:0.27 6:0.94 ... +``` + +→ Dễ dàng cho máy tính đọc nhanh các feature sparse (thưa). + +✅ **Ưu điểm**: tối ưu cho dữ liệu có nhiều đặc trưng, dùng trong big data. +❌ **Nhược điểm**: khó đọc bằng mắt người. + +--- + +**3. ARFF (.arff – Attribute Relation File Format)** + +- Định dạng đặc trưng của **WEKA**. +- Có 2 phần: phần khai báo thuộc tính + phần dữ liệu. + +**Ví dụ:** + +``` +@attribute duration numeric +@attribute protocol_type {tcp, udp, icmp} +@data +0,tcp,http,SF,162,4528,0,0,0,1,...,normal +``` + +✅ **Ưu điểm**: có thông tin kiểu dữ liệu rõ ràng. +❌ **Nhược điểm**: không phổ biến ngoài WEKA. + +--- + +#### **9.3. Thế nào là một “sample” trong dữ liệu?** + +**Sample (mẫu dữ liệu)**: là **đơn vị nhỏ nhất** mà mô hình học từ đó. Mỗi sample có thể là: + +- Một dòng log mạng. + +- Một email. + +- Một ảnh chụp dấu vân tay. + +- Trung bình giá trị trong 10 giây của hệ thống mạng. + +> **Xác định rõ sample là gì là bước rất quan trọng** – vì nó ảnh hưởng trực tiếp đến việc trích xuất đặc trưng và huấn luyện mô hình. + +--- + +#### **9.4. Ví dụ thực tế trong cybersecurity** + +**Ví dụ 1: Email phishing** + +- Mỗi sample là 1 email. + +- Các feature: số từ khóa nghi ngờ, có file đính kèm không, đường link lạ… + +- Label: phishing / không phishing. + +**Ví dụ 2: Network traffic** + +- Mỗi sample là 1 phiên kết nối (flow). + +- Feature: thời lượng kết nối, byte gửi đi, loại protocol. + +- Label: normal / attack + +--- + +**Ghi nhớ** + +- Định dạng dữ liệu ảnh hưởng đến việc đọc, xử lý và huấn luyện mô hình. + +- Biết cách **chuyển đổi giữa các định dạng phổ biến** sẽ giúp bạn làm việc dễ hơn với nhiều công cụ. + +- Hiểu rõ **sample là gì** là tiền đề quan trọng trước khi bắt đầu tiền xử lý hay trích xuất đặc trưng. + + +--- + + +### **10. Một số bộ dữ liệu dùng trong an ninh mạng** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo giới thiệu một số **bộ dữ liệu tiêu chuẩn** mà các nhà nghiên cứu và kỹ sư an ninh mạng thường sử dụng để xây dựng và đánh giá các mô hình ML/DL. Những bộ dữ liệu này thường mô phỏng các cuộc tấn công mạng hoặc hành vi bất thường – rất quan trọng trong việc dạy máy “phân biệt giữa bình thường và nguy hiểm”. + +--- + +#### **10.1. Vai trò của bộ dữ liệu trong cybersecurity** + +- Là **nguồn “thực phẩm” đầu vào** cho mô hình học máy. + +- Phải đủ: + + - **Lớn**: nhiều mẫu dữ liệu + + - **Đa dạng**: có nhiều loại tấn công khác nhau + + - **Cân bằng**: tránh quá lệch giữa nhãn “bình thường” và “tấn công” + + +- Một bộ dữ liệu tốt giúp: + + - Tăng độ chính xác phát hiện tấn công + + - Huấn luyện mô hình thực tế, dễ triển khai + +--- + +#### **10.2. Một số bộ dữ liệu phổ biến** + +**1. NSL-KDD** + +- Phiên bản nâng cấp của bộ KDD Cup 1999. + +- Bao gồm nhiều loại tấn công như: + + - DoS (Tấn công từ chối dịch vụ) + + - Probe (do thám) + + - U2R (user-to-root) + + - R2L (remote-to-local) + + +- Có định dạng .csv, dễ xử lý. + +✅ **Ưu điểm**: Phổ biến, dễ tải về, dùng để học và benchmark. +❌ **Nhược điểm**: Dữ liệu cũ, ít phản ánh thực tế hiện tại. + +--- + +**2. UNSW-NB15** + +- Do UNSW Canberra tạo ra vào năm 2015. + +- Mô phỏng hệ thống mạng thực tế, sinh ra log bằng công cụ IXIA PerfectStorm. + +- Có nhiều loại tấn công hiện đại hơn như: + + - Fuzzers, Backdoors, Worms, Exploits… + +✅ **Ưu điểm**: Dữ liệu thực tế, chất lượng cao, phù hợp bài toán hiện đại. + +--- + +**3. Phishing Datasets** + +- Các tập email đã được phân loại là phishing / legit. + +- Dùng trong các bài toán như: + + - Phát hiện email lừa đảo + + - Phân tích URL độc hại + +> Một số tập như PhishTank, UCI Phishing Websites Data, v.v. + +--- + +**4. Honeypot datasets** + +- Log từ các máy chủ “mồi” (honeypot) đặt ra để thu thập hành vi tấn công. + +- Có thể bao gồm: + + - IP nguồn tấn công + + - Câu lệnh tấn công + + - Thời gian thực hiện + +✅ **Rất hữu ích** để huấn luyện mô hình phát hiện tấn công thực tế. + +--- + +**5. Botnet / Malware traffic** + +- Tập log từ hệ thống bị nhiễm malware, botnet. + +- Mô hình học có thể: + + - Nhận diện command & control traffic + + - Phân biệt giữa traffic thật và giả + +--- + +**6. Biometric datasets** + +- Dùng trong bài toán xác thực người dùng: + + - Dấu vân tay + + - Hành vi gõ phím + + - Nhận diện khuôn mặt + +→ Gắn liền với **authentication** trong bảo mật cá nhân. + +--- + +#### **10.3. Lưu ý khi chọn bộ dữ liệu** + +- **Hiểu rõ mục tiêu bài toán**: phát hiện tấn công mạng? phishing? phân loại phần mềm độc hại? + +- **Kiểm tra cấu trúc dữ liệu**: có nhãn không? định dạng gì? dữ liệu có bị mất không? + +- **Tìm hiểu nguồn**: dữ liệu từ đâu? có công khai không? có cần xử lý thêm không? + +--- + +**Ghi nhớ** + +- Không có mô hình nào mạnh nếu **thiếu dữ liệu huấn luyện chất lượng**. + +- Bắt đầu với **NSL-KDD** hoặc **UNSW-NB15** nếu bạn muốn luyện bài toán phát hiện tấn công mạng. + +- Luôn kiểm tra kỹ **định dạng, chất lượng, và độ cập nhật của bộ dữ liệu** trước khi dùng để train mô hình. + + +--- + + +### **11. Doanh nghiệp nào đang áp dụng Machine Learning và trong lĩnh vực nào?** + +**Tóm tắt nội dung** + +Phần này thầy Ricardo liệt kê các **tập đoàn công nghệ lớn và các công ty an ninh mạng** đã tích cực áp dụng Machine Learning vào sản phẩm và dịch vụ của họ. Bạn sẽ thấy ML không còn là “xu hướng tương lai” nữa – **nó đang ở khắp nơi trong hiện tại.** + +--- + +#### **11.1. Các công ty công nghệ hàng đầu sử dụng ML** + +**1. Google** + +- Dùng ML để: + + - **Gợi ý tìm kiếm thông minh** + + - Phân loại **spam trong Gmail** + + - Dịch ngôn ngữ (Google Translate) + + - Phát hiện và lọc nội dung vi phạm trên YouTube + +**2. Facebook** + +- Áp dụng ML để: + + - **Phát hiện nội dung độc hại hoặc giả mạo** + + - Nhận diện khuôn mặt trong ảnh + + - Tối ưu hóa quảng cáo nhắm mục tiêu người dùng + +**3. Amazon** + +- ML dùng trong: + + - **Alexa (trợ lý giọng nói)** – hiểu ngôn ngữ và phản hồi người dùng + + - Dự đoán nhu cầu đặt hàng + + - Phân tích hành vi khách hàng + +**4. Apple** + +- Ứng dụng ML vào: + + - **Face ID** + + - Siri + + - Gợi ý ứng dụng / hành động dựa trên thói quen người dùng + +**5. Microsoft** + +- Cung cấp nền tảng ML trong: + + - **Azure Machine Learning** + + - Office 365 (sửa lỗi chính tả thông minh, gợi ý viết mail) + + +--- + + +#### **11.2. Các công ty chuyên về an ninh mạng sử dụng ML** + +**1. Northrop Grumman** + +- Công ty quốc phòng Mỹ, áp dụng ML vào: + + - Phát hiện tấn công mạng + + - Phân tích hành vi thù địch trong thời gian thực + + +**2. BluVector** + +- Sản phẩm sử dụng ML để: + + - **Phát hiện mã độc zero-day** + + - Nhận diện hành vi bất thường trong mạng doanh nghiệp + + +**3. Các ngân hàng và tổ chức tài chính** + +- Ứng dụng ML để: + + - **Phát hiện giao dịch gian lận (fraud detection)** + + - Phân tích hành vi người dùng để phát hiện truy cập trái phép + +> ML giúp các tổ chức này xử lý **hàng triệu giao dịch mỗi ngày**, phát hiện bất thường gần như **ngay lập tức**. + +--- + +#### **11.3. Vai trò của ML trong các lĩnh vực khác** + +|**Lĩnh vực**|**Ứng dụng ML nổi bật**| +|---|---| +|**Thương mại điện tử**|Gợi ý sản phẩm, phân tích hành vi khách hàng| +|**Y tế**|Dự đoán bệnh, phân tích hình ảnh y tế, thuốc cá nhân hóa| +|**Giao thông**|Xe tự lái (Tesla), tối ưu hóa tuyến đường| +|**Tài chính**|Dự đoán thị trường, phân tích rủi ro| +|**Giáo dục**|Gợi ý lộ trình học tập cá nhân hóa, phân tích kết quả học| + +--- + +**Ghi nhớ** + +- ML không còn là công nghệ “viễn tưởng”, mà đã **ăn sâu vào hoạt động của các ông lớn công nghệ** và cả **doanh nghiệp truyền thống**. + +- Trong an ninh mạng, ML giúp **phát hiện tấn công nhanh hơn, chính xác hơn và mở rộng quy mô** bảo vệ dễ dàng hơn. + +- **Nếu bạn học ML hôm nay**, bạn đang đi đúng hướng để bắt kịp tương lai công nghệ đang diễn ra ngay bây giờ. + + +--- + + +### **12. Môi trường lập trình: Nền tảng, công cụ, phần cứng cần thiết** + +**Tóm tắt nội dung** + +Ở phần này, thầy Ricardo hướng dẫn chúng ta nên sử dụng **những công cụ, thư viện và phần cứng nào** để thực hành ML hiệu quả. Dù bạn dùng **máy ảo, máy thật, hay cloud**, phần này sẽ giúp bạn lựa chọn đúng công cụ để bắt đầu. + +--- + +#### **12.1. Môi trường phần mềm (Software Environment)** + +**1. Hệ điều hành** + +- Nên dùng **Linux**, cụ thể: + + - **Ubuntu 14.04 – 16.04 (64-bit)**: tương thích tốt với nhiều công cụ ML. + +- Hoặc có thể dùng **macOS** nếu bạn đang dùng máy Mac. + +**2. Công cụ lập trình** + +- **Python**: ngôn ngữ phổ biến nhất cho ML. + +- Trình quản lý môi trường ảo: venv, conda. + +**3. Các thư viện và framework ML** + +- **NumPy**: xử lý mảng và tính toán số học. + +- **Pandas**: phân tích dữ liệu dạng bảng (giống Excel). + +- **Scikit-learn (Sklearn)**: thư viện học máy cổ điển, dễ dùng. + +- **TensorFlow**: thư viện mạnh cho deep learning, đặc biệt khi xử lý dữ liệu lớn. + +- **WEKA**: giao diện kéo-thả đơn giản, phù hợp cho người mới học, nhưng ít phổ biến hơn Python. + +**4. Nền tảng đám mây** + +- **AWS (Amazon Web Services)**: bạn có thể dùng máy ảo EC2 có GPU để huấn luyện mô hình nếu không có máy mạnh. + +--- + +#### **12.2. Phần cứng khuyến nghị nếu bạn muốn tự build máy** + +Nếu bạn muốn **tự xây dựng một dàn máy chuyên để học ML hoặc làm dự án thực tế**, thầy Ricardo gợi ý cấu hình như sau: + +|**Bộ phận**|**Đề xuất tối thiểu**| +|---|---| +|**GPU (Card đồ họa)**|GeForce GTX 980 hoặc tốt hơn (GTX 1070, Titan)| +|**CPU**|AMD 8-core hoặc tương đương| +|**RAM**|Tối thiểu **32 GB** DDR3| +|**Ổ cứng**|SSD **1TB** để đọc ghi dữ liệu nhanh| +|**Nguồn**|EVGA SuperNOVA 1200 P2| +|**Mainboard (Bo mạch)**|Hỗ trợ đủ khe cắm cho GPU + CPU| +|**Vỏ case**|Loại rộng, thoáng khí| +|**Chi phí**|Khoảng **1,500 – 2,000 USD** cho cấu hình 1 CPU + 1 GPU| + +> Đây là cấu hình hợp lý nếu bạn xác định học ML/DL lâu dài và làm các bài toán lớn. + +--- + +#### **12.3. Máy ảo vs Máy thật vs Cloud** + +|**Phương án**|**Ưu điểm**|**Nhược điểm**| +|---|---|---| +|**Máy ảo (VM)**|Dễ thiết lập, không ảnh hưởng hệ thống chính|Hiệu năng kém hơn máy thật| +|**Máy thật**|Hiệu năng cao, chủ động cài đặt|Chi phí phần cứng, bảo trì| +|**Cloud (AWS)**|Không cần máy mạnh, có thể thuê theo giờ|Tốn phí theo thời gian sử dụng| + +--- + +**Ghi nhớ** + +- Học ML không cần phải có **máy “khủng” ngay từ đầu**, nhưng nên biết hướng nâng cấp nếu cần. + +- Dùng **Python + Sklearn/TensorFlow** là lựa chọn tối ưu để học và triển khai. + +- Bạn có thể dùng **máy ảo để học lý thuyết và làm thử**, sau đó chuyển lên cloud nếu cần xử lý dữ liệu lớn. + + +--- + + +### **13. Tổng kết và gợi ý thực hành** + +**Tóm tắt nội dung** + +Unit 1 là phần **mở đầu quan trọng**, giúp bạn xây nền vững chắc trước khi bước vào các bài học chuyên sâu. Ở phần này, thầy Ricardo tổng kết lại toàn bộ nội dung đã học và đưa ra một số hướng dẫn thực hành cơ bản để bạn **bắt đầu tự làm mô hình học máy trong an ninh mạng**. + +--- + +#### **13.1. Tóm lược kiến thức đã học** + +|**Chủ đề chính**|**Nội dung nổi bật**| +|---|---| +|**Giới thiệu ML cho Cybersecurity**|ML giúp xử lý dữ liệu lớn, tự học mô hình tấn công thay vì viết rule thủ công.| +|**Machine Learning là gì?**|Là quá trình học từ dữ liệu để dự đoán hoặc phân loại thông minh hơn.| +|**Big Data**|Lượng dữ liệu khổng lồ cần ML để phân tích hiệu quả và phát hiện tấn công.| +|**Supervised vs Unsupervised**|Phân biệt học có nhãn và học không nhãn, ứng dụng cụ thể trong an ninh mạng.| +|**Thuật toán học máy phổ biến**|Naive Bayes, KNN, Decision Tree, SVM, Neural Networks…| +|**Deep Learning**|Mạng nơ-ron nhiều lớp, tự học đặc trưng, mạnh trong bài toán phức tạp.| +|**Pipeline học máy**|Gồm: thu thập dữ liệu → tiền xử lý → vector hóa → mô hình → đánh giá.| +|**Định dạng dữ liệu & ví dụ thực tế**|.csv, .libsvm, .arff – cách lưu trữ và biểu diễn dữ liệu trong ML.| +|**Bộ dữ liệu Cyber phổ biến**|NSL-KDD, UNSW-NB15, Phishing, Honeypot…| +|**Doanh nghiệp ứng dụng ML**|Google, Amazon, Facebook, BluVector, ngân hàng…| +|**Môi trường thực hành**|Python, Sklearn, TensorFlow, Ubuntu, AWS, máy thật hoặc máy ảo.| + +--- + +#### **13.2. Gợi ý thực hành cho người mới bắt đầu** + +**✅ Bước 1: Cài môi trường cơ bản** + +- Cài **Python 3.8+** + +- Cài các thư viện cần thiết: + +``` +pip install numpy pandas scikit-learn matplotlib +``` +- Tạo notebook (VD: Google Colab hoặc Jupyter) + + +**✅ Bước 2: Tải bộ dữ liệu NSL-KDD** + +- Link: [https://www.unb.ca/cic/datasets/nsl.html](https://www.unb.ca/cic/datasets/nsl.html) + +- Đọc dữ liệu bằng pandas và hiển thị 5 dòng đầu tiên + +**✅ Bước 3: Chia dữ liệu thành train/test** + +- Sử dụng train_test_split từ sklearn.model_selection + + +**✅ Bước 4: Thử huấn luyện mô hình đơn giản** + +- Dùng **DecisionTreeClassifier** hoặc **RandomForest** + +- Đánh giá bằng accuracy_score + +**✅ Bước 5: Visualize kết quả** + +- Vẽ biểu đồ confusion matrix + +- So sánh accuracy giữa các thuật toán khác nhau + +--- + +#### **13.3. Tài nguyên mở rộng** + +- **GitHub của thầy Calix**: chứa tất cả mã nguồn mẫu cho khóa học ([**rcalix1**](https://github.com/rcalix1)) + +- Các tài liệu nên đọc: + - “Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow” + - “Machine Learning for Cybersecurity Cookbook” + +--- + +**Ghi nhớ** + +- Đây chỉ là **bước khởi đầu** – nhưng rất quan trọng. Nếu bạn nắm được kiến thức Unit 1, bạn đã sẵn sàng bước vào **thế giới thật** của Machine Learning cho cybersecurity. +- **Thực hành là chìa khóa**: hãy thử code, chỉnh sửa, thử sai và học từ dữ liệu thật. + diff --git a/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 2 - Datasets and Features.md b/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 2 - Datasets and Features.md new file mode 100644 index 000000000..6468fbe38 --- /dev/null +++ b/content/Machine Learning for Cyber/Machine Learning for Cyber > Unit 2 - Datasets and Features.md @@ -0,0 +1,1235 @@ + +#cyber_security #machine_learning + +### **1. Giới thiệu và Mục tiêu học tập** + +#### **1.1 Tóm tắt nội dung chính** + +Phần mở đầu sẽ giúp ta hiểu rõ **tầm quan trọng của dữ liệu** và **features (đặc trưng)** trong các bài toán học máy (machine learning – ML), đặc biệt là khi ứng dụng vào lĩnh vực **an ninh mạng (cybersecurity)**. Mục tiêu của phần này là thiết lập nền tảng tư duy trước khi đi sâu vào chi tiết các thuật toán và quy trình xử lý. + +--- + +#### **1.2 Mục tiêu học tập** + +Kết thúc bài học này, bạn sẽ: +- **Hiểu rõ hơn về “feature”** là gì trong học máy. +- **Nắm được cách trích xuất (extract) feature** từ tập dữ liệu. +- Nhận biết sự khác biệt trong cách **xử lý dữ liệu cho ML thông thường** so với **ML trong cybersecurity**. + +--- + +#### **1.3 Vì sao dữ liệu lại quan trọng đến vậy?** + +Có một quan niệm rất thực tế trong giới ML: + +**“Dữ liệu là vua – Data is king!”** + +Một thuật toán tốt chỉ phát huy tác dụng khi có **dữ liệu chất lượng cao**. Ngược lại, một thuật toán yếu có thể vẫn hoạt động ổn nếu được “nuôi” bằng **dữ liệu đầy đủ, sạch và có ý nghĩa**. + +**Ví dụ thực tế:** + +- **Facebook, Google** là ví dụ điển hình của các công ty thành công nhờ **khối lượng dữ liệu khổng lồ** do chính người dùng tạo ra (qua like, comment, chia sẻ,…). +- Dù thuật toán của bạn chưa phải tốt nhất, nhưng nếu có **nhiều dữ liệu tốt**, bạn vẫn có thể đạt kết quả đáng kể. + +--- + +#### **1.4 Cybersecurity và Machine Learning khác gì nhau?** + +Một điều thú vị được nêu ra là: + +> **“Điều khác biệt duy nhất giữa ML thông thường và ML trong cybersecurity chính là… dữ liệu.”** + +- Các **thuật toán ML gần như không thay đổi**. +- **Sự khác biệt nằm ở cách dữ liệu được biểu diễn**: chuyển đổi thành features, gán nhãn, chia mẫu,… +- Do đó, hiểu cách tổ chức dữ liệu **là bước đầu tiên và cực kỳ quan trọng** khi áp dụng ML cho các hệ thống phòng thủ mạng. + +--- + +#### **1.5 Ghi nhớ** + +- **Không có dữ liệu tốt**, thuật toán mạnh cũng trở nên vô dụng. +- **Cybersecurity ML = ML truyền thống + dữ liệu mạng đặc thù**. +- Cần học cách **chuyển dữ liệu thô (raw data)** thành **tập đặc trưng (feature set)** phù hợp cho thuật toán. + + +--- + + +### **2. Tầm quan trọng của Dữ liệu trong Machine Learning** + +#### **2.1 Tóm tắt nội dung chính** + +Phần này đào sâu vào lý do tại sao **dữ liệu lại là yếu tố cốt lõi** trong mọi hệ thống học máy. Chúng ta sẽ phân tích vai trò của dữ liệu trong quá trình huấn luyện mô hình và học cách tư duy đúng về dữ liệu: **nhiều hơn, tốt hơn, và được gán nhãn đúng** thì mô hình mới hiệu quả. + +--- + +#### **2.2 Dữ liệu – Chìa khóa thành công trong ML** + +Thuật toán có thể học từ dữ liệu để **dự đoán hoặc phân loại**, nhưng nếu **dữ liệu không đầy đủ, sai lệch hoặc không đại diện**, thì: + +- Kết quả học sẽ **thiếu chính xác**. +- Mô hình sẽ **khó tổng quát hóa** cho dữ liệu thực tế. + +Do đó, thay vì tập trung chỉ vào việc chọn thuật toán “xịn”, **việc thu thập và xử lý dữ liệu đúng cách còn quan trọng hơn**. + +**So sánh nhanh:** + +|**Trường hợp**|**Hiệu quả mô hình**| +|---|---| +|Thuật toán mạnh + Dữ liệu ít/không tốt|**Kém**| +|Thuật toán trung bình + Dữ liệu tốt và nhiều|**Tốt**| + +--- + +#### **2.3 Nguồn dữ liệu đến từ đâu?** + +Các công ty công nghệ lớn như **Facebook, Google, Amazon** thành công phần lớn là nhờ: + +- **Nguồn dữ liệu khổng lồ** do người dùng tạo ra mỗi ngày (post, like, comment,…). +- Dữ liệu đó **được người dùng gán nhãn gián tiếp** (ví dụ: like = thích, share = quan tâm). + +Do đó, **dữ liệu càng nhiều, chất lượng càng tốt**, thì khả năng mô hình học đúng càng cao. + +--- + +#### **2.4 Vấn đề đặc thù với dữ liệu trong An ninh mạng** + +Dữ liệu trong cybersecurity có một số điểm đặc biệt: + +- **Khó thu thập**: nhiều dữ liệu mạng là **nhạy cảm**, không thể công khai. + +- **Khó gán nhãn**: ví dụ, rất khó để biết 1 hành vi là **bình thường** hay **tấn công**. + +- Dữ liệu thường **không cân bằng (imbalanced)**: chỉ 1% là tấn công, còn lại là hoạt động bình thường. + +- Dữ liệu có thể ở dạng **phi cấu trúc** (unstructured): log, email, packet capture,… + +Vì vậy, bước **tiền xử lý và tạo features** cực kỳ quan trọng và phức tạp hơn nhiều so với các bài toán ML thông thường. + +--- + +#### **2.5 Ghi nhớ** + +- **Dữ liệu tốt** là điều kiện tiên quyết cho thành công của một mô hình ML. + +- **Cybersecurity data** khác biệt ở tính chất, nguồn, cách gán nhãn và tỷ lệ phân bố. + +- Nắm được cách **chuyển đổi dữ liệu thô** thành tập dữ liệu dùng cho huấn luyện là bước đầu để áp dụng ML vào an ninh mạng. + +--- + + +### **3. Sự khác biệt giữa ML truyền thống và ML cho An ninh mạng** + +#### **3.1 Tóm tắt nội dung chính** + +Phần này làm rõ sự khác biệt then chốt giữa việc ứng dụng học máy trong các lĩnh vực truyền thống như y tế, tài chính, tiếp thị… so với lĩnh vực **an ninh mạng**. Mấu chốt không nằm ở **thuật toán**, mà nằm ở **dữ liệu đầu vào** và **cách biểu diễn dữ liệu**. + +--- + +#### **3.2 Điểm giống nhau** + +- **Các thuật toán ML không thay đổi**: Dù là nhận diện hình ảnh, phát hiện bệnh, hay phát hiện tấn công mạng thì bạn vẫn có thể dùng các thuật toán như: + + - **SVM (Support Vector Machine)** – Máy vector hỗ trợ + + - **Decision Trees** – Cây quyết định + + - **KNN** – K láng giềng gần nhất + + - **Neural Networks** – Mạng nơ-ron + +- **Quy trình cơ bản giống nhau**: + + - Thu thập dữ liệu → xử lý → trích xuất đặc trưng → huấn luyện mô hình → đánh giá kết quả + +--- + +#### **3.3 Khác biệt lớn nhất: DỮ LIỆU** + +Sự khác biệt cốt lõi giữa ML truyền thống và ML cho cybersecurity **nằm ở dữ liệu đầu vào và cách biểu diễn nó**, cụ thể: + +|**ML truyền thống**|**ML cho Cybersecurity**| +|---|---| +|Dữ liệu rõ ràng, dễ gán nhãn (ví dụ: hình ảnh mèo, chó)|Dữ liệu phức tạp, nhiều dạng (log, network packet, hành vi người dùng)| +|Đa phần là dữ liệu tĩnh|Thường là **dữ liệu thời gian thực (real-time)**| +|Tập dữ liệu công khai, dễ lấy|Dữ liệu **bảo mật**, khó truy cập và nhãn thường **không có sẵn**| +|Dữ liệu thường có phân bố cân bằng|Dữ liệu thường **mất cân bằng nghiêm trọng** (99% normal, 1% attack)| + +--- + +#### **3.4 Ví dụ minh họa** + +- **ML truyền thống**: phân loại thư là “spam” hay “not spam” từ nội dung email (rất nhiều dữ liệu có nhãn sẵn). + +- **ML cho cybersecurity**: phát hiện hành vi tấn công từ log hệ thống, trong khi **không rõ hành vi nào là tấn công**, hoặc **hacker cố tình làm giống hành vi bình thường** → cần kỹ thuật phân tích phức tạp hơn. + +--- + +#### **3.5 Điều gì thay đổi khi ứng dụng ML cho Cybersecurity?** + +- **Cách biểu diễn dữ liệu (data representation)** thay đổi: + + - Cần chuyển log, lưu lượng mạng,… thành **ma trận mẫu – đặc trưng (samples – features)**. + + - Phải **gán nhãn thủ công hoặc dùng các phương pháp bán giám sát/không giám sát**. + + +- **Chiến lược trích xuất feature (feature extraction)** trở nên quan trọng hơn bao giờ hết: + + - Ví dụ: từ log hệ thống, cần trích được số lượng login thất bại, khoảng thời gian giữa các yêu cầu, địa chỉ IP bất thường,… + +--- + +#### **3.6 Ghi nhớ** + +- ML truyền thống và ML cho cybersecurity dùng **thuật toán giống nhau**, nhưng khác **loại dữ liệu** và **cách xử lý dữ liệu**. + +- Làm ML trong cybersecurity cần chú trọng nhiều vào: + + - **Tiền xử lý dữ liệu** + + - **Trích xuất feature phù hợp** + + - **Xử lý dữ liệu không gán nhãn và mất cân bằng** + + +--- + + +### **4. Đặc điểm của Tập dữ liệu (Dataset)** + +#### **4.1 Tóm tắt nội dung chính** + +Khi làm việc với học máy, bạn cần tư duy dữ liệu dưới dạng **ma trận (matrix)** – mỗi dòng là một **mẫu (sample)** và mỗi cột là một **đặc trưng (feature)**. Phần này sẽ giúp bạn hiểu cách tổ chức dữ liệu phù hợp để đưa vào mô hình học máy, bao gồm cả cách xử lý trong Python. + +--- + +#### **4.2 Tư duy dữ liệu dưới dạng ma trận** + +Trong học máy, tập dữ liệu thường được biểu diễn như một **ma trận 2 chiều**: + +- **Hàng (row)**: mỗi hàng tương ứng với một **mẫu (sample)** – ví dụ, một kết nối mạng, một phiên đăng nhập, một email,… + +- **Cột (column)**: mỗi cột tương ứng với một **đặc trưng (feature)** – ví dụ, số lần đăng nhập thất bại, độ dài URL, địa chỉ IP nguồn,… + +👉 Ma trận này có thể được load và xử lý trong Python bằng **NumPy** như sau: + +```python +Matrix_data = np.loadtxt('dataset.csv', delimiter=",", skiprows=1) +X = Matrix_data[:, :4] # lấy các cột đặc trưng +y = Matrix_data[:, 4] # lấy cột nhãn (label) +``` + +- X là ma trận các feature (ví dụ: độ dài packet, số lượng bytes,…). + +- y là mảng nhãn tương ứng (ví dụ: 0 = bình thường, 1 = tấn công). + +--- + +#### **4.3 Đặc trưng (Feature) và Nhãn (Label)** + +- **Feature**: là thông tin định lượng giúp mô hình phân biệt giữa các tình huống khác nhau. + +- **Label**: là kết quả đúng tương ứng với mỗi mẫu, dùng trong **supervised learning**. + +--- + +#### **4.4 Thực hành với bộ dữ liệu Iris** + +Ví dụ đơn giản nhưng kinh điển là **Iris Dataset** – bộ dữ liệu về hoa: + +- Có tổng cộng **150 mẫu**. + +- Mỗi mẫu có **4 đặc trưng** như chiều dài cánh, chiều rộng đài hoa,… + +- Có **3 nhãn** phân loại hoa: _Setosa_, _Versicolour_, _Virginica_. + +Ma trận mẫu có dạng: + +``` +[[5.1 3.5 1.4 0.2 0] + [4.9 3.0 1.4 0.2 0] + ... + [5.9 3.0 5.1 1.8 2]] +``` + +- 4 cột đầu là feature. + +- Cột cuối là label (0, 1, 2 tương ứng với loại hoa). + +--- + +#### **4.5 Tập dữ liệu trong An ninh mạng** + +Khi chuyển sang lĩnh vực cybersecurity, ma trận dữ liệu có thể phức tạp hơn: + +- Mỗi dòng là một phiên kết nối (network flow), một dòng log, hoặc một hành vi người dùng. + +- Các cột có thể bao gồm: địa chỉ IP, thời gian phiên, số lượng packet, loại giao thức,… + +- Cần xử lý để chuyển các thông tin này thành số (ví dụ: dùng One-hot encoding hoặc LabelEncoder cho các cột dạng text). + +--- + +#### **4.6 Ghi nhớ** + +- Trong ML, **dataset = ma trận (samples × features)**. + +- Hiểu rõ cấu trúc dữ liệu là **bước đầu tiên để tiền xử lý và huấn luyện mô hình thành công**. + +- Tập dữ liệu tốt cần phải: + + - Có đủ số lượng mẫu. + + - Có feature mang thông tin hữu ích. + + - Được gán nhãn đúng (nếu dùng supervised learning). + + +--- + + +### **5. Một số Tập Dữ liệu Thường gặp trong ML cho An ninh mạng** + +#### **5.1 Tóm tắt nội dung chính** + +Phần này giới thiệu các tập dữ liệu phổ biến được sử dụng để huấn luyện và kiểm thử các mô hình học máy trong lĩnh vực an ninh mạng. Mỗi tập có đặc điểm riêng, phục vụ cho các mục tiêu như phát hiện phishing, malware, xâm nhập mạng, gian lận,… + +--- + +#### **5.2 Phân loại các tập dữ liệu** + +##### **5.2.1 Dữ liệu dạng văn bản (Text Dataset)** + +- **Phishing Websites Dataset**: tập dữ liệu gồm các đặc trưng rút ra từ URL, nội dung HTML,… giúp phát hiện website lừa đảo. + +- Các feature thường gặp: độ dài URL, chứa IP hay không, số lượng dấu “@” hoặc “https”,… + +##### **5.2.2 Dữ liệu hình ảnh (Image Dataset)** + +- Ít phổ biến hơn trong cybersecurity, nhưng có thể dùng trong: + + - **Phát hiện malware**: bằng cách chuyển file nhị phân thành ảnh (dạng heatmap hoặc grayscale). + + - **Phân tích CAPTCHA**, nhận dạng khuôn mặt trong hệ thống giám sát. + +##### **5.2.3 Dữ liệu âm thanh (Speech Dataset)** + +- Ứng dụng trong **biometric authentication**: xác thực người dùng bằng giọng nói. + +- Cần xử lý tín hiệu thành vector đặc trưng (MFCC – Mel Frequency Cepstral Coefficients). + +--- + +#### **5.3 Dữ liệu mạng và xâm nhập hệ thống** + +##### **5.3.1 NSL-KDD Dataset** + +- Là phiên bản cải tiến của **KDD’99**, dùng để phát hiện tấn công mạng. + +- Gồm 41 đặc trưng như: số lượng byte gửi/nhận, cổng giao tiếp, flag TCP,… + +- Nhãn (label): _normal_ hoặc một trong các loại tấn công như DoS, Probe, R2L, U2R. + +##### **5.3.2 UNSW-NB15** + +- Tập dữ liệu hiện đại hơn NSL-KDD, mô phỏng lưu lượng mạng thực tế. + +- Bao gồm cả lưu lượng **bình thường và tấn công**, với nhãn rõ ràng. + +- Có thể dùng cho các mô hình supervised hoặc semi-supervised. + +##### **5.3.3 Honeypot (Unsupervised)** + +- Thu thập dữ liệu từ các **honeypot** – hệ thống bẫy tấn công. + +- Dữ liệu thường **chưa gán nhãn**, phù hợp cho mô hình **unsupervised learning** (ví dụ: clustering, anomaly detection). + +--- + +#### **5.4 Dữ liệu khác** + +##### **5.4.1 Malware Dataset** + +- Tập dữ liệu chứa các **file thực thi**, hoặc đặc trưng từ phân tích hành vi (sandbox logs). + +- Mục tiêu: phân loại file là **malware** hay **benign** (vô hại). + +##### **5.4.2 Fraud Detection** + +- Dùng trong các hệ thống **phát hiện gian lận** (ví dụ: giao dịch thẻ tín dụng). + +- Dữ liệu thường bị **mất cân bằng nặng**: tỷ lệ gian lận rất nhỏ (~0.1%). + +##### **5.4.3 Biometrics** + +- Dữ liệu sinh trắc học: vân tay, khuôn mặt, mống mắt, giọng nói. + +- Ứng dụng trong hệ thống xác thực, kiểm soát truy cập (access control). + +--- + +#### **5.5 So sánh nhanh các tập dữ liệu** + +|**Loại dữ liệu**|**Ứng dụng**|**Đặc điểm nổi bật**| +|---|---|---| +|NSL-KDD|Phát hiện xâm nhập mạng|Có nhãn, đặc trưng chuẩn hóa sẵn| +|UNSW-NB15|Phát hiện tấn công mạng|Cập nhật hơn, phản ánh lưu lượng thực tế| +|Phishing Dataset|Chống lừa đảo website|Feature dễ trích xuất từ URL/HTML| +|Honeypot|Phân tích hành vi tấn công|Không có nhãn, dùng unsupervised| +|Fraud Detection|Giao dịch tài chính|Mất cân bằng dữ liệu| +|Malware Dataset|Phân loại mã độc|Cần xử lý tĩnh hoặc động từ file thực thi| + +--- + +#### **5.6 Ghi nhớ** + +- Mỗi bài toán trong cybersecurity sẽ yêu cầu **tập dữ liệu phù hợp**. + +- **Có nhãn hay không** sẽ quyết định dùng **supervised** hay **unsupervised learning**. + +- Cần hiểu rõ **đặc điểm từng loại dữ liệu** để chọn mô hình, kỹ thuật xử lý phù hợp. + + +--- + + +### **6. Khái niệm Features là gì?** + +#### **6.1 Tóm tắt nội dung chính** + +Phần này giúp ta hiểu rõ **“feature” (đặc trưng)** là gì trong học máy, và tại sao nó lại đóng vai trò **trung tâm trong quá trình học** của mô hình. Đây là cầu nối giữa dữ liệu thô và mô hình machine learning. + +--- + +#### **6.2 Feature là gì?** + +- **Feature (Đặc trưng)** là cách để **biểu diễn một mẫu dữ liệu** thông qua các giá trị số (numerical values) hoặc nhị phân. + +- Một **mẫu (sample)** sẽ được biểu diễn bằng một **vector đặc trưng**. + +**Ví dụ thực tế:** + +- Với dữ liệu về người dùng mạng: + + - Số lần đăng nhập thất bại + + - Thời gian hoạt động trung bình + + - Địa chỉ IP đã dùng + + - Tỉ lệ gửi gói tin đến cổng lạ + + → Đây đều có thể là **features** để mô hình học cách phân biệt hành vi bình thường và bất thường. + +--- + +#### **6.3 Vector không gian đặc trưng (Vector Space Model)** + +Trong học máy, mỗi mẫu được biểu diễn như một điểm trong **không gian nhiều chiều**, mỗi chiều tương ứng với một feature: + +- Ví dụ: + + Nếu bạn có 3 feature → mỗi mẫu là một điểm trong **không gian 3 chiều** + + Nếu có 100 feature → mẫu nằm trong **không gian 100 chiều (high-dimensional space)** + +👉 Mô hình ML sẽ học cách **vẽ đường ranh giới phân loại** các điểm trong không gian này. + +--- + +#### **6.4 Ví dụ minh họa đơn giản** + +Giả sử bạn muốn phân loại email thành “spam” và “not spam”, bạn có thể dùng các feature như: + +|**Feature**|**Giá trị mẫu 1**|**Giá trị mẫu 2**| +|---|---|---| +|Số lần xuất hiện từ “free”|3|0| +|Có chứa từ “win” không?|1 (có)|0 (không)| +|Tổng số từ trong email|150|80| +|Độ dài tiêu đề|30|10| + +→ Mỗi mẫu email là một vector đặc trưng: $[3, 1, 150, 30]$ + +--- + +#### **6.5 Các bài toán Cybersecurity cần trích xuất Feature như thế nào?** + +Tùy loại dữ liệu, cách trích xuất feature sẽ khác nhau: + +- **Log hệ thống**: đếm số dòng lỗi, loại lỗi, thời gian giữa các lỗi. + +- **Gói tin mạng (packet)**: độ dài gói, giao thức sử dụng, cổng gửi/nhận. + +- **Website phishing**: độ dài URL, số lượng redirect, chứa ký tự lạ. + +Việc chọn **đúng feature phù hợp** là yếu tố quyết định mô hình có học tốt hay không. + +--- + +#### **6.6 Ghi nhớ** + +- **Feature là yếu tố quan trọng nhất** ảnh hưởng đến hiệu quả của mô hình học máy. + +- Mỗi mẫu được mô tả bằng **một vector đặc trưng**. + +- Trong cybersecurity, **kỹ thuật trích xuất và chọn lọc feature** là bước then chốt để phát hiện tấn công hiệu quả. + + +--- + + +### **7. Các Loại Features** + +#### **7.1 Tóm tắt nội dung chính** + +Phần này phân loại các **kiểu đặc trưng (features)** thường gặp trong học máy, giúp bạn hiểu cách chọn và xử lý từng loại. Ngoài ra, ta cũng tìm hiểu khái niệm **chiều dữ liệu (dimensionality)** – một yếu tố rất quan trọng ảnh hưởng đến hiệu quả của mô hình. + +--- + +#### **7.2 Phân loại Feature theo kiểu dữ liệu** +##### **7.2.1 Feature nhị phân (Binary Feature)** + +- Chỉ nhận **2 giá trị: 0 hoặc 1**. + +- Thường biểu thị **sự có mặt/không có mặt** của một đặc điểm. + +Ví dụ: + +- Email có chứa từ “free” không? → 1 = Có, 0 = Không + +- IP truy cập từ quốc gia nằm trong blacklist không? → 1 = Có, 0 = Không + +##### **7.2.2 Feature liên tục (Continuous Feature)** + +- Có thể nhận **bất kỳ giá trị số thực nào** trong một khoảng. + +- Thường dùng để biểu thị **độ lớn, tần suất, thời gian,…** + +Ví dụ: + +- Số lượng byte gửi đi + +- Thời gian trung bình giữa 2 gói tin + +- Chiều dài URL + +--- + +#### **7.3 Chiều dữ liệu (Dimensionality)** + +- Là **số lượng feature** dùng để mô tả một mẫu. + +- Một mẫu với 10 feature → thuộc không gian 10 chiều. + +> **Chiều càng cao → Mô hình càng mạnh → Nhưng cũng càng dễ overfit.** + +**Hệ quả:** + +- Dữ liệu càng nhiều feature thì càng **phức tạp**. + +- Nếu số chiều quá lớn → cần **giảm chiều (dimensionality reduction)** để: + + - Tăng tốc độ huấn luyện + + - Tránh mô hình học quá chi tiết và **không tổng quát được** (overfitting) + +--- + +#### **7.4 Tóm tắt bằng bảng** + +|**Loại Feature**|**Giá trị**|**Ví dụ thực tế**| +|---|---|---| +|**Nhị phân (Binary)**|0 hoặc 1|Có chứa “http” trong URL không? (1/0)| +|**Liên tục (Continuous)**|Số thực|Thời gian hoạt động, số byte, độ dài tiêu đề| +|**Chiều dữ liệu (Dimensionality)**|Tổng số feature|5 feature = 5 chiều; 100 feature = 100 chiều| + +--- + +#### **7.5 Ghi nhớ** + +- Feature có thể là **nhị phân hoặc liên tục** → chọn loại phù hợp theo bài toán. + +- **Chiều dữ liệu cao không phải lúc nào cũng tốt** → cần kiểm soát để tránh quá khớp. + +- Một bước rất quan trọng là **chuẩn hóa (scaling)** dữ liệu, đặc biệt với feature liên tục → phần này sẽ được nói rõ hơn ở các phần sau. + + +--- + + +### **8. Phân loại Học máy (Machine Learning Classification)** + +#### **8.1 Tóm tắt nội dung chính** + +Phần này sẽ giúp bạn hiểu rõ các **nhánh chính trong học máy (machine learning)**, bao gồm: + +- **Học có giám sát (supervised learning)** và **không giám sát (unsupervised learning)**, + +- Sự khác biệt giữa **phân loại (classification)** và **hồi quy (regression)**, + +- Các mô hình xử lý **dữ liệu tuần tự (sequential)** và **phi tuần tự (non-sequential)**. + +--- + +#### **8.2 Phân loại theo cách học** + +##### **8.2.1 Supervised Learning (Học có giám sát)** + +- Là hình thức học từ dữ liệu đã **gán nhãn (labelled)**. + +- Mục tiêu: học ra một hàm dự đoán f(x) → để dự đoán nhãn cho mẫu mới. + +Ví dụ: + +- Phát hiện email là spam hay không, dựa trên dữ liệu đã biết trước. + +✅ Yêu cầu: phải có dữ liệu mẫu + nhãn chính xác tương ứng. + +##### **8.2.2 Unsupervised Learning (Học không giám sát)** + +- Dùng khi **không có nhãn** trong dữ liệu. + +- Mục tiêu: **tìm cấu trúc ẩn** trong dữ liệu, như nhóm (cluster), dị thường (anomaly),… + +Ví dụ: + +- Phân nhóm người dùng theo hành vi truy cập mà không biết trước họ là ai. + +--- + +#### **8.3 Phân loại theo mục tiêu dự đoán** + +##### **8.3.1 Classification (Phân loại)** + +- Mô hình dự đoán đầu ra là **một lớp (class)** thuộc danh sách các nhãn có sẵn. + +Ví dụ: + +- Nhãn = normal, attack + +- Dự đoán xem kết nối mạng thuộc loại nào. + +##### **8.3.2 Regression (Hồi quy)** + +- Mô hình dự đoán đầu ra là **một giá trị liên tục (số thực)**. + +Ví dụ: + +- Dự đoán số lượng truy cập vào hệ thống trong giờ tới: 105.5, 98.3,… + +--- + +#### **8.4 Phân loại theo dạng dữ liệu** + +##### **8.4.1 Sequential Data (Dữ liệu tuần tự)** + +- Dữ liệu có thứ tự theo thời gian hoặc chuỗi. + +- Cần dùng các mô hình như **RNN, LSTM** (Recurrent Neural Networks). + +Ví dụ: + +- Dự đoán các bước tiếp theo của một cuộc tấn công mạng theo chuỗi hành vi. + +##### **8.4.2 Non-Sequential Data (Dữ liệu phi tuần tự)** + +- Dữ liệu không có thứ tự rõ ràng. + +- Dùng các mô hình truyền thống như SVM, Decision Tree, KNN,… + +--- + +#### **8.5 Tóm tắt bằng sơ đồ phân loại** + +``` +Machine Learning +├── Supervised Learning +│ ├── Classification (phân lớp) +│ └── Regression (hồi quy) +├── Unsupervised Learning +│ └── Clustering / Anomaly Detection +├── Sequential vs Non-Sequential (phân loại theo định dạng dữ liệu) +``` + +--- + +#### **8.6 Ghi nhớ** + +- **Supervised**: cần dữ liệu gán nhãn → áp dụng cho bài toán phân loại tấn công mạng. + +- **Unsupervised**: dùng khi không có nhãn → phù hợp với dữ liệu từ honeypot, log chưa xử lý. + +- **Classification vs Regression**: hiểu rõ mục tiêu đầu ra là rời rạc hay liên tục. + +- Với dữ liệu mạng (network logs), **dạng sequential** ngày càng phổ biến → cần mô hình xử lý chuỗi. + + +--- + + +### **9. Một số Thuật toán Machine Learning phổ biến** + +#### **9.1 Tóm tắt nội dung chính** + +Phần này giới thiệu các **thuật toán học máy phổ biến nhất** được sử dụng để xây dựng hệ thống phân loại trong an ninh mạng. Các thuật toán này có thể áp dụng cho cả **bài toán phân lớp** (classification) và trong một số trường hợp là **dự báo số liệu (regression)**. + +--- + +#### **9.2 Các thuật toán phân loại phổ biến** + +##### **9.2.1 SVM – Support Vector Machine** + +- Tạo **đường biên tối ưu** để phân chia các lớp. + +- Phù hợp với dữ liệu **có thể phân tách tuyến tính hoặc phi tuyến tính**. + +- Có thư viện **LibSVM** nổi tiếng để cài đặt. + +##### **9.2.2 Naïve Bayes** + +- Dựa trên **xác suất Bayes** và giả định đơn giản là các feature độc lập với nhau. + +- Rất nhanh và hiệu quả với dữ liệu dạng văn bản (như phát hiện spam/phishing). + +##### **9.2.3 Decision Trees** + +- Dự đoán bằng cách đi qua **các nhánh điều kiện**. + +- Dễ hiểu, dễ triển khai, nhưng dễ bị overfit nếu không cắt tỉa (prune). + +##### **9.2.4 Random Forest** + +- Là tập hợp của nhiều cây quyết định (ensemble model). + +- **Ổn định hơn** Decision Tree đơn lẻ nhờ voting trung bình từ nhiều cây. + +##### **9.2.5 K-Nearest Neighbors (KNN)** + +- Phân loại dựa trên **k láng giềng gần nhất** trong không gian feature. + +- Đơn giản, nhưng chậm với tập dữ liệu lớn vì phải tính khoảng cách với tất cả mẫu. + +--- + +#### **9.3 Mạng nơ-ron và Học sâu (Deep Learning)** + +##### **9.3.1 Neural Networks** + +- Mô hình mô phỏng cách hoạt động của **não người**, với các lớp đầu vào – ẩn – đầu ra. + +- **Mạnh trong xử lý dữ liệu phi tuyến tính**, nhưng cần nhiều dữ liệu để học tốt. + +##### **9.3.2 Deep Learning** + +- Là mạng nơ-ron với **nhiều tầng (deep)** → có thể tự động học đặc trưng từ dữ liệu. + +- Ví dụ: **Multilayer Perceptron (MLP)** – mạng nơ-ron nhiều lớp. + +- Với đủ dữ liệu và tài nguyên tính toán, DL có thể **thay thế hoàn toàn feature engineering thủ công**. + +> Deep Learning = Neural Network + Nhiều lớp + GPU mạnh + +--- + +#### **9.4 Khi nào dùng thuật toán nào?** + +|**Thuật toán**|**Khi nào dùng?**|**Ưu điểm**|**Nhược điểm**| +|---|---|---|---| +|**SVM**|Dữ liệu có số chiều cao, cần phân lớp rõ|Hiệu quả, mạnh mẽ|Tốn tài nguyên nếu dữ liệu lớn| +|**Naïve Bayes**|Dữ liệu văn bản, phân loại nhanh|Tốc độ nhanh, đơn giản|Giả định feature độc lập hơi lý tưởng| +|**Decision Tree**|Cần mô hình dễ hiểu, dễ giải thích|Dễ hiểu, trực quan|Dễ overfit nếu không cắt cây| +|**Random Forest**|Muốn tăng độ chính xác và giảm overfit|Ổn định, mạnh mẽ|Khó diễn giải hơn cây đơn lẻ| +|**KNN**|Dữ liệu nhỏ, dễ hình dung bằng khoảng cách|Đơn giản, không cần huấn luyện|Chậm nếu dữ liệu lớn| +|**Neural Network**|Dữ liệu phức tạp, cần học phi tuyến|Mô hình mạnh, tổng quát tốt|Cần nhiều dữ liệu, khó tinh chỉnh| +|**Deep Learning**|Dữ liệu rất lớn, bài toán phức tạp|Tự động trích xuất feature|Rất tốn tài nguyên, khó giải thích| + +--- + +#### **9.5 Ghi nhớ** + +- **Không có thuật toán “tốt nhất” – chỉ có thuật toán phù hợp nhất với bài toán cụ thể.** + +- Với bài toán cybersecurity: + + - **Naïve Bayes**: Phishing detection. + + - **Random Forest/SVM**: Phát hiện tấn công dựa trên log. + + - **Deep Learning**: Nhận diện chuỗi hành vi, học đặc trưng tự động. + + +--- + + +### **10. Feature Engineering và Vai trò của Deep Learning** + +#### **10.1 Tóm tắt nội dung chính** + +Phần này nói về **quá trình tạo ra các đặc trưng (features)** để đưa vào mô hình học máy – được gọi là **Feature Engineering (Kỹ thuật xử lý đặc trưng)**. Đây từng là một bước **rất thủ công và tốn công sức**, nhưng ngày nay **Deep Learning (học sâu)** đã phần nào thay đổi cuộc chơi. + +--- + +#### **10.2 Feature Engineering là gì?** + +- Là quá trình: + + - **Chọn lựa**, **chuyển đổi**, hoặc **tạo mới các feature** từ dữ liệu gốc. + + - Nhằm mục tiêu: giúp mô hình học máy **hiểu và phân loại dữ liệu tốt hơn**. + +**Ví dụ:** + +Từ log hệ thống gốc: + +- Dữ liệu thô: user1 đăng nhập lúc 08:00, thất bại + +- Feature có thể trích xuất: + + - Số lần đăng nhập thất bại trong 1 giờ + + - Thời gian giữa 2 lần đăng nhập + + - User đăng nhập từ IP lạ hay không? + + +> 👉 **Kỹ năng trích xuất feature hiệu quả chính là “nghệ thuật” trong học máy!** + +--- + +#### **10.3 Trước đây: Phụ thuộc vào con người** + +- Trong quá khứ, việc chọn feature phù hợp **phụ thuộc hoàn toàn vào chuyên gia (domain expert)**. + +- Điều này khiến quá trình xây dựng mô hình: + + - **Chậm**, **khó tái sử dụng**, dễ mắc sai sót. + + - Tốn nhiều thời gian cho từng bài toán cụ thể. + +--- + +#### **10.4 Ngày nay: Deep Learning làm thay** + +- Deep learning, với mạng nhiều lớp, **tự động học đặc trưng từ dữ liệu**. + +- Mỗi lớp ẩn trong mạng học một cấp độ biểu diễn khác nhau: + + - Lớp đầu học đặc trưng thô (raw pattern) + + - Lớp giữa học đặc trưng trừu tượng + + - Lớp cuối học đặc trưng phân biệt để ra quyết định + +**Ưu điểm:** + +- **Không cần phải nghĩ ra đặc trưng thủ công** + +- Giúp xử lý **dữ liệu phi cấu trúc** như hình ảnh, log chuỗi, âm thanh… + +> 👉 Nhờ deep learning, một số ngành như nhận diện khuôn mặt, dịch ngôn ngữ, phát hiện hành vi tấn công… **phát triển vượt bậc** trong 10 năm gần đây. + +--- + +#### **10.5 Nhưng vẫn cần Feature Engineering thủ công?** + +Dù deep learning rất mạnh, **trong lĩnh vực an ninh mạng**, chúng ta vẫn **cần kết hợp cả 2**: + +|**Tình huống**|**Nên dùng phương pháp nào?**| +|---|---| +|Dữ liệu nhỏ, có cấu trúc|Feature engineering thủ công| +|Dữ liệu lớn, không gán nhãn nhiều|Deep learning tự học feature| +|Hệ thống cần giải thích dễ|Feature thủ công, mô hình rõ ràng (VD: Decision Tree)| +|Hệ thống cần phát hiện hành vi phức tạp|Deep learning (VD: RNN, MLP)| + +--- + +#### **10.6 Ghi nhớ** + +- Feature Engineering là **bước quyết định độ hiệu quả** của mô hình học máy. + +- **Deep learning** có thể học feature tự động, nhưng **không thay thế hoàn toàn kỹ thuật thủ công**. + +- Trong cybersecurity, cần cân bằng giữa **sự tự động hóa của DL** và **hiểu biết chuyên môn để thiết kế feature tốt**. + + +--- + + +### **11. Các thư viện phổ biến trong Python cho Machine Learning** + +#### **11.1 Tóm tắt nội dung chính** + +Phần này giới thiệu những **thư viện Python quan trọng nhất** hỗ trợ quá trình xây dựng, huấn luyện và đánh giá mô hình học máy. Đây là **bộ công cụ không thể thiếu** với bất kỳ ai làm machine learning, đặc biệt là khi xử lý dữ liệu an ninh mạng. + +--- + +#### **11.2 Thư viện nền tảng** + +##### **11.2.1 NumPy** + +- Dùng để **xử lý ma trận**, tính toán toán học nhanh chóng. + +- Là “trái tim” cho các thao tác số học trong ML. + +- Tương tự như **Matlab** trong toán ứng dụng. + +```python +import numpy as np +np.set_printoptions(threshold=np.inf) # hiển thị toàn bộ mảng +``` + +##### **11.2.2 Pandas** + +- Dùng để xử lý **dữ liệu dạng bảng (DataFrame)** – rất tiện cho dữ liệu từ log, csv, SIEM alert. + +- Cung cấp các công cụ: + + - Đọc file CSV + + - Lọc, nhóm, thống kê, chuyển đổi dữ liệu + +```python +import pandas as pd +df = pd.read_csv("alerts.csv") +``` + +--- + +#### **11.3 Thư viện học máy** + +##### **11.3.1 scikit-learn (sklearn)** + +- Thư viện ML truyền thống nổi tiếng nhất. + +- Cung cấp: + + - Các thuật toán như: SVM, KNN, Decision Tree, Random Forest,… + + - Công cụ tiền xử lý: chuẩn hóa (scaling), mã hóa nhãn (LabelEncoder) + + - Công cụ đánh giá: accuracy, confusion matrix, precision, recall, f1-score + +```python +from sklearn import datasets, preprocessing, metrics +from sklearn.model_selection import train_test_split +``` + +##### **11.3.2 matplotlib** + +- Dùng để **vẽ đồ thị**, trực quan hóa dữ liệu và kết quả mô hình. + +```python +import matplotlib.pyplot as plt +``` + +--- + +#### **11.4 Một số công cụ hữu ích khác** + +|**Thư viện**|**Mục đích chính**| +|---|---| +|**LabelEncoder**|Mã hóa nhãn dạng text thành số (VD: ‘normal’ → 0)| +|**StandardScaler**|Chuẩn hóa giá trị feature (scale về cùng thang đo)| +|**train_test_split**|Tách dữ liệu thành tập huấn luyện và kiểm tra| +|**confusion_matrix**|Đánh giá chất lượng phân loại (TP, FP, FN, TN)| + +--- + +#### **11.5 Ví dụ thực hành cơ bản** + +```python +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +from sklearn.metrics import accuracy_score, confusion_matrix + +# Chia dữ liệu +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) + +# Chuẩn hóa +scaler = StandardScaler() +X_train_scaled = scaler.fit_transform(X_train) +X_test_scaled = scaler.transform(X_test) + +# Dự đoán bằng model (giả sử đã huấn luyện) +y_pred = model.predict(X_test_scaled) + +# Đánh giá +print("Accuracy:", accuracy_score(y_test, y_pred)) +print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred)) +``` + +--- + +#### **11.6 Ghi nhớ** + +- **scikit-learn** là công cụ chính khi bắt đầu học máy bằng Python. + +- Kết hợp với **NumPy + Pandas** để xử lý dữ liệu hiệu quả. + +- **Chuẩn hóa dữ liệu (scaling)** là bước bắt buộc khi dùng các mô hình như SVM, KNN, Deep Learning. + +- **matplotlib** giúp trực quan hóa rất tốt cho việc trình bày và debug. + + +--- + + +### **12. Tiền xử lý và Chia dữ liệu (Train-Test Split)** + +#### **12.1 Tóm tắt nội dung chính** + +Phần này hướng dẫn cách **chia dữ liệu thành các tập huấn luyện và kiểm tra**, một bước rất quan trọng để đánh giá mô hình học máy. Đồng thời, bạn sẽ học cách **chuẩn hóa dữ liệu (scaling)** – đặc biệt cần thiết khi sử dụng các thuật toán như SVM, KNN, hoặc Deep Learning. + +--- + +#### **12.2 Tại sao phải chia dữ liệu?** + +Khi huấn luyện mô hình ML, chúng ta không được “dạy và kiểm tra trên cùng một dữ liệu”, bởi điều đó sẽ gây **overfitting** (mô hình học thuộc lòng thay vì học tổng quát). + + + +✅ Cách giải quyết: chia dữ liệu thành 2 phần: + +- **Tập huấn luyện (training set)**: dùng để huấn luyện mô hình. + +- **Tập kiểm tra (test set)**: dùng để kiểm tra khả năng tổng quát hóa. + +**Ví dụ:** + +```python +from sklearn.model_selection import train_test_split + +X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=0.3, random_state=42 +) +``` + +- test_size=0.3: 70% dùng để huấn luyện, 30% để kiểm tra. + +- random_state=42: đảm bảo lần chạy nào cũng chia giống nhau (giúp tái lập kết quả). + +--- + +#### **12.3 Tách nhãn và đặc trưng** + +Giả sử bạn có một tập dữ liệu dạng ma trận: + +``` +X = Matrix_data[:, :4] # 4 feature đầu +y = Matrix_data[:, 4] # nhãn (label) +``` + +Kết quả: + +- X_train, X_test: là ma trận các feature + +- y_train, y_test: là mảng các nhãn tương ứng + +--- + +#### **12.4 Chuẩn hóa dữ liệu (Normalization/Standardization)** + +**Tại sao phải chuẩn hóa?** + +- Một số thuật toán như **SVM**, **KNN**, **neural networks** rất nhạy cảm với **tỉ lệ giữa các feature**. + +- Ví dụ: nếu một feature có giá trị từ 1–1000, còn feature khác chỉ từ 0–1 → mô hình sẽ “thiên vị” feature lớn hơn. + + +✅ Giải pháp: dùng **StandardScaler** để chuẩn hóa tất cả về cùng chuẩn. + +**Cách chuẩn hóa:** + +```python +from sklearn.preprocessing import StandardScaler + +scaler = StandardScaler() +X_train_scaled = scaler.fit_transform(X_train) +X_test_scaled = scaler.transform(X_test) +``` + +> Chỉ dùng **fit_transform** trên X_train, còn X_test phải dùng transform thôi để tránh “rò rỉ thông tin” từ tập kiểm tra vào mô hình. + +--- + +#### **12.5 Ghi nhớ** + +- **train-test split** giúp đánh giá mô hình một cách khách quan. + +- **test_size** thường đặt 20–30%, tùy vào kích thước dữ liệu. + +- **Chuẩn hóa dữ liệu** là bước cực kỳ quan trọng, đặc biệt với deep learning hoặc thuật toán dùng khoảng cách. + +- Không chuẩn hóa nhãn (label) – chỉ chuẩn hóa đặc trưng (feature). + + +--- + + +### **13. Tối ưu hóa trong Học máy (Optimization)** + +#### **13.1 Tóm tắt nội dung chính** + +Tối ưu hóa là **cốt lõi của học máy có giám sát (supervised learning)**. Mục tiêu là tìm ra **tập tham số tốt nhất** cho mô hình để nó đưa ra dự đoán chính xác nhất. Phần này sẽ giải thích khái niệm tối ưu hóa một cách dễ hiểu, thông qua thuật toán quen thuộc: **Gradient Descent (Giảm dốc)**. + +--- + +#### **13.2 Tối ưu hóa là gì?** + +- Trong quá trình học, mô hình cần học một hàm f(x) để dự đoán đầu ra đúng. + +- Hàm này thường chứa **các tham số (parameters)** mà mô hình cần học, ví dụ như hệ số trọng số w, b,… + +- Tối ưu hóa là **quá trình điều chỉnh các tham số này** sao cho sai số dự đoán **nhỏ nhất có thể**. + +--- + +#### **13.3 Minh họa bằng đồ thị chi phí** + +##### **13.3.1. Đồ thị này là gì?** + +- Đó là một biểu đồ mô tả **mối quan hệ giữa giá trị của tham số mô hình** (ví dụ: w) và **mức độ sai số (cost)** mà mô hình tạo ra với tham số đó. + +- Trục **X**: giá trị của tham số w. + +- Trục **Y**: hàm chi phí J(w) – càng thấp thì dự đoán của mô hình càng chính xác. + +##### **13.3.2. Hình dạng của đồ thị** + +- Với các mô hình tuyến tính đơn giản, đồ thị chi phí có dạng **đường cong hình parabol mở lên** (giống như chữ U). + +- Mục tiêu của quá trình học là tìm **đáy của đường cong này** – nơi cost nhỏ nhất → chính là giá trị tối ưu của w. + +##### **13.3.3. Vai trò trong tối ưu hóa** + +- Khi dùng **Gradient Descent**, ta như đang **“trượt xuống sườn dốc của đường cong chi phí”** để đến được điểm thấp nhất. + +- Tại mỗi bước, ta dùng **đạo hàm** để biết dốc hiện tại là âm hay dương: + + - Nếu **gradient dương** → ta đi **sang trái**. + + - Nếu **gradient âm** → ta đi **sang phải**. + +> Tại điểm đáy: **đạo hàm = 0** → đó là điểm hội tụ lý tưởng. + +--- + +##### **13.3.4. Minh họa đơn giản** + +Giả sử hàm chi phí của bạn là: + +``` +J(w) = w³ – 3w² + 7 +``` + +- Hàm này có hình dạng giống như một **con dốc với đáy ở một điểm cụ thể**. + +- Khi chạy gradient descent, ta bắt đầu từ một giá trị w nào đó (ví dụ: 4), rồi từ từ cập nhật w sao cho J(w) giảm dần. + +**Biểu đồ trừu tượng:** + +``` +Cost (J) + | + | * + | * * + | * * ← quá trình giảm dốc + | * * + | * * + |____________________________ + w +``` + +--- + +##### **13.3.5. Tóm lại** + +|**Thành phần**|**Vai trò trong tối ưu hóa**| +|---|---| +|Trục X (w)|Biểu diễn các giá trị tham số mô hình| +|Trục Y (J(w))|Biểu diễn sai số (loss) khi dùng tham số đó| +|Đường cong|Cho biết mức sai số tương ứng với từng giá trị w| +|Điểm thấp nhất|Là điểm tối ưu → nơi mô hình dự đoán tốt nhất (loss nhỏ nhất)| + +--- + +**Ghi nhớ thêm** + +- Đồ thị chi phí là **trực quan hóa** quan trọng để hiểu cách mô hình “học”. + +- **Gradient Descent** chỉ là cách “lần mò xuống dốc” đến đáy của đường cong. + +- Khi slope gần 0 → mô hình đã tiệm cận điểm tối ưu. + +--- + +#### **13.4 Giới thiệu Gradient Descent (Giảm dốc)** + +**Ý tưởng chính:** + +- Tại mỗi bước, tính **đạo hàm (gradient)** của hàm chi phí tại điểm hiện tại → gradient cho biết **hướng và độ dốc**. + +- Dựa vào đó, **cập nhật tham số theo hướng ngược dốc** để tiến gần đến điểm tối ưu. + + +**Công thức cập nhật tham số:** + +```python +new_x = old_x - learning_rate * gradient +``` + +- learning_rate: tốc độ học (bước nhảy) + +- gradient: đạo hàm tại điểm old_x + + +--- + +#### **13.5 Ví dụ minh họa bằng code Python** + +```python +old_x = 0 +new_x = 4 +step_size = 0.01 +precision = 0.00001 + +def function_derivative(x): + return 3*x**2 - 6*x # Đạo hàm của hàm f(x) = x³ - 3x² + 7 + +while abs(new_x - old_x) > precision: + old_x = new_x + new_x = old_x - step_size * function_derivative(old_x) + +print("Tối ưu tại x =", new_x) +``` + +👉 Ở đây, ta tối ưu một hàm đơn giản có đạo hàm rõ ràng. Trong thực tế, các mô hình ML (đặc biệt là deep learning) tối ưu hàng **nghìn – triệu tham số** cùng lúc. + +--- + +#### **13.6 Các biến thể của Gradient Descent** + +- **Batch Gradient Descent**: cập nhật theo toàn bộ dữ liệu. + +- **Stochastic Gradient Descent (SGD)**: cập nhật theo từng mẫu → nhanh hơn nhưng dao động nhiều. + +- **Mini-batch Gradient Descent**: kết hợp cả 2 – chia dữ liệu thành các nhóm nhỏ → phổ biến nhất hiện nay. + + +--- + +#### **13.7 Ghi nhớ** + +- Tối ưu hóa là quá trình **điều chỉnh tham số để giảm sai số**. + +- **Gradient Descent** là thuật toán nền tảng trong học máy hiện đại. + +- Cần lựa chọn **learning rate phù hợp**: quá nhỏ → chậm, quá lớn → dao động, không hội tụ. + +- Trong deep learning, còn có các biến thể mạnh hơn như **Adam**, **RMSProp**,… + + +--- + diff --git a/content/Machine Learning for Cyber/Splunk Machine Learning Toolkit (MLTK) for Cyber.md b/content/Machine Learning for Cyber/Splunk Machine Learning Toolkit (MLTK) for Cyber.md new file mode 100644 index 000000000..c7f99bc85 --- /dev/null +++ b/content/Machine Learning for Cyber/Splunk Machine Learning Toolkit (MLTK) for Cyber.md @@ -0,0 +1,1228 @@ + + +#cyber_security #splunk #machine_learning + +### **1. Giới thiệu chung về Splunk MLTK và AIOps** + +**Tóm tắt nội dung** + +Trong phần này, chúng ta sẽ cùng làm quen với Splunk Machine Learning Toolkit (MLTK) – một công cụ cực kỳ mạnh mẽ giúp phân tích dữ liệu bằng thuật toán học máy ngay bên trong Splunk. Ngoài ra, mình cũng sẽ giới thiệu nhanh khái niệm **AIOps** và mối liên hệ chặt chẽ giữa MLTK và hoạt động của một SOC hiện đại. + +--- + +#### **1.1. Splunk MLTK là gì?** + +**Splunk Machine Learning Toolkit (MLTK)** là một ứng dụng miễn phí trên Splunkbase cho phép bạn áp dụng **các thuật toán machine learning (học máy)** để phân tích dữ liệu đang lưu trữ hoặc streaming trên Splunk. + +Điểm đặc biệt của MLTK là bạn **không cần phải là một chuyên gia về ML** – nhờ giao diện trực quan, bạn có thể dễ dàng: + +- Huấn luyện mô hình (train model), + +- Kiểm thử mô hình (test/validate), + +- Triển khai mô hình vào quy trình phân tích thực tế. + + +Ví dụ đơn giản: bạn có thể dùng MLTK để học thói quen đăng nhập bình thường của người dùng, từ đó phát hiện ra các **hành vi bất thường** như đăng nhập vào lúc nửa đêm từ quốc gia lạ – một dấu hiệu tiềm năng của việc bị compromise. + +--- + +#### **1.2. Vai trò của MLTK trong hệ sinh thái Splunk** + +Trong bức tranh lớn của Splunk, MLTK đóng vai trò như **bộ não phân tích nâng cao (advanced analytics layer)**. Nó không thay thế các tính năng tìm kiếm (search), alert, hay dashboard truyền thống, mà **nâng cấp** chúng bằng khả năng học từ dữ liệu quá khứ và **tự động rút ra quy luật**. + +Một số điểm mạnh của MLTK: + +|**Tính năng**|**Vai trò**| +|---|---| +|**Phân tích dựa trên mô hình**|Thay vì chỉ dựa vào rule cố định, bạn có thể học mô hình từ dữ liệu thực tế.| +|**Hỗ trợ nhiều thuật toán**|Từ hồi quy (regression), phân cụm (clustering), đến phát hiện bất thường (anomaly detection).| +|**Tích hợp trực tiếp với SPL**|Có thể gọi mô hình ML ngay trong câu lệnh SPL để nhúng vào các dashboard hoặc alert.| + +--- + +#### **1.3. Mối liên hệ giữa MLTK và AIOps** + +**AIOps (Artificial Intelligence for IT Operations)** là xu hướng ứng dụng AI và ML để **phát hiện, chuẩn đoán và phản ứng với các sự cố IT một cách tự động**. + +MLTK chính là nền tảng quan trọng giúp Splunk hiện thực hóa AIOps, với các khả năng như: + +- **Phát hiện bất thường tự động (Anomaly Detection)** trong log hệ thống hoặc dữ liệu mạng. + +- **Dự đoán sự cố (Predictive Analytics)** trước khi nó xảy ra. + +- **Giảm cảnh báo giả (False Positive Reduction)** bằng cách học từ các cảnh báo trước đó. + +Chẳng hạn, nếu trước đây một cảnh báo CPU sử dụng cao thường là “bình thường” vào cuối tuần (do backup định kỳ), thì MLTK có thể học được điều đó và **không còn tạo alert sai lệch nữa.** + +--- + +**Chốt lại kiến thức** + +- Splunk MLTK giúp bạn **mở rộng khả năng phân tích** của Splunk bằng việc áp dụng các mô hình học máy. + +- Không cần biết sâu về ML – bạn vẫn có thể dùng giao diện **Assistants** để huấn luyện và triển khai mô hình. + +- MLTK là nền tảng cốt lõi trong **chiến lược AIOps**, đặc biệt trong môi trường SOC hiện đại. + +--- + +### **2. Các thành phần chính trong Splunk MLTK** + +**Tóm tắt nội dung** + +Phần này sẽ giúp bạn hiểu rõ cấu trúc và công cụ mà Splunk MLTK cung cấp để xây dựng và triển khai mô hình học máy. Từ việc chọn thuật toán phù hợp, sử dụng các “trợ lý” dựng sẵn, cho đến việc quản lý toàn bộ quá trình thử nghiệm – Splunk MLTK đều có giao diện hỗ trợ rất thân thiện. + +--- + +#### **2.1. Machine Learning Algorithms (Thuật toán học máy)** + +Splunk MLTK cung cấp **nhiều thuật toán học máy thông dụng**, có thể chia thành 3 nhóm chính tùy vào mục tiêu sử dụng: + +|**Mục tiêu**|**Ví dụ thuật toán**|**Ứng dụng thực tế**| +|---|---|---| +|**Hồi quy (Regression)**|Linear Regression, SVR|Dự đoán CPU sử dụng, số lượng login, số lượng request,…| +|**Phân loại (Classification)**|Logistic Regression, SVM, Decision Tree|Phân loại sự kiện thành “nguy hiểm” hay “bình thường”| +|**Phân cụm (Clustering)**|K-means, DBSCAN|Phát hiện các nhóm hành vi bất thường| + +**Ví dụ thực tế** + +Nếu bạn muốn phát hiện **người dùng có hành vi bất thường**, bạn có thể dùng **K-means** để tìm các cụm hành vi phổ biến và nhận diện những điểm **nằm ngoài cụm** (outlier). + +> **Lưu ý:** Tất cả các thuật toán đều có thể gọi từ SPL thông qua lệnh fit, apply, score, nên có thể tích hợp dễ dàng vào dashboard, alert hoặc automation. + +--- + +#### **2.2. Assistants (Trợ lý hỗ trợ huấn luyện)** + +Nếu bạn chưa quen với SPL hoặc mới làm quen với machine learning, thì **Assistants** chính là người bạn đồng hành lý tưởng. + +Có thể hiểu Assistant là **giao diện có hướng dẫn từng bước (step-by-step)**, giúp bạn: + +1. Chọn loại bài toán (dự đoán, phân loại, phân cụm,…) + +2. Chọn trường dữ liệu đầu vào và nhãn đầu ra + +3. Huấn luyện mô hình + +4. Kiểm tra độ chính xác (accuracy, recall, F1,…) + +5. Xuất ra câu SPL hoàn chỉnh để tái sử dụng + +**Một số Assistants nổi bật:** + +- **Predict Numeric Fields**: Dự đoán giá trị số (vd: mức sử dụng RAM, số lượng request) + +- **Detect Numeric Outliers**: Phát hiện giá trị bất thường (vd: lượt truy cập bất thường vào hệ thống) + +- **Cluster Events**: Gom nhóm các sự kiện tương tự (vd: nhóm các alert giống nhau) + +- **Fit Model**: Tùy biến linh hoạt hơn, dùng khi bạn đã hiểu rõ dữ liệu + +> **Hay nhất:** Sau khi làm việc trên Assistant, bạn có thể **copy SPL** được tạo ra và dán vào các workflow của mình. + +--- + +#### **2.3. Experiments (Thí nghiệm)** + +**Experiments** là phần trung tâm để bạn **quản lý quá trình huấn luyện, thử nghiệm và đánh giá mô hình ML**. + +Khi bạn khởi tạo một thí nghiệm trong MLTK, bạn sẽ: + +- Đặt tên cho thí nghiệm + +- Chọn dữ liệu và thuật toán + +- Thiết lập các tham số huấn luyện (hyperparameters) + +- Kiểm tra kết quả qua đồ thị, bảng đánh giá + +- Lưu mô hình (Save model) để sử dụng sau này + +**Lợi ích của việc dùng Experiments:** + +- **Tái sử dụng:** Có thể áp dụng mô hình đã huấn luyện vào các truy vấn khác bằng apply command + +- **So sánh mô hình:** Bạn có thể huấn luyện nhiều mô hình trên cùng dữ liệu và so sánh độ chính xác của từng cái + +- **Quản lý dễ dàng:** Tên mô hình, mô tả, ngày tạo,… đều được quản lý rõ ràng + +> **Gợi ý:** Với mỗi loại use case (như phát hiện truy cập trái phép, hoặc dự đoán alert tăng cao), bạn nên tạo một Experiment riêng để dễ theo dõi. + +--- + +**Chốt lại kiến thức** + +- **Thuật toán học máy** trong MLTK giúp bạn xử lý nhiều loại bài toán: dự đoán, phân loại, phân cụm. + +- **Assistants** là công cụ rất hữu ích để làm quen nhanh, không cần viết SPL phức tạp. + +- **Experiments** giúp bạn quản lý toàn bộ quá trình huấn luyện, thử nghiệm, và đánh giá mô hình. + + +--- + + +#### **2.4. Models (Mô hình đã lưu) và cách tái sử dụng** + +**Mô hình ML trong Splunk được lưu ở đâu?** + +Sau khi bạn hoàn thành một _experiment_ hoặc huấn luyện mô hình thông qua Assistant, Splunk sẽ lưu lại mô hình vào thư mục: + +```bash +$SPLUNK_HOME/var/lib/splunk/modinput/mltk/models/ +``` + +Tuy nhiên, trên giao diện MLTK, bạn có thể quản lý mô hình trực tiếp thông qua **Model Management**: + +- Xem danh sách mô hình hiện có + +- Kiểm tra ngày tạo, loại thuật toán, trường dữ liệu liên quan + +- Xóa, cập nhật hoặc tái huấn luyện mô hình nếu cần + +--- + +**Tái sử dụng mô hình bằng SPL** + +Điểm mạnh của việc lưu mô hình là bạn có thể **dễ dàng áp dụng mô hình vào dữ liệu mới**, không cần huấn luyện lại mỗi lần. + +Cú pháp SPL phổ biến để sử dụng lại mô hình: + +```spl +| inputlookup new_login_data.csv +| apply my_model_name +``` + +Trong đó: + +- my_model_name là tên mô hình đã lưu + +- Lệnh apply sẽ dùng mô hình này để dự đoán hoặc phân loại dữ liệu mới + +**Ứng dụng thực tế:** + +- Mô hình đã học hành vi đăng nhập bình thường → Dùng apply để phát hiện login bất thường trong ngày hôm nay + +- Mô hình dự đoán số lượng alert → Dùng apply mỗi sáng để báo trước hôm nay có nguy cơ cao + +> **Lưu ý:** Mô hình không tự động cập nhật, bạn cần định kỳ **tái huấn luyện (retrain)** nếu dữ liệu thay đổi đáng kể theo thời gian. + +--- + +#### **2.5. SPL và MLTK: Viết SPL có tích hợp ML** + +**Kết hợp sức mạnh của SPL và ML** + +Splunk là một hệ thống dựa trên ngôn ngữ truy vấn SPL (Search Processing Language). Khi dùng MLTK, bạn có thể **nhúng trực tiếp các bước huấn luyện và dự đoán** vào dòng SPL của mình. + +**Ví dụ: Huấn luyện mô hình tuyến tính (linear regression)** + +``` +| inputlookup server_cpu.csv +| fit LinearRegression "cpu_percent" from "hour_of_day" into "cpu_model" +``` + +- fit: Huấn luyện mô hình + +- "cpu_percent": Trường cần dự đoán + +- from "hour_of_day": Dữ liệu đầu vào + +- into "cpu_model": Tên mô hình sẽ lưu + +**Ví dụ: Áp dụng mô hình đã lưu** + +``` +| inputlookup today_cpu.csv +| apply cpu_model +``` + +Sau khi áp dụng, bạn sẽ có thêm trường mới predicted(cpu_percent) trong kết quả – đây là giá trị dự đoán của mô hình. + +--- + +**Các lệnh SPL đặc biệt của MLTK** + +|**SPL command**|**Chức năng**| +|---|---| +|fit|Huấn luyện mô hình| +|apply|Áp dụng mô hình đã lưu| +|score|Đánh giá độ chính xác| +|summary|Xem thông tin tổng quan của mô hình| +|partial_fit|Huấn luyện bổ sung (incremental learning, nếu thuật toán hỗ trợ)| + +--- + +**Gợi ý nâng cao:** + +Bạn có thể kết hợp ML với các lệnh như timechart, stats, lookup, where để tạo ra những dashboard thông minh, tự thích nghi theo dữ liệu. + +--- + +**Chốt lại kiến thức** + +- **Models** là mô hình đã được huấn luyện, có thể lưu lại và tái sử dụng dễ dàng bằng lệnh apply. + +- Bạn có thể kết hợp SPL với ML để huấn luyện (fit) và áp dụng (apply) mô hình trong cùng một quy trình. + +- MLTK biến Splunk từ một công cụ tìm kiếm log trở thành một hệ thống **phân tích thông minh, có khả năng học hỏi và dự đoán.** + + +--- + + +### **3. Ứng dụng MLTK vào phân tích an toàn thông tin (Security Analytics)** + +**Tóm tắt nội dung** + +Từ phần này trở đi, chúng ta sẽ chuyển sang phần “chiến đấu” thực sự: dùng Splunk MLTK để **giải quyết các bài toán an ninh mạng trong SOC**. Ở mỗi mục, mình sẽ kết hợp **giải thích lý thuyết**, **use case thực tế**, và đặc biệt là **cách triển khai cụ thể bằng Splunk + MLTK** – để bạn có thể hình dung rõ ràng và áp dụng ngay. + +--- + +#### **3.1. Phát hiện bất thường (Anomaly Detection)** + +**Mục tiêu:** + +Phát hiện **những hành vi không bình thường** trong hệ thống – những thứ mà các rule thông thường không nhận diện được. Đây là một ứng dụng rất quan trọng trong việc **phát hiện các cuộc tấn công ẩn danh**, như brute-force chậm, exfiltration nhỏ giọt, hoặc hành vi insider threat. + +--- + + +**A. Lý thuyết ngắn gọn** + +**Anomaly Detection (Phát hiện bất thường)** là một kỹ thuật giúp xác định **các điểm dữ liệu không phù hợp với hành vi bình thường**. + +Có hai phương pháp chính: + +|**Loại**|**Mô tả**|**Ví dụ thực tế**| +|---|---|---| +|**Unsupervised Learning**|Không cần nhãn. Học từ dữ liệu quá khứ để xác định “bình thường”, sau đó tìm ra điểm bất thường.|K-means, DBSCAN, Isolation Forest| +|**Statistical Approach**|Dựa trên phân phối thống kê (z-score, IQR) để xác định outlier.|Dùng stdev, mean, hoặc forecast trong Splunk| + +--- + +**B. Ví dụ thực tế: Phát hiện đăng nhập bất thường** + +**Mô tả tình huống:** + +Giả sử SOC của bạn muốn phát hiện **các phiên đăng nhập bất thường vào tài khoản người dùng**. Hành vi thông thường của mỗi người dùng rất khác nhau – nên rule-based detection thường rất dễ bị sai lệch hoặc bỏ sót. + +**Dữ liệu cần có:** + +Từ chỉ số authentication.log (hoặc bất kỳ sourcetype nào bạn lưu log đăng nhập), bạn cần lấy: + +- user + +- src_ip + +- timestamp hoặc hour + +- geoip_country + +- success/failure (tùy chọn) + + +--- + +**C. Cách triển khai chi tiết bằng MLTK** + +**Bước 1: Làm sạch dữ liệu** + +``` +index=security sourcetype=auth_log action=success +| eval hour=strftime(_time, "%H") +| stats count by user, src_ip, hour +``` + +Mục đích là gom nhóm hành vi theo từng user, src_ip, hour → từ đó học được thói quen login của từng người. + +--- + +**Bước 2: Dùng Assistant “Detect Numeric Outliers”** + +Truy cập Splunk MLTK → **Assistants → Detect Numeric Outliers** + +- **Target field:** count + +- **Split by:** user + +- **Algorithm:** DensityFunction hoặc OneClassSVM + +- **Training data:** Dữ liệu của 7-14 ngày trước + +> Bạn có thể chọn thuật toán như DensityFunction để tính xác suất mỗi điểm xuất hiện → điểm càng “hiếm”, xác suất càng thấp → càng bất thường. + +--- + +**Bước 3: Kiểm tra mô hình và copy SPL** + +Sau khi mô hình được huấn luyện và phát hiện các điểm outlier, bạn có thể **export SPL** như sau: + +``` +index=security sourcetype=auth_log action=success earliest=-24h +| eval hour=strftime(_time, "%H") +| stats count by user, src_ip, hour +| apply login_anomaly_model +| where isOutlier=1 +``` + +- Các dòng có isOutlier=1 là những điểm hệ thống xác định là **bất thường** + +- Bạn có thể gửi cảnh báo, hoặc enrich thêm thông tin như geoip để đưa vào case + + +--- + +**D. Gợi ý nâng cao: Phát hiện bất thường trong alert volume** + +Bạn có thể dùng MLTK để: + +- Dự đoán số lượng alert bình thường trong ngày + +- Phát hiện khi số lượng alert tăng bất thường (do bị DDoS, brute force, hoặc spam log) + +``` +index=notable earliest=-30d +| timechart span=1h count AS alert_count +| fit ARIMA alert_count into alert_model +| apply alert_model +| where 'residual(alert_count)' > 2 * 'rmse(alert_count)' +``` + +→ Khi sai số dự đoán (residual) quá lớn → đây có thể là một **bùng phát cảnh báo (alert spike)** cần kiểm tra. + +--- + +**Chốt lại kiến thức** + +- **Phát hiện bất thường là ứng dụng số 1 của MLTK** trong an ninh mạng, đặc biệt với các hành vi khó mô tả bằng rule. + +- Bạn có thể triển khai bằng cách dùng **Assistant Detect Outlier** hoặc **fit + apply** theo cách thủ công. + +- Dữ liệu huấn luyện nên bao gồm **hành vi bình thường trong 7-30 ngày** để mô hình học được chính xác. + +- Outlier không phải lúc nào cũng là tấn công – nhưng là một điểm **ưu tiên điều tra** trong quá trình phân tích. + +--- + +#### **3.2. Phân loại sự kiện (Event Classification)** + +**Tóm tắt nội dung** + +Trong phần này, ta sẽ khám phá cách dùng MLTK để **phân loại các sự kiện bảo mật** – từ log thô, cảnh báo, đến các hành vi hệ thống – thành các nhóm như “bình thường”, “nghi ngờ”, hay “nguy hiểm”. Đây là bước nền tảng cho các hệ thống cảnh báo thông minh và tự động hóa điều tra trong SOC. + +--- + +**A. Lý thuyết ngắn gọn** + +**Phân loại (Classification)** là bài toán supervised learning (học có giám sát), tức là: + +- **Dữ liệu đầu vào:** Đã có nhãn (label), ví dụ: label=malicious hoặc label=benign + +- **Mục tiêu:** Học từ dữ liệu đã gán nhãn để phân loại sự kiện mới + +**Một số thuật toán thường dùng trong MLTK:** + +|**Thuật toán**|**Mô tả ngắn**|**Khi nào nên dùng**| +|---|---|---| +|**Logistic Regression**|Dự đoán nhị phân (2 nhóm)|Phân biệt sự kiện bình thường / nguy hiểm| +|**Decision Tree**|Cây quyết định dễ giải thích|Khi cần mô hình dễ đọc, dễ phân tích| +|**Naive Bayes**|Giả định độc lập giữa các feature|Khi có dữ liệu log dạng text| +|**Random Forest**|Kết hợp nhiều cây|Khi cần độ chính xác cao, dữ liệu phức tạp| + +--- + +**B. Tình huống thực tế: Phân loại cảnh báo từ SOAR** + +**Mô tả:** + +SOC của bạn mỗi ngày nhận hàng trăm cảnh báo (notable events). Tuy nhiên, phần lớn là **false positive**. Bạn muốn huấn luyện một mô hình phân loại để: + +- **Loại bớt cảnh báo không cần điều tra** + +- Tự động dán nhãn “cần xử lý” hoặc “có thể bỏ qua” + +**Nguồn dữ liệu cần có:** + +Từ dữ liệu đã điều tra trước đây: + +- src_ip, dest_ip + +- alert_type + +- user_agent, uri, geoip_country + +- label: 1 nếu là sự cố thật (True Positive), 0 nếu là false positive + +--- + +**C. Cách triển khai chi tiết bằng Splunk MLTK** + +**Bước 1: Chuẩn bị dữ liệu gán nhãn** + +``` +index=notable label=* earliest=-30d +| table src_ip, dest_ip, alert_type, user_agent, uri, geoip_country, label +``` + +Lưu ý: + +- Trường label là bắt buộc để huấn luyện mô hình classification + +- Bạn cần ít nhất vài trăm dòng để mô hình học hiệu quả + +--- + +**Bước 2: Dùng Assistant “Predict Categorical Fields”** + +Truy cập: MLTK → **Assistants → Predict Categorical Fields** + +- **Target field:** label + +- **Input fields:** alert_type, src_ip, geoip_country, user_agent, … + +- **Algorithm:** LogisticRegression, DecisionTree, hoặc RandomForest + +- **Training size:** Tối thiểu 70-80% dữ liệu (chia train/test) + +Sau khi huấn luyện, MLTK sẽ trả về: + +- **Độ chính xác (accuracy)** + +- **Ma trận nhầm lẫn (confusion matrix)**: dễ thấy mô hình có phân biệt tốt không + +--- + +**Bước 3: Áp dụng mô hình với dữ liệu mới** + +``` +index=notable earliest=-1h +| table src_ip, dest_ip, alert_type, user_agent, uri, geoip_country +| apply classify_notable_model +| where predicted(label)=1 +``` + +Giải thích: + +- Chỉ hiển thị các cảnh báo được mô hình dự đoán là label=1 → tức là **“cảnh báo nghiêm trọng”** + +- Bạn có thể tự động chuyển cảnh báo này vào playbook trong SOAR để xử lý ưu tiên + +--- + +**D. Gợi ý nâng cao: Áp dụng cho log hệ thống, không có nhãn sẵn** + +Nếu bạn không có label sẵn, bạn có thể tự tạo ra nhãn bằng cách: + +- **Gán nhãn thủ công cho một tập dữ liệu nhỏ** + +- **Dùng threat intelligence hoặc blacklist** để dán nhãn tự động (src_ip in threat_list → label=1) + +- Sau đó, huấn luyện mô hình để mở rộng ra toàn bộ dữ liệu + +--- + +**So sánh: Rule-based vs ML-based** + +|**Tiêu chí**|**Rule-based detection**|**ML-based classification**| +|---|---|---| +|Dễ triển khai|Có|Cần chuẩn bị dữ liệu| +|Linh hoạt, học hỏi|Không|Có| +|Bắt được hành vi mới|Không|Có thể| +|Hiểu mô hình|Rất rõ (có rule)|Có thể khó hiểu (black box)| + +--- + +**Chốt lại kiến thức** + +- Phân loại sự kiện là một **ứng dụng rất mạnh của MLTK**, giúp giảm tải cho SOC và ưu tiên cảnh báo. + +- Cần chuẩn bị dữ liệu có nhãn, nhưng một khi đã có → có thể triển khai quy trình phân loại tự động. + +- MLTK hỗ trợ nhiều thuật toán và có giao diện Assistant giúp bạn huấn luyện dễ dàng. + +--- + +#### **3.3. Dự đoán sự kiện / Phát hiện sớm (Forecasting / Prediction)** + +**Tóm tắt nội dung** + +Ở hai phần trước, ta đã học cách phát hiện bất thường và phân loại sự kiện. Trong phần này, chúng ta sẽ tìm hiểu cách **dự đoán các xu hướng an ninh có thể xảy ra** trong tương lai gần – như tăng đột biến số lượng alert, số lượng đăng nhập, hay truy cập vào các ứng dụng nhạy cảm. Đây chính là bước **chủ động ứng phó** thay vì chỉ phản ứng khi sự việc đã xảy ra. + +--- + +**A. Lý thuyết ngắn gọn** + +**Forecasting (Dự báo)** là kỹ thuật dự đoán **giá trị số trong tương lai** dựa trên dữ liệu lịch sử. Trong Splunk MLTK, có thể sử dụng các thuật toán như: + +|**Thuật toán**|**Mô tả**|**Ứng dụng**| +|---|---|---| +|**Linear Regression**|Dự đoán tuyến tính đơn giản|Dự báo số lượng alert nếu xu hướng ổn định| +|**ARIMA**|Mô hình thời gian có chu kỳ|Phân tích chuỗi thời gian phức tạp (log, traffic, login…)| +|**StateSpaceForecast**|Tối ưu cho dữ liệu biến động nhiều|Dự đoán dựa trên trạng thái hệ thống| +|**Kalman Filter**|Dự báo ngắn hạn, phản ứng nhanh|Tốt cho dữ liệu thời gian thực| + +--- + +**B. Tình huống thực tế: Dự đoán số lượng cảnh báo bảo mật** + +**Mô tả:** + +Giả sử mỗi ngày SOC của bạn nhận khoảng 200–300 cảnh báo (notable events). Bạn muốn: + +- Dự đoán **ngày mai sẽ có bao nhiêu cảnh báo** + +- Nếu số lượng cảnh báo dự đoán vượt ngưỡng → **tăng ca, chia trực ca**, chuẩn bị lực lượng ứng phó + +--- + +**C. Cách triển khai chi tiết trong Splunk MLTK** + +**Bước 1: Trích xuất dữ liệu chuỗi thời gian** + +``` +index=notable earliest=-30d +| timechart span=1d count AS daily_alerts +``` + +→ Lấy số lượng alert mỗi ngày trong 30 ngày gần nhất. + +--- + +**Bước 2: Dùng Assistant “Forecast Time Series”** + +Vào: MLTK → **Assistants → Forecast Time Series** + +- **Target field:** daily_alerts + +- **Algorithm:** ARIMA, StateSpaceForecast, hoặc LLP4Forecast + +- **Forecast length:** 7 (tức là 7 ngày tới) + +- **Train-test split:** 80/20 để kiểm tra độ chính xác + +Sau khi chạy, bạn sẽ thấy: + +- Đường biểu diễn thực tế và đường dự đoán + +- Khoảng tin cậy (confidence interval) + +- Sai số (RMSE, MAE, …) + +--- + +**Bước 3: Dự đoán + cảnh báo nếu vượt ngưỡng** + +Sau khi huấn luyện xong, bạn có thể áp dụng mô hình bằng SPL: + +``` +index=notable earliest=-30d +| timechart span=1d count AS daily_alerts +| apply forecast_alert_model +| where 'forecast(daily_alerts)' > 1.5 * 'mean(daily_alerts)' +``` + +→ Nếu dự đoán cho ngày mai vượt quá 150% trung bình 30 ngày → có thể là **đợt tấn công lớn sắp tới** + +--- + +**D. Use case nâng cao: Dự báo số lượng đăng nhập theo giờ** + +Đây là một ví dụ khác để bạn mở rộng ứng dụng: + +``` +index=auth_log earliest=-7d +| bin _time span=1h +| stats count AS logins by _time +| apply hourly_login_model +| where 'forecast(logins)' > 2 * 'stdev(logins)' +``` + +→ Dùng để phát hiện sớm khả năng brute-force hoặc đăng nhập bất thường theo giờ. + +--- + +**So sánh nhanh: Dự đoán vs Phát hiện bất thường** + +|**Đặc điểm**|**Dự đoán (Forecasting)**|**Phát hiện bất thường (Anomaly Detection)**| +|---|---|---| +|Mục tiêu|Tìm ra xu hướng tương lai|Tìm điểm bất thường trong hiện tại / quá khứ| +|Yêu cầu dữ liệu|Dữ liệu thời gian ổn định|Có hoặc không có nhãn| +|Ứng dụng|Dự báo alert, log, traffic|Phát hiện tấn công, hành vi lạ| + +--- + +**Chốt lại kiến thức** + +- Dự đoán là ứng dụng giúp SOC **chủ động** hơn trước các mối đe dọa tiềm tàng. + +- Splunk MLTK cung cấp các mô hình chuỗi thời gian mạnh mẽ như ARIMA, Kalman, LLP4. + +- Có thể dùng để dự đoán: số lượng alert, số lượng đăng nhập, traffic bất thường, hành vi người dùng. + +- Kết quả dự báo có thể **gắn alert tự động** nếu vượt ngưỡng → kích hoạt SOAR playbook. + +--- + + +### **4. Quy trình sử dụng MLTK từ dữ liệu đến mô hình** + +**Tóm tắt nội dung** + +Ở các phần trước, chúng ta đã lần lượt đi qua các ứng dụng như phát hiện bất thường, phân loại sự kiện, dự đoán xu hướng. Trong phần này, mình sẽ tổng hợp lại thành một quy trình **chuẩn**, giúp bạn biết rõ **bắt đầu từ đâu, làm gì, và kết thúc như thế nào** khi triển khai MLTK cho một bài toán cụ thể. + +--- + +#### **4.1. Lựa chọn dữ liệu đầu vào phù hợp** + +**Câu hỏi cần trả lời:** + +- Dữ liệu mình đang có đến từ đâu? (notable, auth_log, traffic_log,…) + +- Có đủ độ sâu thời gian không? (tối thiểu 7–30 ngày cho học máy) + +- Có nhãn (label) không? Nếu không có, cần dùng unsupervised? + +**Ví dụ thực tế:** + +``` +index=notable earliest=-30d +| table _time, alert_type, src_ip, dest_ip, label +``` + +> **Ghi nhớ:** Tránh dùng dữ liệu quá “noisy” – hãy cố gắng làm rõ dữ liệu đầu vào ngay từ đầu. + +--- + +#### **4.2. Làm sạch và xử lý dữ liệu bằng SPL** + +Dữ liệu log thực tế **rất lộn xộn**, có thể bị: + +- Trùng dòng (duplicate) + +- Thiếu trường + +- Trường định dạng sai kiểu (ví dụ: IP bị lưu là text có dấu chấm thừa) + +**Công việc cần làm:** + +- Dùng eval, replace, rex để xử lý format + +- Dùng where isnotnull(...) để lọc dữ liệu lỗi + +- Dùng stats, timechart để gom nhóm và làm gọn dữ liệu + +**Ví dụ: Làm sạch log đăng nhập** + +``` +index=auth_log earliest=-30d +| eval hour=strftime(_time, "%H") +| where isnotnull(user) AND user!="-" +| stats count by user, hour +``` + +--- + +#### **4.3. Chọn thuật toán phù hợp** + +Tùy vào bài toán: + +|**Bài toán**|**Gợi ý thuật toán**| +|---|---| +|Dự đoán số lượng log|Linear Regression, ARIMA| +|Phân loại cảnh báo|Logistic Regression, Decision Tree| +|Phát hiện outlier|K-means, DensityFunction, OneClassSVM| +|Phân cụm log tương tự|DBSCAN, K-means| +|Gán nhãn tự động|Naive Bayes| + +> **Lưu ý:** Trong Assistant, Splunk đã hỗ trợ bạn chọn thuật toán phù hợp – nhưng nếu muốn tuỳ biến sâu hơn, bạn nên tự viết SPL bằng fit / apply. + +--- + +#### **4.4. Huấn luyện và đánh giá mô hình** + +**Huấn luyện:** + +Dùng fit SPL command hoặc Assistant để train mô hình: + +``` +| fit LogisticRegression label from alert_type, user_agent into "notable_classifier" +``` + +**Đánh giá:** + +- Với classification: dùng confusion matrix, accuracy, precision, recall + +- Với regression: dùng RMSE, MSE, R² + +- Với forecasting: so sánh thực tế vs dự báo bằng biểu đồ + +> Splunk MLTK tự động hiển thị các chỉ số này trong Assistant, bạn nên chụp lại để đưa vào tài liệu kiểm thử nội bộ. + +--- + +#### **4.5. Lưu và sử dụng mô hình trong pipeline phân tích** + +**Lưu mô hình:** + +``` +... | fit ... into "model_name" +``` + +**Áp dụng mô hình:** + +``` +... | apply model_name +``` + +Có thể dùng where isOutlier=1 hoặc where predicted(label)=1 để lọc kết quả nghi vấn. + +**Tích hợp vào hệ thống:** + +- Dùng kết quả phân loại/dự đoán để tạo notable event + +- Trigger SOAR playbook khi có prediction=1 + +- Gửi cảnh báo qua Slack, Email nếu forecast vượt ngưỡng + +--- + +**Quy trình tổng quát dạng sơ đồ** + +``` +[Log đầu vào] + ↓ +[Tiền xử lý bằng SPL] + ↓ +[Huấn luyện mô hình (Assistant hoặc fit)] + ↓ +[Đánh giá & tinh chỉnh mô hình] + ↓ +[Lưu mô hình] + ↓ +[Áp dụng mô hình cho dữ liệu mới (apply)] + ↓ +[Kết quả ML đưa vào alert / dashboard / automation] +``` + +--- + +**Chốt lại kiến thức** + +- Quy trình MLTK rất trực quan: từ **log → làm sạch → train → đánh giá → apply**. + +- Giao diện Assistant giúp bạn làm nhanh, nhưng hiểu SPL sẽ giúp tùy biến sâu. + +- Có thể kết hợp mô hình ML với alert, dashboard hoặc playbook SOAR để **tự động hóa toàn bộ chu trình SOC**. + +--- + + +### **5. Tích hợp MLTK với hệ thống AIOps** + +**Tóm tắt nội dung** + +Trong phần này, ta sẽ tìm hiểu cách Splunk MLTK được đưa vào quy trình AIOps (Artificial Intelligence for IT Operations) để biến một hệ thống SIEM/SOC từ **bị động phản ứng** sang **chủ động dự đoán và tự xử lý**. Mình cũng sẽ trình bày cách kết nối giữa MLTK với các nền tảng như **SOAR** để hình thành một chu trình phản hồi tự động thông minh. + +--- + +#### **5.1. Khái niệm AIOps trong môi trường SOC** + +**AIOps** là sự kết hợp giữa: + +- **Dữ liệu lớn (Big Data)** + +- **Machine Learning (Học máy)** + +- **Tự động hóa vận hành (Automation)** + +Mục tiêu: Giảm tải công việc vận hành thủ công, phát hiện sớm và phản ứng nhanh với các **sự cố hệ thống hoặc tấn công bảo mật**. + +Trong SOC (Security Operation Center), AIOps giúp: + +- Phân tích log và cảnh báo từ nhiều nguồn + +- Phát hiện các mẫu hành vi mới mà rule không bắt được + +- Đưa ra dự đoán và đề xuất phản hồi + +- Tự động hóa xử lý cảnh báo thường gặp + +--- + +#### **5.2. Splunk + MLTK + SOAR = Tự động hóa thông minh** + +**Kiến trúc tích hợp đề xuất:** + +``` +[Log Hệ thống / Ứng dụng / Bảo mật] + ↓ +[Splunk Indexer] + ↓ +[MLTK] — Học mô hình hành vi bình thường + ↓ +[Apply mô hình → Dự đoán / Phân loại] + ↓ +[Tạo Notable Event (nếu có nghi vấn)] + ↓ +[SOAR Playbook xử lý tự động] +``` + +**Ví dụ workflow: Phát hiện + phản ứng bất thường** + +1. **MLTK** phát hiện đăng nhập bất thường từ địa chỉ IP nước ngoài lúc 3h sáng + +2. MLTK thêm flag isOutlier=1 vào sự kiện + +3. SPL được thiết kế để: + + +``` +... | where isOutlier=1 | eval urgency="high" +``` + + +4. Gửi sự kiện vào **SOAR** + +5. **SOAR playbook** tự động: + + - Tra cứu IP có trong Threat Intel hay không + + - Tạm khóa tài khoản (disable AD user) + + - Gửi Slack/Email tới SOC analyst + + + +> **Hiệu quả:** Thời gian phản hồi giảm từ vài giờ → vài giây + +--- + +#### **5.3. Case Study: Giảm cảnh báo giả bằng học không giám sát** + +**Vấn đề:** + +SOC có hàng ngàn alert mỗi ngày, nhưng >80% là **false positive** + +→ Analyst mất thời gian điều tra những cảnh báo không quan trọng + +**Giải pháp:** + +Sử dụng mô hình **K-means clustering** để **nhóm các loại alert thường gặp** → từ đó phát hiện được những alert “lẻ”, bất thường + +**Quy trình cụ thể:** + +``` +index=notable earliest=-30d +| stats count by src_ip, alert_type, geoip_country +| fit KMeans k=5 into alert_clusters +``` + +→ Các alert sẽ được gán vào cluster_id + +``` +index=notable earliest=-1d +| apply alert_clusters +| where cluster_id=“unknown” → flag nghi vấn +``` + +→ Từ đó chỉ điều tra các alert rơi vào cluster chưa từng thấy + +**Kết quả:** + +- Giảm 60–70% số alert analyst cần xem tay + +- Có thể huấn luyện lại mô hình mỗi tuần/tháng để cập nhật hành vi mới + +--- + +**Tích hợp với dashboard và automation** + +- Tích hợp kết quả dự đoán từ MLTK vào dashboard SOC, ví dụ: + + - Top 10 IP nghi vấn + + - Biểu đồ số cảnh báo dự đoán 7 ngày tới + + - Phân loại các alert cần ưu tiên cao + +- Trigger automation từ kết quả apply: + + - Tự động gửi vào Slack khi predicted(label)=1 + + - Gọi API khóa IP / vô hiệu hóa tài khoản nếu isOutlier=1 + +--- + +**Chốt lại kiến thức** + +- Splunk MLTK không chỉ để phân tích, mà là nền tảng giúp **tự động hóa SOC thông minh**. +- Khi kết hợp với SOAR, bạn có thể **biến kết quả phân tích ML thành hành động cụ thể** +- Những gì trước đây analyst phải làm bằng tay, giờ có thể **diễn ra trong vài giây** nếu tích hợp tốt. + + +--- + + +### **6. Best practices và lưu ý khi triển khai Splunk MLTK** + +**Tóm tắt nội dung** + +Triển khai MLTK không chỉ là chuyện “chạy được mô hình”. Để thực sự hữu ích trong môi trường an ninh mạng, bạn cần tránh các lỗi phổ biến, hiểu rõ dữ liệu của mình và biết cách bảo trì, cập nhật mô hình lâu dài. Phần này sẽ giúp bạn tránh “vỡ trận” khi đi từ PoC (thử nghiệm) sang production (triển khai thật). + +--- + +#### **6.1. Những sai lầm phổ biến cần tránh** + +|**Sai lầm**|**Hệ quả**|**Giải pháp**| +|---|---|---| +|**Huấn luyện với dữ liệu lỗi hoặc thiếu xử lý**|Mô hình học sai, dự đoán sai|Luôn làm sạch dữ liệu kỹ trước khi huấn luyện| +|**Dữ liệu train không đại diện cho thực tế**|Mô hình không áp dụng được khi gặp tình huống mới|Dùng dữ liệu đa dạng, đủ thời gian, không chỉ “góc nhìn đẹp”| +|**Không đánh giá mô hình đầy đủ**|Khó biết mô hình tốt hay tệ|Luôn test trên dữ liệu mới, so sánh accuracy, confusion matrix| +|**Dùng mô hình không phù hợp với bài toán**|Kết quả sai lệch hoặc kém hiệu quả|Chọn thuật toán phù hợp: classification hay clustering? supervised hay không?| +|**Huấn luyện một lần rồi quên luôn**|Mô hình lỗi thời, không còn đúng nữa|Cần tái huấn luyện định kỳ theo chu kỳ dữ liệu thay đổi| + +**Gợi ý thực tế:** + +- Với dữ liệu đăng nhập, hãy huấn luyện theo từng user, không nên gom hết vào một mô hình chung. + +- Với alert volume, tránh dùng dữ liệu dịp lễ tết để train vì có thể gây nhiễu. + +--- + +#### **6.2. Hiểu rõ mục tiêu và dữ liệu của mình** + +**Đừng bắt đầu bằng mô hình – hãy bắt đầu bằng câu hỏi:** + +> “Tôi đang cố gắng giải quyết vấn đề gì trong SOC của mình?” + +Ví dụ: + +- Bạn đang muốn **giảm false positive**? + +- Bạn muốn **phát hiện các hành vi chưa từng thấy**? + +- Hay muốn **dự đoán số lượng log để phân bổ nhân sự**? + +**Sau đó mới chọn dữ liệu và mô hình phù hợp.** + +|**Mục tiêu**|**Kiểu dữ liệu cần**|**Mô hình phù hợp**| +|---|---|---| +|Phát hiện login bất thường|Log đăng nhập, IP, giờ, thiết bị|Anomaly detection| +|Phân loại alert|Dữ liệu cảnh báo đã dán nhãn|Classification| +|Dự báo số lượng alert|Time-series alert volume|Forecasting| +|Gán nhãn cho log thô|Dữ liệu text hoặc IP + label|Supervised learning| + +> **Tips:** Hãy vẽ sơ đồ đơn giản (input → xử lý → output mong muốn) trước khi bắt tay vào xây mô hình. + +--- + +#### **6.3. Lưu trữ, bảo trì và cập nhật mô hình ML** + +**Lưu trữ mô hình đúng cách** + +- Tất cả mô hình sau khi fit được lưu tại: + +``` +$SPLUNK_HOME/var/lib/splunk/modinput/mltk/models/ +``` + +- Có thể xem quản lý mô hình bằng giao diện **Model Management** trong MLTK App + + +**Đặt tên mô hình rõ ràng** + +- Đặt tên theo cấu trúc: + + `type_usecase_scope_version`, ví dụ: + + `clf_notable_ipgroup_v1`, `forecast_login_perhour_v2` + +**Tái huấn luyện mô hình định kỳ** + +|**Tình huống**|**Chu kỳ tái huấn luyện đề xuất**| +|---|---| +|Dữ liệu thay đổi liên tục (login, alert)|1 tuần / lần| +|Hành vi ổn định (user-agent, cluster IP)|1 tháng / lần| +|Mô hình phục vụ audit / báo cáo|Theo kỳ báo cáo| + +**Cách thực hiện lại huấn luyện:** + +- Dùng lại fit command với dữ liệu mới + +- Có thể viết SPL định kỳ chạy trên cron schedule (kết hợp alert hoặc playbook để tự động) + +``` +index=auth_log earliest=-7d +| ... xử lý dữ liệu ... +| fit LogisticRegression label from ... into login_classifier_v2 +``` + +> Có thể thêm điều kiện: chỉ train lại nếu số lượng log > N dòng, hoặc nếu sai số vượt ngưỡng. + +--- + +**Chốt lại kiến thức** + +- Hãy tránh “chạy mô hình để cho có”. Một mô hình hiệu quả phải: dữ liệu đúng → thuật toán đúng → mục tiêu rõ ràng. + +- Coi việc **bảo trì mô hình giống như bảo trì hệ thống SIEM** – nếu không sẽ sớm trở nên lỗi thời hoặc sai lệch. + +- Tích hợp việc train/apply lại mô hình vào quy trình SOC hàng tuần/tháng là điều cần thiết nếu muốn vận hành ổn định. + +--- + +Dưới đây là nội dung chi tiết cho **Phần 7: Tài nguyên học tập & hướng phát triển nâng cao** – phần kết thúc của bài blog, dành cho bạn nào muốn đi xa hơn với Splunk Machine Learning Toolkit (MLTK), trở thành **chuyên gia phân tích và triển khai ML trong môi trường bảo mật thực thụ**. + +--- + +### **7. Tài nguyên học tập & hướng phát triển nâng cao** + +**Tóm tắt nội dung** + +Splunk MLTK rất dễ tiếp cận với giao diện trực quan, nhưng để sử dụng chuyên sâu và mở rộng khả năng phân tích trong SOC, bạn nên biết thêm về: + +- Tài liệu chính thức + +- Khóa học thực hành + +- Cách tùy biến MLTK nâng cao bằng Python, SDK + +--- + +#### **7.1. Các nguồn tài liệu chính thức từ Splunk** + +**Trang Splunk MLTK Documentation** + +- Địa chỉ: https://docs.splunk.com/Documentation/MLApp + +- Đây là tài liệu **chính thống và cập nhật nhất**, bao gồm: + + - Hướng dẫn cài đặt + + - Danh sách các thuật toán hỗ trợ + + - Cách sử dụng SPL với fit, apply, score + + - Các use case mẫu và cấu trúc dữ liệu + +**Splunkbase – App Splunk Machine Learning Toolkit** + +- https://splunkbase.splunk.com/app/2890 + +- Tải bản mới nhất của MLTK + +- Đọc đánh giá từ cộng đồng, cập nhật lỗi & tính năng mới + +**Splunk Lantern (Guided Learning)** + +- https://lantern.splunk.com + +- Tìm các hướng dẫn theo từng vai trò: SOC analyst, security engineer, machine learning engineer + +- Có bài viết mẫu cho từng use case: anomaly detection, alert classification, traffic prediction,… + +--- + +#### **7.2. Khóa học, lab thực hành & cộng đồng Splunk MLTK** + +**Splunk Education – Machine Learning with Splunk** + +- Khóa học chính thức của Splunk University (dành cho người học chuyên sâu) + +- Thời lượng: 3 ngày (online hoặc onsite) + +- Nội dung: + + - Xây dựng mô hình ML từ log thực + + - Kết hợp MLTK với SPL và dashboard + + - Case study ứng dụng trong IT và bảo mật + +> **Gợi ý:** Có thể xin tài khoản Trial hoặc yêu cầu tài liệu nếu tổ chức chưa có license học + +--- + +**TrySplunk: Lab thực hành online miễn phí** + +- https://www.splunk.com/en_us/resources/try-splunk.html + +- Có sandbox MLTK để thực hành mà không cần cài đặt + +- Một số lab điển hình: + + - Forecast traffic + + - Detect outliers in login patterns + + - Predict server failures + +--- + +**Cộng đồng Splunk (Community + Forum)** + +- **Splunk Answers:** https://community.splunk.com + +- **Reddit:** r/Splunk + +- **Slack Group Splunk User Group**: Rất nhiều chuyên gia từ các doanh nghiệp lớn chia sẻ cách dùng MLTK để giảm alert, dự đoán log, và kết nối với SOAR + +--- + +#### **7.3. Hướng đi nâng cao: Tùy biến MLTK bằng Python và SDK** + +Nếu bạn muốn làm được những điều vượt ngoài giao diện Assistant, bạn có thể: + +**A. Viết mô hình riêng bằng Python (Custom Algorithm)** + +- MLTK hỗ trợ import các thuật toán ML từ Python (scikit-learn, xgboost, v.v.) + +- Bạn có thể tạo 1 mô hình Python theo định dạng chuẩn của Splunk: + + - `fit()` và `predict()` functions + + - Đặt trong bin/algorithms và khai báo trong algos.conf + +> Ví dụ: Viết mô hình phát hiện IP scan bằng Isolation Forest rồi gắn vào MLTK + +--- + +**B. Dùng Splunk SDK để quản lý mô hình qua API** + +- Splunk SDK for Python: https://dev.splunk.com/enterprise/docs/python/sdk-python + +- Có thể: + + - Lấy dữ liệu từ index để huấn luyện bên ngoài Splunk + + - Gửi kết quả dự đoán trở lại Splunk để visualize hoặc trigger playbook + + - Xây dựng ML pipeline tùy biến theo thời gian thực + +--- + +**C. Tích hợp MLTK với hệ thống ngoài (Kafka, Delta Lake, etc.)** + +- Một số doanh nghiệp dùng **Splunk chỉ để visualize kết quả ML** huấn luyện từ Spark MLlib hoặc Data Lake khác + +- Khi đó, bạn có thể: + + - Huấn luyện mô hình trong hệ thống ngoài + + - Export ra CSV hoặc dùng REST API đẩy về Splunk + + - Apply trực tiếp bằng lookup hoặc inputlookup + apply + +--- + +**Chốt lại kiến thức** + +- Splunk cung cấp rất nhiều tài liệu và công cụ học tập miễn phí để nâng cao kỹ năng với MLTK. + +- Nếu muốn trở thành **Splunk ML Engineer**, bạn nên tìm hiểu cách viết mô hình bằng Python và kết nối SDK. + +- Mục tiêu cuối cùng là **tự động hóa và làm thông minh hóa toàn bộ quá trình phân tích và phản ứng bảo mật**. + + diff --git a/content/Personal Projects/Autonomous Vulnerability Triage & Risk Scoring.md b/content/Personal Projects/Autonomous Vulnerability Triage & Risk Scoring.md new file mode 100644 index 000000000..138a8d7cb --- /dev/null +++ b/content/Personal Projects/Autonomous Vulnerability Triage & Risk Scoring.md @@ -0,0 +1,542 @@ +#cyber_security #machine_learning +# Phân Loại Lỗ Hổng Tự Động + +## Giới Thiệu + +Trong bối cảnh hiện nay, việc quản lý lỗ hổng bảo mật đang trở nên ngày càng phức tạp do khối lượng lớn các CVE (Common Vulnerabilities and Exposures) được công bố hàng ngày. Các tổ chức thường phải đối mặt với thách thức trong việc ưu tiên và xử lý các lỗ hổng này một cách hiệu quả, bởi vì không phải tất cả các lỗ hổng đều có mức độ nguy hiểm và ảnh hưởng như nhau. Việc xác định lỗ hổng nào cần được vá trước, lỗ hổng nào có thể tạm thời trì hoãn, đòi hỏi sự phân tích kỹ lưỡng và nhanh chóng từ các đội ngũ bảo mật. + +Để giải quyết vấn đề này, dự án đề xuất một pipeline end-to-end tự động, bắt đầu từ việc pipeline sử dụng dữ liệu **mockup mô phỏng** scanner (Nessus/OpenVAS/Qualys), NVD, ExploitDB và vendor patch. Dữ liệu thu thập được sẽ được enrich với ngữ cảnh về tài sản (asset context) như hệ điều hành, phần mềm đang sử dụng và mức độ quan trọng của tài sản đó trong hệ thống. Tiếp theo, pipeline sử dụng kết hợp các mô hình học máy cùng với các quy tắc (rule-based) để phân loại và ưu tiên lỗ hổng một cách chính xác. Đặc biệt, hệ thống cung cấp khả năng giải thích mô hình thông qua SHAP (SHapley Additive exPlanations), giúp người dùng hiểu rõ nguyên nhân và cơ sở của các quyết định phân loại. Cuối cùng, kết quả được tích hợp trực tiếp vào nền tảng Splunk, hỗ trợ hiển thị và quản lý dễ dàng trong các bảng điều khiển. + +Động lực thực hiện dự án xuất phát từ nhu cầu giảm tải cho các SOC analyst, giúp họ không còn phải xử lý thủ công khối lượng lớn thông tin lỗ hổng mà có thể tập trung vào các lỗ hổng quan trọng nhất. Việc tự động hóa và minh bạch trong quá trình triage lỗ hổng sẽ tăng tốc độ phản ứng, nâng cao hiệu quả bảo mật tổng thể, đồng thời hỗ trợ quyết định patch hoặc mitigate nhanh chóng và chính xác hơn, góp phần bảo vệ hệ thống và dữ liệu của tổ chức một cách tốt nhất. + +[Github Repo](https://github.com/cyberp01/autonomous_vulnerability_triage) + +--- + +## Mục Tiêu Dự Án + +### Bối Cảnh Bài Toán +Trong môi trường an ninh mạng ngày càng phức tạp, các tổ chức phải xử lý hàng ngàn lỗ hổng mới phát sinh mỗi ngày. Việc phân loại và ưu tiên các lỗ hổng này thủ công không chỉ tốn thời gian mà còn dễ dẫn đến sai sót, làm giảm hiệu quả phản ứng bảo mật. Do đó, cần một giải pháp tự động hóa, chính xác và minh bạch để hỗ trợ các chuyên gia bảo mật trong việc triage lỗ hổng. + +### Mục Tiêu Nghiệp Vụ +- **Giảm tải công việc thủ công:** Giúp các SOC analyst và đội ngũ bảo mật giảm bớt khối lượng công việc xử lý lỗ hổng. +- **Tăng tốc độ phản ứng:** Rút ngắn thời gian từ khi lỗ hổng được phát hiện đến khi được xử lý hoặc ưu tiên. +- **Minh bạch trong quyết định:** Cung cấp giải thích rõ ràng cho các phân loại và ưu tiên, tạo sự tin tưởng và dễ dàng kiểm tra lại. + +### Mục Tiêu Kỹ Thuật +- **Sinh dữ liệu mockup mô phỏng ingest từ nhiều nguồn (scanner, NVD, ExploitDB, vendor patch, asset CMDB).** +- **Feature Engineering nâng cao:** Trích xuất đặc trưng quan trọng từ dữ liệu thô, bao gồm ngữ cảnh tài sản và thông tin môi trường. +- **Mô hình học máy kết hợp rule-based:** Áp dụng các thuật toán ML cùng với các quy tắc chuyên môn để phân loại chính xác các lỗ hổng. +- **Explainability:** Sử dụng SHAP để giải thích các quyết định của mô hình, giúp người dùng hiểu rõ hơn về nguyên nhân phân loại. +- **Tích hợp với Splunk:** Đưa kết quả trực tiếp vào Splunk để hỗ trợ quản lý và hiển thị thông tin hiệu quả. + +### Phạm Vi và Ngoài Phạm Vi +- **Phạm vi:** Tự động phân loại và ưu tiên lỗ hổng bảo mật dựa trên dữ liệu thu thập được, tích hợp giải thích và hiển thị trong Splunk. +- **Ngoài phạm vi:** Tự động vá lỗi, phân tích sâu về exploit hoặc tấn công, và các hoạt động phản ứng sự cố nâng cao. + +### KPIs Mong Đợi +- Tăng ít nhất 50% tốc độ xử lý lỗ hổng so với phương pháp thủ công. +- Đạt độ chính xác phân loại trên 85% theo đánh giá chuyên gia. +- Giảm thiểu sai sót trong việc ưu tiên lỗ hổng xuống dưới 10%. +- Mức độ hài lòng của người dùng với giải thích mô hình trên 4/5. + +### Rủi Ro và Cách Giảm Thiểu +- **Dữ liệu đầu vào không đầy đủ hoặc sai lệch:** Thiết lập quy trình kiểm tra và làm sạch dữ liệu trước khi xử lý. +- **Mô hình không chính xác hoặc thiên lệch:** Kết hợp rule-based để kiểm soát và điều chỉnh, cập nhật mô hình định kỳ. +- **Khó hiểu giải thích mô hình:** Đào tạo người dùng và cải tiến giao diện hiển thị giải thích. +- **Vấn đề bảo mật dữ liệu:** Áp dụng các biện pháp mã hóa, kiểm soát truy cập và tuân thủ chính sách bảo mật. + +### Deliverables +- Pipeline sinh dữ liệu mockup và xử lý. +- Mô hình học máy và rule-based phân loại. +- Module giải thích mô hình bằng SHAP. +- Kết quả xuất ra Splunk (lookup/demo dashboard). +- Tài liệu & UI Gradio demo. + +### Cột Mốc +- Hoàn thiện thu thập và làm sạch dữ liệu. +- Xây dựng và huấn luyện mô hình. +- Phát triển module giải thích và tích hợp Splunk. +- Kiểm thử và đánh giá hiệu năng. +- Triển khai và đào tạo người dùng. + +### Human-in-the-Loop +Phiên bản hiện tại **chưa implement** Human-in-the-Loop. Mới dừng ở bước cung cấp explainability và xuất dữ liệu ra Splunk để analyst review. Phiên bản sau sẽ bổ sung. + +### Bảo Mật Dữ Liệu +Toàn bộ dữ liệu nhạy cảm được xử lý tuân thủ các quy định bảo mật, sử dụng mã hóa khi lưu trữ và truyền tải, đồng thời kiểm soát quyền truy cập nghiêm ngặt để đảm bảo an toàn thông tin trong toàn bộ pipeline. + +--- + +## Tổng Quan Kiến Trúc + +Pipeline phân loại lỗ hổng tự động được thiết kế theo kiến trúc module hóa, giúp quản lý và phát triển dễ dàng, đồng thời đảm bảo tính mở rộng và khả năng bảo trì cao. Dưới đây là mô tả tổng quan các thành phần chính và luồng dữ liệu trong hệ thống. + +### Các Thành Phần Chính + +- **1. Data Generation (Tạo Dữ Liệu):** + Thu thập dữ liệu đầu vào từ nhiều nguồn bao gồm dữ liệu giả lập (mockup) scanner như Nessus/OpenVAS/Qualys, dữ liệu từ NVD, ExploitDB, vendor patch và thông tin tài sản (CMDB). Mục tiêu là tổng hợp dữ liệu thô đa dạng, phong phú và có ngữ cảnh để làm nền tảng cho các bước tiếp theo. + +- **2. Feature Engineering (Trích Xuất Đặc Trưng):** + Xử lý và chuyển đổi dữ liệu thô thành các đặc trưng có ý nghĩa cho mô hình học máy. Bao gồm việc làm sạch dữ liệu, chuẩn hóa, mã hóa các thuộc tính, kết hợp thông tin ngữ cảnh tài sản (hệ điều hành, phần mềm, mức độ quan trọng) và các biến số đặc trưng khác. + +- **3. Model Training (Huấn Luyện Mô Hình):** + Sử dụng các thuật toán học máy kết hợp với các quy tắc chuyên môn (rule-based) để xây dựng mô hình phân loại và ưu tiên lỗ hổng. Mô hình được huấn luyện trên dữ liệu đã được trích xuất đặc trưng, đảm bảo độ chính xác và khả năng tổng quát hóa cao. + +- **4. Explainability (Giải Thích Mô Hình):** + Áp dụng phương pháp SHAP (SHapley Additive exPlanations) để giải thích các quyết định của mô hình. Giúp người dùng hiểu rõ nguyên nhân, các đặc trưng ảnh hưởng đến kết quả phân loại, tăng tính minh bạch và tin cậy của hệ thống. + +- **5. Splunk Integration (Tích Hợp Với Splunk):** + Kết quả phân loại và giải thích được xuất ra dưới dạng lookup hoặc dashboard trong Splunk. Hỗ trợ hiển thị trực quan, quản lý và theo dõi lỗ hổng dễ dàng cho các SOC analyst và đội ngũ bảo mật. + +### Luồng Dữ Liệu Tổng Quan + +Dữ liệu đầu vào từ các nguồn mockup scanner, NVD, ExploitDB, vendor patch và CMDB sẽ được tập hợp và làm sạch trong bước Data Generation. Sau đó, dữ liệu thô này được chuyển sang bước Feature Engineering để trích xuất và chuẩn hóa các đặc trưng quan trọng. Các đặc trưng này được đưa vào mô hình học máy kết hợp rule-based để phân loại và ưu tiên lỗ hổng. Kết quả phân loại cùng với giải thích chi tiết từ SHAP sẽ được gửi tới Splunk để hiển thị và quản lý. + +![[Pasted image 20251002150719.png]] +### Mô Tả Sơ Đồ Pipeline + +- **Input Mock Data & External Sources:** Dữ liệu đầu vào đa dạng từ scanner giả lập và các nguồn dữ liệu công khai. +- **Data Generation:** Thu thập, tổng hợp và làm sạch dữ liệu thô. +- **Feature Engineering:** Chuẩn hóa và trích xuất đặc trưng quan trọng cho mô hình. +- **Model Training:** Huấn luyện mô hình kết hợp rule-based để phân loại lỗ hổng. +- **Explainability (SHAP):** Giải thích kết quả mô hình giúp người dùng hiểu quyết định phân loại. +- **Splunk Integration:** Xuất kết quả và giải thích lên Splunk để hiển thị và quản lý. +- **SOC Analyst & Security Team:** Người dùng cuối sử dụng kết quả để ra quyết định xử lý lỗ hổng. + +--- + +## Các Bước Trong Pipeline + +### Bước 1: Tạo Dữ Liệu + +Bước đầu tiên trong pipeline là sinh dữ liệu mockup mô phỏng môi trường thực tế, giúp kiểm thử toàn bộ quy trình xử lý và huấn luyện mô hình phân loại lỗ hổng. Việc này được thực hiện chi tiết trong file `1_gen_vuln_mock_enriched.py` với các đặc điểm nổi bật sau: + +#### 1. Sinh Dữ Liệu Mockup Theo PoC Plan +- **Quy mô dữ liệu:** Sinh ra khoảng **50.000 bản ghi findings** (vulnerability findings), **5.000 CVE** (unique), và **1.000 assets** (tài sản). +- **Đa dạng nguồn enrichment:** Dữ liệu được tổng hợp và enrich từ nhiều nguồn mô phỏng như NVD (National Vulnerability Database), ExploitDB, Vendor Patch, và CMDB (asset inventory). + +#### 2. Ẩn Danh Thông Tin Nhạy Cảm (Anonymization) +- Để đảm bảo an toàn dữ liệu mô phỏng, các trường như **IP**, **hostname**, **owner** đều được ẩn danh hóa bằng **HMAC-SHA256 kết hợp SALT** (`MOCK_SALT`). Việc này giúp đảm bảo không lộ thông tin thật, đồng thời giữ được tính nhất quán khi join dữ liệu giữa các bảng. + +#### 3. Các File Output Sinh Ra +- `assets.csv`: Thông tin asset dạng CMDB (asset_id, ip, hostname, owner, environment, asset_criticality, internet_exposed, last_patch_date, os, network_zone, business_service). +- `nvd_enriched.csv`: Danh sách CVE với các trường enrich như CVSS v3/v2, EPSS, KEV, ngày công bố và cập nhật. +- `exploitdb_enriched.csv`: Mapping CVE → exploit (tỷ lệ khoảng 8% CVE có exploit), kèm ngày exploit, nguồn exploit. +- `vendor_patch_enriched.csv`: Trạng thái patch/mã vendor cho từng CVE, ngày cập nhật. +- `nessus_enriched.csv`: Khoảng 50.000 findings đã enrich đầy đủ thông tin asset, CVE, trạng thái, điểm số, v.v. +- `_metadata.json`: Metadata về quá trình sinh dữ liệu, seed, số lượng asset/CVE/findings, và các cảnh báo validation. + +| File/Dataset | Ý nghĩa trong PoC | Vai trò trong ML Triage và Rule Based | Nguồn tương ứng ngoài thực tế | +|----------------------------|-------------------------------|-------------------------------------------------|------------------------------------------| +| `assets.csv` (CMDB-like) | Danh sách asset (máy chủ, service, ứng dụng) | Cung cấp context để đánh giá rủi ro: asset_criticality, internet_exposed, zone ảnh hưởng trực tiếp tới priority_score. Dùng để enrich CVE findings → triage theo risk thực tế (ví dụ: CVE trên asset prod, internet-facing nguy hiểm hơn). | CMDB (Configuration Management Database): ServiceNow CMDB, AWS Config, Qualys Asset Inventory, Tanium, v.v. | +| `nessus_enriched.csv` | Kết quả quét lỗ hổng gắn với asset và CVE | Dataset chính để huấn luyện ML model. Priority_score là synthetic label (ground truth giả lập) để train supervised model. incident_happened là proxy binary label để kiểm thử classification. | Scanner output: Tenable Nessus, Greenbone OpenVAS, Qualys VMDR. Trong thực tế sẽ mapping findings ↔ CMDB ↔ NVD ↔ TI. | +| `nvd_enriched.csv` | Thông tin chuẩn hóa về CVE | Là nguồn gốc baseline severity (CVSS), input quan trọng cho cả rule-based (CVSS cutoff) và ML features (continuous). EPSS & KEV flag bổ sung chỉ báo threat intel chính thống. | NVD (National Vulnerability Database), FIRST EPSS, CISA KEV Catalog | +| `exploitdb_enriched.csv` | Ghi nhận CVE có PoC exploit công khai hay không | Là feature trọng yếu để phân biệt CVE “có thể bị khai thác” vs chỉ lý thuyết. Feature này giúp tăng explainability (SHAP cho thấy exploit_exists tăng priority). | ExploitDB, Metasploit Framework, GitHub public PoC repos | +| `vendor_patch_enriched.csv`| Trạng thái xử lý CVE từ vendor | Cho phép mô hình kết hợp patch cycle vào triage. Rule-based: CVE unpatched + critical asset thường ưu tiên cao. ML: vendor_status là feature categorical. | Vendor advisories / security bulletins: Microsoft MSRC, Oracle CPU, RedHat advisories, Cisco PSIRT, v.v. | + +#### 4. Quy Tắc Sinh Dữ Liệu & Phân Phối +- **CVE IDs:** Sinh 5.000 mã CVE duy nhất dạng CVE-YYYY-NNNNN, phân bổ năm từ 2015–2024. +- **CVSS v3:** Điểm nguy cơ CVSS v3 được sinh từ phân phối **Beta (skewed right)** để mô phỏng thực tế nhiều CVE điểm thấp, ít CVE điểm cao. Giá trị được clip trong khoảng 0.1–10. +- **Exploit Exists:** Với mỗi CVE, trường exploit_exists được gán theo phân phối **Bernoulli p=0.08** (8% có exploit công khai). +- **Asset Criticality:** Mức độ quan trọng asset (1–5) sinh theo phân phối có trọng số: `[0.4, 0.25, 0.2, 0.1, 0.05]` (phần lớn asset có criticality thấp). +- **Internet Exposed:** Tài sản có exposed ra internet với xác suất **12%** (Bernoulli p=0.12). +- **Patch Date:** Ngày last_patch/patch_date được sinh từ phân phối **exponential** với mean=60 ngày, đảm bảo không vượt quá ngày hiện tại. +- **External TI Score:** Điểm threat intelligence ngoài tính theo công thức: `exploit_exists*80 + int(log(ref_count+1)*10)` với ref_count ~ Poisson(1). +- **Priority Score:** Điểm ưu tiên tổng hợp (label) tính theo công thức: + ``` + priority_score = 0.4*cvss_v3*10 + 0.25*external_ti_score + 0.2*asset_criticality*10 + exploit_exists*20 + noise + ``` + Trong đó, noise là giá trị ngẫu nhiên [-5, 5]. Giá trị priority_score được clip trong khoảng 0–100. + +#### 5. Validation & Kiểm Tra Chất Lượng Dữ Liệu +- **Kiểm tra số lượng CVE:** Đảm bảo đúng số lượng 5.000 CVE sinh ra. +- **Kiểm tra ngày tháng:** Tất cả các trường ngày (publish_date, patch_date, exploit_date, scan_date, v.v.) đều đảm bảo không vượt quá thời điểm hiện tại. +- **Kiểm tra phạm vi giá trị:** Giá trị CVSS nằm trong [0, 10], EPSS trong [0, 1], priority_score trong [0, 100]. +- **Cảnh báo validation:** Nếu phát hiện bất kỳ giá trị nào vượt phạm vi hoặc bất thường, thông tin cảnh báo sẽ được ghi vào `_metadata.json` để tiện kiểm tra lại. + +#### 6. Output Metadata +- File `_metadata.json` chứa các thông tin sau: + - Seed sinh dữ liệu (đảm bảo reproducibility). + - Số lượng asset, CVE, findings đã sinh. + - Thời gian sinh dữ liệu. + - Các cảnh báo validation nếu có. + +![[Pasted image 20251002151131.png]] +![[Pasted image 20251002151154.png]] +![[Pasted image 20251002151212.png]] +![[Pasted image 20251002151229.png]] +![[Pasted image 20251002151244.png]] + +>**Tóm Lại:** Bước 1 đảm bảo pipeline có một bộ dữ liệu mô phỏng lớn, đầy đủ ngữ cảnh, đa chiều và đã được kiểm tra chất lượng, phù hợp cho các bước feature engineering, huấn luyện mô hình và kiểm thử end-to-end. + +--- + +### Bước 2: Kỹ Thuật Trích Xuất Đặc Trưng + +Bước 2 trong pipeline thực hiện việc trích xuất, chuẩn hóa và biến đổi dữ liệu đầu vào thành các đặc trưng (features) phù hợp để huấn luyện mô hình học máy. Toàn bộ quy trình này được cài đặt trong file `2_feature_engineering.py` với các bước chi tiết như sau: + +#### 1. Đầu Vào: Các File Output Từ Bước 1 +Các file dữ liệu đầu vào bao gồm: +- `assets.csv`: Thông tin tài sản (asset) từ CMDB. +- `nvd_enriched.csv`: Dữ liệu CVE đã enrich từ NVD. +- `exploitdb_enriched.csv`: Thông tin exploit liên quan đến CVE. +- `vendor_patch_enriched.csv`: Trạng thái patch của vendor cho từng CVE. +- `nessus_enriched.csv`: Danh sách findings đã enrich, làm nền tảng chính cho feature engineering. +- `_metadata.json`: Metadata về quá trình sinh dữ liệu, dùng để kiểm tra tính nhất quán. + +#### 2. Validation: Kiểm Tra Dữ Liệu Đầu Vào +Trước khi xử lý, script thực hiện kiểm tra chất lượng dữ liệu: +- **Kiểm tra schema:** Đảm bảo mỗi file có đủ các cột cần thiết, không bị thiếu trường quan trọng. +- **Kiểm tra ngày tháng:** Xác thực các cột ngày tháng (publish_date, patch_date, scan_date, v.v.) đúng định dạng và không vượt quá thời điểm hiện tại. +- **Kiểm tra phạm vi giá trị:** Đảm bảo các trường số như CVSS, EPSS, priority_score, asset_criticality… nằm trong phạm vi hợp lệ. +- **Ghi log và cảnh báo:** Các lỗi hoặc cảnh báo được ghi lại để tiện kiểm tra, đảm bảo dữ liệu đầu vào sạch và đáng tin cậy. + +#### 3. Gộp Dữ Liệu (Merge Datasets) +Dữ liệu từ các nguồn khác nhau được gộp (merge) lại để tạo bảng tổng hợp đầy đủ ngữ cảnh cho từng finding: +- **Gộp theo asset_id và cve_id:** Sử dụng nessus_enriched làm bảng chính, lần lượt merge thông tin từ assets, nvd, exploitdb, vendor. +- **Kiểm tra missing:** Ghi nhận nếu có bản ghi bị thiếu thông tin sau khi merge (ví dụ: không tìm thấy asset hoặc CVE tương ứng). +- **Kết quả:** Một bảng findings enriched, mỗi dòng là một finding đầy đủ ngữ cảnh asset, CVE, exploit, patch, v.v. + +#### 4. Feature Engineering: Tạo Các Đặc Trưng Phái Sinh +Từ bảng tổng hợp, script tạo thêm nhiều cột đặc trưng (derived features) giúp mô hình học tốt hơn: + +| Tên đặc trưng | Mô tả | Công thức / Cách tính | Vai trò trong ML Triage & Rule-based | +|---|---|---|---| +| `days_since_publish` | Số ngày kể từ khi CVE được công bố | `now - publish_date` | Đo tuổi đời CVE, CVE càng lâu nhưng chưa vá → rủi ro tồn đọng. | +| `days_since_last_modified` | Số ngày từ lần cập nhật cuối của CVE | `now - last_modified` | Giúp đánh giá CVE còn “sống” (được cập nhật) hay đã “ổn định”. | +| `days_since_exploit` | Số ngày từ khi exploit công khai | `now - exploit_date` | Xác định tốc độ khai thác, hỗ trợ triage nhanh các CVE mới bị exploit. | +| `days_since_scan` | Số ngày kể từ lần scan gần nhất | `now - scan_date` | Cho thấy dữ liệu có còn “fresh” hay không, giúp xác định độ tin cậy của finding. | +| `days_since_last_seen` | Số ngày từ lần thấy finding gần nhất | `now - last_seen` | Xác định lỗ hổng còn tồn tại trên asset hay không | +| `days_since_first_found` | Số ngày từ khi finding đầu tiên được phát hiện | `now - first_found` | Đánh giá thời gian tồn tại của finding trong môi trường | +| `days_since_vendor_update` | Số ngày kể từ khi vendor cập nhật thông tin/patch | `now - vendor_update_date` | Dùng để tính patch lag; đo mức độ phản ứng vendor | +| `risk_score_context` | Điểm rủi ro kết hợp ngữ cảnh tài sản và độ nghiêm trọng CVE | `asset_criticality * cvss_v3_base` | Ưu tiên lỗ hổng trên tài sản quan trọng dù CVSS trung bình | +| `exploit_exposed` | Cờ nhị phân: asset exposed + CVE có exploit công khai | `internet_exposed * exploit_exists` | Nếu =1 → rủi ro cao (exploit + public exposure) | +| `cve_age` | Tuổi của CVE (ngày kể từ công bố) | `days_since_publish` | CVE càng lâu mà chưa vá → cho thấy quản lý kém hoặc vendor chưa vá → tăng rủi ro. | +| `patch_lag` | Độ trễ giữa ngày công bố CVE và ngày vendor cập nhật | `days_since_vendor_update - days_since_publish` | Đánh giá vendor phản ứng chậm; hỗ trợ phân công patch | +| `severity_cvss_ratio` | Tỷ lệ giữa severity_label score và CVSS v3 | `severity_score / (cvss_v3_base + 0.1)` | Phát hiện chênh lệch giữa label severity và điểm CVSS (ví dụ severity cao nhưng CVSS thấp). | +| `severity_ordinal` | Chuyển severity label (Low/Medium/High/Critical) sang số | `map: Low=1, Medium=2, High=3, Critical=4` | Dùng để mô hình dễ xử lý hơn so với text, đồng thời hỗ trợ rule-based mapping với ngưỡng số. | + +#### 5. Tách Dữ Liệu Thành Feature Matrix Và Labels +- **Feature matrix X:** Chọn các cột đặc trưng đã chuẩn hóa và phái sinh, bao gồm cả số (numeric) và phân loại (categorical), ví dụ: asset_criticality, cvss_v3_base, epss_score, environment, network_zone, vendor_status, scan_tool, v.v. +- **Labels:** + - `priority_score`: Nhãn cho bài toán regression (dự đoán điểm ưu tiên). + - `incident_happened`: Nhãn cho bài toán classification (dự đoán có xảy ra sự cố hay không). + +#### 6. Xử Lý Missing Values (Giá Trị Thiếu) +- **Numeric:** Các giá trị thiếu trong feature số (ví dụ: ngày tháng không có, patch_lag thiếu…) được thay bằng median hoặc giá trị mặc định. +- **Categorical:** Các trường phân loại thiếu sẽ được OneHotEncoder xử lý với tùy chọn `handle_unknown="ignore"`, đảm bảo pipeline không lỗi khi gặp giá trị mới. + +#### 7. Preprocessing Pipeline: Chuẩn Hóa & Mã Hóa +- **MinMaxScaler:** Áp dụng cho toàn bộ các cột số để đưa giá trị về khoảng [0,1], giúp mô hình học ổn định hơn. +- **OneHotEncoder:** Mã hóa các cột phân loại (environment, network_zone, os, business_service, vendor_status, scan_tool, finding_state) thành vector nhị phân. +- **ColumnTransformer & Pipeline:** Kết hợp các bước trên thành một pipeline hoàn chỉnh, giúp tái sử dụng dễ dàng khi huấn luyện và dự đoán. +- **Lưu pipeline:** Pipeline preprocessing được lưu vào file `preprocess.pkl` để dùng lại ở các bước sau (huấn luyện, inference, giải thích). + +#### 8. Train/Test Split: Chia Dữ Liệu Huấn Luyện & Kiểm Thử +- **Tỷ lệ:** 80% training, 20% testing. +- **Stratify:** Chia dữ liệu đảm bảo tỷ lệ nhãn `incident_happened` (0/1) giống nhau ở cả train và test, giúp đánh giá mô hình công bằng hơn. +- **Kết quả:** Sinh ra các file: + - `X_train.csv`, `X_test.csv`: Ma trận đặc trưng cho train/test. + - `y_train_priority.csv`, `y_test_priority.csv`: Nhãn regression (priority_score). + - `y_train_incident.csv`, `y_test_incident.csv`: Nhãn classification (incident_happened). + +#### 9. Outputs: File Sinh Ra Sau Bước 2 +- `X_train.csv`, `X_test.csv`: Feature matrix đã chuẩn hóa, sẵn sàng cho huấn luyện. +- `y_train_priority.csv`, `y_test_priority.csv`: Nhãn điểm ưu tiên. +- `y_train_incident.csv`, `y_test_incident.csv`: Nhãn sự cố. +- `preprocess.pkl`: Pipeline tiền xử lý (chuẩn hóa, mã hóa). +- `feature_schema.json`: Tài liệu schema đặc trưng đầu vào, giải thích ý nghĩa từng cột, loại dữ liệu, phạm vi giá trị. + +#### 10. Kết Quả Đạt Được +- **Dữ liệu đã chuẩn hóa, sạch, đầy đủ ngữ cảnh và đặc trưng phái sinh.** +- **Sẵn sàng để huấn luyện mô hình học máy hoặc rule-based.** +- **Pipeline tiền xử lý giúp tái sử dụng nhất quán cho inference và explainability.** +- **File schema giúp kiểm soát chất lượng, giải thích và tích hợp với các hệ thống khác.** + +> **Tóm lại:** Bước 2 đảm bảo dữ liệu đầu vào cho mô hình được xử lý bài bản, đầy đủ ngữ cảnh thực tế, giúp mô hình học tốt hơn và kết quả phân loại lỗ hổng sát với thực tiễn doanh nghiệp. + +--- + +### Bước 3: Huấn Luyện Mô Hình + +Bước 3 là giai đoạn trung tâm của pipeline, nơi các mô hình học máy được huấn luyện để tự động phân loại và ưu tiên lỗ hổng, đồng thời so sánh hiệu quả với baseline rule-based truyền thống. Toàn bộ quy trình này được thực hiện trong file `3_train_model.py` với các bước chính như sau: + +#### 1. Đầu Vào: Dữ Liệu & Pipeline Tiền Xử Lý +- **Feature matrix và nhãn**: + - `X_train.csv`, `X_test.csv`: Ma trận đặc trưng (features) cho tập huấn luyện và kiểm thử. + - `y_train_priority.csv`, `y_test_priority.csv`: Nhãn regression (priority_score) — điểm ưu tiên cần dự đoán. + - `y_train_incident.csv`, `y_test_incident.csv`: Nhãn classification (incident_happened) — dự đoán sự cố có xảy ra không. +- **Pipeline tiền xử lý**: + - `preprocess.pkl`: Pipeline chuẩn hóa và mã hóa đã lưu từ bước 2, đảm bảo xử lý nhất quán dữ liệu đầu vào cho mô hình. + +#### 2. Rule-based Baseline Triage +- **Mục tiêu**: Xây dựng baseline bằng các quy tắc đơn giản dựa trên kiến thức chuyên môn để làm tham chiếu cho hiệu quả của mô hình học máy. +- **Cách thực hiện**: + - **Priority (Regression)**: + - Ước lượng điểm ưu tiên bằng công thức: `priority_pred = cvss_v3_base * 10`. + - Nếu `cvss_v3_base >= 9` và `asset_criticality >= 4` thì đảm bảo điểm tối thiểu là 80 (clip trong [0, 100]). + - Tính các metrics: RMSE, MAE, R2. + - **Incident (Classification)**: + - Dự đoán incident_happened = 1 nếu `exploit_exists == 1` **và** `internet_exposed == 1`, ngược lại là 0. + - Đánh giá bằng các metrics: accuracy, precision, recall, F1-score, ROC-AUC. + +#### 3. Huấn Luyện Mô Hình Regression (Dự Đoán Priority Score) +- **Mục tiêu**: Dự đoán điểm ưu tiên (priority_score) của từng finding dựa trên các đặc trưng đã chuẩn hóa. +- **Các mô hình sử dụng**: + - **LightGBMRegressor**: Mô hình boosting hiện đại, tối ưu cho dữ liệu tabular, cho phép kiểm soát overfitting tốt. + - **RandomForestRegressor**: Mô hình ensemble truyền thống, mạnh mẽ với dữ liệu nhiều chiều và ít cần tuning. +- **Quy trình**: + 1. Huấn luyện cả hai mô hình trên tập train (`X_train`, `y_train_priority`), dự đoán trên tập test (`X_test`). + 2. Tính các metrics đánh giá: RMSE (root mean squared error), MAE, R2. + 3. So sánh kết quả, chọn mô hình có RMSE thấp nhất làm best model cho regression. + +#### 4. Huấn Luyện Mô Hình Classification (Dự Đoán Incident) +- **Mục tiêu**: Dự đoán xác suất hoặc khả năng xảy ra sự cố (incident_happened) dựa trên đặc trưng của finding. +- **Các mô hình sử dụng**: + - **LightGBMClassifier**: Mô hình boosting cho classification, tối ưu hiệu suất và khả năng tổng quát hóa. + - **RandomForestClassifier**: Mô hình ensemble mạnh mẽ, phù hợp với dữ liệu nhiều chiều. +- **Quy trình**: + 1. Huấn luyện cả hai mô hình trên tập train (`X_train`, `y_train_incident`), dự đoán trên tập test (`X_test`). + 2. Tính các metrics: accuracy, precision, recall, F1-score, ROC-AUC. + 3. So sánh kết quả, chọn mô hình có F1-score cao nhất (nếu bằng thì ưu tiên accuracy) làm best model cho classification. + +#### 5. So Sánh & Lựa Chọn Mô Hình Tốt Nhất +- **Regression**: Chọn model có RMSE thấp nhất trên tập test. +- **Classification**: Chọn model có F1-score cao nhất (ưu tiên metric cân bằng precision/recall). +- **So sánh với rule-based**: Metrics của mô hình học máy được đặt cạnh baseline rule-based để đánh giá mức cải thiện (lift) so với phương pháp truyền thống. + +#### 6. Xuất Artifacts (Lưu Mô Hình & Báo Cáo) +- **Các file output**: + - `model_priority.pkl`: Mô hình ML tốt nhất cho bài toán regression (dự đoán priority_score). + - `model_incident.pkl`: Mô hình ML tốt nhất cho bài toán classification (dự đoán incident_happened). + - `metrics_report.json`: Báo cáo chi tiết các metrics của rule-based baseline, regression, classification (bao gồm thông tin về hyperparameters, số lượng mẫu train/test, số lượng đặc trưng, v.v.). + - `predictions_lgbm.csv` và `predictions_rf.csv`: Dùng để phân tích residual và so sánh mô hình, hỗ trợ cho việc visualize trên Splunk sau này. + +#### 7. Ý Nghĩa & Vai Trò Của Bước Này Trong Pipeline +- **Đây là bước quyết định khả năng tự động hóa phân loại và ưu tiên lỗ hổng**: + - Các mô hình học máy được huấn luyện trên dữ liệu có ngữ cảnh, giúp dự đoán sát thực tế hơn so với rule-based cứng nhắc. + - Việc so sánh với baseline giúp kiểm soát chất lượng, đảm bảo mô hình thực sự mang lại giá trị bổ sung. +- **Các mô hình và pipeline tiền xử lý được lưu lại dưới dạng artifacts**: + - Đảm bảo có thể tái sử dụng nhất quán ở các bước inference, explainability, tích hợp Splunk, hoặc tái huấn luyện sau này. +- **Bước này là cầu nối giữa dữ liệu và ứng dụng thực tế**: + - Kết quả mô hình sẽ được dùng trực tiếp trong các hệ thống quản lý lỗ hổng, dashboard Splunk, hoặc tích hợp vào các quy trình SOC tự động. + +> **Tóm lại:** Bước 3 giúp chuyển hóa dữ liệu đã chuẩn hóa thành các mô hình thông minh, tự động hóa và tối ưu hóa quá trình triage lỗ hổng, đồng thời đảm bảo kiểm soát chất lượng qua so sánh với rule-based baseline và lưu trữ đầy đủ artifacts phục vụ các bước sau trong pipeline. + +--- + +### Bước 4: Giải Thích Mô Hình + +Bước 4 trong pipeline tập trung vào việc **giải thích các quyết định của mô hình học máy** thông qua phương pháp SHAP (SHapley Additive exPlanations). Điều này giúp tăng tính minh bạch, hỗ trợ các SOC analyst hiểu rõ lý do vì sao một lỗ hổng được ưu tiên hoặc phân loại là nguy hiểm, đồng thời chuẩn bị dữ liệu explainability để tích hợp vào Splunk. + +#### 1. Đầu Vào +- **Dữ liệu kiểm thử:** + - `X_test.csv`: Ma trận đặc trưng của tập kiểm thử. +- **Pipeline tiền xử lý:** + - `preprocess.pkl`: Pipeline chuẩn hóa và mã hóa đã lưu từ bước 2. +- **Mô hình học máy:** + - `model_priority.pkl`: Mô hình regression dự đoán điểm ưu tiên (priority_score). + - `model_incident.pkl`: Mô hình classification dự đoán khả năng xảy ra sự cố (incident_happened). + +#### 2. Quy Trình Giải Thích (theo file `4_explainability.py`) +1. **Load dữ liệu & mô hình:** + - Đọc `X_test.csv` và pipeline `preprocess.pkl`. + - Nạp hai mô hình đã huấn luyện: regression và classification. + +2. **Tiền xử lý dữ liệu:** + - Sử dụng pipeline để biến đổi `X_test` thành ma trận đặc trưng đầy đủ, đồng nhất với đầu vào của mô hình. + +3. **Dự đoán kết quả:** + - Mô hình regression dự đoán điểm ưu tiên (priority_score) cho từng finding. + - Mô hình classification dự đoán xác suất xảy ra sự cố (incident_happened). + +4. **Tính toán SHAP values với TreeExplainer:** + - Áp dụng `shap.TreeExplainer` cho cả hai mô hình (regression và classification). + - Đối với classification, lấy SHAP values của class dương tính (xảy ra sự cố). + +5. **Lấy top_features (10 đặc trưng quan trọng nhất):** + - Với mỗi sample, lấy 10 đặc trưng có giá trị SHAP lớn nhất (tác động mạnh nhất đến dự đoán). + - Kết quả là một dict mapping sample_id → {feature: shap_value, ...}. + +6. **Xuất kết quả explainability:** + - **File JSON:** + - `shap_priority.json`: Giải thích cho mô hình regression, gồm dự đoán và top_features của mỗi sample. + - `shap_incident.json`: Giải thích cho mô hình classification, gồm xác suất dự đoán và top_features. + - **Biểu đồ tổng quan:** + - `shap_summary_priority.png`: Biểu đồ SHAP tổng hợp cho regression. + - `shap_summary_incident.png`: Biểu đồ SHAP tổng hợp cho classification. + +#### 3. Ý Nghĩa & Vai Trò Trong Cyber Security +- **Minh bạch mô hình:** + - SHAP cho phép analyst thấy rõ đặc trưng nào (ví dụ: CVSS, asset_criticality, exploit_exists, internet_exposed, patch_lag, v.v.) tác động mạnh nhất đến quyết định của mô hình cho từng lỗ hổng. +- **Hỗ trợ phân tích và kiểm chứng:** + - Analyst có thể kiểm tra, xác thực lý do tại sao một finding được ưu tiên cao/thấp hoặc bị gắn nhãn nguy hiểm, từ đó tự tin hơn khi ra quyết định xử lý. +- **Chuẩn bị tích hợp Splunk:** + - Các file JSON giải thích (shap_priority.json, shap_incident.json) và biểu đồ summary sẽ được ingest vào Splunk, hiển thị trực quan trên dashboard, tăng giá trị sử dụng thực tiễn. +- **Tăng độ tin cậy và tuân thủ:** + - Giải thích rõ ràng giúp đáp ứng yêu cầu về minh bạch khi ứng dụng AI/ML trong lĩnh vực an ninh mạng, đặc biệt với các tổ chức cần audit hoặc tuân thủ quy định. + +![[Pasted image 20251002151409.png]] +![[Pasted image 20251002151420.png]] + + +> **Tóm lại:** Bước 4 giúp pipeline không chỉ tự động hóa phân loại mà còn giải thích được lý do từng quyết định, tăng độ tin cậy và khả năng kiểm soát, đồng thời mở đường cho việc tích hợp sâu vào các hệ thống quản trị lỗ hổng như Splunk. + +--- + +### Bước 5: Tích Hợp Với Splunk + +Bước này thực hiện xuất dữ liệu kết quả dự đoán và giải thích của mô hình thành **lookup file chuẩn** để ingest vào Splunk, phục vụ phân tích, dashboard và tự động hóa trong quy trình SOC. + +#### 1. Đầu Vào +- **X_test.csv**: Ma trận đặc trưng của tập kiểm thử (test set), bao gồm đầy đủ các trường ngữ cảnh về asset, CVE, đặc trưng kỹ thuật, v.v. +- **shap_priority.json**: File giải thích SHAP cho mô hình dự đoán điểm ưu tiên (priority_score), chứa prediction và top_features cho từng bản ghi. +- **shap_incident.json**: File giải thích SHAP cho mô hình phân loại incident (incident_happened), chứa prediction (nguy cơ sự cố) và top_features. + +#### 2. Các Bước Xử Lý Trong Script (`5_export_lookup.py`) +Quy trình thực hiện như sau: + +1. **Load dữ liệu X_test** + - Đọc file `X_test.csv` (bằng pandas), reset lại chỉ số dòng để gán id cho từng bản ghi. + +2. **Load SHAP explainability (priority + incident)** + - Đọc hai file `shap_priority.json` và `shap_incident.json`. + - Với mỗi bản ghi (id), lấy prediction (giá trị dự đoán) và danh sách các top_features (10 đặc trưng quan trọng nhất, dạng tên đặc trưng). + +3. **Merge dữ liệu dự đoán + top_features vào từng bản ghi** + - Với mỗi dòng của X_test, bổ sung thêm các trường: + - `pred_priority_score`: Giá trị dự đoán điểm ưu tiên từ mô hình regression. + - `top_features_priority`: Danh sách tên 10 đặc trưng có ảnh hưởng lớn nhất đến dự đoán priority_score (theo SHAP). + - `pred_incident_risk`: Giá trị dự đoán xác suất/sự kiện incident từ mô hình classification. + - `top_features_incident`: Danh sách 10 đặc trưng ảnh hưởng lớn nhất đến dự đoán incident. + - Các trường này được lấy từ hai file SHAP tương ứng theo id (index của X_test). + +4. **Thêm timestamp export_time** + - Thêm trường `export_time` (giá trị UTC ISO format) vào đầu bảng để trace thời gian export dữ liệu, phục vụ audit và kiểm soát version. + +5. **Xuất file CSV `vuln_prioritization_lookup.csv`** + - Ghi toàn bộ dataframe đã enrich ra file `lookup/vuln_prioritization_lookup.csv`. + - Mỗi dòng là một finding (finding_id hoặc index), chứa đầy đủ các trường gốc từ X_test (asset_id, cve_id, các đặc trưng kỹ thuật), trường dự đoán, trường explainability (top_features), và trường timestamp. + +#### 3. File Output và Vai Trò +- **File xuất ra:** + - `lookup/vuln_prioritization_lookup.csv` +- **Vai trò:** + - Đây là **lookup chuẩn** để ingest vào Splunk (qua Data Inputs hoặc Lookup Editor). + - Cho phép analyst, dashboard, hoặc các playbook tự động truy vấn, join, phân tích thông tin dự đoán và giải thích cho từng finding. + - Có thể dùng trực tiếp trong SPL với lệnh `| inputlookup vuln_prioritization_lookup.csv`. + +#### 4. Ý Nghĩa Trong SOC/Splunk +- **Lookup này là cầu nối giữa pipeline ML và các quy trình vận hành thực tế của SOC:** + - Analyst có thể **tra cứu nhanh** priority_score, nguy cơ incident và lý do (top_features) cho từng lỗ hổng/asset. + - Dễ dàng **join với bảng CMDB, log scan thực tế** (Nessus/OpenVAS), hoặc các bảng asset khác để phân tích sâu. + - **Dashboard Splunk** có thể sử dụng lookup này để: + - Hiển thị top 10 asset/CVE nguy hiểm nhất theo priority_score. + - Drilldown vào từng finding để xem chi tiết top_features ảnh hưởng đến quyết định của mô hình. + - Kết hợp các trường explainability để giải thích lý do tại sao một finding được đánh giá cao/thấp. + - **Tự động hóa workflow**: Có thể trigger playbook SOAR, gửi cảnh báo, mở ticket tự động dựa trên ngưỡng priority_score hoặc sự xuất hiện của các feature nguy hiểm trong top_features. + - **Minh bạch & audit**: Mỗi quyết định của mô hình đều trace được thời điểm export, lý do (giải thích SHAP), phục vụ kiểm tra lại/audit khi cần. + +![[Pasted image 20251002151500.png]] +![[Pasted image 20251002151510.png]] +![[Pasted image 20251002151517.png]] + +> **Tóm lại:** +> Lookup file này giúp đưa kết quả ML/Explainability vào Splunk một cách thực dụng, minh bạch và có thể hành động. Analyst và dashboard có thể sử dụng trực tiếp, join với các nguồn dữ liệu khác, phục vụ phân tích, ra quyết định, và tự động hóa quy trình vận hành SOC. + +--- + +## Cài Đặt & Sử Dụng + +### Yêu Cầu Môi Trường +- Python >= 3.9 +- Các thư viện trong `requirements.txt` +- Splunk Enterprise (tùy chọn cho bước 5) +- Cần export biến môi trường `MOCK_SALT` trước khi chạy pipeline + +### Các Bước Cài Đặt +```bash +git clone +cd autonomous_vulnerability_triage +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +``` + +### Chạy Toàn Bộ Pipeline +```bash +MOCK_SALT="my_secure_salt" python run_pipeline.py +``` + +### Chạy UI Demo Với Gradio +```bash +MOCK_SALT="my_secure_salt" python ui_pipeline.py +``` +--- + +## Giao Diện Người Dùng Với Gradio + +- Dự án cung cấp UI demo sử dụng **Gradio** trong file `ui_pipeline.py`. +- UI gồm nhiều tab: + - **README.md**: hiển thị tài liệu dự án + - **Step 1 → Step 5**: chạy từng bước pipeline, hiển thị output ngay trong giao diện +- Mỗi step có phần **Wiki** giải thích, nút **Run**, và hiển thị kết quả (DataFrame preview, metrics, biểu đồ SHAP). +- Giúp developer hoặc analyst dễ dàng tương tác, quan sát kết quả từng bước mà không cần đọc log. + +--- + +## Cải Tiến Trong Tương Lai + +- **Human-in-the-loop**: Cho phép analyst review, gắn nhãn lại, mô hình học thêm từ feedback. +- **Realtime Ingestion**: Hỗ trợ ingest dữ liệu thật từ Splunk hoặc scanner thay vì mockup. +- **Model Tuning**: Tự động tối ưu hyperparameter, thử nghiệm nhiều thuật toán hơn (XGBoost, CatBoost). +- **Explainability Dashboard**: Xây dựng dashboard trực quan hơn, highlight feature impact trong Splunk hoặc UI. +- **Automation Playbook**: Tích hợp với SOAR để tự động patch hoặc mitigate dựa trên prediction. + +--- + +## Phụ Lục + +### A. Cấu Trúc Thư Mục Dự Án +``` +autonomous_vulnerability_triage/ +├── 1_gen_vuln_mock_enriched.py # Bước 1: Sinh dữ liệu mockup +├── 2_feature_engineering.py # Bước 2: Feature Engineering +├── 3_train_model.py # Bước 3: Huấn luyện mô hình +├── 4_explainability.py # Bước 4: SHAP explainability +├── 5_export_lookup.py # Bước 5: Xuất lookup Splunk +├── run_pipeline.py # Script chạy toàn pipeline end-to-end +├── ui_pipeline.py # Giao diện demo bằng Gradio +├── data/ # Thư mục dữ liệu (raw + processed) +├── models/ # Lưu trữ mô hình và metrics +├── explain/ # Kết quả SHAP và biểu đồ +├── lookup/ # Lookup file export cho Splunk +├── docs/ # Tài liệu (bao gồm poc_plan.txt) +└── requirements.txt # Danh sách thư viện cần cài +``` + +### B. Các File Output Chính & Ý Nghĩa +| File/Dataset | Ý nghĩa trong PoC | Vai trò trong ML Triage & Rule-Based | Nguồn tương ứng ngoài thực tế | +|--------------|------------------|--------------------------------------|--------------------------------| +| `assets.csv` | Thông tin tài sản từ CMDB mockup | Cung cấp ngữ cảnh asset: criticality, zone, service | CMDB, Asset Inventory | +| `nvd_enriched.csv` | Thông tin CVE + CVSS/EPSS/KEV | Đặc trưng chính cho risk scoring | NVD (National Vulnerability Database) | +| `exploitdb_enriched.csv` | CVE mapping sang exploit | Đặc trưng về khả năng khai thác | ExploitDB | +| `vendor_patch_enriched.csv` | Trạng thái patch từ vendor | Đặc trưng về patch lag, vendor status | Advisory từ vendor | +| `nessus_enriched.csv` | Findings mô phỏng từ scanner | Bảng chính để join dữ liệu | Nessus/OpenVAS/Qualys | +| `_metadata.json` | Metadata sinh dữ liệu | Đảm bảo reproducibility | N/A (internal validation) | +| `X_train.csv`, `X_test.csv` | Feature matrix cho training/test | Input cho mô hình ML | Generated (feature engineering) | +| `y_train_priority.csv`, `y_test_priority.csv` | Nhãn regression | Đánh giá mô hình priority score | Label tổng hợp PoC | +| `y_train_incident.csv`, `y_test_incident.csv` | Nhãn classification | Đánh giá mô hình incident | Label tổng hợp PoC | +| `model_priority.pkl`, `model_incident.pkl` | Mô hình ML đã huấn luyện | Dự đoán triage tự động | Artifact ML pipeline | +| `metrics_report.json` | Báo cáo metrics | So sánh ML vs rule-based | N/A | +| `shap_priority.json`, `shap_incident.json` | Explainability cho từng sample | Hiểu top features ảnh hưởng | SHAP output | +| `shap_summary_priority.png`, `shap_summary_incident.png` | Biểu đồ SHAP summary | Visualization explainability | SHAP plots | +| `vuln_prioritization_lookup.csv` | Lookup ingest vào Splunk | Dashboard, alert, join SOC workflow | Splunk Lookup | +| `predictions_lgbm.csv`, `predictions_rf.csv` | Kết quả sau khi training model | Để phân tích residual và so sánh mô hình | N/A | + +### C. Tham Khảo +- [NVD - National Vulnerability Database](https://nvd.nist.gov/) +- [ExploitDB](https://www.exploit-db.com/) +- [Splunk Documentation](https://docs.splunk.com/) +- [SHAP Documentation](https://shap.readthedocs.io/) \ No newline at end of file diff --git a/content/SOC/Target Conceptual Architecture của SOC.md b/content/SOC/Target Conceptual Architecture của SOC.md new file mode 100644 index 000000000..f254ebcb3 --- /dev/null +++ b/content/SOC/Target Conceptual Architecture của SOC.md @@ -0,0 +1,166 @@ + +#cyber_security #soc + +## **1. Giới thiệu chung** + +Ở phần này, mình sẽ cùng bạn tìm hiểu một sơ đồ kiến trúc tổng thể của SOC (Security Operations Center – Trung tâm vận hành an ninh mạng) được gọi là **Target Conceptual Architecture**. Nghe có vẻ “hàn lâm”, nhưng thực chất đây chỉ là bức tranh toàn cảnh cho thấy các thành phần của một SOC hiện đại kết nối và làm việc với nhau như thế nào. + +**Tóm tắt:** + +Bài viết sẽ lần lượt giải thích từng thành phần trong kiến trúc, cách chúng liên kết, vị trí của SIEM, và vai trò của lớp hạ tầng nền tảng. + + +--- + + +## **2. Tổng quan Target Conceptual Architecture** + +**Tóm tắt:** + +Đây là một bản thiết kế mô tả SOC từ góc nhìn “từ trên xuống” (high level). Mục tiêu là cho thấy **luồng dữ liệu**, **các khối chức năng** và **cách chúng giao tiếp với nhau**. + +![[Pasted image 20250809101420.png]] + + --- + +### **2.1 Luồng dữ liệu và các thành phần chính** + +Luồng dữ liệu trong kiến trúc này có thể hình dung như một **quy trình sản xuất**: + +1. **Thu thập nguyên liệu** – Dữ liệu từ hệ thống nội bộ (On-Premise) và đám mây riêng (Private Cloud). + +2. **Làm giàu thông tin** – Sử dụng TIP (Threat Intelligence Platform – Nền tảng tình báo mối đe dọa) để bổ sung ngữ cảnh, thông tin mối đe dọa. + +3. **Phân tích sâu** – Sử dụng Security Analytics (Phân tích bảo mật) bao gồm tương quan sự kiện (Correlation), EDR (Endpoint Detection and Response – phát hiện và phản hồi điểm cuối), Threat Hunting (săn tìm mối đe dọa). + +4. **Tự động xử lý** – Automation & Orchestration (SOAR – tự động hóa và điều phối) để thực thi các hành động. + +5. **Quản lý & báo cáo** – Case Management (Quản lý sự cố) và CSOC Portal (Cổng thông tin SOC) hiển thị báo cáo, dashboard, tìm kiếm. + +6. **Thực thi** – Enforcement áp dụng biện pháp bảo vệ trên hệ thống mạng, bảo mật, Active Directory. + +**Ghi nhớ:** + +Dòng chảy dữ liệu cơ bản là: +**Data Sources → TIP → Security Analytics → SOAR → Enforcement / CSOC Portal** +(Case Management kết nối với SOAR để quản lý sự cố). + + +--- + + +## **3. Vai trò của từng khối trong kiến trúc** + +### **3.1 Hạ tầng nền tảng (Infrastructure)** + +**Tóm tắt:** +Đây là lớp nền móng đảm bảo toàn bộ SOC hoạt động trơn tru và an toàn. + +**Chi tiết:** + +- **LDAP/MFA/SSO**: Xác thực tập trung, đăng nhập một lần, bảo mật đa yếu tố. + +- **NTP**: Đồng bộ thời gian giữa tất cả thiết bị, cực quan trọng cho việc tương quan log. + +- **Email**: Gửi cảnh báo và thông báo sự cố. + +- **Endpoint Security**: Bảo vệ máy trạm và server, cung cấp dữ liệu đầu vào cho SIEM. + +- **Collaboration**: Công cụ trao đổi nội bộ như Teams, Slack. + +- **Configuration/Software Management**: Quản lý cấu hình và cập nhật hệ thống. + +- **Backup**: Lưu trữ dự phòng dữ liệu và cấu hình quan trọng. + +- **Network & Network Security**: Đảm bảo kết nối và bảo mật luồng dữ liệu. + +- **Compute & Storage**: Nguồn tài nguyên tính toán và lưu trữ log. + +- **Workstation/VDI**: Nơi analyst thao tác. + +**Ví dụ thực tế:** + +Nếu NTP (đồng bộ thời gian) bị lệch 5 phút giữa các máy, SIEM có thể coi một chuỗi tấn công là các sự kiện rời rạc, khiến analyst bỏ lỡ mối liên hệ. + +**Ghi nhớ:** + +Hạ tầng yếu → SOC hoạt động kém hiệu quả, dễ mất dữ liệu hoặc xử lý sai. + +--- + +### **3.2 Nguồn dữ liệu (Data Sources)** + +Bao gồm log và sự kiện từ hệ thống On-Premise và Private Cloud. Đây là nguyên liệu đầu vào của SOC. + +--- + +### **3.3 Nền tảng tình báo mối đe dọa (TIP)** + +TIP nhận dữ liệu từ nhiều nguồn tình báo (TI feeds), phân tích sandbox, và nguồn nội bộ/ngoại bộ để làm giàu dữ liệu sự cố. + +--- + +### **3.4 Phân tích bảo mật (Security Analytics)** + +Chứa SIEM và các module nâng cao: + +- **Correlation**: Ghép nối sự kiện từ nhiều nguồn. + +- **EDR**: Phát hiện và phản hồi điểm cuối. + +- **Threat Hunting**: Chủ động tìm kiếm mối đe dọa. + +--- + +### **3.5 Tự động hóa và điều phối (SOAR)** + +SOAR nhận kết quả phân tích từ SIEM, tự động chạy playbook để xử lý hoặc gửi lệnh thực thi. + +--- + +### **3.6 Quản lý sự cố (Case Management)** + +Ghi nhận, theo dõi, và điều phối xử lý các sự cố bảo mật. + +--- + +### **3.7 Thực thi (Enforcement)** + +Áp dụng hành động bảo vệ trên hạ tầng: chặn IP, khóa tài khoản AD, thay đổi cấu hình mạng… + +--- + +### **3.8 Cổng thông tin SOC (CSOC Portal)** + +Giao diện tập trung cho analyst theo dõi báo cáo, dashboard, tìm kiếm, và kiểm tra tuân thủ. + + +--- + + +## **4. SIEM nằm ở đâu trong kiến trúc này?** + +SIEM nằm **bên trong khối Security Analytics**, ở phần **Correlation** và **Threat Hunting**. Nó là công cụ trung tâm thu thập, lưu trữ, tìm kiếm log, phân tích và tạo cảnh báo. + +So sánh nhanh: + +|**Thành phần**|**Chức năng chính**| +|---|---| +|SIEM|Thu thập, lưu trữ, tìm kiếm, phân tích log| +|Security Analytics|Gồm SIEM + các phân tích nâng cao (EDR, Hunting)| + + +--- + + +## **5. Chốt lại kiến thức** + +- **Hạ tầng nền tảng** là móng của SOC, không ổn định thì các khối khác khó hoạt động chính xác. + +- **SIEM** chính là một phần của Security Analytics, tập trung vào thu thập và phân tích log. + +- **Luồng dữ liệu SOC** cơ bản: Data Sources → TIP → Security Analytics → SOAR → Enforcement/Portal. + +- **Case Management** đóng vai trò quản lý toàn bộ vòng đời sự cố, kết nối với SOAR. + +![[Pasted image 20250809101716.png]] \ No newline at end of file diff --git a/content/index.md b/content/index.md new file mode 100644 index 000000000..7c88709c3 --- /dev/null +++ b/content/index.md @@ -0,0 +1,43 @@ +--- +title: Hi I'm Patrick! +--- +## About me + +I’m a cybersecurity engineer with 5+ years of experience building and operating Security Operations Centers (SOC) for banking and enterprise environments. My core expertise lies in designing SIEM/SOAR systems (especially Splunk), automating incident response, and building scalable security workflows using Python and REST APIs. + +I currently manage high-volume log pipelines (2TB+/day), lead SOAR optimization initiatives, and develop AI-powered playbooks to reduce alert fatigue and accelerate triage. My automation efforts have helped reduce incident response time by up to 80% and cut manual workload by 60%. + +I'm passionate about pushing security operations forward with AI, and currently exploring: +- LLM-powered triage bots +- AI Agents for SOC +- Smart alert classification using ML + +As a trusted team player with hands-on technical depth, I aim to contribute to high-impact security teams and build resilient, intelligent defense systems. + +[Linkedin](https://www.linkedin.com/in/minhnhat19061999/) +[Github](https://github.com/cyberp01) + +--- + +## My blogs + +**Personal Projects** +- [[Autonomous Vulnerability Triage & Risk Scoring]] + +**SOC** +- [[Target Conceptual Architecture của SOC]] + +**Incident Responses** +- [[Computer Security Incident Handling Guide (NIST SP 800-61 Revision 2)]] + +**Machine Learning for CyberSecurity** +- [[Splunk Machine Learning Toolkit (MLTK) for Cyber]] +- [[Machine Learning for Cyber > Unit 1 - Introduction]] +- [[Machine Learning for Cyber > Unit 2 - Datasets and Features]] + + +--- + + + +_– Patrick (NhatNTM)–_ diff --git a/content/resources/Pasted image 20250809101420.png b/content/resources/Pasted image 20250809101420.png new file mode 100644 index 000000000..559890a3d Binary files /dev/null and b/content/resources/Pasted image 20250809101420.png differ diff --git a/content/resources/Pasted image 20250809101716.png b/content/resources/Pasted image 20250809101716.png new file mode 100644 index 000000000..e7197b0ce Binary files /dev/null and b/content/resources/Pasted image 20250809101716.png differ diff --git a/content/resources/Pasted image 20251002150719.png b/content/resources/Pasted image 20251002150719.png new file mode 100644 index 000000000..ba8dae346 Binary files /dev/null and b/content/resources/Pasted image 20251002150719.png differ diff --git a/content/resources/Pasted image 20251002151131.png b/content/resources/Pasted image 20251002151131.png new file mode 100644 index 000000000..92235046b Binary files /dev/null and b/content/resources/Pasted image 20251002151131.png differ diff --git a/content/resources/Pasted image 20251002151154.png b/content/resources/Pasted image 20251002151154.png new file mode 100644 index 000000000..32da93b2b Binary files /dev/null and b/content/resources/Pasted image 20251002151154.png differ diff --git a/content/resources/Pasted image 20251002151212.png b/content/resources/Pasted image 20251002151212.png new file mode 100644 index 000000000..611f1bf44 Binary files /dev/null and b/content/resources/Pasted image 20251002151212.png differ diff --git a/content/resources/Pasted image 20251002151229.png b/content/resources/Pasted image 20251002151229.png new file mode 100644 index 000000000..6106e83c3 Binary files /dev/null and b/content/resources/Pasted image 20251002151229.png differ diff --git a/content/resources/Pasted image 20251002151244.png b/content/resources/Pasted image 20251002151244.png new file mode 100644 index 000000000..7a401d222 Binary files /dev/null and b/content/resources/Pasted image 20251002151244.png differ diff --git a/content/resources/Pasted image 20251002151409.png b/content/resources/Pasted image 20251002151409.png new file mode 100644 index 000000000..76b073900 Binary files /dev/null and b/content/resources/Pasted image 20251002151409.png differ diff --git a/content/resources/Pasted image 20251002151420.png b/content/resources/Pasted image 20251002151420.png new file mode 100644 index 000000000..534c3ecc4 Binary files /dev/null and b/content/resources/Pasted image 20251002151420.png differ diff --git a/content/resources/Pasted image 20251002151500.png b/content/resources/Pasted image 20251002151500.png new file mode 100644 index 000000000..9b4c6a880 Binary files /dev/null and b/content/resources/Pasted image 20251002151500.png differ diff --git a/content/resources/Pasted image 20251002151510.png b/content/resources/Pasted image 20251002151510.png new file mode 100644 index 000000000..c69b363bc Binary files /dev/null and b/content/resources/Pasted image 20251002151510.png differ diff --git a/content/resources/Pasted image 20251002151517.png b/content/resources/Pasted image 20251002151517.png new file mode 100644 index 000000000..aa8e2b6ab Binary files /dev/null and b/content/resources/Pasted image 20251002151517.png differ diff --git a/quartz.config.ts b/quartz.config.ts index b3db3d60d..68518882c 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -8,7 +8,7 @@ import * as Plugin from "./quartz/plugins" */ const config: QuartzConfig = { configuration: { - pageTitle: "Quartz 4", + pageTitle: "PATRICK> NHAT.NTM", pageTitleSuffix: "", enableSPA: true, enablePopovers: true, @@ -29,27 +29,27 @@ const config: QuartzConfig = { }, colors: { lightMode: { - light: "#faf8f8", - lightgray: "#e5e5e5", - gray: "#b8b8b8", - darkgray: "#4e4e4e", - dark: "#2b2b2b", - secondary: "#284b63", - tertiary: "#84a59d", - highlight: "rgba(143, 159, 169, 0.15)", - textHighlight: "#fff23688", + light: "#f9f9fa", // Màu nền chính của trang (background) + lightgray: "#dedede", // Màu viền nhẹ, đường kẻ phân cách, border + gray: "#b0b0b0", // Màu liên kết trong graph view, đường nối giữa các node + darkgray: "#444444", // Màu chữ chính trong nội dung (paragraph, text) + dark: "#1c1c1e", // Màu tiêu đề (h1, h2, h3...), icon, text quan trọng + secondary: "#007aff", // Màu link thường, node hiện tại trong graph, button + tertiary: "#d6b745", // Màu hover state, node đã thăm trong graph, accent color (vàng) + highlight: "rgba(0, 122, 255, 0.1)", // Màu nền cho link nội bộ (internal link background) + textHighlight: "#ffcc00aa", // Màu nền cho text được highlight/đánh dấu }, darkMode: { - light: "#161618", - lightgray: "#393639", - gray: "#646464", - darkgray: "#d4d4d4", - dark: "#ebebec", - secondary: "#7b97aa", - tertiary: "#84a59d", - highlight: "rgba(143, 159, 169, 0.15)", - textHighlight: "#b3aa0288", - }, + light: "#1c1c1e", // Màu nền chính của trang (background) - dark theme + lightgray: "#2c2c2e", // Màu viền nhẹ, đường kẻ phân cách, border - dark theme + gray: "#636366", // Màu liên kết trong graph view, đường nối giữa các node - dark theme + darkgray: "#e5e5e7", // Màu chữ chính trong nội dung (paragraph, text) - dark theme + dark: "#f2f2f7", // Màu tiêu đề (h1, h2, h3...), icon, text quan trọng - dark theme + secondary: "#0a84ff", // Màu link thường, node hiện tại trong graph, button - dark theme + tertiary: "#d6b745", // Màu hover state, node đã thăm trong graph, accent color (vàng) + highlight: "rgba(10, 132, 255, 0.15)", // Màu nền cho link nội bộ (internal link background) - dark theme + textHighlight: "#ffd60a99", // Màu nền cho text được highlight/đánh dấu - dark theme + } }, }, }, @@ -68,7 +68,7 @@ const config: QuartzConfig = { }), Plugin.ObsidianFlavoredMarkdown({ enableInHtmlEmbed: false }), Plugin.GitHubFlavoredMarkdown(), - Plugin.TableOfContents(), + Plugin.TableOfContents({ maxDepth: 4 }), Plugin.CrawlLinks({ markdownLinkResolution: "shortest" }), Plugin.Description(), Plugin.Latex({ renderEngine: "katex" }), diff --git a/quartz.layout.ts b/quartz.layout.ts index 970a5be34..ecb7838ba 100644 --- a/quartz.layout.ts +++ b/quartz.layout.ts @@ -6,12 +6,7 @@ export const sharedPageComponents: SharedLayout = { head: Component.Head(), header: [], afterBody: [], - footer: Component.Footer({ - links: { - GitHub: "https://github.com/jackyzha0/quartz", - "Discord Community": "https://discord.gg/cRFFHYye7t", - }, - }), + footer: () => null, } // components for pages that display a single page (e.g. a single note) @@ -41,7 +36,6 @@ export const defaultContentPageLayout: PageLayout = { Component.Explorer(), ], right: [ - Component.Graph(), Component.DesktopOnly(Component.TableOfContents()), Component.Backlinks(), ],