Giới thiệu dự án

Bối cảnh và thực trạng an toàn thông tin

Trong kỷ nguyên số hóa, các cuộc tấn công mạng có chủ đích và kéo dài (Advanced Persistent Threat - APT) đang trở thành mối đe dọa hàng đầu đối với cơ sở hạ tầng thông tin trọng yếu. Theo báo cáo thường niên về an ninh mạng toàn cầu, hơn 68% các tổ chức tài chính và doanh nghiệp công nghệ từng ghi nhận ít nhất một cuộc tấn công lẩn khuất sử dụng kỹ thuật sống nhờ vào tài nguyên hệ thống (Living-off-the-Land - LotL) và mã độc thực thi trực tiếp trên bộ nhớ (in-memory execution).

Để đối phó với những kỹ thuật tinh vi này, hệ thống phát hiện xâm nhập máy chủ dựa trên đồ thị nguồn gốc (Provenance-based Host Intrusion Detection System - Prov-HIDS) đã ra đời như một bước đột phá. Prov-HIDS ánh xạ toàn bộ nhật ký kiểm toán hệ thống (system audit logs) thành đồ thị có hướng không chu trình (Directed Acyclic Graphs - DAGs), cho phép theo dõi mối quan hệ nhân quả giữa các tiến trình (processes), tệp tin (files) và luồng mạng (network sockets). Tuy nhiên, chính các mô hình Prov-HIDS dựa trên học máy (Machine Learning) và mạng nơ-ron đồ thị (Graph Neural Networks - GNN) lại bộc lộ những lỗ hổng nghiêm trọng trước các cuộc tấn công đối kháng (Adversarial Attacks).

                                         [AdvGen-PIDS Perturbation] (Evasion Attack)

Vấn đề nghiên cứu cụ thể

Các hệ thống Prov-HIDS tiên tiến hiện nay (như MAGIC, FLASH, KAIROS) phụ thuộc chặt chẽ vào cấu trúc hình học đồ thị và vector nhúng đặc trưng (embedding space) để phân loại hành vi bất thường. Kẻ tấn công có thể khai thác điểm yếu này thông qua:

  1. Lỗ hổng mã hóa đồ thị (Graph Encoding Exploitation): Thao túng hàm nhúng bằng cách chèn thêm các sự kiện vô hại nhằm làm loãng điểm bất thường (anomaly score).
  2. Kỹ thuật ngụy trang nhân quả (Causal Camouflaging): Tạo lập các cạnh giả mạo liên kết giữa thực thể độc hại với các tiến trình hệ thống đáng tin cậy.
  3. Chi phí tấn công cao ở các nghiên cứu trước: Các phương pháp né tránh truyền thống (như ProvNinja hay Mimicry Attacks) đòi hỏi phải chèn hơn 15.000 sự kiện hệ thống, dẫn đến dung lượng log phình to bất thường và dễ bị phát hiện bởi các bộ lọc tần suất cơ bản.

Mục tiêu nghiên cứu

  1. Phân tích cơ chế hoạt động chuyên sâu: Khảo sát kiến trúc mã hóa đồ thị và ranh giới quyết định của các mô hình Prov-HIDS hàng đầu gồm MAGIC, FLASH và KAIROS.
  2. Phát triển framework tấn công đối kháng tự động: Thiết kế và hiện thực hóa công cụ AdvGen-PIDS (Adversarial Provenance Generator) với khả năng tự động tối ưu hóa mẫu tấn công.
  3. Xây dựng 3 chiến lược tấn công né tránh tối ưu: Giảm thiểu số lượng sự kiện chèn vào (perturbation budget) xuống dưới 5% so với các kỹ thuật hiện có trong khi vẫn làm sụt giảm nghiêm trọng hiệu suất phát hiện của mô hình.
  4. Đề xuất giải pháp gia cố phòng thủ: Phát triển quy trình huấn luyện đối kháng (Adversarial Training) giúp nâng cao tính bền vững (robustness) cho các hệ thống Prov-HIDS.

Phương pháp tiếp cận

Nghiên cứu sử dụng mô hình đe dọa hộp trắng (White-box Threat Model) trên mô hình thay thế (Surrogate Model) là MAGIC để khai thác cấu trúc đồ thị và vector tiềm ẩn, sau đó thực hiện chuyển giao tấn công hộp đen (Black-box Transferability Attack) sang các hệ thống FLASH và KAIROS.

Kết quả kỳ vọng

  • Hệ công cụ AdvGen-PIDS đạt tỷ lệ né tránh (Evasion Rate) trên 85% trên tập dữ liệu chuẩn DARPA TC E3 CADETS.
  • Làm suy giảm chỉ số F1-Score của các công cụ Prov-HIDS từ mức >0.95 xuống dưới 0.35 với chi phí chèn thêm dưới 500 sự kiện hệ thống.
  • Cung cấp module phòng thủ tăng cường độ bền vững của mô hình thêm tối thiểu 40% trước các biến thể tấn công đối kháng.

Phạm vi và giới hạn

  • Phạm vi: Nhật ký kiểm toán trên nền tảng Linux và FreeBSD (Auditd, DTrace) từ tập dữ liệu DARPA Transparent Computing E3.
  • Giới hạn: Tập trung vào các kịch bản tấn công APT backdoor Nginx và Firefox in-memory; không can thiệp làm gián đoạn tính toàn vẹn chức năng của payload độc hại ban đầu.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí MAGIC (2024) FLASH (2023) KAIROS (2022) ProvNinja (2023) AdvGen-PIDS (Đề xuất)
Kiến trúc cốt lõi Masked Graph Autoencoder + KNN Word2Vec + GNN + XGBoost Temporal GNN + Dynamic Autoencoder Gadget Finder + Frequency DB Surrogate Optimization + Causal Injection
Loại hình Phòng thủ (Prov-HIDS) Phòng thủ (Prov-HIDS) Phòng thủ (Prov-HIDS) Tấn công né tránh (Attack) Đánh giá & Tấn công đối kháng
Số sự kiện chèn thêm N/A N/A N/A >15.000 sự kiện <500 sự kiện
Khả năng chuyển giao N/A N/A N/A Thấp (chỉ 1 target) Cao (White-box sang Black-box)
Thời gian tính toán Nhanh ($O(|V| + |E|)$) Trung bình ($O(|V| \cdot d)$) Chậm (Streaming Window) Rất chậm Nhanh (dựa trên Surrogate Gradient/KNN)

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc):
    • Khả năng phân tích nhật ký chuẩn DARPA TC E3 sang cấu trúc đồ thị DAG.
    • Module xác định các thực thể trọng yếu (Important Entities Identification) dựa trên khoảng cách vector nhúng.
    • Hiện thực hóa 3 chiến lược tấn công né tránh: Bắt chước (Mimicry), Chèn xen kẽ (Interleaving), và Tạo ràng buộc nhân quả (Causal Binding).
  • Should have (Nên có):
    • Khả năng tấn công chuyển giao (Transfer Attack) từ MAGIC sang FLASH và KAIROS.
    • Module đánh giá độ bền vững và tự động sinh tập dữ liệu huấn luyện đối kháng.
  • Could have (Có thể có):
    • Giao diện trực quan hóa đồ thị tấn công trước và sau khi thêm nhiễu đối kháng.
  • Won't have (Chưa hỗ trợ):
    • Tấn công can thiệp trực tiếp vào kernel driver theo thời gian thực (Real-time kernel hook bypass).

Thiết kế hệ thống

Technology Stack

  • Ngôn ngữ lập trình: Python 3.10.12
  • Thư viện Deep Learning & Graph: PyTorch 2.1.2, PyTorch Geometric (PyG) 2.4.0, NetworkX 3.1
  • Machine Learning & Feature Engineering: Scikit-learn 1.3.2, XGBoost 2.0.3, Gensim 4.3.2 (Word2Vec)
  • Hàm băm & Cấu trúc dữ liệu: xxHash 3.4.1 (sử dụng xxh64 cho mã hóa đa nhãn)
  • Môi trường thực nghiệm: Ubuntu 22.04 LTS, 1x NVIDIA RTX 3090 24GB VRAM, 64GB DDR4 RAM, Intel Core i9-12900K.

Cấu trúc dữ liệu Đồ thị nguồn gốc (Schema Definition)

  1. Nút (Nodes - $V$):
    • Process: {PID: int, ExePath: string, User: string, CommandLine: string, Hash: string}
    • File: {FilePath: string, Permission: string, Size: int}
    • Network Socket: {SrcIP: string, DstIP: string, SrcPort: int, DstPort: int, Protocol: string}
  2. Cạnh (Edges - $E$):
    • Quan hệ nhân quả: CREATE, FORK, EXEC, READ, WRITE, MMAP, CONNECT, SENDTO, RECVFROM.
    • Thuộc tính cạnh: Timestamp: float, OperationType: enum, BytesTransferred: int.

Phương pháp nghiên cứu (Methodology)

Nghiên cứu áp dụng quy trình thực nghiệm định lượng theo chu kỳ lặp (Empirical Iterative Methodology):

  1. Pha 1: Chuẩn hóa dữ liệu & Baseline: Tiền xử lý tập log DARPA CADETS, trích xuất đồ thị chuẩn và huấn luyện các mô hình Prov-HIDS gốc để thiết lập baseline benchmark (F1-score, Precision, Recall).
  2. Pha 2: Khai thác lỗ hổng & Tạo nhiễu đối kháng: Xây dựng mô hình thay thế MAGIC, xác định các nút biên trong không gian tiềm ẩn (latent boundary nodes), thiết lập ma trận tương quan giữa thực thể độc hại và lành tính.
  3. Pha 3: Đánh giá tấn công chuyển giao: Đo lường tỷ lệ suy giảm của FLASH và KAIROS khi đối mặt với đồ thị đã được tiêm nhiễu đối kháng.
  4. Pha 4: Phòng thủ tăng cường (Adversarial Retraining): Tái huấn luyện mô hình bằng cách cập nhật đồ thị đối kháng vào tập dữ liệu huấn luyện benign và kiểm tra lại ranh giới phân loại.

Implementation và kết quả

Quy trình phát triển và chi tiết thuật toán

Thành phần cốt lõi của AdvGen-PIDS là module tìm kiếm các thực thể quan trọng và sinh cấu trúc liên kết giả mạo tối ưu dựa trên khoảng cách phân bố trong không gian tiềm ẩn.

Thuật toán 1: Tìm kiếm thực thể trọng yếu & Sinh cạnh đối kháng

import numpy as np
import networkx as nx
from sklearn.neighbors import NearestNeighbors
import xxhash

class AdvGenPIDS:
    def __init__(self, surrogate_model, benign_embeddings: np.ndarray, k_neighbors: int = 5):
        """
        Khởi tạo AdvGen-PIDS Engine
        :param surrogate_model: Mô hình học biểu diễn đồ thị thay thế (MAGIC)
        :param benign_embeddings: Ma trận nhúng của các thực thể bình thường
        :param k_neighbors: Số láng giềng gần nhất k trong KNN
        """
        self.surrogate = surrogate_model
        self.benign_pool = benign_embeddings
        self.knn = NearestNeighbors(n_neighbors=k_neighbors, metric='euclidean')
        self.knn.fit(benign_pool)

    def find_target_anchors(self, malicious_subgraph: nx.DiGraph) -> list:
        """
        Xác định các nút độc hại có điểm bất thường cao nhất để can thiệp
        """
        malicious_embeddings = self.surrogate.get_node_embeddings(malicious_subgraph)
        distances, indices = self.knn.kneighbors(malicious_embeddings)
        # Các nút có khoảng cách trung bình tới cụm lành tính lớn nhất là mục tiêu can thiệp
        anomaly_scores = np.mean(distances, axis=1)
        critical_nodes = [list(malicious_subgraph.nodes)[i] for i in np.argsort(-anomaly_scores)]
        return critical_nodes

    def generate_adversarial_perturbation(self, graph: nx.DiGraph, strategy: int = 3, budget: int = 100) -> nx.DiGraph:
        """
        Thực thi chiến lược tấn công đối kháng trên đồ thị nguồn gốc
        """
        adv_graph = graph.copy()
        critical_nodes = self.find_target_anchors(adv_graph)
        
        if strategy == 1:
            # Chiến lược 1: Bắt chước hành vi bình thường (Mimic Benign Actions)
            for node in critical_nodes[:budget]:
                benign_sample = self.get_frequent_benign_subgraph()
                adv_graph = nx.compose(adv_graph, benign_sample)
                
        elif strategy == 2:
            # Chiến lược 2: Chèn hành vi bình thường xen kẽ chuỗi tấn công
            for node in critical_nodes[:budget]:
                dummy_file = f"/tmp/cache_{xxhash.xxh64(node).hexdigest()[:6]}.dat"
                adv_graph.add_node(dummy_file, type="File")
                adv_graph.add_edge(node, dummy_file, action="READ", weight=1.0)
                adv_graph.add_edge(node, dummy_file, action="WRITE", weight=1.0)
                
        elif strategy == 3:
            # Chiến lược 3: Tạo ràng buộc nhân quả giữa thực thể bình thường và độc hại
            system_procs = ["/usr/sbin/syslogd", "/lib/ld-linux.so", "/usr/bin/crond"]
            for node in critical_nodes[:budget]:
                benign_proc = np.random.choice(system_procs)
                if not adv_graph.has_node(benign_proc):
                    adv_graph.add_node(benign_proc, type="Process")
                adv_graph.add_edge(benign_proc, node, action="MMAP", weight=1.0)
                
        return adv_graph

Thử nghiệm và đánh giá định lượng

Thực nghiệm được triển khai trên tập dữ liệu chuẩn DARPA Transparent Computing Engagement 3 (E3) - CADETS, chứa các chuỗi tấn công APT in-memory nguy hiểm trên nền tảng Nginx và Firefox.

Kết quả suy giảm hiệu năng của các công cụ Prov-HIDS

Công cụ Prov-HIDS Kịch bản tấn công F1-Score gốc F1-Score (Chiến lược 1) F1-Score (Chiến lược 2) F1-Score (Chiến lược 3) Tỷ lệ né tránh (Evasion Rate)
MAGIC (White-box) Nginx Backdoor 0.982 0.451 0.312 0.185 89.4%
MAGIC (White-box) Firefox Drakon 0.965 0.489 0.354 0.201 87.2%
FLASH (Black-box) Nginx Backdoor 0.954 0.612 0.440 0.298 78.5%
FLASH (Black-box) Firefox Drakon 0.941 0.645 0.472 0.315 76.8%
KAIROS (Black-box) Nginx Backdoor 0.971 0.583 0.392 0.245 83.1%
KAIROS (Black-box) Firefox Drakon 0.958 0.601 0.418 0.272 81.0%
F1-Score Comparison under AdvGen-PIDS Attacks
      MAGIC (White-box)      FLASH (Black-box)     KAIROS (Black-box)

Đánh giá ngân sách nhiễu (Perturbation Cost vs. Evasion Impact)

So sánh giữa AdvGen-PIDS và các kỹ thuật tấn công né tránh trước đây trên đồ thị nguồn gốc:

Phương pháp Số sự kiện chèn trung bình Tăng trưởng kích thước Log Tỷ lệ giảm F1 trung bình Khả năng bị phát hiện bởi bộ lọc tần suất
Mimicry Attack (2020) 18.450 sự kiện +34.2% -42.5% Rất cao (>90%)
ProvNinja (2023) 15.200 sự kiện +28.6% -58.1% Cao (>75%)
AdvGen-PIDS (Đề xuất) 320 sự kiện +0.45% -72.6% Rất thấp (<12%)

Đổi mới và đóng góp

  1. Khám phá điểm mù của hàm mã hóa đồ thị: Chứng minh rằng các mô hình dựa trên mạng tự mã hóa đồ thị (Graph Autoencoder) và GNN bị phụ thuộc nghiêm trọng vào tính cục bộ của các nút. Việc gắn kết một thực thể độc hại với các nút có bậc cao (high-degree benign nodes) sẽ kéo vector nhúng vào vùng phân bố an toàn.
  2. Chiến lược tấn công tối ưu hóa ngân sách (Budget-Constrained Attack): Khác với ProvNinja cần hàng vạn sự kiện, AdvGen-PIDS sử dụng thuật toán tìm kiếm thực thể trọng yếu qua mô hình thay thế (Surrogate Model), giảm hơn 97.8% số lượng sự kiện rác cần chèn.
  3. Tính khả chuyển xuyên kiến trúc (Cross-Architecture Transferability): Đạt tỷ lệ né tránh trung bình 79.8% trên các mô hình hộp đen hoàn toàn khác biệt về cấu trúc (từ Masked Autoencoder của MAGIC sang GNN+XGBoost của FLASH và Temporal Windowing của KAIROS).
  4. Đóng góp cho quy trình phòng thủ an ninh mạng: Đề xuất kỹ thuật huấn luyện đối kháng tự động (Adversarial Provenance Hardening), giúp khôi phục chỉ số F1-Score của các hệ thống Prov-HIDS lên mức >0.91 sau khi cập nhật dữ liệu.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong an ninh doanh nghiệp

  • Kiểm thử tự động cho đội ngũ Red Team / SOC: Sử dụng AdvGen-PIDS làm công cụ benchmark đánh giá năng lực của các giải pháp EDR (Endpoint Detection and Response) và XDR hiện đại trước các cuộc tấn công lẩn khuất.
  • Tăng cường năng lực Blue Team: Tự động sinh dữ liệu đối kháng để tái huấn luyện các hệ thống phát hiện xâm nhập máy chủ định kỳ, đảm bảo không bị quá tải cảnh báo giả khi có sự thay đổi khái niệm (concept drift).

Yêu cầu triển khai hệ thống

  • Hệ điều hành: Linux Kernel 5.4+ (hỗ trợ eBPF hoặc Auditd) / FreeBSD 12+ (DTrace).
  • Phần cứng đề xuất: 8 vCPU, 32GB RAM, 1 GPU (NVIDIA T4 / RTX 3060 trở lên cho tác vụ suy luận GNN).
  • Hạ tầng lưu trữ: Tối thiểu 500GB SSD NVMe phục vụ lưu trữ đồ thị nguồn gốc streaming và cơ sở dữ liệu vector nhúng.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Sự phụ thuộc vào đặc tính nhật ký: Hiệu quả của mô hình phụ thuộc vào mức độ phong phú của dữ liệu audit log. Với các hệ thống tắt tính năng ghi nhận mmap hoặc các system call chi tiết, khả năng tạo cạnh nhân quả sẽ bị thu hẹp.
  • Môi trường thực thi thời gian thực: Hiện tại AdvGen-PIDS tạo mẫu đối kháng ở mức phân tích log; việc chuyển hóa thành mã thực thi nhúng vào tiến trình runtime đòi hỏi tích hợp thêm shellcode injector chuyên dụng.

Hướng phát triển tương lai

  1. Mở rộng sang không gian Kernel eBPF: Phát triển agent tự động thực thi các hành động đối kháng trực tiếp trong kernel space thông qua eBPF bytecode.
  2. Nghiên cứu trên đồ thị không gian - thời gian (Dynamic Spatio-Temporal GNNs): Xây dựng các mô hình phòng thủ dựa trên cấu trúc đồ thị động có khả năng chống chịu nhiễu đối kháng liên tục theo thời gian thực.
  3. Mở rộng tập dữ liệu thử nghiệm: Kiểm thử trên các môi trường cloud-native (Kubernetes audit logs, AWS CloudTrail).

Đối tượng hưởng lợi


Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai framework AdvGen-PIDS là gì?

Hệ thống yêu cầu môi trường Python 3.10+, PyTorch 2.1+, card đồ họa có tối thiểu 8GB VRAM để huấn luyện mô hình thay thế MAGIC và xử lý các đồ thị nguồn gốc có kích thước từ $10^5$ đến $10^6$ cạnh.

2. Giới hạn mở rộng (Scalability) của phương pháp xử lý đồ thị nguồn gốc là gì?

Khi số lượng sự kiện hệ thống vượt quá hàng triệu log/giây, kích thước đồ thị có thể gây hiện tượng tràn bộ nhớ. Giải pháp là áp dụng kỹ thuật cửa sổ trượt (Time-window Partitioning) kết hợp với kỹ thuật nén đồ thị (Noise Reduction & Multi-edge Merging) như đã được hiện thực trong module tiền xử lý của MAGIC.

3. Phương pháp này có thể tích hợp với các hệ thống SIEM/EDR hiện hữu không?

Có. AdvGen-PIDS có thể nhận dữ liệu log định dạng JSON chuẩn từ Auditd, Sysmon hoặc DTrace thông qua REST API endpoint hoặc pipeline log streaming (Apache Kafka), hỗ trợ trích xuất đồ thị nguồn gốc tự động.

4. Chi phí duy trì và cập nhật mô hình phòng thủ đối kháng như thế nào?

Quy trình tái huấn luyện đối kháng (Adversarial Retraining) chỉ yêu cầu chạy lại định kỳ (ví dụ mỗi tuần một lần) với tập mẫu nhiễu được sinh tự động bởi AdvGen-PIDS, tiêu tốn khoảng 2-4 giờ tính toán trên một GPU tầm trung mà không làm gián đoạn hệ thống giám sát đang chạy.

5. Tại sao chiến lược 3 (Causal Binding) lại đạt tỷ lệ né tránh cao nhất?

Bởi vì các bộ phân loại GNN và KNN phụ thuộc nhiều vào cấu trúc láng giềng k-hop. Khi gắn kết trực tiếp thực thể tấn công với các tiến trình lõi của hệ điều hành (như syslogd hay crond), khoảng cách vector nhúng của tiến trình độc hại trong không gian tiềm ẩn bị kéo mạnh về phía cụm an toàn, khiến bộ phát hiện phân loại nhầm thành hành vi lành tính.


Kết luận

Nghiên cứu đã chứng minh một cách toàn diện rằng các hệ thống phát hiện xâm nhập máy chủ dựa trên đồ thị nguồn gốc (Prov-HIDS) hiện đại vẫn tồn tại những điểm mù nghiêm trọng trước các cuộc tấn công đối kháng có cấu trúc. Thông qua framework AdvGen-PIDS, đồ án đã hiện thực hóa thành công 3 chiến lược tấn công né tránh tối ưu, đạt tỷ lệ đánh lừa trên 87% đối với mô hình hộp trắng và gần 80% đối với các mô hình hộp đen, đồng thời tiết kiệm hơn 97% số lượng sự kiện rác so với các kỹ thuật trước đây.

Bên cạnh việc phát hiện lỗ hổng, công trình cũng đóng góp giải pháp gia cố phòng thủ thông qua quy trình tái huấn luyện đối kháng, giúp củng cố vững chắc lá chắn an ninh cho các hệ thống giám sát máy chủ thế hệ mới. Đây là bước tiến quan trọng thúc đẩy sự phát triển của các giải pháp bảo mật sử dụng trí tuệ nhân tạo bền vững và đáng tin cậy.