1
M
M
Ở
Ở
Đ
Đ
Ầ
Ầ
U
U
:
:
Đã từ lâu, đi kèm với sự ra đời và phát triển của các phần mền tin học đem lại
lợi ích to lớn cho người sử dụng là sự xuất hiện của các chương trình chuyên phá hoại
là virus máy tính. Các chương trình có ích đem lại sự thuận lợi cho người sử dụng bao
nhiêu thì trên phương diện phá hoại các virus máy tính cũng gây ra những thiệt hại to
lớn bấy nhiêu, thành quả lao động của nhiều người trong suốt cả thời gian dài được cất
giữ trên các máy tính đã bị phá tan tành chỉ vì bị nhiễm virus.Vì tin học càng ngày
càng là nhu cầu cấp thiết nên cũng phải chấp nhận sự tồn tại mặt trái của nó, do vậy
cần phải biết một số kiến thức cơ bản về virus cũng như cách phát hiện nó nhằm mục
đích bảo vệ được máy tính của bạn ở mức tốt nhất có thể. Đồ án này được viết nhằm
mục đích đó, tuy nhiên do khả năng có hạn của người viết đồ án này còn có nhiều
khuyết điểm mong nhận được sự góp ý để có thể hoàn thiện hơn. Em xin cảm ơn cô
Trần Hồ Thủy Tiên và thầy Nguyễn Tấn Khôi đã tận tình hướng dẫn và các bạn cùng
lớp đã gợi ý rất nhiều để có thể hoàn thành đồ án này.
2
MỤC LỤC
MỞ ĐẦU: ............................................................................................................................................ 1
CƠ CHẾ PHÁT HIỆN VÀ BÁO ĐỘNG VIRUS ............................................................................... 3
A/Lý Thuyết: ........................................................................................................................................ 3
I/Một số khái niệm cơ bản về Virus: ................................................................................................... 3
1/Định nghĩa: ....................................................................................................................................... 3
2/Phân Loại: ......................................................................................................................................... 3
3/Tính chất của Virus: .......................................................................................................................... 3
4/Các công nghệ của Virus: ................................................................................................................. 4
II/Cơ chế phát hiện và báo động Virus: ............................................................................................. 11
1/Kiểm tra bộ nhớ trong: .................................................................................................................... 12
2/Kiểm tra Master Boot và Boot Sector: (dùng cho Virus Boot ) ..................................................... 13
3/Kiểm tra trên file: ............................................................................................................................ 15
B/Chương Trình Minh Họa: ............................................................................................................. 16
1/Ngôn ngữ viết chương trình:........................................................................................................... 16
2/Chương trình minh họa: .................................................................................................................. 16
3
C
C
Ơ
Ơ
C
C
H
H
Ế
Ế
P
P
H
H
Á
Á
T
T
H
H
I
I
Ệ
Ệ
N
N
V
V
À
À
B
B
Á
Á
O
O
Đ
Đ
Ộ
Ộ
N
N
G
G
V
V
I
I
R
R
U
U
S
S
A
A
/
/
L
L
ý
ý
T
T
h
h
u
u
y
y
ế
ế
t
t
:
:
I
I
/
/
M
M
ộ
ộ
t
t
s
s
ố
ố
k
k
h
h
á
á
i
i
n
n
i
i
ệ
ệ
m
m
c
c
ơ
ơ
b
b
ả
ả
n
n
v
v
ề
ề
V
V
i
i
r
r
u
u
s
s
:
:
1/Định nghĩa:
-Virus máy tính thực chất là các phần mềm tin học có khả năng gián tiếp tự
kích hoạt, tự nhân bản sao chép chính nó vào các chương trình khác nhằm mục đích
phá hoại, do thám hoặc cũng có thể chỉ là để vui đùa. Để tiện trình bày, từ nay khi nói
virus ta hiểu là virus máy tính
2/Phân Loại:
-Như đã nói tin học phát triển ngày càng mạnh mẽ thì virus cũng phát triển
ngày càng đa dạng có thể nói không có loại virus nào là hoàn toàn giống nhau. Tuy
nhiên các virus luôn có một số đặc điểm chung nhất định để dựa vào đó người ta có thể
phân biệt nó. Có nhiều cách phân loại khác nhau, phân loại theo đối tượng lây nhiễm
thì virus gồm hai loại :
a/Virus Boot(b-virus):
-Là các virus lây nhiễm lên BootSector trên đĩa mềm hoặc Master Boot
Record và Disk Boot Record trên đĩa cứng, bảng định vị file FAT(File Allocation
Table) bảng ghi(Windows Registry) của hệ điều hành Windows…Loại virus này chiếm
quyền điều khiển khi máy tính khởi động trước khi hệ điều hành được nạp do vậy loại
virus này hoạt động không phụ thuộc vào hệ điều hành
b/Virus File(F-virus):
-Là loại virus lây nhiễm trên các dạng file (có chứa nội dung thi hành được),
bao gồm các file có chứa mã máy như các file .com, .exe và các file chứa mã giả
(pseudo code) như các file .bat, .doc, và một số loại file khác…
3/Tính chất của Virus:
a/Tính lây lan:
-Đây là tính chất cơ bản để xác định một chương trình có phải là một virus hay
không. Các virus tin học mô phỏng giống như các virus sinh học lây lan trên các máy
tính, các virus đều được thiết kế theo hướng có khả năng lây lan mạnh nhất đó cũng
chính là yếu tố để dẫn đến sự ra đời của các virus trên mạng.
4
b/Tính phá hoại:
-Đây là một tính chất chủ yếu để đánh giá mức độ nguy hiểm của một virus.
Các virus được thiết kế với mục đích phá hoại bao gồm phá hoại dữ liệu và phá hoại
máy tính làm ảnh hưởng đến máy tính…Mặc dù vẫn có một số virus được tạo ra với
mục đích đùa giỡn hoặc thử nghiệm người tạo ra hoàn toàn không có ý định phá hoại,
nhưng do lỗi lôgic khi lập trình đôi khi lại gây ra những hiệu ứng nguy hiểm không
kém các virus được tạo ra để phá hoại mà chính người tạo ra nó cũng không thể lường
trước. Đặc biệt là khi có hơn một loại virus tồn tại trong máy tính và cùng phá hoại dữ
liệu. Các chương trình diệt virus sẽ bị lừa khi hậu quả phá hoại của con virus đầu tiên
bị con thứ hai tiếp tục phá hoại và tạo ra nhưng kết quả khác hẳn, làm mất hết đấu vết
nên các chương trình nhận dạng không xác định được loại virus nào dù cả hai đã được
cập nhật
c/Tính nhỏ gọn:
-Để có thể dễ dành lây nhiễm mà khó bị phát hiện các virus phần lớn đều có
tính nhỏ gọn. Tính nhỏ gọn trở nên rất quạn trọng đối với các virus lây lan trên mạng.
Hầu hết các virus đều có kích thước rất nhỏ trong khoảng 4KB trở xuống trừ một số
virus được viết bằng các ngôn ngữ bậc cao. Cùng với tính chất lây nhiễm tính chất này
đã tạo nên tên gọi virus tin học
d/Tính tương thích:
-Virus là một chương trình máy tính cũng như các chương trình khác virus
cũng có tính tương thích. Một virus được thiết kế để hoạt động trên một môi trường
này thường không thể hoạt động trên một môi trường khác không thích hợp với nó. Ví
dụ một con sâu mạng không thể lây nhiễm trên các máy tính sử dụng hoàn toàn môi
trường DOS vì nó không thể tìm ra bản đăng kí (Resgistry) của Windows. Để khắc
phục điểm yếu này ngày nay các virus phát triển theo hướng lai, bao gồm có nhiều
phần mỗi phần có tác dụng lây nhiễm trên những môi trường khác nhau.
e/Tính phát triển kế thừa:
-Các virus ra đời sau thường có xu hướng kế thừa những ý tưởng công nghệ
của các virus đã có trước theo cách này hay cách khác giữ nguyên hoặc sửa đổi cải tiến
…để có thể tận dụng những điểm mạnh và khắc phục những điểm yếu dễ dàng hơn.
Điều này nhiều khi tạo ra một họ virus như họ virus Date,họ virus Tiny…
4/Các công nghệ của Virus:
-Virus muốn tồn tại và phát triển thì nó phải có sức mạnh, sức mạnh có được
từ các công nghệ tạo virus, đó là các cách tạo virus thông minh tối ưu độc đáo,mỗi
cách mới để tạo ra virus đều có thể tạo ra một phương pháp mới một công nghệ mới.
Dưới đây chỉ là một số công nghệ thông dụng
a/Công nghệ lây nhiễm (Infect):
-Là công nghệ căn bản của một virus bảo đảm cho sự tồn tại lây lan phát triển
của virus. Những virus có tính lây lan càng nhanh thì thông thường mức độ nguy hiểm
càng lớn
5
-Các virus Boot
+Đối với đĩa mềm việc lây nhiễm đơn giản chỉ là thay thế Boot Record
(BR) với một đoạn chương trình virus
+ĐốI với đĩa cứng vì Master Boot Record (MB) và BR trên phân vùng hoạt
động đều được trao quyền khởi động nên có thể thay thể MB hay BR. Kích thước của
MB/BR chỉ gồm 1 sector 512 byte (DOS) nên không đủ lớn đối với một virus, nên cần
phải tìm một vị trí trên đĩa để lưu phần mã còn lại. MB/BR cũ chứa các thông tin quan
trọng về bản phân vùng/bảng tham số đĩa nên cần phải lưu, nơi lưu giữ phải bảo đảm
không bị ghi đè. Virus có thể sử dụng một số vùng đĩa sau:
+Đối với đĩa mềm: Có thể dùng những vùng đĩa ít khi được sử dụng như
các sector cuối của thư mục gốc các sector cuối trên đĩa, hay có thể sử dụng các sector
còn trống bất kì rồi đánh dấu các sector này đã bị hỏng, một phương pháp khác là có
thể định dạng thêm track mới cho đĩa mềm sau đó sử dụng track này.
+ĐốI với đĩa cứng : Vì trên track 0 thường chỉ chứa MB trên sector 1 do đó
có rất nhiều sector không dùng đến có thể sử dụng vào mục đích này hoặc có thể sử
dụng hai phương pháp đầu đã áp dụng đối vớI đĩa mềm
+Như vậy sau khi trao quyền điều khiển virus Boot sẽ tiến hành các hoạt
động lây nhiễm cài đặt sau đó đọc MB/BR cũ vào Ram trả quyền điều khiển cho đoạn
mã trong MB/BR cũ. Các virus thường cố gắng lây nhiễm trên đĩa cứng ngay khi khởi
động vì đĩa cứng là cố định trong suốt phiên làm việc của máy tính. Để lây nhiễm trên
đĩa mềm các Boot virus thường tiến hành phân phối vùng nhớ riêng để thường trú
chiếm một số ngắt để phục vụ cho việc lây lan (thường là ngắt 13h) ,mỗi khi phát hiện
thấy đĩa mềm chưa bị nhiễm virus sẽ tiến hành lây trên đĩa mềm đó.
- Các virus File
+Các virus File trên môt trường Dos chỉ có các dạng file thi hành .com;.
exe;.bat. Sử dụng các ngắt dịch vụ file để tiến hành những thao tác mở đóng file xóa ,
đặt thuộc tính file lấy đặt ngày giờ tạo file (thường sử dụng ngắt 21h)
+Các công nghệ ghép chương trình virus vào file chủ :
+ghi đè : áp dụng đối vớI file dạng .com đơn giản chỉ ghi đè mã lệnh lên
đầu file chủ ,mỗi khi chương trình chủ được thi hành virus sẽ chiếm quyền điều khiển.
Do virus không lưu dữ phần dữ liệu của chương trình chủ nên không thể trả quyền thi
hành cho chương trình chủ,do đó loại virus này mang tính phá hoại hơn là lây lan.
+ghi đè bảo toàn: áp dụng đối với file dạng .com, phần dữ liệu bị ghi đè
được virus ghi xuống cuối file nên có thể trả quyền điều khiển cho chương trình chủ
được.
+dịch chuyển:có thể áp dụng đối với các loại file .exe ,.com. Lây nhiễm
bằng cách đặt mã lệnh virus lên đầu file sau đó chuyển toàn bộ dữ liệu của chương
trình chủ xuống sau mã lệnh của virus,nên virus có thể trả quyền điều khiển cho
chương trình chủ.
6
+song hành : đặc điểm của dos là khi thi hành một file nếu không gõ phần
mở rộng thì dos sẽ thi hành các file cùng tên theo thứ tự .exe;.com;.bat
Do đó khi phát hiện một file exe thì virus sẽ tạo một file cùng tên có đuôi .com
Khi thi hành file ta không gõ phần mở rộng thì virus sẽ chiếm quyền điều khiển.
+ Nối thêm: Virus được ghi vào cuối file chủ, file bị sửa đổi sẽ chuyển
quyền điều khiển đến mã lệnh virus mỗi khi file thi hành. Đối với file .com virus
thường lưu vài byte đầu (thường từ 3-5 byte đủ kích thước cho một lệnh nhảy) lệnh này
định hướng đến phần mã còn lại của virus. Đối với file .exe virus sẽ sửa các giá trị
trong exe header để chuyển đầu vào của chương trình đến phần mã lệnh của virus
+còn một số cách khác như chèn giữa file, định hướng lại lệnh nhảy…
b/Công nghệ kiểm tra sự tồn tại (Check if exist):
-Virus phải lây nhiễm nhưng ở mỗi nơi chỉ được lây nhiễm một lần, nếu virus
lây nhiễm nhiều lần ở một nơi thì chẳng có hiệu quả gì tốt hơn việc lây nhiễm một lần
tại nơi đó, hơn nữa việc này ảnh hưởng rõ rệt tới tốc độ của máy tính làm người sử
dụng nghi ngờ máy bị nhiễm virus và tạo ra sơ hở lớn cho các chương trình diệt virus.
Chính vì các lí do đó trước khi lây nhiễm virus phải kiểm tra sự tồn tại của mình trên
đối tượng chủ, môi trường.
-Đối với virus boot
+Kiểm tra trên bộ nhớ chỉ tiến hành một lần khi máy tính khởi động trước
khi tiến hành thường trú do đó tốc độ không phải là yêu cầu chính quan trọng là độ
chính xác. Có thể kiểm tra bằng cách dò tìm các đoạn mã nhận dạng trên bộ nhớ hoặc
có thể tạo thêm hàm ngắt để kiểm tra. Virus có thể tạo nên những ngắt mới trả lại
những giá trị đặt biệt trong các thanh ghi là dấu hiệu để nhận biết sự tồn tại.
+kiểm tra trên đĩa:Kiểm tra trên đĩa đã bị lây nhiễm hay chưa,việc kiểm tra
trên đĩa phải được tiến hành nhiều lần nên phải bảo đảm tốc độ.
-Đối với virus file
+kiểm tra trên bộ nhớ tương tự như virus boot
+kiểm tra trên file: Có thể dò tìm đoạn mã nhận dạng trên file,virus có thể
kiểm tra đoạn mã nhận dạng trên toàn bộ file hoặc trên một phần nào đó của file, nếu
không thấy đoạn mã coi như file đó chưa bị lây nhiễm. Có thể dùng phương pháp kiểm
tra theo kích thước hoặc kiểm tra theo nhãn thời gian của file (thường khi lây nhiễm
virus đưa vào các giá trị đặc biệt như tháng 13 hoặc giây 65).
c/Công nghệ định vị:
-Là công nghệ để xác định vị trí của virus trên vùng nhớ. Đây là một công
nghệ cơ bản nhưng rất quan trọng vì để virus có thể hoạt động được nó bắt buộc hệ
thống phải thực thi nó bằng cách định vị địa chỉ của nó trong vùng nhớ và bắt buộc hệ
thống thi hành đoạn mã lệnh tại vùng nhớ đó.
-Đối với virus boot
+MB,BR luôn được BIOS nạp vào RAM tại địa chỉ 0000:7C00h và chuyển
quyền điều khiển với một lệnh nhảy xa: JMP FAR 0000:7C00
7
Do đó khi virus boot nhận được quyền điều khiển thanh ghi CS=0 các tham chiếu đều
phải tính theo offset 7C00
-Đối với virus file
+những virus áp dụng công nghệ lây nhiễm ghi đè, ghi đè bảo toàn, dịch
chuyển thì không cần định vị lại vì chương trình vẫn được thi hành như bình thường.
Các loại virus khác cần phải định vị lại vì offset của virus không được bảo toàn mà
thay đổi với mỗi file chủ mà nó lây nhiễm. Không giống như virus boot một file thi
hành có thể nạp vào những vùng địa chỉ khác nhau tùy thuộc vào tình trạng vùng nhớ.
+công nghệ định vị còn được gọi là công nghệ DELTA dựa trên cách tiến
hành lệnh CALL của bộ vi xử lí
Cú pháp : CALL địa chỉ
Câu lệnh tiếp theo
Khi thi hành lệnh này bộ vi xử lí sẽ cất địa chỉ offset của mã lệnh tiếp sau
lệnh CALL vào ngăn xếp sau đó chuyển IP đến địa chỉ cần gọi. Như vậy để lấy địa chỉ
của câu lệnh kế tiếp ta chỉ cần lấy giá trị lưu trong ngăn xếp, giá trị này thường được
chứa trong các thanh ghi SI DI BX BP sau đó sử dụng giá trị này và độ chênh lệch
điểm mốc để tham chiếu dữ liệu mã lệnh.
d/Công nghệ thường trú (Residency):
-Thường trú có nghĩa là bật máy lên cũng đồng nghĩa với việc khởi động một
chương trình virus. Chương trình này chỉ dừng khi tắt máy,việc thường trú này khiến
cho khả năng lây lan và phá hoại của virus rất dễ dàng và gây nên các thiệt hại to
lớn.Quá trình thường trú bao gồm:
+phân phối một vùng nhớ riêng để lưu giữ chương trình virus. Các cách
phân phối vùng nhớ là : phân phối vùng nhớ cao,phân phối vùng nhớ thấp…
+phân phối vùng nhớ cao (vùng nhớ cuối cùng của bộ nhớ): sau khi thực
hiện quá trình Post kích thước bộ nhớ cơ bản tính theo KB sẽ được ghi vào một vùng
dữ liệu của Bios ở địa chỉ 0:0413h. Khi một hệ điều hành nắm quyền điều khiển nó bắt
đầu kiểm soát vùng nhớ có kích thước đó bắt đầu từ 0000:0000h. Như vậy để dùng một
vùng nhớ riêng mà không bị hệ điều hành sử dụng chỉ cần giảm giá trị tại vùng địa chỉ
này và sủ dụng những KB cuối cùng của vùng nhớ (mỗi virus boot thường có cỡ 1-
4KB)
+phân phối vùng nhớ thấp :Các virus phân phối vùng nhớ cao thường dễ bị
phát hiện do làm giảm kích thước bộ nhớ mà hệ điều hành sử dụng. Để khắc phục có
thể sử dụng vùng nhớ thấp khi mà hệ điều hành đã được tải vào.
+ngoài ra còn có thể sử dụng phần còn trống của bảng vector ngắt chưa sử
dụng với mục đích dự trữ (thường dùng trong khoảng AAAA đến BBBB ), còn có thể
sử dụng các lỗ hổng trong vùng nhớ…
+Sau khi đã phân phối vào vùng nhớ cần phải chuyển toàn bộ chương trình
virus lên vùng nhớ đó và chặn một số ngắt phục vụ cho việc lây nhiễm. Có các cách
chặn ngắt sau: