Là thuỷ tổ của virus máy tính, boot virus lây vào các mẫu tin khởi động (MTKĐ, boot record) trên hệ thống đĩa.
Trang 1Khảo sát virus máy tính
1 Các loại virus máy tính
1.1 Boot virus
Là thuỷ tổ của virus máy tính, boot virus lây vào các mẫu tin khởi động (MTKĐ, boot record) trên hệ thống đĩa Đối với đĩa mềm, MTKĐ nằm trên sector đầu tiên thuộc track 0, side 0 của đĩa (boot sector) Khi khởi động máy bằng đĩa
mềm, sau quá trình tự kiểm tra (POST - Power On Self Test), thường trình khởi động máy trong ROM-BIOS sẽ đọc và nạp 512 byte trên boot sector vào bộ nhớ rồi
trao quyền, không cần biết đoạn mã này sẽ thực hiện những công việc gì
Nguyên tắc của boot virus là thay thế MTKĐ bằng đoạn mã của nó để giành quyền khởi động máy Khi được trao quyền, boot virus sẽ thường trú, khống chế các tác vụ đọc/ghi đĩa rồi nạp tiếp phần khởi động gốc (Hình P1.1) Quá trình lây nhiễm của boot virus trên đĩa mềm được minh họa như sau:
Đối với đĩa cứng, có 2 MTKĐ: master boot nằm ở sector đầu tiên thuộc track
0, side 0 và boot sector nằm ở sector đầu tiên của track 0, side 1 Trên đĩa cứng, boot virus có thể lây vào master boot hoặc boot sector Quá trình minh họa như sau:
Đĩa cứng sạch: POST→ Master boot→ Boot sector → HĐH
Đĩa cứng nhiễm: POST → Boot virus→Master boot→ Boot sector→ HĐH, hoặc POST → Master boot → Boot virus → Boot sector → HĐH
Trang 2Do được kích hoạt trước HĐH nên boot virus có thể lây nhiều loại HĐH Tuy nhiên chúng cũng gặp nhiều trở ngại như:
- Cơ hội kích hoạt: người dùng ít khi khởi động máy từ đĩa mềm
- Cơ hội lây lan: phần lớn các chip ROM được trang bị chức năng phát hiện tác vụ ghi vào boot sector hoặc cấm khởi động từ đĩa mềm
- Cơ hội tồn tại: do dung lượng nhỏ nên đĩa mềm ngày càng ít được sử dụng Hình P1.2a là MTKĐ chuẩn của Windows Hình P1.2b là MTKĐ nhiễm virus
61 BF 00 07 E8 28 01 72 3E 38 2D 74 17 60 B1 0B BE D8 7D F3 A6 61 74 3D 4E 74 09 83 C7 20 3B FB
72 E7 EB DD FE 0E D8 7D 7B A7 BE 7F 7D AC 98 03 F0 AC 98 40 74 0C 48 74 13 B4 0E BB 07 00 CD
10 EB EF BE 82 7D EB E6 BE 80 7D EB E1 CD 16 5E 1F 66 8F 04 CD 19 BE 81 7D 8B 7D 1A 8D 45 FE 8A 4E 0D F7 E1 03 46 FC 13 56 FE B1 04 E8 C2 00 72 D7 EA 00 02 70 00 52 50 06 53 6A 01 6A 10 91 8B 46 18 A2 26 05 96 92 33 D2 F7 F6 91 F7 F6 42 87 CA F7 76 1A 8A F2 8A E8 C0 CC 02 0A CC B8 01
02 80 7E 02 0E 75 04 B4 42 8B F4 8A 56 24 CD 13 61 61 72 0A 40 75 01 42 03 5E 0B 49 75 77 C3 03 18
01 27 0D 0A 49 6E 76 61 6C 69 64 20 73 79 73 74 65 6D 20 64 69 73 6B FF 0D 0A 44 69 73 6B 20 49 2F 4F 20 65 72 72 6F 72 FF 0D 0A 52 65 70 6C 61 63 65 20 74 68 65 20 64 69 73 6B 2C 20 61 6E 64 20 74
68 65 6E 20 70 72 65 73 73 20 61 6E 79 20 6B 65 79 0D 0A 00 00 49 4F 20 20 20 20 20 20 53 59 53 4D
53 44 4F 53 20 20 20 53 59 53 7F 01 00 41 BB 00 07 60 66 6A 00 E9 3B FF 00 00 55 AA
Hình P1.2a: M ẫu tin khởi động chuẩn của hệ điều hành Windows
Kiểm tra thiết bị
- Trao quyền cho MTKĐ
Mẫu tin khởi động
Trang 3EB 3C 90 2C 27 6A 79 76 49 48 43 00 02 01 01 00 02 E0 00 40 0B F0 09 00 12 00 02 00 00 00 00 00 00
00 00 00 00 00 29 00 ED 07 10 4E 4F 20 4E 41 4D 45 20 20 20 20 46 41 54 31 32 20 20 20 33 C9 8E D1
BC F0 7B 8E D9 B8 00 20 8E C0 FC BD 00 7C 38 4E 24 7D 24 8B C1 99 E8 3C 01 72 1C 83 EB 3A 66 A1 1C 7C 26 66 3B 07 26 8A 57 FC 75 06 80 CA 02 88 56 02 80 C3 10 73 EB 33 C9 8A 46 10 98 F7 66
16 03 46 1C 13 56 1E 03 46 0E 13 D1 8B 76 11 60 89 46 FC 89 56 FE B8 20 00 F7 E6 8B 5E 0B 03 C3
48 F7 F3 01 46 FC 11 4E FE 61 BF 00 00 E8 E6 00 72 39 26 38 2D 74 17 60 B1 0B BE A1 7D F3 A6 61
74 32 4E 74 09 83 C7 20 3B FB 72 E6 EB DC A0 FB 7D B4 7D 8B F0 AC 98 40 74 0C 48 74 13 B4 0E
BB 07 00 CD 10 EB EF A0 FD 7D EB E6 A0 FC 7D EB E1 CD 16 CD 19 26 8B 55 1A 52 B0 01 BB 00 00 E8 3B 00 72 E8 5B 8A 56 24 BE 0B 7C 8B FC C7 46 F0 3D 7D C7 46 F4 29 7D 8C D9 89 4E F2 89 4E F6 C6 06 96 7D CB EA 03 00 00 20 0F B6 C8 66 8B 46 F8 66 03 46 1C 66 8B D0 66 C1 EA 10 EB 5E 0F B6 C8 4A 4A 8A 46 0D 32 E4 F7 E2 03 46 FC 13 56 FE EB 4A 52 50 06 53 6A 01 6A 10 91 8B 46 18 96
92 33 D2 F7 F6 91 F7 F6 42 87 CA F7 76 1A 8A F2 8A E8 C0 CC 02 0A CC B8 01 02 80 7E 02 0E 75 04 B4 42 8B F4 8A 56 24 CD 13 61 61 72 0B 40 75 01 42 03 5E 0B 49 75 06 F8 C3 41 BB 00 00 60 66 6A
- Xác định điểm vào lệnh (IP-Instruction Pointer) gốc của vật chủ
- Ghép mã lệnh virus vào vật chủ Tùy theo định dạng/tình trạng của vật chủ,
vị trí ghép có thể ở đầu, giữa hoặc ở cuối vật chủ
- Thay điểm vào lệnh của vật chủ trỏ đến địa chỉ mã lệnh của virus
Khi vật chủ thi hành, file virus sẽ thực hiện các thao tác:
- Kiểm tra sự có mặt của virus trong vùng nhớ Nếu chưa thường trú, chúng tiến hành sao chép vào vùng nhớ đã được hệ điều hành cấp phát
- Tìm kiếm các vật chủ khác để lây vào
- Thực hiện các hoạt động đã được lập trình (phá hoại, do thám, định thời…)
- Phục hồi điểm vào lệnh gốc và trao quyền cho vật chủ
Trang 4Nhược điểm của file virus là dễ bị phát hiện do kích thước file thay đổi và chỉ lây mạnh trên các HĐH DOS và Windows 9x/Me Trên Windows NT/2000/XP, chúng thường vấp phải hàng rào bảo vệ hạt nhân hệ thống Kernel32 Vì vậy file virus dần được hacker thay bằng các hình thức khác như worm, trojan horse…
1.3 Macro virus
Để tự động hóa thao tác sử dụng của người dùng, hãng Microsoft đã tích hợp
tập lệnh VBA (Visual Basic Application) vào bộ công cụ Microsoft Office Theo CSI (Cisco Safe Implementation), macro virus được định nghĩa như sau:
“Macro virus là loại virus máy tính được viết bằng ngôn ngữ VBA, thực thi trong môi trường của Microsoft Word hoặc Excel Macro là tập lệnh giúp tự động hóa tác vụ của người dùng” ( http://www.preplogic.com )
Các macro virus lợi dụng các template trong môi trường tương tác VBA làm nơi lưu trú Khi người dùng mở tư liệu mới, các thủ tục của virus trong template sẽ
kết nhập vào tư liệu hiện thời dưới dạng các thủ tục VBA đã biên dịch (Hình P1.4) Tùy theo phiên bản Microsoft Office, tập mã thủ tục VBA sẽ được chuyển dạng tương thích đi lên, làm biến đổi mã lệnh của macro virus
1.4 Worm, sâu trình
Theo Vesselin Bonchev, worm (tạm dịch sâu trình) là:
“Các chương trình có khả năng tạo bản sao chính nó (thường là qua mạng máy tính) như một chương trình (hoặc tập các chương trình) độc lập, không phụ thuộc vào sự tồn tại của ứng dụng chủ”
Hình P1.3: Kỹ thuật lây nhiễm của file virus
a Tập tin chương trình trước
khi nhiễm file virus
IP
b Tập tin chương trình sau
khi nhiễm file virus
Virus IP
IP
Trang 5Khai thác các dịch vụ vận chuyển dữ liệu như HTTP (HyperText Transfer
Protocol), FTP (File Transfer Protocol), IRC (Internet Relay Chat), DNS (Domain Name Service), Drive Sharing, Email, Packet Routing…, sâu trình len lõi vào các hệ
thống đích để tìm cơ hội do thám, đánh cắp, phá hoại dữ liệu Khác với virus, sâu trình không đính vào các ứng dụng khác mà tồn tại trên hệ thống như một ứng dụng độc lập (hình P1.5) Sâu trình khó phát hiện vì chúng có định dạng giống các ứng dụng hợp thức Tuy nhiên sâu trình cũng có nhược điểm Do đứng độc lập nên khả năng tự kích hoạt bị hạn chế và dễ bị tiêu diệt Kịch bản chung của sâu trình là đăng
ký kích hoạt khi hệ điều hành hoàn tất quá trình khởi động
1.5 Trojan horse
Thuật ngữ “trojan horse” (mượn từ điển tích “ngựa gỗ thành Troie” trong
thần thoại Hy Lạp, gọi tắt là trojan) là tên gọi các loại mã độc do người lập trình cài sẵn vào ứng dụng Ban đầu, trojan là công cụ của người lập trình Khi phát hiện các trường hợp không hợp thức (như sao chép lậu, bẻ khóa…), các đoạn mã này sẽ tự
Microsoft Word
Virus macro
Infected doc
Virus macro Infected doc
(1)
(2)
Infected doc
Virus macro (5)
Microsoft Word
Virus macro Benign doc
(4)
Virus macro Template
(3)
Hình P1.4: Quy trình lây nhiễm của macro virus
1 Tập tin tư liệu chứa mã lệnh virus macro
2 Ứng dụng Office mở tư liệu nhiễm virus macro
3 Tập thủ tục VBA của virus kết nhập vào template
4 Virus macro trong template kết nhập vào các đối tượng mới
5 Hàng loạt tư liệu khác bị nhiễm virus macro
Trang 6kích hoạt để trừng trị người dùng như xóa ứng dụng, làm treo máy… Về sau ý nghĩa của trojan càng mờ nhạt Lợi dụng Internet, các hacker tung lên mạng các
“tiện ích” (có cài sẵn trojan) để lừa người dùng download về sử dụng (ví dụ các phần mềm bẻ khóa, kích hoạt tài khoản xem phim trực tuyến…) Khi chạy loại “ứng dụng” này, các đoạn mã trojan sẽ thực thi các lệnh của hacker CSI định nghĩa
trojan horse là “loại chương trình được viết như tiện ích hữu hiệu, nhưng thực tế lại
là công cụ tấn công” ( http://www.preplogic.com )
Trojan không tự lây mà lan truyền nhờ thao tác download và sao chép của người dùng (hình P1.6) Giống sâu trình, trojan có định dạng ứng dụng nên việc
phát hiện gặp nhiều trở ngại Trong một họ (family), trojan khởi thủy được gọi là mầm độc (germs) Thông thường, mã của mầm độc dùng để lắp ghép cho con cháu
Network
Application Worm
Network Application
Network Application Worm
Network Application
Physical Network Virtual Network Virtual Network
Hình P1.5: Worm lan truyền trên hệ thống mạng
Physical Computer Physical Computer
Hình P1.6: Cơ chế lan truyền của trojan horse
Trang 7Đôi khi trojan còn chứa trong lòng nó một loại mã độc khác (như sâu trình
chẳng hạn) Khi thực thi, loại trojan này (gọi là dropper) sẽ kết xuất mã độc thứ cấp
ra hệ thống đích (tái sinh) mỗi khi một trong các bản sao của chúng bị tiêu diệt
Injector là một dạng cải tiến của dropper: thay vì kết xuất ra bộ nhớ ngoài, mã độc
được cài vào bộ nhớ trong để tránh bị phát hiện Kết hợp giữa trojan và sâu trình, dropper và injector có đặc tính lây lan nên gần với virus hơn
Trapdoor (hay backdoor) rất được giới hacker ưa chuộng Khi lây vào hệ
thống, backdoor có nhiệm vụ mở cổng (port, điểm truy cập ứng dụng), làm nội gián
chờ đáp ứng thao tác quét cổng của hacker Khi nhận được tín hiệu, backdoor khống chế hàng rào bảo vệ hệ thống, dọn đường đón các đợt thâm nhập từ bên ngoài
Gần đây xuất hiện loại trojan đặc biệt nguy hiểm gọi là rootkit Ban đầu, rootkit là tên gọi các bộ công cụ (kit) giúp người quản trị nắm quyền điều khiển hệ thống ở mức cao nhất (root) Trong tay hacker, rootkit trở thành công cụ đắc lực để
đánh cắp mật khẩu truy nhập, thu thập thông tin trên máy nạn nhân hoặc che đậy
các hoạt động thâm nhập bất hợp pháp Hacktool là một dạng rootkit sơ cấp Cao cấp hơn có các loại rootkit thám báo như keylogger (theo dõi hoạt động bàn phím),
sniffer (theo dõi gói tin qua mạng), filehooker (theo dõi truy nhập tập tin)…
1.6 Malware
Malware là tên gọi chung các loại phần mềm độc hại như:
• Adware: loại phần mềm tự động bật (popup) các cửa sổ quảng cáo, thay đổi
các thiết lập hệ thống…, gây phiền phức cho người sử dụng
• Spyware: loại phần mềm gián điệp, săn lùng thông tin thương mại, đánh cắp
thông tin cá nhân như địa chỉ e-mail, độ tuổi, giới tính, thói quen mua sắm…
• Pornware: loại phần mềm đồi trụy phát tán từ các trang web khiêu dâm, tự
động bật lên các hình ảnh gợi dục, phim sex Pornware rất nguy hiểm cho trẻ
em và thanh thiếu niên, làm suy đồi đạo đức xã hội
• Riskware: phần mềm trôi nổi, không được kiểm định chất lượng Riskware
tiềm ẩn nhiều lỗi nghiêm trọng, làm suy giảm chất lượng phục vụ của hệ thống, có nguy cơ ảnh hưởng dữ liệu của người dùng
Trang 8Trong lĩnh vực anti-virus, nghiên cứu malware là bài toán sôi nổi và khá lý thú Hình P1.7 mô tả nguồn gốc, quá trình phát triển của các loại virus máy tính và
mã độc hiện nay
2 Khảo sát virus máy tính
Việc khảo sát virus máy tính gặp nhiều khó khăn bởi:
- Các anti-virus chưa thống nhất về cách phân loại và đặt tên virus
- Phần lớn các anti-virus không công bố danh sách đầy đủ các virus đã cập nhật mà chỉ cung cấp các công cụ tìm kiếm online một virus cụ thể Bảng P1.1 thống kê danh sách 65.824 virus máy tính lây trên hệ điều hành DOS/Windows của hãng Kaspersky Cột “Kiểu dữ liệu” có được nhờ quá trình phân tích mã các mẫu virus đại diện lớp Cột “Tỷ lệ %” được đưa vào để tính mật độ các loại virus DOS/Windows đã xuất hiện trong 10 năm (từ 1995 đến 2004)
Kết quả phân tích thống kê cho thấy virus máy tính có thể được phân loại theo bốn nhóm chính (program, text, binary và macro), đặt cơ sở khoa học cho ý tưởng phân loại virus theo đặc trưng dữ liệu của đề tài (xem Chương 2)
Trang 9Bảng P1.1: Thống kê các loại virus máy tính (1995-2004)
Trang 10Các định dạng dữ liệu nhiễm virus máy tính
1 Giới thiệu
Nghiên cứu virus máy tính luôn gắn với việc phân tích các định dạng dữ liệu
vật chủ Mỗi loại virus chỉ lây vào một số định dạng dữ liệu nhất định Phân tích các
định dạng dữ liệu vật chủ là cơ sở để phân loại dữ liệu (quan tâm đến các điểm dữ
liệu có nguy cơ nhiễm virus), giảm tải quá trình chẩn đoán (loại bớt các đối tượng
chắc chắn sạch khỏi không gian chẩn đoán) và gia tăng độ tin cậy của hệ thống
(giảm nguy cơ bỏ sót đối tượng chẩn đoán) Các định dạng vật chủ chứa mã thi
hành có thể nhiễm virus gồm: tập tin văn bản, tập tin chương trình, tập tin MS
Office và mẫu tin khởi động (Bảng P2.1)
Bảng P2.1: Các định dạng vật chủ chứa mã thi hành có thể nhiễm virus máy tính
1 Tập tin văn bản
File virus Worm Trojan
Tập tin lệnh COM
2 Tập tin chương trình
File virus Worm
Mẫu tin khởi động hệ
Mẫu tin khởi động hệ
Mẫu tin khởi tạo phân
Trang 112 Các định dạng dữ liệu nhiễm virus máy tính
2.1 Tập tin văn bản
Tập văn bản (text file) là tổ chức file đơn giản, được chia làm hai loại:
- Tập văn bản 7 bit: chứa các ký tự ASCII chuẩn (7 bit) có thể gõ trực tiếp từ bàn phím, mã từ 32 (khoảng trắng) đến 126 (ký tự ~) Tập văn bản 7 bit dùng chứa nội dung chương trình nguồn như PAS, ASM, C, CPP, JS, VBS…
- Tập văn bản 8 bit: có thêm các ký tự ASCII mở rộng 8 bit (từ 128 đến 255)
sử dụng ký tự graphic trang trí bảng, hình hộp hoặc thiết lập font chữ riêng
Do hiện nay các trình biên dịch/thông dịch lệnh chỉ hỗ trợ các ký tự 7 bit nên chưa phát hiện câu lệnh virus trong các tập tinvăn bản 8 bit
Để thực thi các câu lệnh trong tập tin văn bản 7 bit, hệ thống phải dịch chúng sang mã máy Do không phải hệ thống nào cũng có đủ bộ dịch lệnh của tất cả các ngôn ngữ lập trình, nên chỉ vài loại tập tin văn bản 7 bit là có nguy cơ nhiễm virus (Bảng P2.2), đó là các tập tin chứa tập lệnh của các ngôn ngữ lập trình được tích hợp sẵn trong hệ thống (Hình P2.1)
Bảng P2.2: Các loại tập tin văn bản nhiễm virus máy tính
Dấu hiệu nhận dạng các tập văn bản 7-bit có thể nhiễm virus là:
- Dữ liệu byte (32-127)
- Chứa các từ khóa của các ngôn ngữ lập trình tích hợp sẵn trong hệ thống (Java Script, VB Script, HTML Application, Command Interpreter…)
Trang 12Bảng P2.3: Các loại tập tin chương trình
trực tiếp
NE-EXE
PE-EXE
Executable
Hình P2.1: Phân loại, xác định nhóm tập tin văn bản nhiễm virus
Tập văn bản
Văn bản 7-bits
Văn bản 8-bits
Tập lệnh của các ngôn ngữ lập trình khác Chương trình nguồn
Văn bản 7-bits khác
Tập lệnh dành cho lõi biên dịch, thông dịch sẵn có của hệ thống
Trang 13Phân tích định dạng tập tin là hoạt động khá phổ biến trong nhiều lĩnh vực phần mềm (đồ họa, âm thanh, liên lạc, bảo mật, hệ thống…) vốn tỉ mỉ, tốn nhiều thời gian và công sức Đã có nhiều tài liệu nói về các loại định dạng tập tin, nên phần này không đi sâu phân tích kỹ thuật mà tập trung vào công tác phân loại (Bảng P2.3) và nhận dạng (Hình P2.2) Tham khảo thêm ở địa chỉ http://www.wotsit.org.
2.2.1 Định dạng COM (DOS Command)
COM là định dạng thi hành đơn giản trong mô hình phân đoạn segment:offset của MSDOS Các tập tin COM chứa hình ảnh dữ liệu của đoạn bộ nhớ lúc file được nạp vào địa chỉ Segment:100h Do hoạt động trong một phân đoạn nên kích thước file COM giới hạn trong phạm vi 64KB Khi lây vào file COM, virus sẽ thay điểm vào lệnh đầu tiên bằng lệnh gọi (mã máy E8h) hoặc lệnh nhảy (EBh nhảy gần dưới 128 byte, E9h nhảy xa trên 128 byte) đến thủ tục xử lý của virus (Hình P2.3) Đặc điểm nhận dạng các tập COM có thể nhiễm virus như sau:
- Kích thước dưới 64KB
- Dữ liệu byte trải dài trên bộ mã ASCII (0-255)
- Có lệnh nhảy (E9h, EBh) hoặc lệnh gọi (E8h) đầu file
Hình P2.2: Phân loại các tập tin chương trình
Trang 14Trong thời kỳ đầu của DOS, do đơn giản và nhỏ gọn nên định dạng COM rất
dễ bị file virus tấn công Do hạn chế về kích thước và khả năng truy nhập bộ nhớ
nên các hacker đã chuyển hướng tấn công sang định dạng EXE (Executable File)
2.2.2 Định dạng EXE (DOS Executable)
Định dạng EXE cho phép mở rộng kích thước tập tin lớn hơn 64KB bằng cách sử dụng mỗi phân đoạn bộ nhớ riêng biệt cho từng thanh ghi CS, DS, ES, SS Với cách tổ chức này, EXE sử dụng cấu trúc đầu file (gọi là EXE header) chứa thông tin của file và các tham số giúp hệ điều hành định vị bộ nhớ, tải mã lệnh, dữ liệu, ngăn xếp và khởi tạo giá trị các thanh ghi CPU trước khi thực thi chương trình
Lây vào EXE, file virus ghép mã lệnh vào cuối file rồi điều chỉnh CS:IP trỏ đến địa chỉ của nó Các tập EXE có đặc điểm nhận dạng như sau:
- Word đầu tập tin có trị ‘MZ’ hoặc ‘ZM’
- Dữ liệu byte, trải dài trên toàn bảng mã ASCII (0-255)
- Thủ tục khởi tạo trỏ đến địa chỉ thực trên file (Header < CS:IP < Filesize)
E9: Mã lệnh nhảy (xa hơn 128 byte) đến thủ tục khởi tạo
b Biểu diễn lệnh máy
xxxx : 0100 E9E602 JMP 03E9 // E9: Nhảy đến thủ tục khởi tạo
xxxx : 03EB B93E00 MOV CX,003E
xxxx : 03EE BA0901 MOV DX,0109
xxxx : 03F1 E8F8FE CALL 02EC // E8: mã máy lệnh Call
Hình P2.3: Mô tả dữ liệu một tập tin COM tiêu biểu
a Biểu diễn vector dữ liệu byte của tập tin COM
b Biểu diễn lệnh máy của 12 byte đầu và các lệnh trong thủ tục khởi tạo
Trang 15Hình P2.4 mô tả cấu trúc đầu file của một tập tin EXE tiêu biểu Hai byte đầu tiên (4D-5A) biểu diễn chuỗi ‘MZ’ nhận dạng file EXE Các trường tiếp theo chứa thông tin file và các tham số định vị Đặc biệt trường 3Ch có giá trị 00 (không có bảng thông tin bổ sung) Nếu khác 0, trường này chứa con trỏ đến một header khác dùng cho NE-EXE (Windows 16 bit) và PE-EXE (Windows 32 bit) Các định dạng này sẽ được mô tả ở phần tiếp theo
00000: 4D 5A BC 00 08 00 05 00 20 00 71 00 FF FF CC 00 //5A4D = MZ: dấu hiệu EXE 00010: 08 07 00 00 10 00 00 00 1E 00 00 00 01 00 90 08
00020: 00 00 1E 00 00 00 0A 01 00 00 00 00 A8 00 72 00
00030: AD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //khác 0: trỏ đến header bổ sung
Hình P2.4: Cấu trúc đầu file một tập tin EXE tiêu biểu
2.2.3 Định dạng NE-EXE (Windows 16s New Executable)
Khi giới thiệu hệ điều hành Windows 16 bit (Windows 3.xx), Microsoft phải thay đổi định dạng EXE cho phù hợp với tập lệnh của CPU chạy trong chế độ bảo
vệ hoặc 386 tăng cường… Thông tin bổ sung cho file NE-EXE được lưu trữ trong một cấu trúc đầu file mới (gọi là NE header), định vị qua trường 3C của cấu trúc đầu file DOS-EXE cũ Header bổ sung này được bắt đầu bằng hai byte 4E-45 (chuỗi
‘NE’) Các trường tiếp theo chứa thông tin file NE-EXE (ví dụ file thi hành EXE thực, hay là các thư viện liên kết động DLL…) và các tham số định vị dành cho hệ thống trong các điều kiện thi hành khác nhau
Hình P2.5 mô tả cấu trúc đầu file của tập tin thi hành trong môi trường Windows16 bit Cấu trúc này gồm hai phần Phần đầu là cấu trúc đầu file DOS-EXE Phần thứ hai là cấu trúc đầu file NE-EXE định vị ở địa chỉ 0080h, là giá trị có trong trường 3C của DOS-EXE Đầu NE-EXE header là chuỗi nhận dạng ‘NE’ Định dạng NE-EXE có đặc điểm nhận dạng như sau:
- Mang đặc trưng của định dạng DOS-EXE
- Trường 3C trong cấu trúc đầu file trỏ đến cấu trúc đầu file thứ hai
- Hai byte đầu tiên của cấu trúc đầu file thứ hai có giá trị 4E và 45 (‘NE’)
Trang 1600000: 4D 5A 75 01 01 00 00 00 04 00 00 00 FF FF 00 00 //5A4D = MZ: dấu hiệu EXE
Hình P2.5: Cấu trúc đầu file một tập tin NE-EXE tiêu biểu
Phần tiếp theo sẽ mô tả cách nhận dạng các tập tin thi hành trong môi trường Windows 32 bit, các Portable Executable file
2.2.4 Định dạng PE-EXE (Windows 32s Portable Executable)
Trong HĐH Windows 32 bit, EXE được thiết kế lại để phù hợp với cơ chế định vị bộ nhớ phẳng (flat memory) Portable Executable (PE-EXE) gồm 2 nhóm:
• Các ứng dụng chủ (host application): tập tin thi hành EXE, OBJ, SCR…
• Mở rộng của ứng dụng (application extension): gồm các thư viện liên kết động DLL (Dynamic Link Library), điều khiển thiết bị SYS (system driver), các ứng dụng điều khiển CPL (Control Panel Applet), OCX (OLE Control
Extension)… Mặc dù chứa mã lệnh nhưng các tổ chức này không tự thi hành
Trang 17Giống như NE-EXE, PE-EXE là vật chủ của file virus, sâu trình và trojan horse Đặc trưng nhận dạng của PE-EXE cũng tương tự NE-EXE (Hình P2.6):
- Mang đặc trưng của định dạng DOS-EXE
- Trường 3C trong cấu trúc DOS-EXE trỏ đến cấu trúc đầu file PE-EXE
- Hai byte đầu tiên của file header có giá trị 50h và 45h (‘PE’)
Cấu trúc đầu file PE-EXE chứa các đặc trưng thi hành của đối tượng:
FileSize, FileType, FileAttribute, MachineWord, NumberOfSections, TimeDateStamp, SizeOfOptionalHeader, Characteristics, MajorLinkerVersion, MinorLinkerVersion,
SizeOfCode, SizeOfInitializedData, SizeOfUnitializedData, RelativeVirtualAddress,
BaseOfCode, BaseOfData, BaseOfRVA, ImageBase, SectionAlignment, FileAlignment, MajorOSVersion, MinorOSVersion, MajorImageVersion, MinorImageVersion,
MajorSubSystemVersion, MinorSubSystemVersion, SizeOfImage, SizeOfHeader,
FileChecksum, SubSystem, DLLCharacteristics, SizeOfStackReserve,
SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags,
NumberOfRvaAndSize, VirtualSize, VirtualAddress, SizeOfRawData, PointerToRawData, PointerToRelocation, PointerToLineNumber, NumberOfRelocations,
NumberOfLineNumbers, AddressOfEntryPoint
2.2.5 Định dạng LE-EXE (Windows 32s Linear Executable)
LE-EXE là định dạng các tập tin điều khiển thiết bị Virtual Device (VxD Driver) dành cho họ Windows9x/Me (Hình P2.7) Windows NT/2000/XP không sử dụng định dạng LE-EXE mà thay bằng định dạng SYS trong nhóm Mở rộng ứng dụng (đã đề cập ở phần trên) LE-EXE thường chứa các rootkit điều khiển của hacker ở mức hệ thống Đặc điểm nhận dạng LE-EXE như sau:
00000: 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 //5A4D = MZ: dấu hiệu EXE 00010: B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
Trang 18- Mang đặc trưng của định dạng DOS-EXE
- Trường 3C trong cấu trúc đầu file DOS-EXE trỏ đến cấu trúc LE-EXE
- Hai byte đầu tiên của cấu trúc đầu file LE-EXE có giá trị 4C và 45 (‘LE’)
2.3 Tập tin tư liệu
Các tập tin tư liệu (document files) là các tập dữ liệu người dùng bộ công cụ
Microsoft Office (Bảng P2.4) Đây là đối tượng lây nhiễm của virus macro, loại
virus sử dụng tập lệnh macro VBA (Visual Basic Application) của Microsoft Ngoài
đối tượng lây nhiễm chính là các tập tin DOC, XLS và PPT; các tập tin template và add-in cũng là nơi “trú ngụ” rất tốt cho virus macro Lưu trữ nhiều đối tượng nhúng phức tạp (hình ảnh, âm thanh, bảng biểu, đồ thị…), các tập tin Office thường rất lớn (vài trăm KB đến hàng chục MB) Để tiện truy xuất, Microsoft tổ chức các tập tin này theo đơn vị paragraph 512 byte Đặc điểm nhận dạng các tập tin này như sau:
- Kích thước tập tin là bội số của 512
- Chuỗi nhận dạng đầu file: D0-CF-11-E0-A1-B1-1A-E1-00-00-00-00
Bảng P2.4: Các loại tập tin tư liệu MSOffice có thể nhiễm virus macro
DOC Tư liệu văn bản
Khuôn dạng văn bản Microsoft Word
DOT
Microsoft Word Add-in XLS Tư liệu bảng tính XLT Khuôn dạng bảng tính Microsoft Excel
XLA Microsoft Excel Add-in PPT Tư liệu trình diễn POT Khuôn dạng trình diễn
VBA macro
Microsoft PowerPoint
PPA Microsoft PowerPoint Add-in
2.4 Mẫu tin khởi động
Trong kiến trúc máy tính IBM-PC, mẫu tin khởi động (boot record) là các tổ
chức thi hành trên các đơn vị lưu trữ của thiết bị nhớ ngoài (Bảng P2.5) Nhiệm vụ của MTKĐ là khởi tạo các thông số kỹ thuật của thiết bị và thực hiện các tiến trình
xử lý tiếp theo Có hai loại boot record: MTKĐ đĩa cứng (master boot của đĩa cứng)
và MTKĐ hệ điều hành (boot sector của đĩa cứng và đĩa mềm)
Trang 19Bảng P2.5: Các tổ chức khởi động có thể nhiễm virus
MTKĐ đĩa cứng
(master boot) Đĩa cứng
Sector 1, track 0, side 0
- Phân tích thông số kỹ thuật các phân khu luận lý
- Tìm và tải boot sector của phân khu hoạt động vào bộ nhớ
- Trao quyền cho boot sector
Phân khu hoạt động đĩa cứng
Sector 1, track 0, side 1
- Phân tích thông số phân khu đĩa cứng hoạt động
- Tìm và tải các tập tin khởi động hệ điều hành vào bộ nhớ
- Trao quyền cho hệ điều hành
MTKĐ hệ điều hành
(boot sector)
Đĩa mềm Sector 1, track 0,
side 0
- Phân tích thông số đĩa mềm
- Tìm và tải các tập tin khởi động hệ điều hành vào bộ nhớ
- Trao quyền cho hệ điều hành
2.4.1 Mẫu tin khởi động đĩa cứng (master boot)
Mỗi ổ đĩa cứng có thể được chia tách luận lý thành các phân khu (partition)
Có tối đa bốn phân khu cho mỗi ổ vật lý, nhưng chỉ có một phân khu được chọn làm
phân khu hoạt động (active partition), là phân khu chứa hệ điều hành của hệ thống
Master boot:
- Định vị các phân khu đĩa cứng
- Tải boot sector hoạt động
Boot virus:
- Các lệnh khởi tạo virus
- Định vị, tải master boot gốc
- Trao quyền cho master boot gốc
Các sector rỗi Master boot (gốc) Boot sector hoạt động:
- Các lệnh khởi tạo bộ nhớ
- Định vị, tải các file hệ thống
- Trao quyền cho hệ điều hành
Boot sector hoạt động:
- Các lệnh khởi tạo bộ nhớ
- Định vị, tải các file hệ thống
- Trao quyền cho hệ điều hành
Thư mục gốc (Root Entries) Thư mục gốc (Root Entries)
Vùng dữ liệu (Data Area)
Vùng dữ liệu (Data Area)
Hình P2.8a: Tổ chức đĩa cứng
trước khi nhiễm boot virus Hình P2.8b: Tổ chức đĩa cứng sau khi nhiễm boot virus
Trang 20Mẫu tin khởi động đĩa cứng có nhiệm vụ phân tích các phân khu dữ liệu, tìm
và tải boot sector trên phân khu hoạt động của đĩa cứng vào bộ nhớ rồi trao quyền cho nó Hình P2.8a minh họa cấu trúc đĩa cứng, vị trí và vai trò của các MTKĐ Hình P2.8b mô tả hình ảnh ổ đĩa cứng nhiễm boot virus, loại lây vào master boot
2.4.2 Mẫu tin khởi động hệ điều hành (boot sector)
Boot sector có trên mọi đĩa mềm và các phân khu đĩa cứng Khi nhận quyền
từ master boot (hoặc khởi động máy từ đĩa mềm), boot sector sẽ tìm HĐH, nạp vào
bộ nhớ rồi trao cho HĐH tiếp tục quá trình khởi động
Hình P2.9a minh họa cấu trúc đĩa mềm, vị trí và vai trò của MTKĐ hệ điều hành trên đĩa mềm Hình P2.9b mô tả hình ảnh đĩa mềm nhiễm boot virus Ví dụ này cũng đúng cho trường hợp boot virus lây vào boot sector của đĩa cứng
Hình P2.9a: Tổ chức đĩa mềm
trước khi nhiễm boot virus Hình P2.9b: Tổ chức đĩa mềm sau khi nhiễm boot virus
Trang 21Các tác tử hoạt động và thuật toán SID
1 Các tác tử hoạt động
1.1 Tác tử Duyệt quét
Hoạt động ở mức nền trước (foreground), tác tử Duyệt quét VSA (Virus
Scanning Agent) có nhiệm vụ quét virus hệ thống, thu thập kiến thức dài lâu và giải
thích các thay đổi hệ thống dựa vào lớp luật RS2 Các tác vụ của VSA gồm:
- Khởi tạo các tham số hoạt động, các biến nhớ, cấu hình hệ thống…
- Tải các điểm dữ liệu cần kiểm tra vào không gian quan sát
- Phân lớp không gian quan sát với thuật toán NNSRM (xem Chương 4) thành hai lớp CLASS_1 - có thể nhiễm và CLASS_2 - chắc chắn sạch Sau đó xoá
CLASS_2 khỏi không gian quan sát
- Quét virus cho CLASS_1 bằng thuật toán SID (xem phần 3 của phụ lục này)
- Báo cáo kết quả duyệt quét, tạo giao diện hội thoại, thu thập tri thức người dùng, xử lý các trường hợp nhiễm virus…
- Cập nhật CSDL, tăng trưởng CSTT cho hệ thống
Trong các tác vụ này, các thuật toán NNSRM và SID tiêu thụ rất nhiều tài
nguyên hệ thống (thời gian chạy, sử dụng bộ nhớ, truy xuất đĩa…) Để phân bố tải,
VSA sử dụng hai tác tử con (sub-agent) là CA (Classifying Agent) và SA (Scanning Agent) được thiết kế dưới dạng các tiểu trình (program thread) Một hàng đợi FIFO
được dùng làm vùng nhớ chia xẻ giữa CA và SA (Hình P3.1) Cơ chế phối hợp hoạt động của CA và SA được mô tả như sau:
Trang 22- Hàng đợi được khai báo dưới dạng mảng động (không bao giờ tràn) để đảm
bảo cho tác tử CA luôn kết thúc công việc của nó
- Trong lúc NNSRM phân lớp dữ liệu, tác tử CA lần lượt đưa các điểm dữ liệu
chẩn đoán vào cuối hàng đợi
- Khi xuất hiện dữ liệu trong hàng đợi, SA nhặt các điểm dữ liệu ở đầu hàng đợi và chuyển cho thủ tục SID quét kiểm tra virus
- Nếu hàng đợi rỗng trong khi CA vẫn chưa phân lớp xong, SA sẽ chờ đến khi
xuất hiện ít nhất một điểm dữ liệu trong hàng
Hình P3.1: Tác tử VSA với các tác tử con CA và SA
1.2 Tác tử Canh phòng
Khác với VSA, VAA được thiết kế để chạy thường trực ở mức nền sau (background) nhằm đón bắt các loại kiến thức tức thời (tình huống phát sinh trên đối tượng) dựa vào lớp luật RS1 Các tác vụ của VAA gồm:
- Tự kích hoạt khi hệ thống hoàn tất quá trình khởi động
- Tạo các tiểu trình động (dynamic thread) để phân bố tác vụ cho các tác tử con di động (mobile sub-agents)
- Câu móc (hooking) các hàm API (Application Programming Interface) hệ
thống để kiểm soát các tình huống truy xuất file như Create/OpenFiles, Get/SetFileAttribute, Read/WriteFile, Close/DeleteFile…
Trang 23- Giám sát các tiến trình hệ thống như tạo tiến trình, tải thư viện liên kết động, duyệt cấu trúc đĩa, truy nhập hệ thống mạng…
- Tải và cập nhật CSDL và CSTT từ máy chủ từ xa của MAV
Trong mô hình này, các tác vụ con của VAA được phân công để có thể hoạt động tự chủ (autonomic) tại những ‘vị trí’ thích hợp trong hệ thống Ví dụ sau khi
các tác tử con được sinh ra, một số tác tử con sẽ tự di chuyển đến các ngăn đĩa hệ
thống (system folders) để giám sát các tình huống truy nhập tập tin hệ thống, trong
khi các tác tử khác di chuyển vào vùng nhớ, đến các cổng truy nhập mạng để theo dõi tiến trình bộ nhớ hoặc canh giữ các luồng dữ liệu vào-ra mạng (Hình P3.2) Dựa
vào RS1, VAA chạy SID để phân tích các tình huống hệ thống, phát cảnh báo hoặc
xử lý tự động theo kịch bản đã được người dùng ấn định từ trước
1.3 Cơ chế phối hợp giữa các tác tử
Khi hoạt động, cả hai tác tử VSA và VAA sử dụng chung động cơ suy diễn
SID và tương tác nhau Ví dụ, trước khi VSA phát sinh tình huống WriteFile, nó gửi
một thông điệp báo cho VAA yêu cầu bỏ qua tình huống này Khi VAA xử lý xong một đối tượng, nó thông báo cho VSA không cần kiểm tra đối tượng đó Chiến lược phối hợp (co-operation strategy) này giải quyết vấn đề đụng độ (conflict) giữa các
tác tử, tránh hiện tượng tranh chấp tiến trình hệ thống
Hình P3.2: Tác tử VAA với các tác tử con di động
Trang 242 Thuật toán SID (Tìm kiếm – Suy luận - Chẩn đoán)
1: INITIATE X; //Khởi tạo không gian tìm kiếm X
2: INTEGRATE (KB2, KB3: KB; var KB1: KB);
3: CLASSIFY Các điểm dữ liệu FROM X INTO CLASS_1, CLASS_2;
4: for i:= 1 to CLASS_1.Items.Count do
5: select CLASS_1[i]
from DOITUONG where CLASS_1[i].KIEU=CLASS_V.KIEU group by DIA_CHI;
6: if not Found then //Không tìm thấy điểm dữ liệu từ CSDL
7: CHẨN ĐOÁN (CLASS_1[i], PHIÊN_BẢN, KB1);
8: if VirusFound then // Phát hiện virus trên điểm dữ liệu
9: XỬLÝBỆNH (CLASS_1[i]);
10: REPORT(CLASS_1[i].TEN, VirusName, Status); //Thông báo kết quả
11: endif
12: insert into DOITUONG
values <CLASS_1[i]>; //Tạo dữ liệu chẩn đoán
13: insert into LICHQUET
values <LICHQUET>; //Tạo dữ liệu tiền sử
14: else //Tìm thấy điểm dữ liệu từ CSDL
15: if VALIDATED(PHIÊN_BẢN) and CHANGED(CLASS_1[i]) then //Vận dụng luật
16: case WARNING(CLASS_1[i]) of //Cảnh báo
17: ByVirus: XỬLÝBỆNH (CLASS_1[i]); //Xác nhận virus mới
18: REPORT(CLASS_1[i].TEN, UserVirus, Status); //Báo cáo
set (TEN=CLASS_1[i].TEN,…) where DOI_TUONG=CLASS[i].DOI_TUONG;
values (CLASS_1[i],PHIÊN_BẢN,NGÀY_QUÉT);
21: ADD(KB1, KB3, CLASS_1[i], UserVirus); //Tăng trưởng tri thức
set (TEN=CLASS_1[i].TEN,…) where DOI_TUONG=CLASS[i].DOI_TUONG;
values (CLASS_1[i],PHIÊN_BẢN,NGÀY_QUÉT);
24: Unknown: LOCK(CLASS_1[i]); //Nghi ngờ, khóa đối tượng
25: REPORT(CLASS_1[i].TEN, SuspectedVirus, Status); //Báo cáo
26: ADD(KB2, CLASS_1[i], UserVirus); //Tăng trưởng tri thức
29: endif
30: if not VALIDATED(PHIÊN_BẢN) and not CHANGED(CLASS_1[i]) then
31: CHẨN ĐOÁN (CLASS_1[i], PHIÊN_BẢN, KB1);
32: if VirusFound then // Phát hiện virus trên điểm dữ liệu
Trang 2540: CHẨN ĐOÁN (CLASS_1[i], PHIÊN_BẢN, KB1);
41: if VirusFound then // Phát hiện virus trên điểm dữ liệu
47: case WARNING(CLASS_1[i]) of //Cảnh báo
48: ByVirus: XỬLÝBỆNH (CLASS_1[i]); //Xác nhận virus mới
49: REPORT(CLASS_1[i].TEN,UserVirus, Status);//Báo cáo
set (TEN=CLASS_1[i].TEN,…) where DOI_TUONG=CLASS[i].DOI_TUONG;
values (CLASS_1[i],PHIÊN_BẢN,NGÀY_QUÉT);
57: ADD(KB2, CLASS_1[i], UserVirus); //Tăng trưởng tri thức
Trang 26Phân tích hệ thống phần mềm MAV
1 Phân tích yêu cầu
1.1 Các yêu cầu về hệ thống
• Hệ điều hành thử nghiệm:
- Máy chủ: Windows 2000/2003 Server
- Máy trạm: Windows 2000/XP Professional
• Ngôn ngữ lập trình: Borland Delphi 7.0
• Thiết kế hướng dẫn:
- HTML Help Workshop
- Microsoft Front Page
• Giao tiếp lập trình: DLL, Indy (Client-Server Communication)
1.2 Phân hệ máy chủ
• Thu nhận tri thức chuyên gia
• Luyện học dữ liệu, rút luật nhận dạng
• Tổ chức, cập nhật CSDL và CSTT
• Kiểm soát vào-ra máy chủ
• Liên lạc, điều khiển máy khách
• Điều phối CSDL, CSTT cho toàn hệ thống
1.3 Phân hệ máy khách
• Xử lý dữ liệu, quét virus
• Kiểm soát vào-ra máy khách
• Liên lạc, thực hiện các yêu cầu từ máy chủ
• Gửi mẫu nghi virus cho máy chủ
• Cập nhật CSDL virus từ máy chủ
Trang 272 Các chức năng kiểm soát cơ bản
2.1 Kiểm soát thiết bị nhớ trong
• Giám sát thường trực các thao tác tiến trình
• Quét danh sách tiến trình trong bộ nhớ
• Xác định địa chỉ ứng dụng chủ
• Kiểm tra ứng dụng chủ
2.2 Kiểm soát thiết bị nhớ ngoài
• Giám sát truy nhập thiết bị nhớ: đĩa mềm, ổ cứng, CD-ROM, USB…
• Bẫy các tình huống OpenFile, WriteFile, CloseFile, CreateProccess…
• Các mức kiểm soát: tiến trình tạo thao tác, đối tượng nhận thao tác
2.3 Quét virus trên hệ thống đĩa
• Máy chủ: quét các máy khách, quét tại chỗ
• Máy khách: quét tại chỗ
2.4 Các chế độ hoạt động
• Không thường trực: chạy khi user kích hoạt, thao tác trực tiếp trên giao diện
• Thường trực: chạy khi máy tính khởi động (service, startup…), có thể tự xử
lý tình huống theo các tùy chọn đã thiết lập
3 Đặc tả các chức năng phân hệ máy chủ
Các chức năng cài đặt trên phân hệ máy chủ được trình bày trong Bảng P4.1
Bảng P4.1: Các chức năng cài đặt trên phân hệ máy chủ
1 Luyện học CSDL virus, rút luật nhận dạng, tổ chức CSTT Không thường trực
2 Quét virus trên máy chủ Không thường trực Sử dụng gói máy trạm
3 Quản lý tiến trình Không thường trực Sử dụng gói máy trạm
4 Bảo vệ Truy nhập Thường trực Sử dụng gói máy trạm
5 Quản lý CSDL Cách ly Không thường trực Sử dụng gói máy trạm