1
MMỞỞ ĐĐẦẦUU::
Đã 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
ễm lên BootSector trên đĩa mềm ho ặc Master Boot đĩa cứng, bảng định vị file FAT(File Allocation
CCƠƠ CCHHẾẾ PPHHÁÁTT HHIIỆỆNN VVÀÀ BBÁÁOO ĐĐỘỘNNGG VVIIRRUUSS AA//LLýý TThhuuyyếếtt:: II//MMộộtt ssốố kkhhááii nniiệệmm ccơơ bbảảnn vvềề VViirruuss:: 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 Record và Disk Boot Record trên 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:
8 ++ thay th ế các ng ắt tr ực ti ếp trong b ảng vector ng ắt .B ảng vector ng ắt chứa địa chỉ của 256 ng ắt từ ngắt 00 đến FFh được đặt bắt đầu từ địa chỉ 0000:0000, các vector ngắt đặt liền nhau cho đến địa chỉ 0000:03FCh. Virus thay th ế các ngắt cần thiết trong bảng bằng các vector ng ắt mới chỉ đến thủ tục xử lí ngắt mới của virus các vector ngắt cũ cũng được lưu lại để sử dụng khi cần. + nếu phát hiện thủ tục xử lí ngắt nằm trong RAM có thể áp dụng một công nghệ khác : thay th ế một số lệnh đầu tiên ở đầu thủ tục xử lí ng ắt bằng lệnh nhảy xa JMP FAR xxxx:yyyy . Nh ững mã lệnh bị thay thế được lưu lại để sử dụng khi cần dùng cácdịch vụ của thủ tục xử lí ngắt cũ. e/Công nghệ phá hoại,do thám (Payload): -Đây không ph ải là công ngh ệ bắt buộc phải có của một virus. Nh ưng một số virus được thiết kế để do thám (nói cho cùng thì đó cũng là một loại phá hoại) luôn sử dụng và coi công nghệ này là trung tâm. Các virus loại này đôi khi tạo ra thiêt hại rất to lớn th ường là nghiên v ề ng ười sử dụng hơn là s ự hư hại máy tính, vì được dùng để đánh cắp thông tin nhiều khi là sống còn đối với người sử dụng f/Công nghệ tạo áo giáp (Armouring): -Là công nghệ chống gỡ rối dịch ngược mã lệnh virus tạo ra cho virus m ột vỏ bọc để có khả năng đề kháng mạnh hơn đối với các chương trình diệt virus. Công nghệ này ch ủ yếu dựa trên công ngh ệ mã hóa k ết hợp với vi ệc sử dụng các l ệnh CALL JMP.. .Chương trình dịch ngược sẽ rất khó kh ăn khi dịch các virus được mã hóa hay dịch các virus sử dụng các lệnh CALL JMP lôn xộn dữ liệu và mã lệnh được bố trí xen kẽ… h/Công nghệ ngụy trang (Stealth): -Là công nghệ giấu diếm ngụy trang sự tồn tại của virus trên đối tượng chủ và môi trường lây nhiễm. Người dùng và ngay c ả các chương trình diệt virus cũng sẽ khó phát hiện khi bị virus tấn công. -Đối với virus boot: +ngụy trang trên b ộ nh ớ: các virus boot th ường trú trên vùng nh ớ cao thường dễ bị phát hi ện để khắc phục điểm yếu đó các virus th ường chờ hệ điều hành nạp vào rồi tiến hành thường trú ở vùng nhớ thấp +ngụy trang trên đĩa : để ngụy trang trên đĩa virus boot c ần tìm cách thay đổI MB/BR ít nhất có thể nhằm giảm khả năng bị phát hiện, có thể ghi một đoạn mã rất nhỏ trong MB/BR còn ph ần còn lại nạp vào vùng nh ớ. Một phương pháp có hi ệu quả hơn là khi virus th ường trú trong b ộ nhớ mọi yêu cầu đọc ghi đĩa khác sẽ được định hướng lại thành đọc ghi sector lưu giữ MB/BR cũ. Các chương trình khác sẽ nhận được MB/BR cũ do đó không phát hi ện sự tồn tại của virus, khi s ử dụng phương pháp này cần phải kiểm soát tất cả thao tác đọc ghi đĩa lên MB/BR. Khi ti ến hành lây nhi ễm có thể đánh dấu các sector đã hỏng để hệ điều hành không cón sử dụng các sector đó nữa. -Đối với virus file
9 +ngụy trang trên b ộ nh ớ : các virus file th ường trú trên vùng nh ớ dễ bị phát hiện nên có thể sử dụng ngụy trang trên vùng nhớ thấp, trên UMB hoặc trên HMB +ngụy trang trên file : không nh ư MB/BR ít khi được người sử dụng quan tâm các file được quan sát th ường xuyên mọi thay đổi về kích th ước ngày tháng n ội dung dễ bị nhận thấy. Vì vậy ngụy trang trên file là y ếu tố sống còn đối với virus file, có thể sử dụng các công nghệ sau: ++xử lí việc tăng kích thước file: Phương pháp này chỉ sử dụng đối với loại virus làm tăng kích thước file. Kích th ước file là một giá trị longint (4 byte) ph ải chặn ngắt 021h của Dos và làm giảm giá trị này bằng kích thước của virus. ++Xử lí việc thay đổi ngày tháng /thu ộc tính: đơn giản chỉ là bảo lưu nhãn thời gian và thuộc tính cũ của file bị lây nhiễm ++Xử lí việc thay đổi nội dung file: virus có th ể sử dụng một phương pháp có tên là DisInfect On the Fly :m ỗi khi có yêu c ầu mở một file lây nhi ễm để đọc virus sẽ tiến hành tự loại bỏ khỏi file khi đóng file hay thi hành file virus s ẽ ti ến hành lây nhiễm lại lần nữa. g/Công nghệ mã hóa (Encryption): -Là công nghệ mã hóa phần chương trình chính của virus đây là công nghệ cũ nhưng hiện nay vẫn được sử dụng , cải tiến sửa đổi. Công nghệ này cũng nhằm để che dấu sự tồn tại của virus trên đối tượng chủ. Trong đó phép XOR th ường được sử dụng do tính đơn giản mặt khác thủ tục mã hóa cũng chính là thủ tục giải mã i/Công nghệ đa hình (Polymorphism): -Công ngh ệ này dùng để ch ống lại ph ương pháp dò tìm đoạn mã c ủa các chương trình di ệt virus. Công ngh ệ này dựa trên ý t ưởng mỗi mẫu virus được mã hóa với nh ững khóa mã gi ải mã khác bi ệt, mã l ệnh toán h ọc/lôgic khác bi ệt … so v ới những mẫu trước đó. Dù virus được mã hóa nh ưng đoạn chương trình mã hóa v ẫn cố định trên toàn bộ mọi mơi mà virus lây nhi ễm, ý tưởng chính của công nghệ đa hình là thay đổi cả thủ tục mã hóa để các virus khác nhau trên mỗI file có rất nhiều cách từ đơn giản đến phức tạp để thực hiện công nghệ này.Có thể sử dụng một số cách sau: +Virus có m ột số bộ mã hóa gi ải mã m ỗi lần lây nhi ễm chọn một bộ mã hóa bất kì trong tập hợp đó +Bộ giải mã chứa một số lệnh cố định phần còn lại có thể thay đổi…. j/Công nghệ biến hình (Metamorphism): -Là một công nghệ độc đáo hoàn hảo để chống lại các chương trình diệt virus. Công nghệ đa hình chỉ tạo ra các bộ giải mã khác bi ệt còn công ngh ệ biến hình sinh ra đọan mã mới hoàn toàn. Rõ ràng đây là công ngh ệ khó vì ph ải biến đổi đoạn mã mà vẫn giữ nguyên tác dụng của virus nhưng đổi lại các chương trình diệt virus sẽ rất khó diệt được virus có sử dụng công nghệ này. -Công nghệ này rất phức tạp sau đây là một số điểm chính yếu của công nghệ này:
10 +có bộ dịch ngược nội tại để dịch ngược các lệnh +có bộ rút gọn mã:có nhi ệm vụ rút gọn tối ưu hai mã l ệnh thành một lệnh mà không thay đổi hành động của virus +có bộ mở rộng mã:ngược lại với bộ rút gọn mã +có bộ hoán đổi mã:có nhiệm vụ hoán đổi các mã lệnh +có bộ định vị lại : định vị lại các lệnh nhảy,lệnh gọi … +có bộ sinh rác:có nhi ệm vụ chèn thêm các đoạn mã lệnh không có ngh ĩa vào chương trình … k/Công nghệ chống mô phỏng (Anti emulation): -Emulation là công ngh ệ mà các chương trình diệt virus sử dụng để mô phỏng mã lệnh của các ch ương trình nghi ng ờ là virus ki ểm tra phát hi ện virus ch ưa bi ết. Công nghệ chống mô ph ỏng giúp cho virus có th ể ngụy trang để vượt qua sự kiểm tra hay làm cho h ệ mô ph ỏng không th ể tiến hành phân tích virus. Có th ể chiếm các ng ắt 01h,02h ph ục vụ cho vi ệc gỡ rối ho ặc là s ử dụng công ngh ệ th ường trú trên HMA (High Memory Area)… c ũng có th ể tiến hành thao tác v ới ngăn xếp và các thanh ghi đoạn dữ liệu. l/Công nghệ chống theo dõi (Anti heuristic) -Một số ch ương trình di ệt virus hi ện đại sử dụng một ph ương pháp g ọi là heuristic phát hi ện virus d ựa trên hành vi c ủa các ch ương trình và công ngh ệ anti heuristic nhằm để chống lại sự phát hiện của các trình diệt virus đó. Có thể sử dụng các cách sau: +sử dụng các hàm d ịch vụ (các ng ắt) theo cách riêng hay các s ử dụng các hàm dịch cụ giả do virus tạo ra +chèn thêm các đoạn mã lệnh rác không ảnh hưởng đến lôgic chương trình xen kẽ giữa những mã lệnh thật sự m/Công nghệ Tunneling: -Các chương trình diệt virus sử dụng các chương trình kiểm soát hệ thống phát hiện các ho ạt động đặc bi ệt nghi ng ờ là virus để cảnh báo. Tunneling là công ngh ệ nhằm để giành được quyền kiểm soát cao nh ất đối với môi trường tránh được sự kiểm soát của các chương trình diệt virus n/Công nghệ Anti-Tunnel: -Công ngh ệ tunneling c ũng được các ch ương trình di ệt virus s ử dụng để có được quyền kiểm soát cao nhất. Anti tunnel là công nghệ mà các virus sử dụng để ngăn chặn các ch ương trình di ệt virus cũng như các virus khác n ắm được quyền kiểm soát cao nhất. Công ngh ệ này ch ủ yếu hạn chế phương pháp sử dụng các ng ắt 01h,03h để lần theo chuỗi thủ tục ngắt. -Đối với ngắt 01h nếu giá trị của cờ bẫy trong thanh ghi cờ được bật thì bộ xử lí sẽ tiến hành g ọi ngắt 01h sau khi thi hành m ột mã lệnh. Thanh ghi c ờ, địa chỉ của lệnh bị ngắt được lưu vào ng ăn xếp trước khi quy ền điều khiển được trao cho th ủ tục xử lí ngắt. Sử dụng các thao tác tr ực tiếp đối với thanh ghi cờ và ngăn xếp virus có thể
11 phát hi ện và làm d ừng quá trình l ần vết này. M ột ph ương pháp khác là đặt lại các vecter ngắt 01h,03h để ngăn chặn quá trình lần vết. o/Công nghệ Ani Bait: -Biat là một thuật ngữ chỉ các chương trình dùng để bẫy các virus các ch ương trình này không làm b ất cứ việc gì ch ỉ là đối tượng nhử mồi để virus xu ất hiện. Công nghệ anti Bait nhằm để cho virus thông minh h ơn nhận biết được các bẫy để tránh việc phát hiện. Chủ yếu dựa trên tính ch ất chung của file Bait virus th ường chọn các file để lây nhiễm có các tiêu chí sau: +trong tên không có chữ số (thường dùng để đánh số các file Bait) +có kích thước tương đối lớn +có mã lệnh không quá đặc biệt -Đây là công nghệ không được dùng nhiều p/Công nghệ tối ưu: -Bao gồm các cách viết mã và thiết kế nhằm để tối ưu hóa virus về mặt tốc độ, kích thước, khả năng phá ho ại, khả năng chống lại các ch ương trình di ệt…Công nghệ này khi ến cho virus m ạnh lên m ột cách toàn c ục. Công ngh ệ này được sử dụng rất nhiều và gây nhi ều khó kh ăn cho các trình di ệt virus. Có th ể nói công ngh ệ này r ất rộng lớn có rất nhiều cách làm cho ch ương trình virus tối ưu, sau đây trình bày một số cách: -Sử dụng các th ủ tục: nếu các mã l ệnh có kích th ước lớn mà ph ải sử dụng nhiều lần thì có thể sử dụng các thủ tục. Vì lệnh gọi thủ tục và lệnh trở về ( call/ret) có kích thước 3+1=4 byte nên có thể đưa ra công thức tính số byte tiết kiệm được là: Số byteTKĐ=(Cỡ của Proc-4)* số lần gọi Proc-cỡ của Proc +Nên nhớ phương pháp này làm nh ỏ chương trình virus nh ưng cũng đồng thờI tăng thời gian xử lí cho CPU nhưng đây là một ảnh hưởng không đáng kể -Sử dụng các mã lệnh tiết kiệm khối lượng cũng như thời gian thực hiện công việc +Sử dụng các thanh ghi AL/AX thay cho các thanh ghi khác vì các thanh ghi này có kích thước mã lệnh ngắn hơn các thanh ghi khác, ví dụ CMP BX,233 ;4 byte CMP AX,233;3 byte +Sử dụng thanh ghi đoạn DS thay cho các thanh ghi đoạn khác MOV AX, ES:[SI] ;3 byte MOV AX,DS:[SI] ;2 byte IIII//CCơơ cchhếế pphháátt hhiiệệnn vvàà bbááoo đđộộnngg VViirruuss:: -Cơ chế phát hiện và báo động virus có thể bao gồm các bước sau +Kiểm tra bộ nhớ trong +Kiểm tra Master Boot và Boot Sector +Kiểm tra trên file
Kết Thúc
12 1/Kiểm tra bộ nhớ trong: -Có hai cách để kiểm tra sự có mặt của virus trong bộ nhớ +Cách thứ nhất là kiểm tra sự có mặt của đoạn mã nhận dạng virus tại một địa chỉ xác định trong bộ nhớ, cách này có nh ược điểm là chỉ nhận biết được các virus có trong cơ sở dữ liệu của chương trình di ệt đối với những virus mới không được cập nhật thì cách này không thể phát hiện được. +Cách thứ hai là làm theo một số chương trình virus khi sử dụng công nghệ kiểm tra sự tồn tại của mình trong b ộ nhớ dùng ngắt 21h và các ch ức năng đặc biệt để kiểm tra, và ki ểm tra dung l ượng của vùng nh ớ do Dos qu ản lí. Cách này c ũng có nhược điểm là th ời gian ki ểm tra tăng lên và không ph ải virus nào c ũng sử dụng cách kiểm tra này. -Nên kiểm tra sử dụng kết hợp cả hai cách trên t ức là ban đầu dùng cách th ứ nhất sau đó nếu không phát hiện dùng cách hai. Sơ đồ khối cụ thể như sau Bắt Đầu Kiểm Tra MeM Nhận Dạng True Báo Động Mã Virus False Kiểm Tra địa chỉ Ngắt 13h,21h và False Kích thước Bộ Nhớ True -Nhớ rằng cách này không ch ấp nhận bất cứ chương trình nào thường trú ngắt 21h trong quá trình kiểm tra -Giai đoạn nhận dạng mã : ta có thể kiểm tra các mã nhận dạng được lưu trong file nào đó ví d ụ DBVIRM.DAT khi có virus m ới ta có th ể cập nh ật bằng cách đưa thêm dữ liệu vào file này mà không c ần phải thay đổi chương trình .Như vậy quá trình ể mở được file thực hi ện của giai đoạn này là ban
đầu ki ểm tra xem có th
13 DBVIRM.DAT nếu không có báo lỗi (có thể không có file này ho ặc file này bị hư). Còn nếu mở thành công thì b ắt đầu ki ểm tra.File DBVIRM.DAT có th ể có th ể được cấu tạo bao gồm các bản ghi mỗi bản ghi bao gồm các trường như sau: +địa chỉ segment chứa mã nhận biết của virus trong bộ nhớ +địa chỉ offset chứa mã nhận biết của virus trong bộ nhớ +số lượng byte trong mã nhận biết +mã nhận biết của virus +tên của virus - Nên nh ớ rằng trên đây chỉ là một mẫu điển hình bạn hoàn toàn có th ể thay đổi chương trình theo ý muốn -Giai đoạn kiểm tra dung lượng bộ nhớ và ngắt 21h. +nên nh ớ địa chỉ của ngắt 21h không ph ải cố định, mà thay đổi theo từng phiên bản của Dos nên phải có một bảng thống kê địa chỉ của ngắt 21 h theo từng phiên bản của Dos, và phải có thao tác lấy phiên bản của Dos trong chương trình. Nếu địa chỉ của ngắt 21h không đúng thì có thể nghi ngờ rằng máy bị nhiễm. +tiếp tục thực hiện kiểm tra dung lượng bộ nhớ. Dos lưu giữ giá trị bộ nhớ mình quản lí tại biến có địa chỉ (0:413 h),nếu giá trị nhận được không đủ 640kb thì có thể máy b ị nhi ễm,tuy nhiên c ũng có khi b ộ nh ớ bị hỏng ch ứ không ph ải bộ nh ớ bị nhiễm virus, tuy nhiên trường hợp này ít gặp. 2/Kiểm tra Master Boot và Boot Sector: (dùng cho Virus Boot ) -Nói chung hầu hết các MB của các máy PC chạy trên hệ điều hành Dos thông dụng đều giống nhau. MB có nhi ệm vụ xác định phân vùng ho ạt động sau đó chuyển đoạn mã của chính nó đi nơi khác để nạp Boot record của phân vùng hoạt động vào địa chỉ 0:7C00 cuối cùng chuyển điều khiển cho bản Boot record vừa được đọc. -Có thể thực hiện kiểm tra theo giai đoạn sau: +Trước hết đọc MB cần kiểm tra đối chiếu đoạn mã của nó với MB chuẩn nếu trùng thì thông báo không có virus trong MB . +Nếu MB không trùng với MB chuẩn thì chuyển sang giai đoạn hai ta phải thực hiện quá trình t ương tự như quá trình ki ểm tra nh ận dạng mã của bộ nhớ. Tức là kiểm tra đoạn mã nh ận dạng virus có trong c ơ sở dữ li ệu (ví d ụ nh ư file DBVIRB.DAT) với đoạn mã trong MB để xem virus gì, t ừ đó có th ể biết được vị trí MB cũ mà virus dấu (nhờ vào đó có thể kiểm tra so sánh MB bị dấu với MB chuẩn nếu trùng thì khôi phục lại MB cũ ). +Sau khi ki ểm tra h ết file DBVIRB.DAT mà không th ấy đoạn mã nh ận dạng nào phù hợp tức là không th ể xác định được bị nhiễm virus gì (hay là MB có th ể làm nhiệm vụ đặc biệt) ta có thể xây dựng thêm modul chương trình lựa chọn có ghi đè MB chuẩn lên MB nghi ngờ nhiễm hay không. -Trên đây là một mô hình c ủa ch ương trình ki ểm tra MB có th ể th ực hiên theo nhiều cách khác không nhất thiết phải theo mô hình này. Chú ý là n ếu có hai virus boot cùng nhi ễm vào một máy thì v ấn đề tr ở nên ph ức tạp và c ực kì khó gi ải quyết . Gi ả
14 thiết là virus th ứ nhất lây nhi ễm làm sai l ạc MB rồi dấu MB cũ đi, sau đó virus th ứ hai lại làm sai lạc MB đã bị hỏng và lại dấu MB bị hỏng đi .Như vậy thì cho dù chương trình di ệt có thông tin v ề cả hai lo ại virus này thì v ẫn không th ể xác định được lo ại virus nào lây nhi ễm mà cho dù xác định được thì cùng l ắm chỉ xác định được loại thứ hai. Tất nhiên là không thể khôi phục được MB (loạI hai dấu MB đã bị hỏng bởi loại 1) mà phải ghi đè MB. Vì vậy không nên tạo ra virus dù chỉ với mục đích đùa giỡn, nó có thể không gây hại gì cho hệ thống nhưng có thể tạo điều kiện cho các lo ại virus có hại phá hoại. -File DBVIRM.DAT bao gồm các bản ghi có thể có các trường sau: ++offset bắt đầu của mã nhận dạng ++Số lượng byte trong mã nhận dạng ++mã nhận biết của virus ++tên của virus ++header nơi cất dấu MB cũ của đĩa ++cylinder sector nơi cất dấu MB cũ Sơ đồ khối của quá trình kiểm tra MB,BR: Bắt Đầu Kiểm Tra MB,BR So sánh So Sánh MB,BR False MB,BR c ần kiểm tra với MB,BR Chuẩn với mã nhận dạng virus True True Báo Động nhi ễm virus False Kết Thúc Báo Động có thể b ị nhiễm virus
Hết Tìm File Còn M ở File
15 3/Kiểm tra trên file: -Căn cứ vào tính chất lây lan của virus trên file việc kiểm tra trên file có thể tiến hành bằng cả hai cách: ki ểm tra đoạn mã nh ận biết virus và ki ểm tra sơ đồ hoạt động của virus (cách này chỉ thực hiện được khi có sự nghiên cứu kĩ lưỡng về mỗi loại virus ) -Công việc của quá trình kiểm tra file bao gồm a/Tìm file (Search): -Công vi ệc tìm file không đơn giản cách tốt nhất là th ực hiện theo cơ chế đệ quy, trong quá trình tìm ki ếm nếu là file thì ki ểm tra xem có bị nhiễm virus hay không còn nếu là thư mục thì phải tìm kiếm file ở trong thư mục đó b/Kiểm tra file: -Có nhiều cách để kiểm tra file vì virus rất phong phú nên tốt nhất là thực hiện tất cả các cách. Có thể dựa vào cách kiểm tra sự tồn tại của virus ghi vào file nhưng giá trị đặc biệt, kiểm tra kích th ước file… nh ưng các ph ương pháp này có nhi ều sơ hở ,vì đâu ph ải virus nào c ũng sử dụng ph ương pháp ki ểm tra sự tồn tại nh ư vậy, còn vi ệc thay đổi kích thước file thì có nguyên nhân không rõ ràng vì có th ể có nhiều loại virus trùng kích thước, hơn nữa bạn lấy gì làm chuẩn để so sánh kích th ước file? chắc gì vào thời điểm bạn lấy kích thước file làm chuẩn thì file đó không bị nhiễm virus? -Có th ể dùng các ph ương pháp tìm đoạn mã nh ận dạng nh ư đã nói ở trên nhưng rõ ràng các virus mới không thể bị phát hiện bởi phương pháp này. Nhưng nên bi ết không có ch ương trình di ệt virus nào là di ệt được mọi loại virus cũng như không có virus nào là không di ệt được. Nên chấp nhận các giải pháp tạm thời sao cho có mức độ thành công cao nhất có thể -Sơ đồ khối của quá trình này: Bắt Đầu Kiểm Tra File (Đọc) Không Bị Nhiễm Kiểm Tra File False
Bị Nhiễm
Động Kết Thúc? Kết Thúc Báo
True
16 -Để có th ể sửa chửa file nh ư một chương trình di ệt virus th ật sự thì quá trình mở file yêu cầu là đọc ghi, nếu phát hiện ra file nhi ễm thì cần phải khôi phục file theo đúng quy trình dành riêng cho mỗi loại virus và cho mỗi loại file. -Đối với file .com +nếu dạng virus nối file chỉ cần định vị và trả lại các file đầu bị chiếm sau đó dời con trỏ đến vị trí đầu của virus rồi cắt chương trình virus ra khỏi chương trình. +Dạng virus dịch chuyển phải tải toàn bộ file vào vùng nhớ rồi ghi lại vào đĩa với chỉ định bắt đầu file là địa chỉ cũ cộng với kích thước chương trình virus…. -Đối vớI file . exe +nếu virus l ưu gi ữ header c ũ thì ph ải dựa vào virus tìm và khôi ph ục lại header cũ,ngược lại phảI định vị lại header BB//CChhưươơnngg TTrrììnnhh MMiinnhh HHọọaa:: 1/Ngôn ngữ viết chương trình: -Dùng các ngôn ng ữ thiên về lập trình hệ thống như ngôn ngữ C (hoặc Pascal) và Assembly tuy nhiên t ốt nh ất là k ết hợp cả hai ngôn ng ữ này để có th ể tận dụng được thế mạnh của cả hai ngôn ngữ 2/Chương trình minh họa: -Do kh ả năng có h ạn của ng ười vi ết ch ương trình minh h ọa còn có nhi ều nhược điểm chỉ có thể phản ánh một phần của một chương trình đầy đủ. Chương trình minh họa ch ỉ có th ể ki ểm tra trên b ộ nh ớ,và ki ểm tra bootsector c ủa ổ A . Để hoàn thiện chương trình cần thực hiện kiểm tra trên MB và trên file. -Nguyên lí chương trình là in ra bản đồ hiện tại của bộ nhớ RAM do Dos quản lí. Nếu có virus thường trú thí bộ nhớ dành cho Dos sẽ bị giảm đi không còn chính xác nữa.Sau đó tiếp tục kiểm tra boot sector ổ A: -Để giúp hi ểu hơn về chương trình minh h ọa dưới đây trình bày m ột số kiến thức về Dos -Memmory Control Block (MCB) là kh ối điều khiển bộ nhớ dài 16 byte và có cấu trúc như sau
Mô tả Chiều Dài(byte)
ốI,4dh=chưa phải MCB cuốI
Offset (Hex) 0 1 5ah=MCB cu 1 2 ản lí (0=kh ối tự Địa ch ỉ đoạn kh ốI nh ớ do MCB qu do,8=dos)
17
3 2 Kích th ước (tính theo paragraph 16 byte) c ủa khối nhớ do
5 10 11 MCB quản lí Không dùng KhốI nhớ do MCB quản lí bắt đầu từ đây
-Mỗi tập tin được nạp vào bộ nhớ được Dos cung cấp hai MCB: MCB thứ nhất chứa thông tin về các biến môi trường _Dos environment, MCB thứ hai chứa thông tin về tập tin này. -Ngắt 52 hex (Dos 2+) hàm 52 hex tr ả lại trong cặp thanh ghi es:bx con tr ỏ trỏ đến danh sách của Dos, sau đây là một số giá trị
Mô tả Chiều dài(byte)
địa chỉ đoạn của MCB đầu tiên
ỏ đến bản thông tin đĩa đầu tiên Con trỏ trỏ đến bảng file hệ thống đầu tiên Offset (Hex) -2 2 0 4 Con tr 4 4 8 4 Con tr ỏ đến Header c ủa trình điều khi ển thi ết bị
4 CLOCK$ Con trỏ trỏ đến header của trình điều khiển thiết bị CON C 10 2 S ố byte tối đa trên một sector (cho thi ết bị kiểu khối bất
kì) Con trỏ trỏ đến vùng đệm đĩa đầu tiên
ỏ trỏ đến bảng các thư mục hiện hành ỏ trỏ đến bảng FCB hệ thống đầu tiên S ố các FCB được bảo vệ
1 Số các thiết bị kiểu khối (như các ổ đĩa lôgic) đã cài đặt 12 4 16 4 Con tr 1A 4 Con tr 1E 2 20 21 1 S ố tên các ổ đĩa lôgic (m ặc định là 5,có th ể tăng bằng lệnh LASTDRIVE=trong CONFIG.SYS)
22 18 Header c
… … ủa trình điều khiển thiết bị NUL hiện hành.NUL luôn là trình điều khi ển thi ết bị đầu tiên trongdanh sách móc nối các trình điều khiển thiết bị ………
-Nếu chương trình in kết quả như sau MCB SIZE DOAN TENTAPTIN 020E 0210 0008 DOS 041F 00A2 0420 COMMAND.COM 04C2 0007 0000 [ Vung Tu Do ] 04CA 002F 0420 COMMAND.COM 04FA 0031 052D A:\DOANNG~1\CHUONG~1\HT