Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, Internet trở thành hạ tầng trọng yếu đối với mọi hoạt động vận hành của doanh nghiệp. Tuy nhiên, lưu lượng mạng mở rộng cũng kéo theo bề mặt tấn công ngày càng gia tăng. Theo báo cáo An ninh mạng của BKAV, thiệt hại do virus máy tính gây ra tại Việt Nam năm 2019 đạt mức kỷ lục 20.892 tỷ đồng (~902 triệu USD) với hơn 85,2 triệu lượt máy tính bị nhiễm mã độc. Đáng chú ý, có tới 80% máy tính bị lây nhiễm bắt nguồn từ thói quen tải và cài đặt tập tin từ Internet. Theo báo cáo Microsoft Security Endpoint Threat Report, Việt Nam nằm trong nhóm quốc gia có tỷ lệ tấn công Ransomware cao nhất khu vực Châu Á – Thái Bình Dương (0,17%, cao gấp 3-4 lần trung bình khu vực) và tấn công khai thác tiền điện tử mã độc (Cryptomining) chiếm 0,10%.

[Người dùng tải file qua Web/HTTP(S)]

Vấn đề cốt lõi (Problem Statement) nằm ở chỗ các giải pháp bảo mật truyền thống thường tạo ra điểm nghẽn: hoặc can thiệp chặn file làm giảm trải nghiệm mạng của nhân viên, hoặc dựa hoàn toàn vào chữ ký (signature) tại Endpoint vốn vô hiệu trước các biến thể mã độc mới (Zero-day, Advanced Persistent Threat - APT). Nhận thức an toàn thông tin của người dùng không đồng đều biến hành vi tải file hàng ngày thành lỗ hổng bảo mật nghiêm trọng.

Khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin (Trường Đại học Công nghệ Thông tin, ĐHQG-HCM) tập trung giải quyết bài toán trên thông qua đề tài: "Phát triển hệ thống phát hiện sớm mã độc từ tập tin tải về của người dùng trong doanh nghiệp" với các mục tiêu cụ thể:

  1. Xây dựng giải pháp Proxy Server hiệu năng cao: Bắt gói tin, giải mã luồng HTTPS thông qua kỹ thuật SSL/TLS Interception (MITM) hợp thức và trích xuất file stream tự động.
  2. Kiến trúc phân tích đa tầng (Multi-Engine Analyzer): Tích hợp kiểm tra chữ ký hàm băm tức thời với Redis Cache, phân tích tĩnh/động thông qua API của VirusTotal, Hybrid Analysis và hệ thống Cuckoo Sandbox cô lập.
  3. Cơ chế xử lý bất đồng bộ (Asynchronous Decoupling): Sử dụng RabbitMQ để phân tách hoàn toàn tác vụ truyền file của người dùng khỏi tác vụ phân tích mã độc, duy trì trải nghiệm tải file nguyên bản.
  4. Hệ thống cảnh báo và quản trị tập trung: Xây dựng Web Dashboard và dịch vụ phát sóng cảnh báo tức thời qua Slack, Telegram khi phát hiện tệp tin nguy hiểm (như Ransomware WannaCry, Eicar test file).

Phạm vi nghiên cứu tập trung vào giao thức HTTP/HTTPS trên môi trường mạng doanh nghiệp nội bộ. Hệ thống không thay thế hoàn toàn tường lửa lớp mạng hay EDR máy trạm, mà đóng vai trò là chốt chặn phân tích sớm (Early Detection Gate) tại gateway lưu lượng tải xuống.


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

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

Các giải pháp giám sát an ninh mạng hiện hành thường đối mặt với các giới hạn về hiệu năng, chi phí triển khai và độ bao phủ kỹ thuật:

Tiêu chí so sánh Network IDS (Snort, Suricata) Endpoint Security (EDR Agent) Hệ thống đề xuất (Proxy + Multi-Engine)
Vị trí thu thập Network TAP / SPAN Port Trực tiếp trên từng thiết bị đầu cuối Gateway Proxy (Network Layer 7)
Khả năng giải mã HTTPS Hạn chế, cần phần cứng giải mã riêng Xử lý sau khi giải mã tại máy trạm MITM Certificate Authority nội bộ
Tác động thiết bị trạm Không tác động Tốn RAM/CPU máy trạm, dễ bị vô hiệu hóa Không cần cài đặt Agent lên máy trạm
Khả năng phân tích sâu Chủ yếu dựa vào Pattern/Signature Rule Hành vi hệ điều hành (Process, Registry) Phân tích Đa Engine (Tĩnh + Sandbox Động)
Độ phức tạp vận hành Cao, cần bảo trì tập luật liên tục Khó quản lý trên hạ tầng BYOD lớn Triển khai tập trung, dễ mở rộng container

Yêu cầu người dùng và hệ thống được xác định theo mô hình phân loại MoSCoW:

  • Must have: Trích xuất file stream từ HTTP/HTTPS; phân tích hash qua VirusTotal API; gửi cảnh báo tức thời qua Telegram/Slack; giao diện Web Dashboard quản lý log.
  • Should have: Tích hợp Cuckoo Sandbox on-premise; bộ nhớ đệm kết quả phân tích bằng Redis; kiến trúc vi dịch vụ triển khai qua Docker Compose.
  • Could have: Hỗ trợ Dynamic Sandbox cho định dạng tài liệu Office độc hại; xác thực người dùng tích hợp Active Directory / LDAP.
  • Won't have (trong phạm vi hiện tại): Can thiệp chặn gói tin theo thời gian thực ở mức kernel; phân tích traffic giải mã ở quy mô Telco hàng triệu kết nối đồng thời.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc Microservices phân tán, bao gồm các thành phần cốt lõi:

  1. Proxy Server (Go v1.16+): Lắng nghe và điều hướng lưu lượng. Khi phát hiện Header Content-Disposition: attachment hoặc Content-Type tải file (PE .exe, zip, document), Proxy sẽ tiến hành:
    • Stream dữ liệu trực tiếp về máy người dùng để không gây trễ (Zero Delay Download).
    • Đồng thời nhân bản (Tee Reader) stream dữ liệu, lưu tạm vào buffer và đẩy metadata/tệp tin vào hàng đợi RabbitMQ.
  2. Message Broker & In-memory Store:
    • RabbitMQ v3.8+: Triển khai cơ chế Producer-Consumer xử lý hàng nghìn tệp tin cần phân tích mà không nghẽn tài nguyên.
    • Redis v6.2+: Lưu trữ bảng băm SHA256 -> Analysis_Result với cơ chế TTL (Time-To-Live). Nếu một file đã được quét trong hệ thống trong vòng 24h, kết quả được trả về trong < 5ms.
  3. Analyzer Service: Xử lý tác vụ từ hàng đợi, băm tệp tin (MD5, SHA-1, SHA-256), truy vấn Threat Intelligence Database và kích hoạt phân tích sandbox cô lập.
  4. Backend Server & Web Dashboard (Golang REST API + ReactJS v17.0+ + PostgreSQL v13+): Cung cấp API quản lý phân quyền, cấu hình threshold cảnh báo, giám sát biểu đồ tấn công theo thời gian thực.
  5. Broadcast Service: Module tích hợp Webhook API tự động đẩy thông báo nguy cấp về kênh chat quản trị (Slack, Telegram bot).

Methodology

Dự án áp dụng phương pháp luận phát triển Agile/Scrum kết hợp mô hình kiểm thử an toàn thông tin khép kín:

  • Phase 1 (Tuần 1-3): Nghiên cứu lý thuyết giao thức HTTP/HTTPS, xây dựng cơ chế Proxy MITM bằng Golang và thử nghiệm phát hành chứng chỉ nội bộ (Self-signed Root CA).
  • Phase 2 (Tuần 4-7): Thiết kế kiến trúc Microservices, xây dựng Message Queue với RabbitMQ, tích hợp Redis Caching và phát triển Analyzer Service tương tác với VirusTotal/Cuckoo Sandbox API.
  • Phase 3 (Tuần 8-10): Phát triển RESTful API Backend, hoàn thiện Web Dashboard trên ReactJS và xây dựng Broadcast Service.
  • Phase 4 (Tuần 11-12): Đóng gói Docker Compose, thực nghiệm kiểm thử hộp đen (Black-box testing) với các mẫu mã độc thực tế (WannaCry, Ransomware, EICAR Standard Anti-Virus Test File) và đo tải hiệu năng bằng Apache Benchmark.

Implementation và kết quả

Development process

1. Hiện thực Proxy Server Stream Interception (Golang)

Mã nguồn tại Proxy Server sử dụng thư viện elazarl/goproxy được tùy biến để trích xuất file stream mà không chặn đứng luồng I/O của người dùng:

// Trích đoạn mã xử lý file stream bất đồng bộ tại Proxy Server
func HandleDownloadStream(resp *http.Response, ctx *goproxy.ProxyCtx) *http.Response {
    if isDownloadRequest(resp) {
        var buf bytes.Buffer
        // Sử dụng io.TeeReader để vừa trả về Client vừa ghi vào Buffer
        tee := io.TeeReader(resp.Body, &buf)
        
        go func() {
            fileData, err := ioutil.ReadAll(&buf)
            if err == nil {
                fileHash := fmt.Sprintf("%x", sha256.Sum256(fileData))
                // Đẩy thông tin file vào RabbitMQ để phân tích
                rabbitMQClient.Publish("file_scan_queue", FileMessage{
                    Hash:      fileHash,
                    FileName:  extractFileName(resp),
                    SourceURL: ctx.Req.URL.String(),
                    RawData:   fileData,
                    Timestamp: time.Now().Unix(),
                })
            }
        }()
        resp.Body = ioutil.NopCloser(tee)
    }
    return resp
}

2. Hiện thực Multi-Engine Analyzer & RabbitMQ Worker

Module Analyzer tiếp nhận tin nhắn từ hàng đợi và thực hiện quy trình phân tích tối ưu:

// Worker phân tích mã độc đa tầng
func ConsumeScanTask(msg []byte) {
    var task FileMessage
    json.Unmarshal(msg, &task)
    
    // Bước 1: Kiểm tra Cache tại Redis
    cachedResult, err := redisClient.Get(ctx, task.Hash).Result()
    if err == nil {
        log.Printf("[CACHE HIT] File %s da duoc danh gia: %s", task.FileName, cachedResult)
        return
    }
    
    // Bước 2: Truy vấn VirusTotal API v3
    vtResult, err := QueryVirusTotal(task.Hash)
    if err != nil || vtResult.Positives > 0 {
        TriggerAlert(task, vtResult)
    } else {
        // Bước 3: Đẩy vào Cuckoo Sandbox nếu là file thực thi chưa rõ nguồn gốc
        if isExecutable(task.FileName) {
            SubmitToCuckooSandbox(task.RawData)
        }
    }
    // Cập nhật Cache Redis
    redisClient.Set(ctx, task.Hash, vtResult.Status, 24*time.Hour)
}

3. Triển khai hạ tầng Container hóa với Docker Compose

Toàn bộ dịch vụ được đóng gói độc lập, bảo đảm tính nhất quán môi trường:

version: '3.8'
services:
  rabbitmq:
    image: rabbitmq:3.8-management-alpine
    ports:
      - "5672:5672"
      - "15672:15672"
  redis:
    image: redis:6.2-alpine
    ports:
      - "6379:6379"
  db:
    image: postgres:13-alpine
    environment:
      POSTGRES_DB: malware_detection_db
      POSTGRES_PASSWORD: secure_password
  analyzer:
    build: ./analyzer
    depends_on:
      - rabbitmq
      - redis
  proxy:
    build: ./proxy
    ports:
      - "8080:8080"

Testing và validation

Hệ thống được kiểm thử qua 3 kịch bản thực nghiệm độc lập:

  1. Kịch bản 1 - Xác thực tệp tiêu chuẩn EICAR: Giả lập tải các biến thể eicar.com, eicar.com.txt, eicar_com.zip. Kết quả: Hệ thống nhận diện 100% chữ ký mã độc, hiển thị chi tiết trên Dashboard và bắn thông báo tới kênh Telegram/Slack trong vòng 1,2 giây.
  2. Kịch bản 2 - Kiểm thử mẫu mã độc thực tế (WannaCry Ransomware & Malware PE Files): Tải mẫu tệp thực thi mã độc WannaCry thực tế (ed01ed440...). Kết quả phân tích trả về từ VirusTotal ghi nhận tỷ lệ 62/70 engine phát hiện độc hại; Hybrid Analysis định danh hành vi mã hóa tập tin nguy hiểm cấp độ Critical. Hệ thống tự động ghi log vào cơ sở dữ liệu PostgreSQL.
+---------------------------------------------------------------------------------------+
| MALWARE DETECTION ALERT                                            [SEVERITY: HIGH]   |
+---------------------------------------------------------------------------------------+
| File Name:   WannaCry_Sample.exe                                                      |
| SHA-256:     ed01ed440a7d10f415ffabda457f1233912a75d43fe19b15d878da9d4a5a23be        |
| Source IP:   192.168.1.105 (Dev-Workstation-04)                                       |
| Engines:     VirusTotal: 62/70 Malicious | Cuckoo: Ransomware.WannaCrypt Triggered    |
| Action:      Alert broadcasted to Slack #soc-alerts & Telegram Bot                    |
+---------------------------------------------------------------------------------------+
  1. Kịch bản 3 - Đánh giá hiệu năng và độ trễ (Apache Benchmark): Sử dụng công cụ ab kiểm thử tải kết nối thông qua Proxy Server với 1.000 requests, mức đồng thời (concurrency) 50.
Concurrency Level:      50
Time taken for tests:   0.812 seconds
Complete requests:      1000
Failed requests:        0
Requests per second:    1231.52 [#/sec] (mean)
Time per Request:       40.60 [ms] (mean)
Transfer rate:          5624.12 [Kbytes/sec] received

Kết quả đạt được

Hệ thống đã hoàn thành xuất sắc các chỉ tiêu đặt ra:

  • Tỷ lệ nhận diện mã độc đã biết: Đạt 100% đối với các mẫu thử nghiệm có trong cơ sở dữ liệu Threat Intelligence.
  • Thời gian xử lý tại Proxy: Độ trễ gia tăng (overhead) của Proxy Server dưới 12ms đối với lưu lượng thông thường nhờ vào cơ chế non-blocking I/O của Golang Goroutines.
  • Tốc độ phản hồi cảnh báo: Nhận kết quả và gửi thông báo đa kênh trong vòng < 3 giây (đối với cache hit) và < 15 giây (đối với phân tích Cloud API).

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

  1. Kiến trúc phân tách Stream (Asynchronous Tee-Streaming): Khắc phục hoàn toàn nhược điểm "treo trình duyệt" của các giải pháp Proxy bảo mật truyền thống. Người dùng nhận file ngay lập tức, trong khi tiến trình phân tích bảo mật diễn ra độc lập dưới nền.
  2. Tối ưu chi phí bằng cơ chế Multi-Tier Analysis: Giảm thiểu tới 75% số lượng request gọi ra các API trả phí bên ngoài nhờ vào việc kiểm tra đa tầng: Local Redis Cache -> Hash Lookup -> Cloud Intelligence API -> On-Premise Cuckoo Sandbox.
  3. Tích hợp SOC ChatOps hiện đại: Rút ngắn thời gian phản hồi sự cố (MTTR - Mean Time to Respond) của đội ngũ quản trị mạng từ hàng giờ xuống còn vài giây thông qua Webhook tự động tới Slack và Telegram.

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

Kịch bản triển khai tại doanh nghiệp

Hệ thống được đóng gói thành giải pháp Gateway Security Appliance dễ dàng tích hợp vào mạng nội bộ:

  • Cấu hình WPAD/PAC Script: Tự động điều hướng lưu lượng duyệt web của toàn bộ máy trạm nhân viên qua Proxy Server mà không cần cài đặt phần mềm bên thứ ba.
  • Tích hợp mạng chi nhánh (Branch Office): Triển khai Proxy cục bộ tại từng chi nhánh và tập trung dữ liệu phân tích về Backend trung tâm đặt tại trụ sở chính.

Phân tích hiệu quả đầu tư (Cost-Benefit Analysis)

So với việc đầu tư hệ thống EDR thương mại đắt đỏ (từ $30 - $50/endpoint/năm) hoặc thiết bị phần cứng bảo mật chuyên dụng hàng chục nghìn USD:

  • Mô hình mã nguồn mở kết hợp vi dịch vụ giúp doanh nghiệp quy mô 200 - 500 nhân sự tiết kiệm từ 60% - 80% chi phí bản quyền bảo mật ban đầu.
  • Ngăn ngừa nguy cơ thiệt hại trung bình hàng trăm triệu đồng cho mỗi sự cố lây nhiễm Ransomware hoặc rò rỉ dữ liệu qua file đính kèm độc hại.

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

Hạn chế kỹ thuật

  • Vấn đề mã hóa Certificate Pinning: Một số ứng dụng chuyên biệt áp dụng SSL Pinning sẽ từ chối kết nối khi đi qua Proxy MITM, đòi hỏi phải cấu hình ngoại lệ (Bypass List) thủ công.
  • Giới hạn Rate Limit của Free Cloud API: Phụ thuộc vào hạn mức gọi API miễn phí của VirusTotal và Hybrid Analysis; cần mở rộng hạ tầng Sandbox nội bộ khi lưu lượng phân tích tăng cao.

Hướng phát triển

  1. Xây dựng module Machine Learning phân tích tĩnh đặc trưng file thực thi (PE Header Features, Opcode n-grams) trực tiếp tại Analyzer để phát hiện mã độc Zero-day nội bộ mà không cần phụ thuộc vào Cloud API.
  2. Mở rộng tính năng tự động cô lập máy trạm bị nhiễm (Automated Quarantine) thông qua tích hợp API điều khiển Switch mạng hoặc Tường lửa nội bộ.

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

  • Sinh viên & Nghiên cứu sinh: Tài liệu tham khảo toàn diện về lập trình mạng với Golang, kỹ thuật SSL Interception và xây dựng kiến trúc Microservices xử lý luồng dữ liệu lớn.
  • Kỹ sư An toàn Thông tin (SOC/Security Engineer): Khung tham chiếu thực tế để tự xây dựng hệ thống Gateway phát hiện mã độc chi phí thấp, linh hoạt tùy biến cho doanh nghiệp.
  • Doanh nghiệp vừa và nhỏ (SMEs): Giải pháp bảo mật lớp mạng thực tế, nâng cao năng lực phòng thủ trước mã độc tống tiền mà không gây gián đoạn hoạt động kinh doanh hàng ngày.

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

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống có thể vận hành ổn định cho doanh nghiệp 100-200 máy trạm với máy chủ cấu hình: CPU 4 Cores, 8GB RAM, 100GB SSD (chạy trên nền tảng Ubuntu Server 20.04 LTS có cài đặt Docker & Docker Compose).

2. Người dùng có bị chậm khi tải các file dung lượng lớn không?

Không. Nhờ kiến trúc sử dụng io.TeeReader trong Golang, luồng dữ liệu được stream song song trực tiếp về máy trạm cùng lúc với quá trình đẩy vào bộ đệm, do đó không tạo ra thời gian trễ nhận file.

3. Làm thế nào để xử lý chứng chỉ SSL/HTTPS trên các máy trạm?

Quản trị viên chỉ cần cài đặt chứng chỉ gốc (Root CA Certificate) do hệ thống Proxy tạo ra vào kho chứng chỉ tin cậy (Trusted Root Certification Authorities) của hệ điều hành máy trạm thông qua Windows Group Policy (GPO) hoặc script tự động.

4. Hệ thống có bảo đảm tính riêng tư cho dữ liệu người dùng không?

Hệ thống chỉ trích xuất và phân tích các tệp tin tải xuống (Binary, Document, Archive) dựa trên Header/Content-Type và hoàn toàn có thể thiết lập danh sách bỏ qua (Bypass Domain List) đối với các dịch vụ ngân hàng, thanh toán trực tuyến hoặc y tế.

5. Chi phí vận hành lâu dài của hệ thống là bao nhiêu?

Hệ thống sử dụng hoàn toàn các công nghệ mã nguồn mở (Golang, PostgreSQL, Redis, RabbitMQ, Docker), chi phí vận hành định kỳ chủ yếu là chi phí duy trì hạ tầng máy chủ nội bộ hoặc Cloud VPS.


Kết luận

Đề tài "Phát triển hệ thống phát hiện sớm mã độc từ tập tin tải về của người dùng trong doanh nghiệp" đã giải quyết thành công bài toán cân bằng giữa bảo mật an toàn thông tin và trải nghiệm người dùng mạng. Bằng việc kết hợp sáng tạo giữa kỹ thuật Proxy SSL Interception, kiến trúc phân tán bất đồng bộ RabbitMQ - Redis và mạng lưới phân tích mã độc đa tầng, hệ thống cung cấp một chốt chặn phòng thủ vững chắc, chi phí tối ưu và sẵn sàng ứng dụng vào thực tiễn doanh nghiệp. Đây là minh chứng rõ nét cho xu hướng kết hợp giữa kỹ nghệ phần mềm hiện đại và năng lực an ninh mạng chủ động.