Giáo viên hướng dẫn: ThS. Đỗ Xuân Toàn
Sinh viên thực hiện: Tạ Thế Hiếu
Trường Đại Học Dân Lập Hải Phòng
Khoa Công Nghệ Thông Tin
NỘI DUNG TRÌNH BÀY
1. Tổng quan về Virus
2. Các kỹ thuật xây dựng Virus trên Windows
3. Vài nét về Virus được xây dựng
1.1. Virus là gì?
1.2. Cấu trúc của một Virus File
1.3. Các kỹ thuật xây dựng Virus
1. TỔNG QUAN VỀ VIRUS
1.1. Virus là gì?
– Virus là một chương trình có khả năng tự sao
chép chính nó. Khi nó thực thi, nó sẽ tạo ra một
hay nhiều bản copy của chính nó một cách đơn
giản nhất. Những copy này sau đó có thể tiếp
tục thực hiện nhiều copy khác.
– Virus xâm nhập vào máy tính và thực thi trong
máy tính bằng cách nằm trong các chương trình
lớn hơn.
1. TỔNG QUAN VỀ VIRUS
1.1. Virus là gì?(tt)
Phân loại Virus:
Có nhiều cách để phân loại Virus nhưng cách phân loại
phổ biến hiện nay là phân loại theo đối tượng lây nhiễm,
gồm có:
– B-Virus: Virus chỉ tấn công lên Master Boot hay Boot
Sector.
– F-Virus: Virus chỉ tấn công lên các file thực thi.
1. TỔNG QUAN VỀ VIRUS
1.2. Cấu trúc của một virus file
1. TỔNG QUAN VỀ VIRUS
Đã có CT trong vùng nhớ?
Đúng
Không tìm thấy
Cài đặt CT vào bộ nhớ RAM
Begin
Sai
Tìm kiếm file để lây
Lây nhiễm
Đúng
End
Thực hiện CT phá hoại
Cần phá họai?
Sai
Tìm thấy
Trả quyền điều khiển
1.3. Các kỹ thuật xây dựng Virus
1.3.1. Kiểm tra tính tồn tại
1.3.2. Kỹ thuật thường trú
1.3.3. Kỹ thuật tìm file đối tượng
1.3.4. Kỹ thuật lây lan
1.3.5. Kỹ thuật phá hoại
1.3.6. Kỹ thuật gây nhiễu nguỵ trang
1. TỔNG QUAN VỀ VIRUS
1. TỔNG QUAN VỀ VIRUS
1.3.1. Kiểm tra tính tồn tại
- Kiểm tra vùng nhớ
Gọi hàm chức
năng của virus
Kiểm tra giá trị
hàm trả về?
Đã lây
Chưa lây
Đúng
Sai
Kiểm tra bằng hàm chức năng
Di chuyển đến vị trí đã
định vị đoạn mã của virus
So sánh với đoạn
mã của virus?
Chưa lây
Đã lây
Đúng
Sai
Kiểm tra bằng dò đoạn mã
1. TỔNG QUAN VỀ VIRUS
1.3.1. Kiểm tra tính tồn tại (tt)
- Kiểm tra file
Kiểm tra bằng kích thước Kiểm tra bằng cách dò đoạn mã Kiểm tra bằng Keyvalue
Mở file
Đọc tiêu đề
OK=FileSize-VirusSize
- HeaderSize
Đã lây
Chưa lây
Kiểm
tra:
IP=OK?
Đúng
Sai
Mở file
Đọc n bytes
cuối file
Đã lây
Chưa
lây
So sánh
với n bytes
của virus?
Đúng
Sai
Mở file
Nhảy tới: FileSize-
n
Đọc n bytes vào
buffer
Đã lây
Chưa lây
Buffer =
Keyvalue
?
Đúng
Sai
1. TỔNG QUAN VỀ VIRUS
1.3.2. Kỹ thuật thường trú
- Kỹ thuật thường trú là một vấn đề khó giải quyết.
- Khi virus thường trú dễ dẫn đến sự thường trú của
chương trình chủ => Kích thước thường trú quá
lớn => Dễ bị phát hiện
- Một cách khắc phục đơn giản là lây vào các file
nằm trong 2 thư mục Windows và System
1. TỔNG QUAN VỀ VIRUS
1.3.3. Kỹ thuật tìm file đối tượng
Gọi chức năng FindFirstFile
Tìm được file?
File có thể lây?
File EXE?
Đã lây
nhiễm?
Thưc hiện lây nhiễm
Gọi chức năng FindNextFile
Đúng
Sai
Sai
Sai
Đúng
Đúng
Đúng
1. TỔNG QUAN VỀ VIRUS
1.3.4. Kỹ thuật lây lan
Đúng
Lấy thuộc tính
Đặt lại thuộc tính (Normal)
Mở file
Lấy ngày giờ
Ghi chương trình Virus
Chỉnh lại Header
Ghi lại Header
Đặt lại ngày
Đóng file
Trả lại thuộc tính ban đầu
Kiểm tra đã lây nhiễm?
Sai
1. TỔNG QUAN VỀ VIRUS
1.3.5. Kỹ thuật phá hoại
- Đây là cuộc chạy đua giữa các virus
- Có nhiều kiểu phá hoại khi virus đã xâm nhập
vào một hệ thống máy tính.
1. TỔNG QUAN VỀ VIRUS
1.3.6. Kỹ thuật gây nhiễu nguỵ trang
- Đây là một kỹ thuật khó khi xây dựng virus
- Khi một virus lây nhiễm vào một file điều
không thể tránh khỏi là file chủ sẽ tăng kích
thước.
- Kĩ thuật này làm cho hệ điều hành và người sử
dụng làm tưởng một file đang bị lây nhiễm là
trong sạch
2.1. Cấu trúc file EXE trên Windows
2.2. Cách tổ chức bộ nhớ trên Windows
2.3. Cách sử dụng hàm API trong Windows
2. CÁC KỸ THUẬT XÂY DỰNG VIRUS
TRÊN WINDOWS
2.1. Cấu trúc file EXE của Windows
• Một file exe Windows thực sự có 2 Hearder
• Có một DOS header và 1 chương trình DOS
đi kèm với nó
• Sau DOS hearder là Windows hearder.
2. CÁC KỸ THUẬT XÂY DỰNG VIRUS
TRÊN WINDOWS
The Windows EXE New Header
Offset Cỡ Tên Mô t
0 2 bytes Sidnature Nhn dng header mi,luôn luôn cha cc bytes “NE”
2 1 Linker Version Nhn dng liner liên kt vi exe
3 1 Linker Rersion S Phiên bn f of liên kt
4 2
Entry Table
offset
Offset của Entry Table, tương ng vi diểm bắt đầu của
một hearder mi
6 2
Entry Table
Length
Độ dài của Entry table, tính bằng bytes
8 4 Reserved
0C 2 Flags
Bit Mô t
0 1= đon dữ liệu đơn ( 1 DLL)
1
1= nhiều đon dữ liệu ( 1 chương trình ng
dng0
11 1= đon đàu tiên có mã ti ng dng
13 1= lỗi link-time
15 1= đây là 1 DLL
0E 2 Auto Data
Segment
Chỉ rõ s đon dữ liệu tự động
10 2 Local hep Size khởi to kích thưc cua vùng heap, tính bằng bytes
12 2 Stack Size khởi to kóch thưc vùng stack, tính bằng bytes
14 2 Initial IP Khởi to offset của điểm đầu.
16 2 Initial CS khởi to con trỏ CS – nhãn của bng segment
18 2 Initial SP khởi to con trỏ SP cho chương trình
1A 2 Initial SS khởi to con trỏ SS – nhãn của bng Segment
1C 2 Seg Table
Entries
S hiệu điểm đầu của bng Segment
1E 2 Mod Ref Tbl
Ents
S hiệu điểm đầu của bng Module Reference
20 2 Mod Nm Tbl
Ents
S hiệu điểm đầu của bng Module Name
22 2 Seg Table Offset Offset đn bng Segment, bắt đầu từ hearder mi
24 2 Resre Tbl offset Offset đn bng Resource, bắt đầu từ NH
26 2 Resre Nm Tbl
Offs
Offset đn bng tên Resident, bắt đầu từ hearder mi
28 2 Mod Ref
Tbl Offs
Offset đn bng Module Reference
2A 2 Imp Nm
Tbl Offs
Offset đn bng tên Imported
2C 4 Nrs Nm
Tbl Offs
Offset đn bng tên Non-Resident, bắt đàu từ điểm bắt đầu của file, tính
bằng bytes
30 2 Mov
Entry
Pts
S bưc có thể dịch chuyển của con trỏ đầu vào.
32 2 Seg
Alignme
nt
Bn ghi cơ sơ 2 của kích thưc đon sector
Mặc định là 9=512 byte sector logic
34 2 Resourc
e Segs
S hiệu của đon tài nguyên.
36 1 Op Sys Chỉ HĐH nào điều khiển file này(1=OS/2; 2=WindowsDOS)
37 1 Flags2 Bit Mô t
1 1=ng dng của Windows2.x chy trong ch độ protected
2 1=ng dng của Windows2.x chng li sự tương thích các
mẫu
3 1= Vùng ti nhanh các gói dữ liệu
2.2. Cách tổ chức bộ nhớ trên windows
- Windows sử dụng bộ quản lý bộ nhớ ảo để quản lý bộ nhớ.
- Bộ nhớ của windows là bộ nhớ phẳng được chia thành từng page
4KB.
- Một ứng dụng được cấp một không gian bộ nhớ trong đó chủ yếu là
bộ nhớ ảo và chúng được sử dụng trong 2 chế độ: User mode và
Kernel mode.
2. CÁC KỸ THUẬT XÂY DỰNG VIRUS
TRÊN WINDOWS
2.3. Sử dụng hàm API
- Hầu hết các dịch vụ ngắt DOS 21h đều có giá trị
trong Windows
- Tuy nhiên các Virus "Windowsy" lại gọi hàm
API một cách trực tiếp
- Các hàm API rất dễ sử dụng trong các ngôn ngữ
lập trình bậc cao.
- Cách sử dụng hàm API khi xây dựng virus trong
ngôn ngữ Assembly khá phức tạp. Tuy nhiên có
thể sử dụng cách gọi thông qua toán tử Invoke
2. CÁC KỸ THUẬT XÂY DỰNG VIRUS
TRÊN WINDOWS
3. VIRUS ĐƯỢC XÂY DỰNG
3.1. Lưu đồ thuật toán của Virus
3.2. Các thủ tục mà virus sử dụng
3. VIRUS ĐƯỢC XÂY DỰNG
3.1. Lưu đồ thuật toán của Virus
Begin
End
Tạo file EXE của virus
Tạo key mới trong Registry
Xác định thư mục tìm kiếm
file lây nhiễm
Số thý mục đã lây +=1
Lấy đuôi mở rộng; Lần lấy += 1
Tìm kiếm file lần đâu trong thư mục
So sánh: đuôi mở rộng với đuôi
mở rộng của file
Lây nhiễm
Tìm file tiếp theo trong thư mục
Số thư mục đã lây = 4?
Lần lấy = 3?
Thấy
Thấy
Không thấy
Không thấy
Đúng
Đúng
Đúng
Sai
Sai
Sai
3.2. Các thủ tục mà virus sử dụng
- Thủ tục InStr2
- Thủ tục StrCat
- Thủ tục StrCatDest:
- Thủ tục StrCpy
- Thủ tục GetNextString
- Thủ tục RemoveFirstLast
3. VIRUS ĐƯỢC XÂY DỰNG
KẾT LUẬN
- Virus là một chương trình máy tính nên rất dễ gây
nhầm lẫm với một số chương trình của người sử
dụng.
- Ngoài cách dựa hoàn toàn vào các chương trình
diệt virus ta cũng nên có thêm một chút kiến thức
về hệ thống máy tính và virus để khỏi ngỡ ngàng,
bối rối khi bị virus xâm nhập và phá hoại.