Bối cảnh và vấn đề nghiên cứu

Trong bức tranh toàn cảnh về an toàn thông tin, các cuộc tấn công mạng sử dụng mã độc diễn biến ngày càng phức tạp và có xu hướng gia tăng mạnh mẽ. Dữ liệu thực tế cho thấy các sự kiện mã độc lịch sử như WannaCry vào tháng 5 năm 2017 đã lây lan đến hệ thống mạng của hơn 150 quốc gia, gây thiệt hại ước tính vượt mức 4 tỷ USD trên phạm vi toàn cầu, bên cạnh những chủng loại nguy hiểm khác như Mydoom, Sobig hay Klez. Theo thống kê từ tổ chức đánh giá phần mềm phòng chống mã độc AV-TEST (Cộng hòa Liên bang Đức), mỗi ngày có hơn 450.000 biến thể mã độc và phần mềm tiềm ẩn rủi ro mới được phát hiện và đăng ký; tính lũy kế từ năm 1984 đến năm 2022, tổng số lượng mẫu mã độc đã ghi nhận đạt mức hơn 1,535 tỷ.

Tại Việt Nam, các báo cáo tại Hội thảo và Triển lãm quốc tế về An toàn không gian mạng năm 2021 xác nhận tỷ lệ tấn công mạng và lây nhiễm mã độc thuộc nhóm cao trên thế giới. Riêng trong 5 tháng đầu năm 2022, Bộ Thông tin và Truyền thông đã ghi nhận 5.463 cuộc tấn công mạng nhắm vào các hệ thống thông tin trong nước, trong đó có 3.757 trường hợp xuất phát từ mã độc, chiếm tỷ lệ 68,7%. Đối với các tổ chức và doanh nghiệp, mục tiêu của các cuộc tấn công này thường là đánh cắp dữ liệu, mã hóa tài liệu để tống tiền hoặc làm tê liệt hệ thống máy chủ dịch vụ.

Tuy nhiên, việc trang bị các hệ sinh thái bảo mật thương mại hàng đầu để phòng chống mã độc đang đặt ra hai rào cản lớn đối với các doanh nghiệp vừa và nhỏ:

  • Rào cản về tiềm lực tài chính khi chi phí đầu tư ban đầu và duy trì bản quyền cho các giải pháp bảo mật chuyên dụng là rất đắt đỏ.
  • Rào cản về mức độ phù hợp nhu cầu, khi quy mô hoạt động của doanh nghiệp vừa và nhỏ chỉ cần một số tính năng cốt lõi, khiến việc chi trả cho toàn bộ hệ thống lớn trở nên lãng phí.

Xuất phát từ thực trạng trên, đề tài khóa luận "Xây dựng hệ thống phát hiện và ngăn chặn mã độc tự động" được thực hiện bởi nhóm sinh viên Huỳnh Gia Huy và Trương Tấn Sang, dưới sự hướng dẫn của ThS. Nguyễn Duy tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP.HCM (năm 2022), hướng đến việc tích hợp các công cụ mã nguồn mở nhằm tạo ra giải pháp cân bằng giữa hiệu quả bảo vệ và bài toán kinh tế.

Mục tiêu nghiên cứu của đề tài gồm 5 nội dung:

  1. Thiết kế một hệ thống phòng thủ có nhiều lớp phát hiện mã độc, căn cứ theo chu trình di chuyển của một tập tin từ Internet vào mạng nội bộ.
  2. Kết hợp các lớp phòng vệ riêng biệt, cho phép các thành phần tận dụng thông tin đầu ra của nhau để gia tăng hiệu quả ngăn chặn.
  3. Cảnh báo tự động đến người quản trị khi xảy ra sự xâm nhập của mã độc.
  4. Quản lý log tập trung, hỗ trợ người quản trị truy cập, điều tra và truy vết nguồn gốc mã độc.
  5. Cung cấp tính năng giám sát lưu lượng mạng nội bộ trong toàn hệ thống.

Nhiệm vụ nghiên cứu được văn bản xác định cụ thể qua 4 đầu việc:

  1. Tích hợp vào hệ thống các công cụ phát hiện mã độc với những phương thức khác nhau: so sánh chữ ký (signature), phân tích động (dynamic analysis) và phát hiện bất thường trong lưu lượng mạng.
  2. Tìm hiểu, khai thác các mô-đun mở rộng của từng công cụ nhằm tối ưu hóa khả năng phân tích và nhận diện.
  3. Phát triển chương trình giám sát log từ các công cụ để tự động hóa quy trình phản ứng: tự động chặn URL tải tệp độc hại tại proxy, tự động chặn IP công cộng (public IP) độc hại tại tường lửa, cập nhật chữ ký mã độc mới vào cơ sở dữ liệu và gửi Gmail cảnh báo kèm thông tin máy trạm/người dùng bị lây nhiễm tới quản trị viên.
  4. Xây dựng công cụ giám sát lưu lượng mạng và các chương trình hỗ trợ thu thập, tập trung và hiển thị log sự kiện.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Hệ thống tự động phát hiện và ngăn chặn mã độc kết hợp phân tích đa tầng.
  • Phạm vi nghiên cứu: Tập trung vào việc kiểm soát, phát hiện và ngăn chặn mã độc truyền tải qua các giao thức Web (HTTP/HTTPS). Đề tài không đi sâu vào phương pháp giải mã/dịch ngược mã độc chi tiết và quy trình pháp chứng số (digital forensics).
  • Phạm vi kỹ thuật: Các công cụ được tích hợp gồm SquidClamAV, Cuckoo Sandbox, Snort IPS, Iptables, Squid Proxy và OpenLDAP. Các chương trình trung gian tự phát triển bằng ngôn ngữ lập trình Java (chiếm 99%, hoạt động từ Java 8 đến Java 11, nền tảng Spring Boot) và Shell Script (chiếm 1%), triển khai trên hệ điều hành Ubuntu và Debian. Khóa luận không so sánh trực tiếp các chương trình tự viết với các giải pháp thương mại khác.

Cơ sở lý thuyết và phương pháp

Khóa luận áp dụng phương pháp nghiên cứu thực nghiệm kết hợp thiết kế hệ thống kỹ thuật, dựa trên nền tảng lý thuyết về mã độc và các công nghệ an toàn mạng mã nguồn mở:

Khung lý thuyết về mã độc và kỹ thuật nhận diện

  • Khái niệm và phân loại mã độc: Văn bản hệ thống hóa 10 dạng mã độc phổ biến gồm Virus, Worm, Trojan, Spyware, Ransomware, Adware, Rootkit, Cryptojacking, Malvertising và Fileless.
  • Kỹ thuật phân tích mã độc:
    • Phân tích tĩnh (Static Analysis): Kiểm tra định dạng tệp, trích xuất chuỗi bit, băm dữ liệu (fingerprinting), quét chữ ký antivirus và dịch ngược mã nguồn (disassembly/decompilation) mà không thực thi tệp.
    • Phân tích động (Dynamic Analysis): Thực thi mẫu mã độc trong môi trường ảo hóa biệt lập (sandbox) để theo dõi các lời gọi hàm API, cấu trúc tiến trình, can thiệp Registry và lưu lượng mạng phát sinh.
    • Phân tích kết hợp (Hybrid Analysis): Tận dụng tốc độ của phân tích tĩnh để sàng lọc sơ bộ trước khi đưa mẫu vào môi trường phân tích động.
  • Kỹ thuật phát hiện mã độc:
    • Dựa trên chữ ký (Signature-based): So khớp đoạn mã hoặc mã băm của tệp với cơ sở dữ liệu đã biết.
    • Dựa trên heuristic (Heuristic-based): Phân tích hành vi bất thường thông qua 3 thành phần Data Collection, Interpretation và Matching Algorithm; có nhược điểm tiêu tốn tài nguyên và tỷ lệ dương tính giả (False Positives) cao.
    • Dựa trên đặc tả (Specification-based): Giám sát ứng dụng dựa trên tài liệu đặc tả chức năng nhằm giảm tỷ lệ dương tính giả nhưng có thể làm tăng tỷ lệ âm tính giả (False Negatives).

Các công nghệ nền tảng sử dụng trong hệ thống

  • Squid Proxy: Caching proxy hiệu năng cao cho giao thức HTTP, HTTPS và FTP; hỗ trợ kỹ thuật SSL Bumping để giải mã và kiểm tra lưu lượng HTTPS. Cơ chế Access Control bao gồm Access Control Elements (địa chỉ IP, tên miền, URL, tài khoản người dùng) và Access Control Rules (http_access). Hệ thống quản lý các tập tin log cốt lõi: cache.log, access.log và store.log, đồng thời điều phối bộ nhớ cache qua hai trạng thái đối tượng in-transit và complete.
  • ClamAV & SquidClamAV: ClamAV là công cụ antivirus mã nguồn mở đa luồng, hỗ trợ chống bom lưu trữ (archive bomb), giải nén nhiều định dạng nén (ZIP, RAR, 7Z, TAR, GZIP, ISO 9660, OLE2, OOXML...) và tự động bóc tách các dạng nén thực thi (UPX, AsPack, FSG, Petite, PeSpin...). Cơ sở dữ liệu chữ ký bao gồm Body-based signatures và Hash-based signatures (*.hsu, *.mdb, *.msb, *.mdu...). SquidClamAV đóng vai trò cầu nối tích hợp ClamAV trực tiếp vào Squid Proxy.
  • Snort (Snort 3): Hệ thống phòng chống xâm nhập mạng sử dụng thư viện bắt gói tin libpcap. Snort hỗ trợ 4 chế độ: Sniffer mode, Packet logger mode, IDS mode và IPS mode. Chu trình xử lý gói tin gồm 4 giai đoạn tuần tự: Sniffer $\rightarrow$ Preprocessors (phân loại giao thức qua HTTP plugin, phát hiện quét cổng qua sfPortscan) $\rightarrow$ Detection Engine (đối chiếu tập luật rules) $\rightarrow$ Output (ghi log và phát sinh cảnh báo).
  • Cuckoo Sandbox: Hệ thống phân tích mã độc tự động xây dựng theo kiến trúc phân tán Host-Guest. Môi trường Guest cô lập hỗ trợ nhiều hệ điều hành (Windows, Linux, macOS, Android). Cuckoo phân tích các lời gọi API, kết xuất bộ nhớ thông qua công cụ Volatility và phân tích lưu lượng mạng mã hóa. Cấu trúc cấu hình phân tách theo các mô-đun: Auxiliary, Machinery, Memory, Processing, Reporting; hệ thống Packages thực thi chuyên biệt gồm Free, Procmemdump, Human, Applet, Bin, JS, Zip.
  • Kỹ thuật gia cố môi trường máy ảo (Hardening Sandbox): Nhằm vô hiệu hóa kỹ thuật chống máy ảo (anti-VM/anti-sandbox) của mã độc, đề tài áp dụng 4 kỹ thuật hardening cho Cuckoo: gỡ bỏ VirtualBox Guest Additions; chỉnh sửa Windows Registry để xóa các định danh ảo hóa; đổi tên thư mục gốc và dùng py2exe/pyinstaller đóng gói agent.py thành tệp thực thi .exe độc lập; thay đổi thông số phần cứng và thông tin CD-ROM ảo trong VirtualBox Manager.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo mô hình mạng phân vùng gồm 6 mạng ảo (VMNET) tương ứng với các phân hệ chức năng:

Tên mạng ảo Dải địa chỉ IP Chế độ mạng Chức năng quy hoạch
VMNET 1 192.168.1.0/24 Host-only Vùng kết nối dịch vụ giữa Gateway và Sandbox
VMNET 2 192.168.2.0/24 Host-only Vùng kết nối trung gian mạng
VMNET 3 192.168.3.0/24 Host-only Vùng kiểm soát lưu lượng đi qua Snort IPS
VMNET 4 192.168.4.0/24 Host-only Vùng quản trị dịch vụ Controller và máy chủ OpenLDAP
VMNET 5 192.168.5.0/24 Host-only Vùng mạng nội bộ dành cho người dùng (Staff network)
VMNET 6 192.168.6.0/24 Host-only Vùng mạng kết nối mở rộng

Cấu hình phân bổ dịch vụ và địa chỉ IP trên các nút mạng:

  • Gateway/Firewall: Cài đặt Squid Proxy, SquidClamAV và Iptables; kết nối trên các giao diện mạng VMNET 1 (192.168.1.132), VMNET 2 (192.168.2.3) và VMNET 3 (192.168.3.3).
  • Sandbox Host: Cài đặt Cuckoo Sandbox; kết nối VMNET 1 (192.168.1.135).
  • Nút kiểm soát IPS: Cài đặt Snort 3; kết nối tại giao diện VMNET 3 và VMNET 5.
  • Controller: Cài đặt OpenLDAP và ứng dụng quản trị tập trung logreceiver.jar; kết nối VMNET 4 (192.168.4.3).
  • Máy trạm nội bộ: Đặt tại vùng VMNET 5 (dải địa chỉ 192.168.5.x), định tuyến lưu lượng Web bắt buộc qua Squid Proxy và chịu sự giám sát của Snort IPS.
       [ INTERNET ]
       (VMNET 1, 2, 3)
[ VMNET 1 ]                   [ VMNET 3 / 5 ]
[ SANDBOX ]                   [ SNORT IPS ]
                              [ VMNET 5 ]
                              [ STAFF LAN ]
                               (192.168.5.x)

Các kịch bản vận hành tự động

Hệ thống vận hành dựa trên 3 kịch bản xử lý sự kiện:

  • Kịch bản 1 (Kiểm tra chặn trước khi tải): Khi người dùng gửi yêu cầu tải một tệp tin từ Internet qua giao thức HTTP/HTTPS, tệp tin được SquidClamAV quét tĩnh trực tiếp tại Gateway. Nếu tệp chứa mã độc đã có chữ ký, Squid Proxy sẽ lập tức chặn đường dẫn tải về (download URL). Việc này ngăn chặn tệp thâm nhập vào mạng nội bộ, đồng thời tiết kiệm tài nguyên xử lý cho các yêu cầu tải trùng lặp tiếp theo.
  • Kịch bản 2 (Phân tích động và cập nhật chữ ký sau khi tải): Trường hợp tệp tải về vượt qua bộ lọc tĩnh (do biến thể mới chưa có chữ ký), tệp được lưu tạm vào bộ đệm cache của Squid. Bản sao của tệp có định dạng nhạy cảm (như EXE, PDF, DOCX, ZIP, RAR...) được chương trình Guard trích xuất và gửi tới Cuckoo Sandbox để thực thi phân tích động. Nếu kết quả phân tích xác định tệp độc hại, hệ thống kích hoạt chuỗi phản ứng: chặn URL tải tệp trên Squid Proxy, tự động trích xuất chữ ký của tệp bổ sung vào cơ sở dữ liệu ClamAV, và gửi Gmail cảnh báo chứa kết quả tóm tắt cùng tên đăng nhập (username) của người đã tải tệp về máy.
  • Kịch bản 3 (Ngăn chặn kết nối mã độc ra bên ngoài): Khi một mã độc đã thâm nhập thành công vào máy trạm và thực thi kết nối điều khiển máy chủ ra bên ngoài (C2/external connection), Snort IPS sẽ phân tích gói tin, nhận diện dấu hiệu bất thường và ngắt kết nối. Đồng thời, địa chỉ IP ngoại vi (external IP) mà mã độc cố gắng liên lạc sẽ được chuyển giao để tường lửa Iptables chặn toàn diện. Quản trị viên sẽ nhận được Gmail cảnh báo chứa chi tiết bản ghi sự kiện từ Snort kèm địa chỉ IP của máy trạm nội bộ bị lây nhiễm.

Thiết kế giải thuật đọc tập tin log nâng cao

Do dữ liệu log của hệ thống biến động liên tục và chịu ảnh hưởng của cơ chế xoay vòng log (log rotation), nhóm nghiên cứu đã thiết kế một giải thuật đọc log chuyên biệt:

  • Duy trì trạng thái đọc: Chương trình theo dõi và lưu trữ siêu dữ liệu của từng tập tin log vào cơ chế lưu vết trạng thái (since_db), bao gồm con trỏ vị trí đọc (pointer), dung lượng tệp (size), dấu hiệu nhận dạng (signature/inode) và thời điểm sửa đổi cuối cùng (lastModified).
  • Xử lý bất đồng bộ theo luồng sự kiện: Sử dụng FileModificationListener kết hợp FileAlterationObserver để bắt kịp thời các sự kiện tạo, sửa đổi hoặc xóa tập tin log.
  • Cơ chế đọc: Hỗ trợ chuyển đổi giữa chế độ đọc nối tiếp từ vị trí con trỏ đã lưu hoặc đọc lại từ đầu tệp khi phát hiện tệp log mới/được làm mới; dữ liệu được xử lý tuần tự theo từng khối kích thước đệm (spoolSize/BYTEBUFFER_CAPACITY).

Các phân hệ phần mềm tự phát triển

Nhóm tác giả đã hiện thực hóa 4 phân hệ phần mềm chính:

  1. Phân hệ Guard (guard.jar): Triển khai tại Gateway. Lớp Reader đọc log truy cập từ Squid Proxy, phân tách các trường URL, tên tệp và username. Nếu URL chưa có trong danh sách đã kiểm tra (urlcheckedlist), chương trình gọi ShellScriptExecutor để trích xuất tệp tương ứng từ cache của Squid. Khi tệp tồn tại và nhỏ hơn ngưỡng dung lượng cho phép (maxFileSize), chương trình tính toán mã băm SHA256 để so sánh với danh sách chữ ký đã quét (sigcheckedlist). Nếu là tệp mới, tác vụ FileCheckTask được khởi tạo và quản lý bởi lớp Pool (hỗ trợ đa luồng, giới hạn tối đa 4 luồng chạy đồng thời qua hằng số MAXEXTRATHREADRUNNING) để gửi yêu cầu phân tích tới REST API của Cuckoo Sandbox. Kết quả phân tích thành công sẽ được ghi nhận vào log sự kiện riêng biệt.
  2. Phân hệ Logforwarder (logforwarder.jar): Chịu trách nhiệm giám sát và chuyển tiếp log từ các nút mạng về Controller. Chương trình bao gồm các lớp cấu trúc: FileState (lưu siêu dữ liệu tệp), FileWatcher (quản lý danh sách tập tin theo dõi), FileModificationListener (bắt sự kiện thay đổi) và Reader (đọc nội dung). Dữ liệu sau đó được giao tiếp qua interface ProtocolAdapter và truyền tải thông qua LumberjackClient bằng socket bảo mật SSL/TLS với xác thực hai chiều.
  3. Phân hệ Logwatcher (logwatcher.jar): Triển khai tại máy chủ Controller, hoạt động theo mô hình đa luồng (khởi tạo 3 luồng giám sát độc lập thông qua lớp Processor). Chương trình đọc log tập trung và phân loại sự kiện qua enum LogType:
    • BadUrlUpdateTask: Gửi REST API yêu cầu Squid Proxy tại Gateway chặn URL độc hại và ghi nhận vào urlblacklist.
    • BadIpUpdateTask: Gửi REST API yêu cầu Iptables chặn địa chỉ IP công cộng độc hại và lưu vào ipblacklist.
    • SignatureUpdateTask: Gửi REST API cập nhật chữ ký mã độc mới vào cơ sở dữ liệu ClamAV và lưu vào sigblacklist.
    • Cơ chế chịu lỗi: Mỗi yêu cầu cập nhật API nếu thất bại sẽ được tự động thử lại tối đa 2 lần.
    • Cơ chế cảnh báo định kỳ: Khai báo lớp Global quản lý các biến toàn cục gồm recentSnortDetectionNumber, snortDetections, recentCuckooDetectionNumber và cuckooDetections. Khi số lượng sự kiện phát hiện đạt ngưỡng cấu hình $k$ lần, lớp GmailPostMan sẽ kích hoạt phiên gửi email tự động chứa nội dung tổng hợp cảnh báo đến quản trị viên, sau đó đặt lại bộ đếm về 0 và làm rỗng chuỗi lưu trữ tạm thời.
  4. Phân hệ Logreceiver và Networkmonitor: Xây dựng trên nền tảng Spring Boot. Logreceiver tiếp nhận luồng dữ liệu từ Logforwarder, giải mã và phân bổ log vào hệ thống tệp tập trung. Networkmonitor sử dụng các lớp xử lý Capfor, Analyzer và Statistic để thu thập gói tin, phân tích thống kê lưu lượng và trực quan hóa dữ liệu giám sát mạng cho quản trị viên.

Nội dung chính theo từng chương

Chương 1. Giới thiệu đề tài

Chương mở đầu tập trung trình bày tính cấp thiết của nghiên cứu trong bối cảnh các mối đe dọa từ không gian mạng ngày càng gia tăng. Tác giả dẫn chứng các số liệu tấn công mã độc toàn cầu (sự kiện WannaCry làm tê liệt mạng lưới 150 quốc gia, gây thiệt hại hơn 4 tỷ USD; thống kê hơn 450.000 mẫu mã độc mới/ngày của AV-TEST) và tại Việt Nam (5.463 cuộc tấn công mạng trong 5 tháng đầu năm 2022 với 68,7% liên quan đến mã độc). Chương này xác định rõ mục tiêu, nhiệm vụ, đối tượng và giới hạn phạm vi nghiên cứu, đặt trọng tâm vào việc thiết kế một kiến trúc phòng thủ nhiều tầng, tích hợp các công cụ mã nguồn mở nhằm phục vụ các tổ chức có quy mô vừa và nhỏ.

Chương 2. Nghiên cứu tương tự

Chương 2 phân tích chuyên sâu công trình nghiên cứu "Detection of malicious servers for preventing client-side attacks" (năm 2021) của nhóm tác giả K. Batool và cộng sự thuộc Đại học Kỹ thuật và Công nghệ Mehran (Pakistan). Hệ thống tham chiếu này triển khai Bro IDS (Zeek), Cuckoo Sandbox, VirusTotal API, Sguil dashboard và cơ sở dữ liệu MySQL.

Tác giả khóa luận chỉ ra hai hạn chế cốt lõi trong nghiên cứu của K. Batool:

  1. Bro IDS đóng vai trò quyết định toàn bộ luồng xử lý: Nếu Bro IDS đánh giá URL là an toàn, các quy trình phân tích động tại Cuckoo Sandbox và quét chuyên sâu trên VirusTotal API sẽ không được kích hoạt. Tuy nhiên, Bro IDS bản chất là công cụ phân tích lưu lượng thụ động, không tối ưu cho việc kiểm tra sâu gói tin (deep packet inspection) dựa trên chữ ký, dẫn đến nguy cơ bỏ lọt mối đe dọa.
  2. Thiếu khả năng chủ động ngăn chặn tại Gateway: Toàn bộ công cụ trong hệ thống của Batool hoạt động ở chế độ bị động; người dùng vẫn tải tập tin về bình thường trong khi quá trình phân tích mới bắt đầu diễn ra.

Từ hai vấn đề trên, nhóm tác giả đề xuất giải pháp cải tiến: thay thế Bro IDS bằng Snort triển khai ở chế độ IPS (chủ động ngăn chặn lưu lượng mạng); bổ sung SquidClamAV tại Gateway để rà soát và chặn tệp ngay trước khi hoàn tất tải xuống; kết hợp OpenLDAP để định danh người dùng qua proxy; tích hợp tường lửa Iptables chặn IP tự động và tự phát triển hệ thống thu thập, xử lý log tập trung theo 3 kịch bản phản ứng thực tế.

Chương 3. Cơ sở lý thuyết

Chương này cung cấp hệ thống kiến thức lý thuyết về các công cụ và kỹ thuật nền tảng:

  • Phân tích chi tiết tính năng, kiến trúc Access Control, cơ chế phân bổ cache và cấu trúc tập tin log của Squid Proxy.
  • Trình bày nguyên lý hoạt động của ClamAV/SquidClamAV, bao gồm khả năng chống bom lưu trữ, giải mã packed files và các định dạng chữ ký (Body-based và Hash-based signatures).
  • Làm rõ 4 chế độ hoạt động và luồng xử lý gói tin 4 giai đoạn của Snort IPS (Sniffer $\rightarrow$ Preprocessors $\rightarrow$ Detection Engine $\rightarrow$ Output).
  • Phân tích kiến trúc Host-Guest của Cuckoo Sandbox, cơ chế xử lý các mô-đun (Auxiliary, Machinery, Memory, Processing, Reporting), các gói phân tích mẫu và hệ thống chữ ký định danh hành vi độc hại.
  • Đề xuất 4 kỹ thuật gia cố máy ảo Cuckoo Sandbox nhằm đối phó với các kỹ thuật anti-analysis.
  • Hệ thống hóa phân loại 10 dạng mã độc phổ biến, 3 phương pháp phân tích (tĩnh, động, kết hợp) và 3 kỹ thuật phát hiện (chữ ký, heuristic, đặc tả hệ thống).

Chương 4. Thiết kế hệ thống

Chương 4 là nội dung trọng tâm của khóa luận, mô tả chi tiết quá trình hiện thực hóa giải pháp:

  • Quy hoạch kiến trúc mạng gồm 6 phân vùng mạng ảo VMNET và phân bổ địa chỉ IP tĩnh cho từng thành phần.
  • Thiết kế giải thuật đọc tập tin log nâng cao dựa trên việc theo dõi con trỏ vị trí và trạng thái tệp (since_db).
  • Thiết kế hướng đối tượng và sơ đồ lớp UML chi tiết cho các phân hệ tự viết:
    • Chương trình Guard: Kiến trúc phân luồng xử lý Processor, quản lý kết nối Pool, trích xuất tệp qua ShellScriptExecutor và giao tiếp Cuckoo API qua FileCheckTask.
    • Chương trình Logforwarder: Cấu trúc giám sát thay đổi tệp FileWatcher, FileModificationListener và giao thức chuyển tiếp LumberjackClient qua kênh bảo mật SSL.
    • Chương trình Logwatcher: Luồng đọc log phân tán, điều phối các tác vụ cập nhật BadUrlUpdateTask, BadIpUpdateTask, SignatureUpdateTask, cơ chế lưu trữ biến toàn cục trong lớp Global và gửi cảnh báo tự động qua GmailPostMan.
    • Phân hệ quản trị Logreceiver và Networkmonitor: Xây dựng ứng dụng web Spring Boot tiếp nhận log tập trung và hiển thị thống kê lưu lượng mạng.

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

Khóa luận đã hoàn thành việc thiết kế, cài đặt và thử nghiệm một hệ thống phòng thủ mã độc hoàn chỉnh trên môi trường mạng ảo hóa, đạt được các kết quả cụ thể:

  • Tích hợp thành công chuỗi công cụ mã nguồn mở đa tầng gồm Squid Proxy, SquidClamAV, Snort 3 (chế độ IPS), Cuckoo Sandbox, Iptables và OpenLDAP.
  • Tự động hóa hoàn toàn 3 kịch bản phản ứng an ninh:
    • Tự động chặn URL độc hại tại Squid Proxy ngay khi SquidClamAV phát hiện mã độc.
    • Tự động gửi tệp nghi vấn vào Cuckoo Sandbox để phân tích động, tự trích xuất chữ ký bổ sung vào cơ sở dữ liệu ClamAV và tự động cập nhật URL blacklist.
    • Tự động chặn địa chỉ IP công cộng độc hại qua Iptables khi Snort IPS ghi nhận lưu lượng độc hại, đồng thời phát sinh cảnh báo thời gian thực.
  • Xây dựng thành công bộ công cụ phần mềm bằng Java (chiếm 99%) và Shell Script (1%):
    • Ứng dụng thuật toán đọc log nâng cao có khả năng duy trì trạng thái đọc, xử lý hiện tượng xoay vòng log và giảm thiểu độ trễ I/O.
    • Truyền tải log an toàn từ các nút mạng về Controller thông qua giao thức Lumberjack có mã hóa TLS.
    • Ứng dụng web quản trị trên nền Spring Boot cho phép theo dõi log tập trung và giám sát thống kê lưu lượng mạng.
    • Cơ chế cảnh báo qua Gmail tích hợp thông tin chi tiết: định danh mã độc, địa chỉ IP vi phạm và tên tài khoản người dùng tải tệp (nhờ tích hợp OpenLDAP vào Squid).

Đóng góp so với nghiên cứu trước

Khóa luận đã khắc phục trực tiếp các điểm hạn chế trong mô hình nghiên cứu của K. Batool và cộng sự (2021):

Tiêu chí so sánh Nghiên cứu của K. Batool và CS (2021) Giải pháp của khóa luận
Công cụ kiểm soát mạng Sử dụng Bro IDS (Zeek) thụ động, không tối ưu cho so khớp chữ ký gói tin. Sử dụng Snort ở chế độ IPS, chủ động phát hiện và ngắt kết nối độc hại.
Kiểm soát tại Gateway Hoàn toàn bị động; không có cơ chế chặn tệp trước khi tải về. Triển khai SquidClamAV quét và chặn ngay tệp độc hại tại cửa ngõ.
Định danh nguồn lây nhiễm Chỉ ghi nhận thông tin địa chỉ IP. Kết hợp Squid Proxy với OpenLDAP, định danh chính xác cả địa chỉ IP và username.
Cơ chế tường lửa Phụ thuộc vào việc chặn thủ công hoặc xử lý trễ qua báo cáo. Tích hợp Iptables tự động chặn external IP độc hại dựa trên log phân tích của IPS.
Phân tích động dự phòng Cuckoo Sandbox phụ thuộc hoàn toàn vào kết quả rà soát bước đầu của Bro IDS. Guard tự động trích xuất bản sao từ cache của proxy để phân tích động độc lập.
Hệ thống quản lý log Sử dụng cấu trúc chia sẻ file mạng (network file share) truyền thống. Tự phát triển Logforwarder và Logwatcher tối ưu hóa đọc log và chuyển tiếp bảo mật.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận ghi nhận các giới hạn kỹ thuật dựa trên phạm vi nghiên cứu thực tế:

  • Phạm vi kiểm soát giao thức: Hệ thống hiện chỉ tập trung xử lý lưu lượng truyền tải trên các giao thức Web (HTTP và HTTPS); chưa mở rộng sang các giao thức truyền nhận tập tin hoặc liên lạc phổ biến khác như SMTP/IMAP (thư điện tử) hay SMB (chia sẻ tệp nội bộ).
  • Khả năng tương thích phần mềm: Các phân hệ tự phát triển (Guard, Logforwarder, Logwatcher) được lập trình chuyên biệt để liên kết dữ liệu và cấu hình riêng cho tập công cụ lựa chọn trong đề tài (Squid, ClamAV, Snort, Cuckoo, Iptables), chưa cung cấp giao diện chuẩn hóa (plugin interface) để kết nối với các giải pháp bảo mật thương mại hoặc mã nguồn mở khác.
  • Chiều sâu nghiệp vụ an ninh: Đề tài tập trung vào kiến trúc tự động hóa kết nối hệ thống; không đi sâu vào việc cải tiến các giải thuật phân tích mã độc chuyên sâu, kỹ thuật giải mã nâng cao hoặc quy trình điều tra pháp chứng số.
  • Hướng nghiên cứu tiếp theo: Tác giả xác định định hướng tiếp tục hoàn thiện hệ thống, mở rộng khả năng giám sát trên nhiều giao thức mạng khác ngoài HTTP/HTTPS, bổ sung các kịch bản phản ứng an ninh chuyên sâu và tối ưu hóa hiệu năng xử lý đa luồng của các bộ đọc log khi triển khai trên hệ thống mạng có lưu lượng lớn.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị ứng dụng kỹ thuật cao đối với:

  • Sinh viên và học viên chuyên ngành An toàn thông tin, Mạng máy tính và Kỹ thuật phần mềm: Cung cấp tài liệu thực tế về việc thiết kế hệ thống bảo mật đa tầng, kiến trúc phòng thủ theo chiều sâu (Defense-in-Depth) và phương pháp xây dựng các mô-đun phần mềm trung gian liên kết công cụ an ninh mạng.
  • Kỹ sư quản trị mạng và bảo mật tại các doanh nghiệp vừa và nhỏ: Cung cấp mô hình tham khảo chi tiết về việc kết hợp các giải pháp mã nguồn mở (Squid, ClamAV, Snort, Cuckoo, OpenLDAP) để thiết lập hệ thống phát hiện và ngăn chặn mã độc tự động với chi phí tối ưu.
  • Các nội dung chuyên biệt có giá trị tham khảo kỹ thuật cao trong văn bản:
    • Thiết kế thuật toán đọc log nâng cao (FileModificationListener, cơ chế lưu vết since_db, xử lý xoay vòng log) tại Chương 4.
    • Các kỹ thuật gia cố máy ảo Cuckoo Sandbox (Hardening) nhằm hạn chế kỹ thuật né tránh phân tích của mã độc tại Chương 3.
    • Mã nguồn thiết kế hướng đối tượng (sơ đồ UML) của các tiến trình xử lý đa luồng Guard, Logforwarder và Logwatcher tại Chương 4.

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

1. Tại sao nhóm tác giả lại thay thế Bro IDS bằng Snort IPS trong mô hình tham chiếu?

Trong công trình tham chiếu của K. Batool (2021), Bro IDS (tên hiện tại là Zeek) nắm quyền quyết định việc có gửi mẫu tới Cuckoo Sandbox hay không. Tuy nhiên, Bro IDS là công cụ giám sát lưu lượng thụ động, không có thế mạnh về kiểm tra sâu gói tin đối chiếu theo tập chữ ký, đồng thời không có khả năng ngắt luồng truyền dữ liệu độc hại. Do đó, nhóm nghiên cứu đã thay thế Bro IDS bằng Snort triển khai ở chế độ IPS (chủ động ngăn chặn), cho phép phân tích gói tin chuyên sâu và lập tức hủy bỏ các gói tin độc hại từ kết nối của mã độc ra ngoài mạng.

2. Quy trình trích xuất tệp từ bộ đệm của Squid Proxy để gửi vào Cuckoo Sandbox diễn ra như thế nào?

Khi người dùng tải một tệp có phần mở rộng nhạy cảm (EXE, PDF, DOCX, ZIP, RAR...), phân hệ Guard đọc log của Squid để lấy thông tin URL tải về. Chương trình đối chiếu xem URL đã có trong urlcheckedlist hay chưa. Nếu chưa, Guard kích hoạt một đoạn Shell Script để trích xuất bản sao của tệp trực tiếp từ thư mục cache của Squid dựa trên tham số URL. Tiếp đó, chương trình tính mã băm SHA256 của tệp để kiểm tra trong sigcheckedlist. Nếu tệp chưa từng được phân tích và có dung lượng nhỏ hơn maxFileSize, tác vụ FileCheckTask sẽ gửi tệp đến REST API của Cuckoo Sandbox thông qua một luồng xử lý riêng biệt.

3. Hệ thống xử lý như thế nào để tránh việc gửi lặp lại các yêu cầu chặn IP, chặn URL hoặc cập nhật chữ ký?

Phân hệ Logwatcher duy trì ba danh sách đen nội bộ gồm urlblacklist, ipblacklist và sigblacklist. Trước khi gửi yêu cầu REST API tới Firewall để chặn một URL, chặn một địa chỉ IP trên Iptables hoặc nạp chữ ký mới vào ClamAV, chương trình đều kiểm tra xem thông tin đó đã tồn tại trong danh sách tương ứng hay chưa. Nếu thông tin đã được ghi nhận chặn thành công trước đó, yêu cầu mới sẽ bị loại bỏ, tránh việc gửi trùng lặp các yêu cầu xử lý tới Gateway.

4. Nhóm nghiên cứu đã thực hiện các biện pháp hardening nào cho Cuckoo Sandbox để chống kỹ thuật né tránh máy ảo?

Để hạn chế việc mã độc nhận biết môi trường ảo hóa và dừng thực thi hành vi phá hoại, nhóm tác giả áp dụng 4 biện pháp kỹ thuật:

  • Gỡ bỏ gói tiện ích VirtualBox Guest Additions ra khỏi máy ảo phân tích (Guest VM).
  • Chỉnh sửa các khóa Windows Registry liên quan đến thông tin phần cứng của VirtualBox.
  • Thay đổi tên thư mục hoạt động của tệp agent.py và sử dụng py2exe hoặc pyinstaller để biên dịch script này thành tệp thực thi .exe, tránh để lộ tiến trình Python chạy ngầm.
  • Sửa đổi các thông số nhận dạng phần cứng bo mạch chủ và ổ đĩa CD-ROM ảo trong trình quản lý VirtualBox Manager.

5. Thuật toán đọc log nâng cao trong khóa luận khắc phục vấn đề thay đổi tệp và xoay vòng log bằng cơ chế nào?

Chương trình đọc log lưu trữ các thông số trạng thái của tệp vào cơ sở dữ liệu lưu vết (since_db), bao gồm con trỏ vị trí đọc (pointer), kích thước tệp và định danh chữ ký tệp. Khi lớp FileModificationListener bắt được sự kiện thay đổi dữ liệu, chương trình kiểm tra đối chiếu con trỏ cũ để tiếp tục đọc phần dữ liệu mới phát sinh thay vì đọc lại từ đầu. Trường hợp tệp bị làm mới hoặc xoay vòng (kích thước tệp nhỏ hơn vị trí con trỏ trước đó hoặc chữ ký tệp thay đổi), chương trình sẽ tự động thiết lập lại con trỏ về 0 để đọc tuần tự từ đầu tệp.


Kết luận

Khóa luận tốt nghiệp của sinh viên Huỳnh Gia Huy và Trương Tấn Sang đã giải quyết bài toán phòng chống mã độc cho các doanh nghiệp vừa và nhỏ bằng việc xây dựng một hệ thống bảo vệ đa tầng tự động dựa hoàn toàn trên các giải pháp mã nguồn mở. Công trình không chỉ tích hợp thành công các công cụ độc lập như Squid Proxy, SquidClamAV, Snort IPS và Cuckoo Sandbox mà còn phát triển các phân hệ phần mềm Java chuyên trách nhằm tự động hóa quy trình cập nhật danh sách chặn, chia sẻ dữ liệu chữ ký và cảnh báo theo thời gian thực. Mặc dù còn giới hạn trong phạm vi các giao thức Web, đề tài đã thể hiện giá trị ứng dụng kỹ thuật thực tiễn và tính chuẩn xác cao trong quy trình thiết kế hệ thống an toàn thông tin.