MỘT SỐ KỸ THUẬT NHẬN DẠNG VIRUS

10 817 0
MỘT SỐ KỸ THUẬT NHẬN DẠNG VIRUS

Đang tải... (xem toàn văn)

Thông tin tài liệu

MỘT SỐ KỸ THUẬT NHẬN DẠNG VIRUS Các phần mềm diệt virus máy tính hiện nay thường hoạt động dựa trên hai nguyên lý cơ bản như sau: Kiểm tra (quét) các tập tin để phát hiện các virus đã biết trong cơ sở dữ liệu nhận dạng về virus của chúng. Phát hiện các hành động của các phần mềm giống như các hành động của virus hoặc các phần mềm độc hại. Dựa trên hai nguyên lý trên chúng ta có thể phân chia các kỹ thuật nhận sạng virus theo hai loại: nhận dạng chính xác và nhận dạng tương đối. 1.1. Nhận dạng chính xác Đây là công việc nhận dạng chính xác virus khi các phần mềm diệt virus đã có mẫu (file) của virus đó. Là công việc thường xuyên, hàng ngày đơn giản nhưng không thể thiếu thậm chí đóng vai trò quyết định tới chất lượng của một phần mềm diệt virus. Khi số mã nhận dạng càng lớn thì khả năng của phần mềm đó càng được đánh giá cao. Tất cả các kỹ thuật nhận dạng khác ra đời đều với mục đích bổ trợ cho những thiếu sót của kỹ thuật nhận dạng theo mẫu này. Ưu điểm: Độ chính xác cao, ít nhầm lẫn. Kết quả diệt virus tốt hơn. Các kỹ thuật nhận diện "tương đối" chỉ cho phép nghi ngờ 1 file có phải là virus hay không. Nhận diện "chính xác" cho phép loại bỏ các triệu chứng đi kèm với virus, khôi phục lại hệ thống. Nhược điểm: Khuyết điểm lớn nhất đó là kỹ thuật nhận dạng chính xác không thể đối phó được với các virus mới hoặc chưa xuất hiện khi chưa có mẫu để nhận diện. Khả năng nhận diện các biến thể của virus theo họ không cao. Khối lượng database để lưu trữ lớn. Kích thước chủ yếu của một phần mềm diệt virus phụ thuộc vào lượng mã nhận diện này. Phải cập nhật liên tục, đòi hỏi nhiều chi phí về thời gian, tiền bạc, công sức. 1.1.1. Nhận dạng theo mã hash Đối với kỹ thuật nhận dạng theo mã hash chúng ta có thể sự dụng các thuật toán hash như MD5, SHA, CRC để hash một file hoặc một phần thông tin quan trọng trong file từ đó so sánh với tập mẫu đã có để kiểm tra Ưu điểm: Việc xây dựng bảng mã nhận diện đơn giản, dễ dàng, có thể tiến hành tự động, do đó giúp các AV nhanh chóng cập nhật các mẫu virus mới. Tổ chức bảng mã nhận dạng đơn giản. So với các kiểu nhận dạng chính xác khác, nhận diện theo mã hash cần tương đối ít bộ nhớ hơn để lưu trữ mã nhận diện (với 32 byte đối với MD5, chúng ta cần khoảng 45Mb để nhận diện 3 triệu mẫu virus). Nhược điểm: Chỉ có thể nhận dạng các loại virus tĩnh (không có thay đổi cấu trúc khi nhân bản). Hoàn toàn bất lực trước các virus đa hình. Không có (cực yếu) khả năng nhận dạng các biến thể của họ virus. Có xác xuất trùng lặp 1.1.1.1. Lấy hash toàn file Cách đơn giản nhất để tạo signature nhận diện đặc chưng cho một mẫu virus là tính hash đặc chưng cho cho toàn bộ file mẫu. Các thuật toán hash thường được sử dụng trong trường hợp này là MD5, SHA1, SHA256 có xác xuất trùng lặp đủ thấp để có thể sử dụng làm signature đặc chưng cho một file. Ví dụ khi quét virus online trên virustotal mã hash được xem là thông số đại diện của file: http://www.virustotal.com/analisis/f 594-1236790301 Ưu điểm: Cách thực hiện đơn giản. Mã nhận dạng MD5 của virus được cung cấp miễn phí trên mạng tại nhiều website chuyên ngành. Nhược điểm: Chi phí tính toán cao. Thời gian tính hash chậm, nhất là với file có kích thước lớn. Nhược điểm này bộc lộ rõ khi quét virus cho tất cả các file trong toàn bộ hệ thống. 1.1.1.2. Lấy hash theo một phần thông tin quan trọng Để khắc phục nhược điểm của hash toàn file người ta đã cải tiến bằng cách chỉ tính hash của một vùng nhỏ chứa thông tin quan trọng nào đó. Ví dụ đối với file thực thi(.exe, .com, .dll, .ocx, .sys ): Phần thông tin quan trọng có thể là: + PE header (Portable executable) + Vùng nhớ xung quanh Entry Point của chương trình Việc lựa chọn vùng thông tin nào là quan trọng phụ thuộc vào chiến lược riêng của từng hãng AV. Ưu điểm: Đã cải tiến được tốc độ lấy hash đáng kể so với phương pháp lấy hash toàn file. Nhược điểm: Cài đặt phức tạp hơn. Không phải tất cả các định dạng file đều có thể lựa chọn được vùng chứa thông tin quan trọng, đặc trưng do đó, chỉ có thể áp dụng với một số định dạng nhất định. 1.1.2. Scan theo string Đây là cách cổ điển nhất và vẫn được sử dụng phổ biến trong hầu hết các phần mềm AV hiện nay. 1.1.1.1. Xét theo offset tĩnh hoàn toàn Ở trong cách này chỉ đơn thuần xác định string nào, tại vị trí offset bao nhiêu, ta sử dụng sign này để nhận dạng 1 file có phải là virus hay không. Chúng ta có thể coi một hình ảnh minh họa về mã nhận dạng với offset tương ứng của virus FunnyIM như sau: Hình 1.1. Mã nhận dạng của virus FunnyIM Ưu điểm : Cách thức update 1 sign và scan khá dễ thực hiện Nhược điểm: Cách scan này khá bị động với họ virus. Ví dụ nếu tôi tìm cách chèn thêm hay xóa 1 byte trong file binary của virus (Vẫn phải đảm bảo virus chạy được) mà byte này nằm trước phần offset sign thì tất yếu phương pháp này sẽ không thể nhận ra mẫu virus sau khi bị thay đổi. 1.1.1.2. Xét theo vị trí tương đối Ở cách này, địa chỉ offset sẽ được tính dựa vào một thành phần nào đó (Như Entry Point, Section thứ mấy ) Việc xét như thế này có thể mở rộng ra như offset : Entry Point + Số nào đó. Sau đây chúng ta sẽ xem xét một ví dụ với việc so sánh cấu trúc 2 biến thể khác nhau của dòng : w32.funnyIM.worm Ban đầu chúng ta xác định địa chỉ Entry Point 2 mẫu virus : Bảng 1.1. Địa chỉ Entry point của hai biến thể dòng w32.funnyIM.worm Tên mẫu Kích thước Entry point Mẫu 1 57 344 byte 4332 Mẫu 2 57 344 byte 4324 Chúng ta quan sát hình sau: Hình 1.2. Mẫu đặc trưng của hai biến thể khác nhau dòng w32.funnyIM.worm Chúng ta sẽ có 2 string tương đồng, nhưng ở 2 offset khác nhau (các string từ file nhị phân tôi sẽ viết dạng chuỗi các số hexan (Thập lục phân) để tiện quan sát) : Bảng 1.2. Địa chỉ offset của hai biến thể dòng w32.funnyIM.worm Tên mẫu String Offset Mẫu 1 64 75 6E 67 63 6F 69 00 4932 Mẫu 2 64 75 6E 67 63 6F 69 00 4384 Nhìn 2 bảng số liệu trên chúng ta có thể tạo một mã nhận dạng chung cho cả 2 virus này là : Mã nhận dạng w32.funnyIM.worm String : 64 75 6E 67 63 6F 69 00 Offset : Địa chỉ Entry Point + 60 Ưu điểm: Việc mở rộng như thế này sẽ làm mở rộng dải virus có thể được nhận dạng. Ví dụ nếu bạn có chỉnh sửa một số byte như cách bên trên thực hiện nhưng nếu sau vị trí Entry Point như cũ và vẫn còn tồn tại các byte như ban đầu thì vẫn có thể bị nhận ra bằng 1 sign đã cập nhật theo cách này Nhược điểm : Việc cập nhật đòi hỏi nhiều thông tin hơn phương pháp offset tĩnh Scan engine phải có cơ chế làm việc phức tạp hơn để thích ứng với cơ chế scan này. Do phương pháp này lấy vị trí offset dựa vào một phần thông tin nào đó của một định dạng file thích hợp nên bị giới hạn một số định dạng file. 1.1.2.3. Các hình thức khác nhau của một sign định dạng string String đơn giản: Bên trên chúng ta đã nói qua về phương pháp sử dụng string đơn giản để nhận dạng virus. Sử dụng string đơn giản, tức là chúng ta chỉ lấy một đoạn string từ mẫu virus và thêm vào bảng mã nhận dạng và thêm tham số về offset. String phức tạp: Để gia tăng khả năng nhận dạng một số virus tự biến đổi cấu trúc nhất định khi nhân bản, cũng như khả năng dùng một mã nhận dạng để nhận dạng những virus thuộc cùng một dòng (Có không nhiều thay đổi trong cấu trúc), thì người ta thường sử dụng mã nhận dạng string bằng các string phức hợp. Chúng ta sẽ xét Mẫu 1 trogn 2 mẫu virus đã xét bên trên để cụ thể hòa từng mã nhận dạng. Hình 2.3. Mã hexa của một biến thể dòng w32.funnyIM.worm Cho sign1 , sign2 là 2 string đã có Ở đây ta lấy như bảng dưới: Bảng 2.3. Các mã đặc trưng dòng w32.funnyIM.worm Tên Mã hexan Viết dạng chuỗi thường Sign 1 64 75 6E 67 63 6F 69 00 dungcoi Sign 2 6C 69 65 6E 74 54 6F 70 44 4C lientTopDL Các dạng string phức hợp sử dụng các ký hiệu đại diện cho một hình thức dữ liệu nào đó. Sau đây là các ký tự cùng ý nghĩa thông dụng như sau : Bảng 2.4. Các ký hiệu thông dụng Ký tự Ý nghĩa Ví dụ * Đại diện cho đoạn string ngẫu nhiên giữa hai đoạn string tĩnh 64 75 6E 67 63 6F 69 00 * 6C 69 65 6E 74 54 6F 70 ?? Đại diện cho 1 byte bất kỳ 64 75 6E ?? 69 00 {n} Khoảng cách giữa hai chuỗi 64 75 6E 67 63 6F 69 00 {10} 6C 69 65 6E 74 54 6F 70 1.2. Nhận dạng tương đối 2.1.1. Heuristic Đây là phương pháp phát hiện virus dựa trên cơ sở tìm kiếm các mẫu code được cho là giống với “mã độc”, thay vì tìm kiếm chính xác từng mẫu. Heuristics tĩnh được thực hiện thông qua 2 bước: thu thập dữ liệu và phân tích. Thu thập dữ liệu là quá trình xây dựng các booster và các stopper. Booster là các dấu hiệu nhỏ thường thấy ở mã độc như: vòng giải mã (Decryption loops), tự thay đổi code (Self-modifying code), các chuỗi lệnh bất thường… Stopper ngược lại, là các dấu hiệu ít gặp ở mã độc như lệnh hiển thị hộp thoại.Phân tích là quá trình đưa ra quyết định cuối cùng dựa trên các booster và các stopper phát hiện được. Ưu điểm: Cho phép nhận dạng những loại virus ngay cả khi chưa có mẫu virus đó (Thậm chí virus đó còn chưa xuất hiện). Nhược điểm: Việc cập nhật đòi hỏi rất nhiều thời gian và kiến thức của người cập nhật Do tính chất của cơ chế, nên việc nhận dạng nhầm là tồn tại với một tỷ lệ nhất định (Thông thường là thấp ở một mức độ chấp nhận được). 1.1.1. Các cơ chế nhận dạng theo hành vi 1.2.1.1. Cơ chế nhận dạng theo hành vi thời gian thực Đây là phương pháp giám sát một chương trình đang chạy ở thời gian thực qua đó theo dõi những hành vi nghi ngờ. Nếu hành vi đó được phát hiện chương trình giám sát có thể ngăn chặn chúng hoặc hỏi ý kiến người sử dụng. Một chương trình giám sát không nhất thiết phải theo dõi mọi hành vi trong thời gian thực, thông thường chúng chỉ giám sát các hành vi hay được virus sử dụng như: các chức năng hệ thống. Quá trình phân tích thực chất là tìm kiếm các dấu hiệu nghi ngờ được xây dựng trước trong cơ sở dữ liệu. Một câu hỏi được đặt ra: chương trình giám sát sẽ chạy bao lâu và vào lúc nào? Do hầu hết các loại mã độc như virus, trojan, worm đều luôn luôn yêu cầu được chạy đầu tiên, nên việc giám sát thường chỉ tiến hành lúc chương trình khởi động. Ưu điểm: Cho phép nhận dạng những loại virus ngay cả khi chưa cập nhật mẫu tương ứng. Bảo vệ người dùng thời gian thực rất hiệu quả. Nhược điểm: Việc lập ra những bảng số liệu để đưa ra mức độ cảnh báo không hề đơn giản, đòi hỏi một khối lượng lớn mẫu tập tin cũng như thời gian. Làm chậm một mức độ nhất định trong mỗi thao tác làm việc của hệ thống do nhiều hàm trong hệ thống đang bị AntiVirus kiểm soát. Chưa chặn đứng nguy cơ khi mã độc là tĩnh, chỉ chặn được khi mã độc đã được thực thi. 1.2.1.2. Cơ chế mô phỏng máy thật (tạo máy ảo) Có thể hiểu, phần mềm chống virus hiện nay dựng bên trong máy một máy ảo tương tự chức năng của các phần mềm VMWare, Virtual PC… sau đó sẽ cho mẫu file thực thi hoạt động bên trong máy ảo này. Mẫu tập tin thực thi sẽ được đưa vào môi trường dựng sẵn tương ứng này. Sau đó sẽ tiếp tục được sử dụng Cơ chế nhận dạng theo hành vi thời gian thực để kiểm tra có hay không sự nguy cơ từ mẫu tập tin. Ưu điểm: Cho phép nhận dạng các hành vi nguy hiểm một các an toàn cho hệ thống thực. Nhược điểm: Việc tạo một máy ảo là rất phức tạp. Gây “nặng” một cách nhất định cho hệ thống thực. Tốc độ quét sẽ rất chậm so với các phương pháp đã đề cập đến. 1.3. Bài toán phát hiện virus dựa trên tập mẫu Bài toán phát hiện virus theo công nghệ nhận dạng mẫu là một trong các phương pháp được sử dụng đầu tiên, ngày nay vẫn là một công nghệ “xương sống” trong các phần mềm anti-virus, cũng như các thiết bị IDS, Firewall. 1.3.1. Phát biểu bài toán Cho 1 tập mẫu nhận dạng virus P và 1 file cần kiểm tra T, tìm các mẫu trong tập nhận dạng P nằm trong file cần kiểm tra T. Ta có thể thay thế bài toán nhận dạng nhiều virus trong 1 file chủ bằng việc giải nhiều bài toán nhận dạng 1 virus Phát biểu ở dạng mô hình hóa: Cho bảng chữ cái S, một tập chuỗi P = có chiều dài chuỗi dài nhất là m và văn bản T có chiều dài n (đều được tạo từ các ký tự trong bảng S). Tìm mẫu P nằm trong T, hay vị trí trên T tại đó là chuỗi con của T, trong đó m n. 1.3.2. Phân lớp giải thuật cho bài toán tìm kiếm virus Phần mềm độc hại có thể chia làm 3 loại dựa trên khả năng thay đổi hình dạng như sau: Loại đơn hình: là các phần mềm độc hại không tự thay đổi bản thân trong quá trình phát tán. Loại đa hình: là các loại phần mềm độc hại thay đổi bản thân khi phát tán theo 1 quy luật nhất định. Loại siêu đa hình (hay siêu hình): là các phần mềm độc hại kết hợp nhiều kiểu đa hình chồng chéo, sử dụng các giải thuật di truyền để tự động lai tạo nhau, sinh ra các thế hệ “con cháu” F1, F2… càng lây nhiễm lâu trên máy tính, loại siêu đa hình càng sinh ra nhiều biến thể với độ phức tạp càng cao. Để phát hiện được các loại phần mềm độc hại trên người ta thêm vào bài toán phát hiện malware dựa trên tập mẫu các điều kiện tìm kiếm sau: Tìm kiếm chính xác (exact string matching) chuỗi tìm được trong T có nội dung giống hệt P i. Điều kiện này cho phép phát hiện các phần mềm độc hại đơn hình. Tìm kiếm theo biểu thức (regular expression matching): chuỗi tìm được trong T có nội dung sai khác P i theo 1 biểu thức xây dựng trước. Điều kiện này cho phép phát hiện các phần mềm độc hại đa hình. Tìm kiếm xấp xỉ (approximate string matching): chuỗi tìm được trong T có nội dung sai khác với theo tỉ lệ phần trăm cho trước. Điều kiện này cho phép phát hiện các phần mềm độc hại siêu hình. Thông qua mô hình toán trên có thế thấy, bản chất của bài toán phát hiện malware dựa trên tập mẫu là bài toán tìm kiếm đa chuỗi. DEMO MINH HỌA PHÁT HIỆN VIRUS Qua tìm hiểu những kỹ thuật trên nhóm em xin demo kỹ thuật scan theo string tại các địa chỉ (offset) nhất định. Về nguyên tắc hoạt động của kỹ thuật đã được trình bày ở trên sau đây là phần chương trình. Cấu trúc dữ liệu : Chúng ta xây dựng cấu trúc dữ liệu để lưu trữ 3 thông tin sau : Mã nhận dạng virus Offset Tên virus Thao tác quét 1 file Giao diện cửa sổ scan Chức năng : Scan trong thư mục nhất định, liệt kê virus nếu có. Khi đang quét có thể dừng, theo dõi quá trình quét Kỹ thuật : Sử dụng 2 kỹ thuật liệt kê file và scan từng file đã nói ở bên trên để thực hiện. Giao diện cửa sổ Danh sách virus Chức năng : Liệt kê những mã virus đã cập nhật. Kỹ thuật : Sử dụng 1 phần kỹ thuật scan virus (Chỉ quan tâm phần liệt kê mã nhận dạng). Giao diện cửa sổ Thêm mã nhận dạng Chức năng : Cho phép thêm một mã nhận dạng virus vào cơ sở dữ liệu. Tự nhận dạng xem mẫu virus đã cập nhật hay chưa. Tự nhận dạng xem có trùng Tên virus với virus đã từng cập nhật hay không. Kỹ thuật : Sử dụng 1 phần kỹ thuật scan virus (Chỉ quan tâm kiểm tra xem có trùng dữ liệu không) . chia các kỹ thuật nhận sạng virus theo hai loại: nhận dạng chính xác và nhận dạng tương đối. 1.1. Nhận dạng chính xác Đây là công việc nhận dạng chính xác virus khi các phần mềm diệt virus đã. phần kỹ thuật scan virus (Chỉ quan tâm phần liệt kê mã nhận dạng) . Giao diện cửa sổ Thêm mã nhận dạng Chức năng : Cho phép thêm một mã nhận dạng virus vào cơ sở dữ liệu. Tự nhận dạng xem mẫu virus. tạp: Để gia tăng khả năng nhận dạng một số virus tự biến đổi cấu trúc nhất định khi nhân bản, cũng như khả năng dùng một mã nhận dạng để nhận dạng những virus thuộc cùng một dòng (Có không nhiều

Ngày đăng: 23/10/2014, 09:31

Từ khóa liên quan

Mục lục

  • MỘT SỐ KỸ THUẬT NHẬN DẠNG VIRUS

  • 1.1. Nhận dạng chính xác

    • Hình 1.1. Mã nhận dạng của virus FunnyIM

    • Hình 1.2. Mẫu đặc trưng của hai biến thể khác nhau dòng w32.funnyIM.worm

    • Hình 2.3. Mã hexa của một biến thể dòng w32.funnyIM.worm

    • 1.2. Nhận dạng tương đối

    • 1.3. Bài toán phát hiện virus dựa trên tập mẫu

Tài liệu cùng người dùng

Tài liệu liên quan