Để tránh sự phát hiện, virus siêu đa hình được trang bị những kỹ
thuật khác nhau để “tiến hóa” mã của chúng thành thế hệ virus mới có mã khác
hoàn toàn nhưng chức năng thì vẫn không thay đổi.
Để phát hiện người ta thường sử dụng
các kỹ thuật như xem xét các cấu trúc file hay phân tích hoạt động của mã. Một
số kỹ thuật phát hiện virus siêu đa hình được mô tả như sau:
Phát hiện hình học: là dựa trên sự
biến đổi mà virus đã thực hiện trên các cấu trúc file. Phát hiện hình học được
sử dụng để phát hiện Win95/Zmist, bởi vì đoạn dữ liệu của file được tăng lên ít
nhất 32kb khi nó bị nhiễm bởi phiên bản được mã hóa của virus này. Tuy nhiên,
phương pháp này có thể gây ra nhiều sai sót.
Quét chuỗi ký tự đại diện và
half-byte: Các virus siêu đa hình đơn giản thường sử dụng hoán đổi thanh ghi và
thay thế lệnh, do đó, chúng có thể bị phát hiện bởi việc quét các chuỗi đại diện
và half- byte. Ví dụ, trong Win95/Regswap tồn tại rất nhiều các Opcode phổ biến,
không đổi ở tất cả các thế hệ virus của nó. Điều đó dẫn đến việc trích ra các
chuỗi tìm kiếm khả dụng sử dụng các ký tự đại diện có thể xảy ra. Nếu bộ quét hỗ
trợ điều đó, việc phát hiện half- byte có thể thích hợp cho file đã bị nhiễm.
![]() |
| Virus |
Phân rã mã (code disassembling):
có nghĩa là chia nhỏ luồng thành các lệnh riêng rẽ. Phương pháp này thuận lợi
cho việc phát hiện các virus sử dụng kỹ thuật chèn mã rác vào giữa các mã của
nó. Phân rã mã rất hiệu quả khi được kết hợp với một máy trạng thái, vì máy trạng
thái có thể ghi lại trình tự trong đó các lệnh quan trọng được phát hiện. Máy
trạng thái là mô hình gồm hành vi được tạo từ lượng hữu hạn các trạng thái, các
chuyển tiếp giữa các trạng thái và các hành vi. Máy trạng thái hoạt động hiệu
quả khi nó được kết hợp với một bộ giả lập sử dụng trong việc phát hiện các loại
virus khác nhau như Win95/Zmist hay Win 95/Puro dựa trên một phương tiện gọi là
“Lexotan”.
Sử dụng các bộ giả lập: Giả lập đoạn
mã thực thi cần thiết lập một máy ảo để mô phỏng hệ thống quản lý bộ nhớ và
CPU, chạy các mã độc hại bên trong máy ảo đó. Mã độc hại không thể thoát khỏi
máy ảo. Các chương trình quét diệt virus có thể chạy đoạn mã trong một bộ giả lập,
sau đó kiểm tra định kỳ để tìm và phát hiện các lệnh quan trọng của virus. Một
số kỹ thuật giả lập như sau:
Sử dụng bộ giả lập dựa trên kỹ thuật
heuristics: Phát hiện dựa trên kỹ thuật heuristics không nhận diện virus một
cách rõ rệt nhưng chỉ ra được các đặc trưng và phát hiện các lớp của virus máy
tính một cách tổng quát. Công cụ heuristics có thể dò tìm dấu vết các lệnh ngắt
và thực thi ở mức sâu hơn thông qua việc sử dụng một máy ảo mô phỏng hệ điều
hành.
Các hệ thống như vậy thậm chí có
thể tái lập các virus trong hệ thống file ảo của máy ảo. Một số sản phẩm antivirus triển khai
các hệ thống như vậy rất hiệu quả và cho ít cảnh báo sai. Kỹ thuật này yêu cầu
việc mô phỏng hệ thống file. Ví dụ, bất kỳ khi nào một file mới được mở bởi các
virus giả lập, một tệp tin ảo được chỉ tới nó. Sau đó, virus giả lập có thể làm
lây nhiễm file ảo trong hệ thống ảo mà hiện tại nó đang lưu trú. Hai vấn đề lớn
nhất ở đây là rất khó để giả lập hệ thống đa luồng và hiệu suất hệ thống giả lập
thấp
Phát hiện các vòng lặp giả: Việc
chống lại kỹ thuật tạo bộ giả lập xuất hiện trong một phiên bản cải tiến của
Virus Bistro (được phát hành sau vài phiên bản so với phiên bản gốc). Kỹ thuật
này được gọi là chèn mã ngẫu nhiên, chèn thêm các dòng lệnh rác và các vòng lặp
giả một cách ngẫu nhiên trước khi giải mã. Điều này làm cho một số bộ giả lập
mô phỏng hàng triệu các dòng lệnh rác và không thể dựng lại một virus thực sự
nên việc phát hiện virus là không thể thực hiện được.
Phát hiện việc giải mã ngăn xếp:
Các biến thể khác nhau của virus Zmorph đưa vào file bị nhiễm một phần mã đa
hình, sau đó chúng giải mã virus theo từng lệnh và tái lập lại nó bằng cách đẩy
kết quả vào bộ nhớ ngăn xếp. Nếu bộ giả lập không có khả năng phát hiện giải mã
ngăn xếp thì những virus như thế sẽ bị bỏ sót. Bộ nhớ bị các virus này truy nhập
có thể bị kiểm soát, giám sát bởi một bộ giả lập và khi lệnh điều khiển được
truyền tới bộ nhớ ngăn xếp, mô hình này sẽ phát hiện nó và kết xuất toàn bộ đoạn
mã virus được giải mã để nhận dạng. Hạn chế của kỹ thuật này là nó có tác động
đáng kể tới hiệu suất của máy quét.
Phát hiện sự biến đổi mã: Sự biến
đổi mã được dùng để biến đổi các dòng lệnh hoán vị sang dạng đơn giản, khi mà sự
kết hợp các dòng lệnh được chuyển đổi thành dạng tương đương nhưng đơn giản
hơn. Sau khi chuyển đổi, mã phổ biến được thể hiện bởi các virus có thể được nhận
dạng. Virus đa hình đầu tiên sử dụng kỹ thuật này là Win32/Simile. Kỹ thuật này
bao gồm việc chuyển đổi mã virus về dạng nguyên thủy tương đồng với thế hệ đầu
tiên. Tuy nhiên, để có thể đảm bảo việc phát hiện hoàn toàn mà không ảnh hưởng
đến tốc độ quét, môđun chuyển đổi mã phải được tối ưu hóa và linh hoạt. Vị trí
của virus có thể được chuyển đổi tới nơi mẫu quét được lưu trữ, điều đó sẽ làm
giảm tác động lên hiệu suất của máy quét.
Phát hiện hoán vị chương trình
con: được sử dụng để phát hiện các virus có sử dụng hoán vị mã của chúng thành
dạng mới. Như miêu tả ở trên, việc biến hình đạt được nhờ việc chia nhỏ mã
thành các frames và sau đó đặt vị trí các frames này một cách ngẫu nhiên và
liên kết chúng bởi các lệnh nhánh để duy trì luồng tiến trình. Virus Zperm sử dụng
công cụ hoán vị thực (Real Permutation Engine - RPME) phức tạp để biến đổi mã của
nó. Để phát hiện virus này, máy quét phải thực hiện giả lập từng phần để xây dựng
lại mã virus từ dạng nguyên gốc trước khi hoán vị. Giả lập từng phần có nghĩa
là mô phỏng các lệnh nhánh như bước nhảy. Quyết định khi nào dừng giải mã là vấn
đề của kỹ thuật này. Cũng như vậy, việc đảm bảo rằng mã virus đã được phát hiện
đầy đủ cũng là một vấn đề rất khó. Bên cạnh việc tái tạo lại mã virus, kỹ thuật
này cũng có hiệu quả cho việc xóa các lệnh rác.
Kết luận:
Virus siêu đa hình sử dụng nhiều kỹ
thuật phức tạp như chèn mã rác, thay thế lệnh, hoán vị mã và tích hợp mã. Việc
phát hiện virus siêu đa hình luôn là vấn đề khó và để phát hiện chúng một cách
toàn diện, các chu trình phát hiện phải được viết sao cho có thể tạo ra chỉ dẫn
cần thiết về tập hợp nhóm virus từ cách thức thực tế của việc xâm nhiễm.
Có nhiều kỹ thuật phát hiện virus
siêu đa hình đã được sử dụng như: phát hiện hình học, phân rã mã, phát hiện
hoán vị chương trình con... tuy nhiên chưa có kỹ thuật nào phát hiện một cách
toàn diện. Do vậy, việc tìm các phương pháp mới để phát hiện Virus siêu đa hình
là vấn đề cần được quan tâm nghiên cứu.

0 comments:
Đăng nhận xét