Bối cảnh và vấn đề nghiên cứu
Trong tiến trình phát triển của ngành công nghệ thông tin, sự tiến bộ của phần cứng, phần mềm và các hệ điều hành luôn song hành với sự gia tăng về số lượng và mức độ phức tạp của các loại mã độc (virus tin học). Đối với mỗi hệ điều hành xuất hiện từ DOS, Windows cho đến Linux, các dòng virus chuyên biệt cũng liên tục được tạo ra nhằm khai thác các đặc tính riêng của từng môi trường. Thực tiễn sử dụng máy tính cho thấy phần lớn người dùng và kỹ thuật viên rơi vào thế bị động, hoàn toàn phụ thuộc vào các phần mềm diệt virus thương mại có sẵn trên thị trường. Khi phần mềm diệt virus không thể phát hiện hoặc xử lý được các biến thể mã độc mới, người dùng gặp nhiều khó khăn do thiếu hiểu biết về bản chất hệ thống, cơ chế lây nhiễm và nguyên lý phá hoại của virus.
Xuất phát từ thực tế đó, đề tài "Hướng Dẫn Nhận Dạng và Phát Hiện Virus Máy Tính" được thực hiện trong khuôn khổ môn học Nhập Môn Lập Trình tại Đại học Công Nghiệp Thành phố Hồ Chí Minh (lớp DHTH18JTT), dưới sự hướng dẫn của giảng viên Huỳnh Tấn Hát. Nghiên cứu tiếp cận vấn đề theo nguyên tắc nền tảng: công việc diệt virus đa phần là thực hiện đảo ngược lại toàn bộ các thao tác mà virus đã can thiệp vào hệ thống.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài bao gồm:
- Hệ thống hóa lịch sử phát triển, bản chất kỹ thuật và phân loại chi tiết các chủng mã độc máy tính phổ biến.
- Phân tích cấu trúc chương trình, cơ chế chiếm quyền điều khiển và phương thức lây lan của từng dòng mã độc cụ thể (Boot Virus, File Virus, Macro Virus, Trojan, Sâu Internet).
- Đánh giá các kỹ thuật nhận dạng mã độc (dựa trên mẫu dấu hiệu signature, mã băm đại diện hash, quét chuỗi nhị phân, phân tích hành vi và kiểm soát thời gian thực) cùng các phương pháp phát hiện (Scanner, Checksum, Guard).
- Xây dựng quy trình kỹ thuật về dò tìm mã độc trong bộ nhớ hệ thống, trên ổ đĩa và các giải pháp khôi phục dữ liệu bị phá hoại.
- Triển khai thử nghiệm lập trình mô phỏng hành vi tự sao chép và tự động kích hoạt của mã độc trên môi trường hệ điều hành Windows bằng ngôn ngữ C/C++.
Đối tượng nghiên cứu của đề tài là các biến thể virus, trojan và sâu máy tính (Worm) hoạt động trên các hệ thống tệp tin, bộ nhớ RAM, phân vùng khởi động đĩa (MBR, Boot Sector) và mạng truyền thông máy tính. Phạm vi nghiên cứu bao quát từ các dòng virus trên nền DOS, Windows 95/98/2000/XP đến môi trường máy chủ Linux/Unix và các ứng dụng văn phòng Microsoft Office.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và khái niệm nền tảng
- Nguyên lý trò chơi Core War và sự tồn tại của virus: Khái niệm về các đoạn mã tự nhân bản (Organism) cạnh tranh bộ nhớ trong trò chơi Core War (1983) được Ken Thompson công bố, cùng chứng minh lý thuyết về sự tồn tại của virus máy tính của Tiến sĩ Frederik Cohen (1983).
- Quy ước định danh mã độc của CARO: Chuẩn phân loại và đặt tên virus do Tổ chức Nghiên cứu Virus Máy tính (Computer Antivirus Research Organization - CARO) ban hành năm 1991, xác lập hệ thống đặc trưng kỹ thuật về họ virus, mức độ nguy hiểm và nền tảng tác động thay vì các tên gọi sự kiện đại chúng.
- Cơ chế can thiệp ngắt hệ thống cấp thấp: Sử dụng bảng vector ngắt của BIOS và DOS nhằm kiểm soát hệ thống:
- Ngắt BIOS
Int 13h (đặc biệt là hàm 02h đọc sector, hàm 03h ghi sector) để can thiệp đĩa và Boot Record.
- Ngắt DOS
Int 21h (hàm 03Dh mở file, 03Fh đọc file, 040h ghi/cắt file, 042h di chuyển con trỏ file) để kiểm soát và lây nhiễm file thực thi.
- Các ngắt định thời và bàn phím
Int 08h, Int 09h.
- Cấu trúc lưu trữ và định dạng tệp tin: Kiến trúc Master Boot Record (MBR), bảng phân vùng Partition Table, cấu trúc sector Boot (512 bytes kết thúc bằng mã nhận dạng
0AA55h), bảng định vị tệp tin FAT, thư mục gốc Root Directory; cấu trúc tệp .COM (nạp tại PSP:100h) và tệp thực thi .EXE (Header MZ, Portable Executable Header, Entry Point).
- Cấu hình hệ thống Windows: Cơ chế khởi động qua Registry (
HKEY_LOCAL_MACHINE\...\Run, HKEY_CLASSES_ROOT\...\shell\open\command), các tệp cấu hình win.ini, system.ini và thư mục khởi động Startup.
Phương pháp nghiên cứu
- Phương pháp phân tích - tổng hợp kỹ thuật: Mổ xẻ cấu trúc mã lệnh nhị phân, so sánh cơ chế hoạt động giữa các chủng virus thường trú (Resident) và không thường trú (Transient).
- Phương pháp đối sánh chuỗi nhị phân và mã đại diện: Phân tích kỹ thuật tính toán mã băm (MD5, SHA1, SHA256) toàn phần hoặc từng phần (PE Header, Entry Point), kỹ thuật trích xuất chuỗi dấu hiệu (Signature string) theo vị trí offset tĩnh và offset tương đối.
- Phương pháp thiết kế và thực nghiệm mô phỏng: Xây dựng mã nguồn C++ trên môi trường Microsoft Visual C++ nhằm tái hiện hành vi can thiệp Registry, tạo tệp
autorun.inf và sao chép dữ liệu nhị phân.
Nguồn dữ liệu
Tài liệu sử dụng dữ liệu ghi nhận lịch sử các cuộc tấn công mã độc toàn cầu từ năm 1986 đến 2004, các bản tin cảnh báo an toàn thông tin của Microsoft (Microsoft Security Bulletins MS99-032, MS00-078, MS01-020), số liệu thống kê lây nhiễm từ Trung tâm An ninh mạng BKIS và hãng bảo mật Symantec.
Nội dung chính theo từng chương
Tổng quan về virus máy tính và lịch sử phát triển
Văn bản xác định ba tính chất đặc thù của virus tin học:
- Tính lây lan: Tính chất cốt lõi phân biệt virus với các phần mềm độc hại khác không có khả năng tự nhân bản.
- Tính ẩn: Cơ chế che giấu sự hiện diện trước phần mềm diệt virus thông qua tối ưu kích thước, nén mã lệnh hoặc kỹ thuật đa hình.
- Tính phá hoại: Mức độ tác động từ việc thử nghiệm, trêu chọc đến việc phá hủy dữ liệu, định dạng ổ đĩa hoặc gây nghẽn đường truyền mạng.
Tiến trình phát triển của virus máy tính được tổng hợp qua các mốc thời gian tiêu biểu:
| Năm |
Tên virus / Sự kiện |
Đặc điểm kỹ thuật và tác động |
| 1983 |
Core War / Frederik Cohen |
Ken Thompson công bố ý tưởng Core War; Cohen chứng minh sự tồn tại của virus. |
| 1986 |
Brain |
Virus đầu tiên trên thế giới xuất phát từ Pakistan, tấn công Boot Sector tại ĐH Delaware. |
| 1987 |
Lehigh & Jerusalem |
Lehigh xuất hiện tại ĐH Lehigh; Jerusalem lây lan tại IBM với tốc độ 500.000 bản sao/giờ. |
| 1988 |
Sâu Morris (Morris Worm) |
Do Robert Morris phát tán, khai thác mạng máy tính Mỹ, làm tê liệt khoảng 6.000 máy Unix. |
| 1989 |
AIDS Trojan |
Xuất hiện chương trình Trojan đánh cắp thông tin và phá hủy dữ liệu. |
| 1991 |
Tequila |
Virus đa hình (Polymorphic) đầu tiên, có khả năng tự biến đổi cấu trúc mã sau mỗi lần lây. |
| 1992 |
Michelangelo |
Gia tăng độ phức tạp của cơ chế đa hình, kích hoạt phá hoại hệ thống định kỳ. |
| 1995 |
Concept |
Virus macro đầu tiên, tấn công các hệ soạn thảo văn bản của Microsoft Office. |
| 1996 |
Boza |
Virus đầu tiên phá vỡ giả định an toàn và lây nhiễm thành công trên Windows 95. |
| 1999 |
Melissa & CIH (Chernobyl) |
Melissa lây lan 250.000 máy trong 4 ngày qua Outlook; CIH xóa sổ dữ liệu, gây hại gần 1 tỷ USD. |
| 2000 |
Love Letter & DoS |
Love Letter (Philippines) lây 55 triệu máy, thiệt hại 8,7 tỷ USD; xuất hiện tấn công từ chối dịch vụ. |
| 2001 |
Winux, Nimda, Code Red |
Winux lây trên cả Windows và Linux; Nimda kết hợp đa phương thức lây lan. |
| 2002 |
SharpA, SQLSpider, Perrun |
SharpA viết bằng C#; SQLSpider tấn công cơ sở dữ liệu SQL; Perrun lây nhiễm qua file ảnh. |
Phân loại và cấu trúc các dòng mã độc
Tài liệu phân loại virus máy tính thành 5 nhóm chính:
1. Boot Virus (B-Virus)
Môi trường lây nhiễm nằm trên Boot Record của đĩa mềm hoặc Master Boot Record (MBR)/Boot Record của đĩa cứng. Khi máy tính khởi động (sau quá trình POST tại địa chỉ 0:07C00h), B-Virus được nạp vào bộ nhớ trước hệ điều hành, chiếm ngắt Int 13h và lưu trú ở vùng nhớ cao.
- SB-Virus (Single Boot Virus): Chỉ chiếm 1 sector để thay thế Boot sector cũ, cất Boot sector nguyên bản vào các vị trí ít bị ghi đè (sector cuối Root Directory, sector cuối đĩa, hoặc các sector trống trên Track 0 của đĩa cứng).
- DB-Virus (Double Boot Virus): Mã virus dài hơn 512 bytes, sử dụng Boot sector giả để nạp phần mã còn lại từ các liên cung trống (được đánh dấu hỏng trên bảng FAT) hoặc các sector ẩn sau MBR.
- Cấu trúc B-Virus: Gồm phần khởi tạo (chép vào vùng nhớ cao, chiếm ngắt
13h, 08h, 09h) và phần thân (phần lây lan, phần gây nhiễu/ngụy trang, phần phá hoại và phần dữ liệu lưu tham số đĩa).
2. File Virus (F-Virus)
Chuyên lây nhiễm vào các tệp thực thi (.COM, .EXE, .OVL):
- Phương thức lây lan: Chèn đầu (thường áp dụng cho
.COM tại PSP:100h), Nối đuôi (phổ biến cho .EXE, dời điểm nhập Entry Point trỏ tới mã virus), Đè vùng trống (ghi đè vào các khoảng trống trong file để không làm tăng kích thước tệp).
- Phân loại: TF-Virus (Transient File Virus - không thường trú, chỉ lây lan trong lúc tệp thực thi đang chạy) và RF-Virus (Resident File Virus - thường trú trong bộ nhớ, đánh chặn ngắt
Int 21h để lây nhiễm mọi tệp được truy xuất).
3. Macro Virus
Được viết bằng các ngôn ngữ kịch bản (WordBasic, VBA), lây nhiễm qua các tệp mẫu (như NORMAL.DOT trong Microsoft Word). Macro Virus tự kích hoạt khi người dùng mở hoặc đóng văn bản thông qua các hàm tự động chuẩn: AutoOpen, AutoClose, AutoNew, AutoExit, AutoStart.
- Trường hợp W97M/Antivi (Hunter): Tồn tại trong macro mang tên "Hunter", hiển thị cảnh báo bằng tiếng Bồ Đào Nha, vô hiệu hóa tổ hợp phím
Alt+F8 và Alt+F11, kết nối Visual Basic Editor và sao chép chính nó thành tệp C:\X.BAS.
4. Chương trình Trojan (Ngựa thành Tơ-roa)
Đoạn mã độc hại không có tính năng tự lây lan, ngụy trang dưới dạng các tiện ích hấp dẫn, công cụ crack, phần mềm bẻ khóa hoặc gửi kèm qua ICQ (đổi phần mở rộng .exe mang biểu tượng .bmp) và email.
- Phân loại Trojan: Remote Access Trojan (mở cửa sau BackDoor lắng nghe cổng TCP/UDP để hacker điều khiển từ xa), Keylogger (ghi lại thao tác bàn phím như Kuang keylogger, Hooker), Trojan đánh cắp mật khẩu (Barok, Bario), FTP Trojan (mở cổng 21 cho phép tải dữ liệu không cần mật khẩu) và Trojan phá hủy hệ thống.
- Danh sách cổng kết nối của một số Trojan phổ biến:
| Tên Trojan |
Cổng dịch vụ |
Tên Trojan |
Cổng dịch vụ |
| Satanz Backdoor |
666 |
Masters Paradise |
30129 |
| WebEx |
1001 |
Portal of Doom |
3700 |
| Doly Trojan |
1011 |
WinCrash |
4092 |
| Psyber Stream Server |
1170 |
ICQ Trojan |
4590 |
| Ultors Trojan |
1234 |
Sockets de Troie |
5000 / 5001 |
| VooDoo Doll |
1245 |
Firehotcker |
5321 |
| FTP 99CMP |
1492 |
Blade Runner |
5400 / 5401 / 5402 |
| Shivka-Burka |
1600 |
Robo-Hack |
5569 |
| SpySender |
1807 |
DeepThroat |
2140 / 6670 / 6771 |
| Shockrave |
1981 |
GateCrasher |
6969 |
| BackDoor / Trojan Cow |
1999 / 2001 |
Silencer |
10001 |
5. Sâu Internet (Internet Worm)
Kết hợp khả năng phá hoại của virus, sự ẩn mình của Trojan và tốc độ lây lan nhanh qua mạng. Sâu tự động quét sổ địa chỉ (Address book), khai thác dịch vụ gửi thư SMTP riêng, mạng ngang hàng P2P, ổ lưu trữ USB hoặc các lỗ hổng tràn bộ đệm hệ thống.
- Sâu Morris (1988): Robert Morris thiết kế tỷ lệ nhân bản 40% bất kể máy tính đã bị lây hay chưa, khiến 6.000 máy Unix bị tê liệt, thiệt hại từ 10 đến 100 triệu USD. Morris bị phạt 3 năm tù treo, 400 giờ công ích và 10.000 USD tiền phạt theo Luật Lạm dụng và Gian lận Máy tính năm 1986.
- Sâu Kakworm (KAV): Khai thác lỗ hổng
MS99-032 trên Internet Explorer và Outlook Express thông qua mã JavaScript nhúng trong chữ ký HTML. Tự lưu tệp KAK.HTA vào thư mục Startup và tắt máy tính sau 17h định kỳ hàng tháng.
- Sâu Love Letter (2000): Phát tán tệp
LOVE-LETTER-FOR-YOU.TXT.vbs, ghi đè các tệp có đuôi .VBS, .JS, .HTA, .JPG, .MP3, gửi bản sao qua Microsoft Outlook và phần mềm chat mIRC.
- Sâu Melissa (1999): Tích hợp mã Macro trong tệp
.DOC, tự gửi thư đến 50 địa chỉ đầu tiên trong danh bạ Outlook và chèn chuỗi ký tự đặc biệt vào lúc 8 giờ 8 phút ngày 8 tháng 8.
- Sâu Nimda (2001): Khai thác lỗi IIS (
MS00-078, MS01-020), lây nhiễm qua duyệt web, chia sẻ mạng cục bộ, tạo tệp ẩn RICHED20.DLL, can thiệp quyền Administrator/Guest và chia sẻ ổ đĩa C:\.
- Sâu MyDoom (2004): Phát hiện ngày 26/01/2004 (đến Việt Nam ngày 27/01/2004), tạo ra 300 triệu thư rác, lây nhiễm 500.000 máy tại 142 quốc gia chỉ sau 3 ngày, mở 71 cổng (từ 3127 đến 3198) và thực hiện tấn công DoS làm nghẽn trang web Yahoo vào ngày 31/01/2004 cùng các website của SCO và Microsoft.
Kỹ thuật nhận dạng và phương pháp phát hiện virus
Kỹ thuật nhận dạng
- Nhận dạng chính xác mẫu (Signature-based detection): So sánh dữ liệu file với cơ sở dữ liệu mẫu virus đã biết. Cho độ chính xác cao nhưng không phát hiện được virus mới và dung lượng cơ sở dữ liệu phình to theo thời gian.
- Nhận dạng theo mã băm đại diện (Hash):
- Mã băm toàn file: Áp dụng thuật toán MD5, SHA1, SHA256 cho toàn bộ tệp tin. Đơn giản nhưng chi phí tính toán cao và tốc độ quét chậm khi tệp có dung lượng lớn.
- Mã băm theo phân vùng thông tin trọng yếu: Chỉ tính mã băm trên cấu trúc PE Header hoặc khu vực xung quanh điểm nhập Entry Point, tối ưu hóa tốc độ quét.
- Quét chuỗi nhị phân (Scan theo String):
- Offset tĩnh: Quét chuỗi nhị phân tại một vị trí cố định tuyệt đối trong file. Dễ triển khai nhưng dễ bị vô hiệu hóa nếu virus chèn thêm byte rác.
- Offset tương đối: Xác định vị trí chuỗi căn cứ theo công thức:
Địa chỉ Entry Point + Giá trị Offset. Ví dụ nghiên cứu thực nghiệm trên dòng W32.worm xác lập mẫu nhận dạng chung cho hai biến thể với chuỗi hex 64 75 6E 67 63 6F 69 00 tại vị trí Entry Point + 60.
- Nhận dạng hành vi đáng ngờ (Heuristic/Behavioral): Giám sát các tiến trình can thiệp trái phép vào vùng nhớ, chỉnh sửa bảng ngắt hoặc sửa đổi Registry để cảnh báo mã độc chưa có mẫu nhận diện.
- Kiểm soát liên tục (Real-time monitoring): Giám sát liên tục mọi thao tác đọc/ghi, sao chép tệp trong hệ thống theo thời gian thực.
- Kết hợp đa phương thức: Phối hợp kiểm soát quá trình khởi động BIOS/HĐH, khóa Registry và quét tệp tin để ngăn chặn triệt để tình trạng virus tái sinh sau khi khởi động lại.
Phương pháp phát hiện
- Quét (Scanner): Quét và so sánh mẫu nhận dạng định kỳ trên toàn bộ hệ thống lưu trữ.
- Kiểm tra tổng (Checksum): Tính toán và kiểm tra tính toàn vẹn của dữ liệu qua trị số checksum. Phương pháp này không áp dụng được cho Macro Virus (do tệp văn bản luôn thay đổi nội dung) và dễ bị qua mặt nếu virus đã tồn tại từ trước lần tính checksum đầu tiên.
- Canh phòng (Guard / TSR): Sử dụng các chương trình thường trú chặn bắt các lời gọi hàm đĩa/tệp tin, phát hiện các hành vi ghi đè file
.COM, .EXE hoặc ghi vào Boot Sector. Nhược điểm là phát sinh nhiều cảnh báo giả khi cài đặt phần mềm và làm giảm hiệu năng hệ thống.
Quy trình dò tìm, diệt virus và khôi phục dữ liệu
Quy trình xử lý mã độc được xác lập qua các bước:
[Khởi động từ đĩa sạch]
- Dò tìm trong bộ nhớ:
- Đối với B-Virus: So sánh tổng dung lượng bộ nhớ do BIOS báo cáo với dung lượng bộ nhớ thực tế. Nếu có sự thiếu hụt và vector ngắt
Int 13h trỏ về vùng nhớ cao chứa mã nguy hiểm, kết luận có B-Virus thường trú.
- Đối với RF-Virus: Kiểm tra vector ngắt
Int 21h. Nếu ngắt trỏ về vùng nhớ bất thường hoặc trả lời mã định danh riêng của virus, tiến hành khống chế trước khi thao tác trên đĩa.
- Dò tìm trên đĩa: Sử dụng ngắt
Int 13h hàm 02h để đọc Boot Sector vào bộ đệm, sau đó dùng ngắt Int 21h hàm 03Dh (mở file) và 03Fh (đọc file) để rà quét chuỗi nhận dạng của F-Virus, Trojan và Worm.
- Diệt virus và khôi phục dữ liệu:
- B-Virus: Xác định vị trí cất giấu Boot Sector nguyên thủy, đọc sector này vào bộ đệm bằng ngắt
Int 13h hàm 02h, kiểm tra tính hợp lệ và ghi phục hồi đè lên Boot Sector bị nhiễm bằng hàm 03h; giải phóng các liên cung bị đánh dấu hỏng trên bảng FAT (đối với DB-Virus).
- Macro Virus: Sử dụng hàm
040h của ngắt Int 21h hoặc trình soạn thảo để xóa bỏ các macro độc hại khỏi tệp mẫu.
- F-Virus dạng
.COM/.BIN: Giải mã vị trí, sử dụng ngắt Int 21h hàm 042h di chuyển con trỏ tệp đến đầu đoạn mã virus và dùng hàm 040h để cắt bỏ, ghi lại cấu trúc tệp ban đầu (nếu lây chèn đầu thì đọc từ sau đoạn mã virus bằng hàm 03Fh rồi ghi lại bằng hàm 040h).
- F-Virus dạng
.EXE: Phục hồi cấu trúc Exe Header ban đầu, tính toán lại dấu hiệu nhận dạng MZ, tổng số trang và số byte lẻ trong trang cuối của tệp tin.
- Trojan: Triệt tiêu khả năng tự kích hoạt bằng cách xóa các đường dẫn trong thư mục Startup (
C:\Windows\Start Menu\Programs\Startup), tệp win.ini (load=, run=), system.ini (shell=), Autoexec.bat, và các khóa Registry (HKEY_LOCAL_MACHINE\...\Run, HKEY_CLASSES_ROOT\exefile\shell\open\command với giá trị %1%*, các khóa trong Mirabilis ICQ và ActiveX StubPath).
- Sâu Internet: Phân tích tệp thực thi, truy tìm các tiến trình phát tán, xóa bỏ khóa Registry tự sinh và quét bóc tách mã độc theo chuỗi nhận diện đại diện.
Thiết kế và triển khai
Tài liệu cung cấp phần lập trình thực nghiệm xây dựng chương trình mô phỏng hành vi tự sao chép và tự động kích hoạt của virus trên hệ điều hành Windows XP bằng ngôn ngữ Visual C++:
Cấu trúc mã nguồn thực nghiệm
Chương trình khai báo các thư viện chuẩn và định nghĩa các tham số điều khiển:
- Khai báo tiền xử lý:
#include "stdafx.h", #define SVCHOST_NUM 6, #define RUBBISH_NUM 5, #define REMOVE_NUM 5.
- Cấu hình tự động thực thi qua tệp Autorun (
autorun.inf):
Khai báo chuỗi autorun để tạo tệp kích hoạt tự động khi cắm ổ đĩa:
[AutoRun]
open="SVCHOST.com /s"
shell\open\Command="SVCHOST.com /s"
shell\explore\Command="SVCHOST.com /s"
- Cấu hình can thiệp Registry (
regadd):
Sử dụng tập lệnh .reg để thiết lập tự khởi động cùng hệ thống:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"wjview32"="C:\\windows\\wjview32.com /s"
- Hàm sao chép tệp tin nhị phân (
copy):
Hàm thực hiện sao chép nguyên trạng từng byte từ tệp nguồn (infile) sang tệp đích (outfile) phục vụ cơ chế nhân bản:
int copy(char *infile, char *outfile) {
FILE *input, *output;
char temp;
if (strcmp(infile, outfile) != 0 &&
((input = fopen(infile, "rb")) != NULL) &&
((output = fopen(outfile, "wb")) != NULL)) {
while (!feof(input)) {
fread(&temp, 1, 1, input);
fwrite(&temp, 1, 1, output);
}
fclose(input);
fclose(output);
return 1;
}
return 0;
}
Kết quả và đóng góp
- Hệ thống hóa toàn diện lý thuyết mã độc: Cung cấp bức tranh phân loại chi tiết 5 dòng mã độc chính cùng diễn biến lịch sử các vụ bùng phát từ năm 1983 đến 2004 kèm số liệu thiệt hại thực tế (Sâu Morris lây 6.000 máy Unix; Love Letter gây thiệt hại 8,7 tỷ USD; MyDoom lây lan 500.000 máy tính tại 142 quốc gia sau 3 ngày và mở 71 cổng dịch vụ).
- Làm rõ cơ chế can thiệp hệ thống cấp thấp: Trình bày chi tiết cách thức mã độc chiếm quyền điều khiển thông qua vector ngắt BIOS
Int 13h và DOS Int 21h, cấu trúc sector đĩa (MBR, Boot sector), cấu trúc file thực thi (.COM, .EXE) và hệ thống Registry của Windows.
- Chuẩn hóa kỹ thuật phát hiện và mẫu dấu hiệu: Minh họa quy trình trích xuất chuỗi nhận dạng nhị phân theo offset tương đối đối với biến thể dòng
W32.worm (chuỗi hex 64 75 6E 67 63 6F 69 00 tại Entry Point + 60).
- Đề xuất quy trình phục hồi dữ liệu ngược: Thiết lập nguyên tắc và quy trình các bước khôi phục phân vùng khởi động gốc, tái tạo Header file
.EXE và loại bỏ điểm neo khởi động của Trojan.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế:
- Các kỹ thuật phân tích và can thiệp ngắt cấp thấp (
Int 13h, Int 21h) chủ yếu tương thích với kiến trúc 16-bit/32-bit trên hệ điều hành MS-DOS và các dòng Windows cũ (Windows 95/98/XP).
- Chưa đi sâu giải quyết thuật toán giải mã tự động đối với các dòng virus đa hình phức tạp cao (Polymorphic/Metamorphic engine).
- Phần mã nguồn thực nghiệm mới dừng lại ở mức mô phỏng cơ chế nhân bản tệp nhị phân cơ bản và ghi nhận Registry, chưa xây dựng hoàn chỉnh một bộ quét (Scan Engine) độc lập có giao diện người dùng.
- Hướng nghiên cứu tiếp:
- Nâng cấp kỹ thuật phân tích sang các hệ điều hành thế hệ mới với các cơ chế bảo vệ nâng cao (như UAC, DEP, ASLR trên kiến trúc 64-bit).
- Phát triển module phân tích hành vi Heuristic nâng cao dựa trên môi trường ảo hóa (Sandbox) để phát hiện mã độc chưa biết.
Giá trị tham khảo
Tài liệu là nguồn tư liệu hữu ích cho sinh viên thuộc các chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm, Khoa học máy tính và An toàn thông tin, đặc biệt trong các học phần:
- Nhập môn lập trình & Kỹ thuật lập trình C/C++: Tham khảo kỹ thuật xử lý tệp nhị phân cấp thấp.
- Hợp ngữ và Kiến trúc máy tính: Tham khảo cơ chế quản lý ngắt BIOS/DOS, cấu trúc bộ nhớ và phân vùng đĩa cứng.
- Hệ điều hành & An toàn hệ thống thông tin: Tham khảo các phương thức lây lan, cơ chế ẩn mình và kỹ thuật trích xuất chữ ký nhận dạng virus.
Câu hỏi thường gặp
1. Nguyên tắc cốt lõi trong việc xây dựng giải pháp diệt virus máy tính theo tài liệu là gì?
Nguyên tắc cốt lõi là làm ngược lại toàn bộ những gì virus đã thực hiện trên hệ thống. Kỹ thuật viên phải nắm rõ cơ chế lây nhiễm của từng loại virus để tiến hành giải mã, khôi phục lại các sector khởi động nguyên bản, tái tạo các byte dữ liệu ban đầu bị chiếm giữ ở đầu hoặc cuối file thực thi, và dọn dẹp các điểm neo tự động kích hoạt trong cấu hình hệ thống.
2. Sự khác biệt cơ bản giữa Single Boot Virus (SB-Virus) và Double Boot Virus (DB-Virus) là gì?
SB-Virus chỉ chiếm đúng 1 sector để thay thế Boot sector cũ và cất Boot sector thật vào một vị trí cố định trên đĩa (như sector cuối thư mục gốc hoặc track 0). Trong khi đó, DB-Virus có kích thước mã lệnh lớn hơn 512 bytes, sử dụng một Boot sector giả để nạp phần mã còn lại được cất giấu trong các liên cung trống (được đánh dấu hỏng trên bảng FAT) hoặc các sector ẩn sau MBR.
3. Ưu điểm của kỹ thuật nhận dạng virus theo vị trí Offset tương đối so với Offset tĩnh là gì?
Offset tương đối (ví dụ Entry Point + Offset) cho phép mở rộng dải nhận dạng họ virus. Khi tác giả virus chèn thêm hoặc bớt một số byte rác vào tệp nhị phân nhằm thay đổi vị trí tuyệt đối của chuỗi mã độc, phương pháp offset tương đối căn cứ theo điểm nhập chương trình vẫn có thể nhận diện chính xác biến thể mà không bị đánh lừa như phương pháp offset tĩnh.
4. Macro Virus W97M/Antivi (Hunter) can thiệp vào Microsoft Word 97 như thế nào?
W97M/Antivi lây nhiễm vào các tệp văn bản của Word 97 thông qua macro mang tên "Hunter". Khi mở tài liệu, virus hiển thị hộp thoại bằng tiếng Bồ Đào Nha yêu cầu loại bỏ các macro có sẵn của người dùng, vô hiệu hóa hai tổ hợp phím tắt quản lý macro là Alt+F8 và Alt+F11, đồng thời tự sao chép mã nguồn của nó thành tệp C:\X.BAS.
5. Sâu Morris (1988) đã mắc phải lỗi thiết kế kỹ thuật nào khiến tốc độ lây lan vượt khỏi tầm kiểm soát?
Để tránh bị vô hiệu hóa bởi các tiến trình đánh lừa trả lời "đã lây nhiễm", Robert Morris đã lập trình cho sâu tự động nhân đôi với xác suất 40% trong mọi trường hợp kiểm tra. Tỷ lệ nhân bản này quá cao khiến sâu lây nhiễm lặp đi lặp lại nhiều lần trên cùng một máy tính, chiếm dụng toàn bộ tài nguyên xử lý và làm tê liệt khoảng 6.000 máy chủ Unix trên mạng Internet thời điểm đó.
Kết luận
Đồ án "Hướng Dẫn Nhận Dạng và Phát Hiện Virus Máy Tính" cung cấp một khảo cứu chi tiết và có hệ thống về cấu trúc mã lệnh, phương thức lây lan và mức độ nguy hại của các chủng mã độc kinh điển trong lịch sử máy tính. Thông qua việc phân tích chuyên sâu các cơ chế ngắt cấp thấp, cấu trúc tệp nhị phân và kỹ thuật nhận dạng dấu hiệu, công trình đã xác lập quy trình xử lý và khôi phục dữ liệu mang tính thực tiễn cao. Đây là tài liệu học thuật nền tảng, hỗ trợ đắc lực cho sinh viên ngành công nghệ thông tin trong việc nghiên cứu an toàn hệ thống và kỹ thuật lập trình phòng chống mã độc.