Tải bản đầy đủ (.pdf) (10 trang)

Tổng quan về mẫu malware Virus.Win32.Virut.ce (Phần V) pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (415.43 KB, 10 trang )





Tổng quan về mẫu malware Virus.Win32.Virut.ce
(Phần V)



Ảnh chụp màn hình file bị lây nhiễm bởi Virus.Win32.Virut.ce, với các đoạn
mã đảm nhiệm chức năng khôi phục tới các entry point gốc được đánh dấu
hình oval đỏ
Để phân biệt rõ ràng hơn, toàn bộ các đoạn mã ví dụ trên đều không bao gồm
quá trình obfuscation. Tuy nhiên, giai đoạn đó lại được sử dụng trong tất cả
các section của file đã được ghép thêm vào bởi virus, có bao gồm trình giải
mã Init và toàn bộ phần mã thực thi trong phần body chính. Và quá trình này
hoàn toàn ngăn chặn các dấu hiệu nhận dạng virus từ các chương trình an
ninh bảo mật, bằng cách thay đổi toàn bộ bề ngoài của mã dữ liệu mà không
làm ảnh hưởng đến hoạt động chung. Dưới đây là 1 số ví dụ cụ thể, trong đó
chúng được sử dụng để che giấu quá trình nhận dạng mà không ảnh hưởng
đến các hoạt động chức năng:
- XCHG reg1, reg2; XCHG reg2, reg1; (được sử dụng cùng nhau)
- SUB reg1, reg2; ADD reg1, reg2; (sử dụng cùng nhau)
- MOV reg, reg; OR reg, reg; AND reg, reg; XCHG reg, reg; LEA reg,
[REG];
- CLD, CLC, STC, CMC, etc.
Trong đó, ‘reg1’ và ‘reg2’ đại diện cho các trình đăng ký – register khác
nhau, còn ‘reg’ để chỉ quá trình register giống nhau trong cùng 1 biểu thức
đơn.
Các toán tử logic đi liền với toán tử hạng hai tùy biến.
Ngoài ra còn có ADC reg, const; SBB reg, const; XOR reg, const …



Các thành phần của quá trình obfuscation được đánh dấu bằng hình oval đỏ
Hình bên trái chỉ ra rất rõ rằng các chỉ dẫn theo kiểu junk chiếm tới 70 - 80%
toàn bộ mã của file dữ liệu.
Giải mã phần body chính
Bộ phận đảm nhiệm khả năng thực thi trong các đoạn code được giải mã, sẽ
khởi động sau khi virus hoàn tất các hoạt động ban đầu của nó như việc khôi
phục mã gốc, khởi tạo tên đối tượng và lưu trữ địa chỉ của các hàm tương ứng
được sử dụng trực tiếp từ thư viện hệ thống DLLs và anti-cycle.
Nếu quá trình giải mã Main được xem là 1 phần hoặc 1 bộ phận phân tách
riêng biệt, thì toàn bộ mã sinh ra bởi tiến trình này hoàn toàn vô nghĩa, ví dụ
như chỉ dẫn RETN được gọi ra để quản lý, điều khiển việc thay đổi vị trí 1
cách ngẫu nhiên. Trước khi quá trình giải mã chính thức diễn ra, RETN
(0C3h) sẽ được thay thế bởi hàm CALL (0E8h). Chúng ta có thể hình dung
quá trình này như sau:
ADD/SUB/XOR [EBP + xx], bytereg
Theo đó, EBP sẽ được trỏ tới địa chỉ của hàm CALL, và bytereg chỉ là 1
trong số những giá trị byte đã được đăng ký.
Do vậy, chúng ta có thể cho rằng chu trình bắt đầu thực sự sau khi quá trình
giải mã RETN sẽ được thay đổi thành CALL. Theo đúng trình tự là quá trình
obfuscated – phần còn lại của body của virus. Không chỉ sử dụng số lượng
lớn các thuật toán, và nhiều trong số này thực sự phức tạp hơn rất nhiều so
với phần còn lại với trình giải mã Init. Thông thường, sẽ có từ giữa 2 đến 6
các thuật toán được dùng để kết hợp. Và trong các thuật toán này, trình quản
lý đăng ký EDX chứa key giải mã, và với EAX chứa toàn bộ địa chỉ ảo nơi
bắt đầu của static body. Các ứng dụng quản lý register chứa đựng các chỉ dẫn
của hàm tương ứng có thể giống như sau:
MOVZX/MOV dx/edx, [ebp + const] LEA eax, [ebp + const]
Các thuật toán được sử dụng chủ yếu như trong ví dụ dưới đây:
ROL DX, 4

XOR [EAX], DL
IMUL EDX, EDX, 13h

ADD [EAX], DL
ROL DX, 5
IMUL EDX, 13h

XOR [EAX], DH
ADD [EAX], DL
XCHG DH, DL
IMUL EDX, 1Fh

XOR [EAX], DH
XCHG DH, DL
ADD [EAX], DH
IMUL EDX, 1Fh

XOR [EAX], DL
ADD [EAX], DH
IMUL EDX, 2Bh
XCHG DH, DL
Đương nhiên, những chỉ dẫn được sử dụng này sẽ thay đổi theo thời gian.

Một phần đoạn mã được tách rời ra từ trình giải mã Main
Để tiếp tục thảo luận về quá trình thực thi file dữ liệu đã bị lây nhiễm, chúng
ta hãy chuyển sang phần thực hiện quá trình payload với những đoạn mã bên
trong phần static body. Thông thường, quá trình này sẽ khởi động bằng
hướng dẫn CALL, trước tiên là để tính toán và xác định các địa chỉ ảo, và sau
đó sẽ được ứng dụng vào việc đặt địa chỉ thực.


Phần static body của virus sau khi được giải mã
Các dòng được đánh dấu bằng hình oval đỏ chỉ ra các phần thực hiện cơ chế
payload rất rõ ràng của virus. Ví dụ: ‘JOIN’ và ‘NICK’ là các dòng lệnh IRC,
‘irc.zief.pl’ và ‘proxim.ircgalaxy.pl’ là các IRC server remote mà virus thực
hiện các thao tác liên lạc qua lại, ‘SYSTEM\CurrentControlSet\
Services\SharedAccess\ Parameters\FirewallPolicy\
StandardProfile\AuthorizedApplications\ List’ là khóa registry chứa thông tin
về các chương trình đáng tin cậy của Windows firewall.
Kết luận
Có thể nói, Virut.ce có cơ chế lây nhiễm khá đa dạng và nguy hiểm, với các
công nghệ kỹ thuật đa hình và obfuscation. Tuy nhiên, cơ chế payload của nó
khá phức tạp và không thể coi thường được. Và mẫu virus có thể được xem là
sự kết hợp thành công nhất các công nghệ và kỹ thuật độc hại, được tin tặc
tạo ra mẫu malware này. Bên cạnh đó, có 1 số mẫu chương trình độc hại ứng
dụng kỹ thuật obfuscated vào những mục đích khác nhau, bao gồm công
nghệ chống lại cơ chế xây dựng và mô phỏng hành động… nhưng Virut.ce là
1 bản sao hoàn hảo nhất của các tính năng trên. Có thể nói rằng, đây không
phải là 1 bài viết chi tiết và đầy đủ về mẫu Virut.ce. Cho đến tháng 04 / 2010
này, vẫn chưa có biến thể mới nào của Virut.ce bị phát hiện, điều này không
có nghĩa rằng quá trình tiến hóa của nó đã dừng lại. Mặt khác, tính cho tới
thời điểm này tất cả các sản phẩm của Kaspersky Lab đều có khả năng phát
hiện và tiêu diệt Virus.Win32.Virut.ce, ngay cả khi có biến thể mới của nó
xuất hiện.


×