Giới thiệu
Khái niệm virus máy tính
Virus là một thuật ngữ chung để chỉ các loại chương trình máy tính có một số đặc tính chung như khả năng xâm nhập, lây lan, phá hoại... Do đó khi nhắc tới virus máy tính chúng ta cần hiểu từ này theo nghĩa rộng để nó bao hàm các loại chương trình như virus, trojan horse, worm…Vì virus thường được tin tặc sử dụng như các phương tiện để tấn công các hệ thống máy tính của các tổ chức và cá nhân nên virus thường được hiểu với nghĩa tiêu cực. Trên thực tế, virus có thể được sử dụng trong các công việc hữu ích như chống sao chép phần mềm, chống lại các virus phá hoại khác…
Chương trình virus có cấu trúc như sau [28]:
Program V : =
{1234567;
Subroutine infect-executable:=
{loop: file = random-executable;
if (first-line of file = 1234567)
then goto loop;
else prepend V to file;}
Subroutine do-damage:=
{Bất cứ thứ gì bạn có thể lập trình}
Subroutine trigger-pulled:=
{Bất cứ thứ gì bạn muốn kích hoạt}
Main-program-of-virus:=
{infect-executable;
If (trigger-pulled) then do-damage;
Goto next;}
Next:
}
Ví dụ :Virus tấn công từ chối dịch vụ
Trigger-pulled:=
{if the date is after Jan 1, 1999;}
Do-damage:=
{loop: goto loop;}
Ví dụ : Virus nén file
Program V : =
{01234567;
Subroutine infect-exec:=
{loop: file = random-executable;
if first-line of file = 01234567
then goto loop;
(1) compress file;
(2) prepend CV to file;
}
Main-program:=
{if ask-permission
then infect-exec;
(3) uncompress rest-of-file;
(4) run uncompressed file;
}
}
Virus nén file
Lịch sử phát triển
Một số cột mốc đáng lưu ý trong lịch sử hình thành và phát triển của virus máy tính như sau [15]:
- Năm 1949 mô hình của một chương trình máy tính tự nhân bản ra đời
- Năm 1959 trò chơi Core War được phát triển
- Năm 1983 Thompson đưa ra ý tưởng về phương pháp làm virus
- Năm 1987 virus Lehigh xuất hiện lần đầu tiên trên máy IBM PC
Các tính chất cơ bản của virus
Các tính chất cơ bản, điển hình của virus bao gồm
- Tính lây lan
- Tính chất phá hoại
- Tính nhỏ gọn
- Tính tương thích
- Tính phát triển kế thừa.
Bài tập: Xác định các tính chất điển hình của sâu Internet (Internet Worm).
Phân loại virus
Dựa vào một số đặc tính đặc trưng của virus chúng ta có thể phân loại chúng. Sau đây là một số cách phân loại điển hình. Mục đích là đưa ra cách phòng chống phù hợp với từng loại [16].
Phân loại theo đối tượng lây nhiễm và môi trường hoạt động
1. Virus boot
2. Virus file (a. DOS virus, b. Windows virus, c. macro virus )
Phân loại theo phương pháp tìm đối tượng lây nhiễm
1. Virus thường trú
2. Virus không thường trú
Phân loại theo phương pháp lây nhiễm
1. Ghi đè
2. Ghi đè bảo toàn
3. Dịch chuyển
4. Song hành
5. Nối thêm
6. Chèn giữa
7. Định hướng lại lệnh nhảy
8. Điền khoảng trống
Phân loại theo mức độ phá hoại
1. Virus thông thường
2. Virus huỷ diệt
Phân loại theo họ virus
1. Virus thời gian
2. Virus sự kiện …
Nhắc lại Assembly
Cấu trúc chung một chương trình Assembly: (xem [17])
Segment_Name SEGMENT
…
Segment_Name ENDS
END
Một số lệnh cơ bản:
- Lệnh truyền (di chuyển) dữ liệu
MOV đích, nguồn
Ví dụ: MOV AX, BX
MOV AX, [100]
- Lệnh lôgic và số học
ADD toán hạng đích, toán hạng nguồn
ADC toán hạng đích, toán hạng nguồn (Cờ nhớ CF)
DEC AX ; giảm AX đi 1 đơn vị
CMP toán hạng 1, toán hạng 2 (cờ nhớ ZF, CF)
T1<T2 ZF=0 CF=0
T1=T2 ZF=1 CF=0
T1>T2 ZF=0 CF=1
Ví dụ: ADD AX, BX
ADC CX, DX
ADD BX, 100
ADD 2000, 10
CMP AX, BX
CMP SI, 120 ; so sánh SI với hằng số
- Lênh dùng cho chuỗi kí tự
MOVSB, REP
- Lệnh để quản lý đơn vị trung tâm
STD, CLD, NOP
- Lệnh xuất/nhập hay lệnh vào/ra
IN AX, DX ; Dữ liệu ở cổng lưu trong thanh ghi DX sẽ được đọc vào AX
IN AL, 1A ; Cổng được chỉ định là các hằng số
OUT DX, AL ; Lệnh xuất dữ liệu ra cổng lưu trong DX
OUT 1A, AL ; Cổng được chỉ định là hằng số
- Lệnh nhảy
JMP đích ; lệnh nhảy không điều kiện
JC 802 A ; nhảy khi CF=1
JNC 2308 ; CF=0
JZ 5508 ; ZF=1
JNZ 149B ; ZF=0
CALL đích ; gọi chương trình con
- Lệnh ngắt
INT <số hiệu ngắt>
- Lệnh xử lý ngăn xếp
PUSH <thanh ghi, từ> ; 16 bit
POP <thanh ghi, từ> ; 16 bit
Ví dụ: PUSH BX ; cất dữ liệu của BX vào ngăn xếp
POP DI ; tạo lại một thanh ghi chỉ số
Biên dịch chương trình assembly:
- Chương trình MASM
- Chương trình TASM
Bài tập: Viết chương trình Assembly đọc vào ký tự từ bàn phím và hiển thị lên màn hình, sau đó quay trở về DOS.
Đọc thêm: Các dấu hiệu máy tính bị nhiễm virus.