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 …
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.