Mã độc có thể bí mật đánh cắp dữ liệu, thu thập thông tin tài khoản người dùng, hoặc có thể can thiệp và làm sập các hệ thống thông tin quan trọng … Hiện nay có nhiều phương pháp được sử
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN THIẾT
XÂY DỰNG HỆ THỐNG PHÁT HIỆN, CẢNH BÁO, NGĂN CHẶN MÃ ĐỘC DỰA TRÊN HÀNH VI
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2014
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN THIẾT
XÂY DỰNG HỆ THỐNG PHÁT HIỆN, CẢNH BÁO, NGĂN CHẶN MÃ ĐỘC DỰA TRÊN HÀNH VI
Ngành: Công nghệ thông tin
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số:
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Văn Tam
Hà Nội - 2014
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan, đây là công trình nghiên cứu của bản thân Các số liệu, kết quả trình bày trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình luận văn nào trước đây
Tác giả luận văn
Nguyễn Văn Thiết
Trang 4LỜI MỞ ĐẦU
Trong thời kỳ bùng nổ công nghệ thông tin hiện nay có rất nhiều vấn đề
an ninh, an toàn thông tin được đặt tra Trong đó, phát hiện và ngăn chặn mã độc luôn là một đề tài cấp thiết do những tác hại do mã độc gây ra rất nghiêm trọng
Mã độc có thể bí mật đánh cắp dữ liệu, thu thập thông tin tài khoản người dùng, hoặc có thể can thiệp và làm sập các hệ thống thông tin quan trọng …
Hiện nay có nhiều phương pháp được sử dụng để phát hiện và diệt mã độc Tuy nhiên mã độc có thể sử dụng các phương pháp gây rối để vượt qua sự kiểm tra của các chương trình phát hiện mã độc Các phương pháp diệt mã độc hiện nay cũng chưa thể phát hiện được những mẫu mã độc mới xuất hiện
Mục tiêu của luận văn nghiên cứu tổng thể các phương pháp phát hiện mã độc hiện nay Tác giả đánh giá, khảo sát hành vi tự sao chép trên các chương trình lành tính và các loại mã độc trên hệ điều hành Windows 7 Tác giả xây dựng phương pháp phát hiện hành vi tự sao chép của mã độc và xây dựng chương trình mô phỏng phát hiện, cảnh báo và ngăn chặn mã độc dựa trên việc phát hiện hành vi tự sao chép của mã độc Qua thử nghiệm cho thấy, phương pháp này phát hiện được phần lớn những loại mã độc có hành vi sao chép và có thể phát hiện được những loại mã độc mới, những loại mã độc đã được gây rối
Bố cục của luận văn tuân theo mẫu của trường Đại học Công Nghệ - ĐHQGHN; Luận văn gồm 3 chương chính, ngoài ra còn có các phần mở đầu, kết luận và tài liệu tham khảo Phần kết luận nêu tóm tắt các vấn đề đã trình bày trong các chương, đánh giá các kết quả đã đạt được Nội dung chương được tóm tắt như sau:
Chương 1: Trình bày tổng quan về mã độc và các phương pháp phát hiện
Trang 5Trong quá trình hoàn thành luận văn của mình, tác giả đã hết sức cố gắng, song luận văn vẫn có thể còn những hạn chế nhất định, tác giả rất mong muốn nhận được những góp ý của các thầy giáo để chỉnh sửa cho hoàn thiện hơn Qua đây, tác giả xin chân thành cảm ơn PGS.TS Nguyễn Văn Tam, thầy đã gợi ý về
đề tài, hướng dẫn, chỉ bảo tận tình và cung cấp nhiều tài liệu quý liên quan trong quá trình tác giả thực hiện luận văn này Tác giả cũng chân thành cảm ơn các Thầy, Cô đã dạy, giúp đỡ và truyền cảm hứng học tập, nghiên cứu trong suốt quá trình học tập tại Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội
Xin trân trọng cảm ơn./
Tác giả: Nguyễn Văn Thiết
Trang 6MỤC LỤC
Trang bìa phụ
Lời cam đoan
Mục lục
Danh mục các ký hiệu và và chữ viết tắt
Danh mục các bảng
Danh mục các hình vẽ và đồ thị
MỞ ĐẦU
1 CHƯƠNG 1: TỔNG QUAN VỀ MÃ ĐỘC VÀ CÁC PHƯƠNG PHÁP
PHÁT HIỆN MÃ ĐỘC HIỆN NAY 11
1.1 Định nghĩa mã độc và phân loại mã độc 11
1.1.1 Định nghĩa mã độc (malware) 11
1.1.2 Phân loại mã độc 11
1.1.2.1 Virus 11
1.1.2.2 Worm 11
1.1.2.3 Trojan Horse 12
1.1.2.4 Malicious Mobile Code 12
1.1.2.5 Spyware 12
1.1.2.6 Logic Bomb 12
1.1.2.7 Tracking Cookie 12
1.1.2.8 Attacker Tool 13
1.1.2.9 Rootkits 13
1.1.3 Con đường lây nhiễm của mã độc 14
1.1.4 Tác hại của mã độc 16
1.2 Định nghĩa máy phát hiện mã độc và phân loại các phương pháp phát hiện mã độc hiện nay 17
1.3 Phương pháp phát hiện mã độc theo chữ ký 19
1.3.1 Nội dung phương pháp 19
Trang 71.3.1.1 Dò quét tĩnh 20
1.3.1.2 Dò quét động 21
1.3.2 Quy trình tạo ra chữ ký mã độc 22
1.3.3 Sự gia tăng cơ sở dữ liệu chữ ký mã độc 24
1.3.4 Ưu điểm và nhược điểm của phương pháp diệt mã độc theo chữ ký 25
1.4 Phương pháp phát hiện mã độc dựa vào hành vi 26
1.4.1 Tổng quan phương pháp phát hiện mã độc dựa vào hành vi 26
1.4.2 Phương pháp phát hiện dựa trên mô phỏng (Simulation-based verification) 27
1.4.3 Phương pháp phát hiện dựa trên kiểm tra hình thức (Formal verification) 34
2 CHƯƠNG 2: CÁC KỸ THUẬT VƯỢT QUA CÁC CHƯƠNG TRÌNH PHÁT HIỆN MÃ ĐỘC HIỆN NAY 40
2.1 Các kỹ thuật gây rối của mã độc 40
2.1.1 Chèn mã không có ý nghĩa 40
2.1.2 Nén và mã hóa (Compression & Encryption) 41
2.1.3 Đóng gói (Packing) 42
2.1.4 Thay đổi thanh ghi sử dụng (Register Reassignment) 47
2.1.5 Sắp xếp lại chương trình con 47
2.1.6 Thay thế chỉ lệnh 48
2.1.7 Hoán vị mã lệnh (Code Transposition) 49
2.1.8 Tích hợp mã (Code Integration) 50
2.2 Kỹ thuật phát hiện môi trường ảo 50
2.2.1 Kỹ thuật phát hiện môi trường thực thi hộp cát (Sandbox) 51
2.2.2 Kỹ thuật phát hiện môi trường thực thi máy ảo 54
3.CHƯƠNG 3: XÂY DỰNG PHƯƠNG PHÁP PHÁT HIỆN HÀNH VI TỰ SAO CHÉP CỦA MÃ ĐỘC TRÊN HĐH WINDOWS 7 56
3.1 Xây dựng phương pháp phát hiện hành vi tự sao chép vào hệ thống của mã độc 56
3.1.1 Khảo sát hành vi tự sao chép của mã độc và chương trình lành tính 56
Trang 83.1.2 Các bước thực hiện hành vi tự sao chép của mã độc 60
3.2 Phương pháp phát hiện hành vi tự sao chép của mã độc 62
3.3 Chương trình thử nghiệm và kết quả thực nghiệm 68
3.3.1 Mô hình chương trình mô phỏng 68
3.3.2 Kết quả thực nghiệm 70
4 KẾT LUẬN 75
5 TÀI LIỆU THAM KHẢO 76
Trang 9DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT
Interface
Giao diện lập trình ứng dụng
BIOS Basic Input/Output System Hệ thống nhập xuất cơ bản BIOS Basic Input/Output System Hệ thống nhập xuất cơ bản CFG Control Flow Graph Đồ thị luồng điều khiển
DLL Dynamic Link Library Thư viện liên kết động
Network
Thư viện bách khoa cho lập trình ứng dụng trên Windows SSDT System Service Dispatch
Table
Bảng dịch vụ hệ thống
Trang 1004/06/2014)
74
Trang 11Hinh 1.6: Mô tả hai thuật toán phát hiện mã độc Greedy và
Taboo dựa trên các nhãn đánh dấu các hành vi
Hình 2.7: Quá trình giải nén của mã độc được đóng gói 44 Hình 2.8: Hình dạng mã độc sau khi được giải mã 45 Hình 2.9: Kỹ thuật gây rối Shifting Decode Frame 46 Hình 2.10: Phương pháp ảo hóa chỉ lệnh và và mô phỏng mã
độc
46
Hình 2.11: Kỹ thuật gây rối bằng cách thay đổi thanh ghi được 47
Trang 12sử dụng
Hình 2.12: Kỹ thuật sắp xếp lại các chương trình con 48 Hình 2.13: Kỹ thuật gây rối bằng cách thay thế các chỉ lệnh 48 Hình 2.14: Kỹ thuật gây rối bằng cách hoán vị mã lệnh 49 Hình 2.15: Kỹ thuật gây rối trên mã độc Zperm 50 Hình 2.16: Đoạn mã kiểm tra môi trường trường thực thi
Sandbox của mã độc Win32/Carberp
52
Hình 2.17: Đoạn mã để phát hiện môi trường thực thi của mã
độc Win32/Caphaw
53
Hình 2.18: Kiểm tra cổng ảo và từ khóa ảo đặc trưng để phát
hiện môi trường máy ảo VMware
Hình 3.8: Thông báo của BMD khi phát hiện tiến trình có hành
vi tự sao chép vào hệ thống
67
Trang 131 CHƯƠNG 1:
TỔNG QUAN VỀ MÃ ĐỘC VÀ CÁC PHƯƠNG PHÁP PHÁT HIỆN
MÃ ĐỘC HIỆN NAY 1.1 Định nghĩa mã độc và phân loại mã độc
1.1.1 Định nghĩa mã độc (malware)
Hiện nay có nhiều định nghĩa khác nhau về mã độc, nhưng đều có ý nghĩa
chung là:
Mã độc là “một chương trình (program) được chèn một cách bí mật vào
hệ thống với mục đích làm tổn hại đến tính bí mật, tính toàn vẹn hoặc tính sẵn sàng của hệ thống”
Định nghĩa này xác định không chỉ những thể loại mà thường được nói đến nhiều như: virus, worm, Trojan, spyware …là mã độc, mà cả những công
cụ dùng để tấn công hệ thống cũng đều là mã độc như: backdoor, rootkit, keylogger …
1.1.2.2 Worm
Worm là mã độc có hành vi giống virus là có thể tự nhân bản và tự lây nhiễm trong hệ thống, tuy nhiên khác với virus, worm có thể tồn tại độc lập thành một tập tin trước khi lây nhiễm vào hệ thống Tùy theo phương thức lây nhiễm vào hệ thống mà có thể phân loại worm:
- Network Service Worm: là loại worm sử dụng các lỗ hổng bảo mật của
mạng, của hệ điều hành hoặc của ứng dụng để lây nhiễm vào hệ thống
- Mass Mailing Worm: là loại worm sử dụng phương thức lây lan qua
email Khi worm lây nhiễm vào hệ thống thì nó tìm trong danh sách địa chỉ mail
và gửi mail đến các địa chỉ đó để tiếp tục quá trình lây nhiễm Với phương thức lây nhiễm này, worm có thể lây lan rất nhanh trên hệ thống mạng
Trang 141.1.2.3 Trojan Horse
Trojan horse là loại mã độc được đặt theo câu chuyện “Ngựa thành Troa” Trojan horse không có hành vi tự nhân bản mà nó xuất hiện trong hệ thống như một chương trình lành tính, qua đó có thể đánh lừa được người sử dụng Tuy nhiên Trojan horse có những hành vi gây hại ngầm mà người dùng không dễ dàng nhận biết được
1.1.2.4 Malicious Mobile Code
Malicious mobile code là một dạng mã phần mềm có thể được gửi từ xa vào để chạy trên một hệ thống mà không cần đến lời gọi thực hiện của người dùng trên hệ thống đó Cách tốt nhất để chống lại malicious mobile code là luôn cập nhật hệ thống và tất cả các chương trình phụ
1.1.2.5 Spyware
Spyware là phần mềm được cài đặt trên hệ thống nhằm mục đích thu thập thông tin trên hệ thống đó và truyền đến địa chỉ của kẻ tấn công Các thông tin quan trọng mà spyware thu thập có thể là: tài khoản và mật khẩu của người sử dụng, địa chỉ email, tài khoản ngân hàng…
1.1.2.6 Logic Bomb
Là phần mềm cài đặt trên hệ thống và chỉ thực hiện hành vi gây hại khi có những điều kiện nhất định đáp ứng Chẳng hạn như: logic bomb thực hiện xóa mọi dữ liệu trên hệ thống vào một thời điểm đã được cài đặt nhất định Cấu trúc logic bomb thường được phân làm hai phần:
- Payload: là đoạn mã thực hiện các hành vi gây hại
- Trigger: là đoạn mã kiểm tra những điều kiện nhất định, nếu điều kiện
này đúng thì sẽ kích hoạt đoạn mã payload
Logic Bomb là một loại mã độc rất nguy hiểm vì nó không thể hiện hành
vi gây hại ngay khi thâm nhập vào hệ thống Vì vậy, người dùng thường không nhận ra khi Logic Bomb đã thâm nhập thành công vào hệ thống
1.1.2.7 Tracking Cookie
Tracking Cookie là sử dụng cookie để theo dõi một số hành động duyệt web của người sử dụng một cách bất hợp pháp Cookie là một tập tin dữ liệu
Trang 15dùng để lưu dữ thông tin về việc sử dụng một trang web nào đó Tuy nhiên tính năng này bị lạm dụng để theo dõi và thu thập thông tin về người dùng
1.1.2.8 Attacker Tool
Attacker Tool là những bộ công cụ tấn công được sử dụng để đẩy bí mật các phần mềm độc hại vào hệ thống mà không được phép của người dùng Attacker Tool được chia thành nhiều loại khác nhau:
- Backdoor: là công cụ được cài đặt trên hệ thống sau khi bị xâm nhập bất
hợp pháp nhằm giúp kẻ tấn công quay lại xâm nhập vào hệ thống mà không cần phải qua các kiểm soát an ninh trên hệ thống
- Zoombie: là công cụ được cài đặt trên hệ thống sau khi bị xâm nhập bất
hợp pháp và chờ đợi lệnh từ kẻ tấn công Các nhiệm vụ phổ biến nhất cho zombie là gửi thư rác và thực hiện tấn công từ chối dịch vụ quy mô lớn
- Keylogger: là công cụ được cài đặt trên hệ thống nhằm thu thập các
thông tin sự kiện gõ bàn phím của người sử dụng
1.1.2.9 Rootkits
Rootkit thường được hiểu là một là công cụ được cài đặt trên hệ thống nhằm thay đổi các hoạt động bình thường của hệ thống nhằm mục đích nhất định Chẳng hạn như thay đổi hoạt động của các hàm hệ thống (API), sửa đổi tập tin hệ thống Rootkit thường được sử dụng để ẩn dấu các hành vi của các mã độc khác như backdoor, keylogger…và làm cho người sử dụng không dễ dàng nhận biết được sự tồn tại của các phần mềm độc hại này trên hệ thống
Rootkit được phân làm những loại sau đây:
- Rootkit tần ứng dụng (Application layer rootkit)
Rootkit tầng ứng dụng là rootkit hoạt động ở tầng cao của hệ điều hành (tầng ứng dụng) Mục tiêu của loại rootkit này có thể là các tập tin, registry, hoặc là các ứng dụng cụ thể trên hệ thống Hành động phổ biến mà loại rootkit này thường hay thực hiện là xóa các tập tin nhật ký hệ thống và ẩn các tập tin
mà người dùng không dễ dàng phát hiện ra
Tuy nhiên, nhược điểm của loại rootkit này là dễ bị phát hiện bằng các kỹ thuật tìm kiếm thông tin ở tầng dưới của hệ thống
Trang 16- Rootkit tầng thư viện (Library layer rootkit)
Là loại rootkit can thiệp trực tiếp vào các thư viện trong hệ thống Chẳng hạn như các hàm được sử dụng trong các tập tin thư viện liên kết động (Dynamic Link Library - DLL) trong hệ thống Loại rootkit này can thiệp và làm thay đổi giá trị trả về của các hàm trong thư viện Qua đó, rootkit có thể ẩn các tập tin mã độc để người dùng không nhận ra sự xuất hiện của mã độc trong hệ thống
Loại rootkit này cũng có thể phát hiện được bằng cách thực thi các ứng dụng từ các thiết bị lưu trữ ngoài mã không sử dụng các thư viện đã bị sửa đổi Qua đó có thể phát hiện sự tồn tại của rootkit trong hệ thống
- Rootkit tầng nhân hệ thống (Kernel-layer rootkit)
Đây là loại rootkit có hành vi can thiệp trực tiếp vào nhân của hệ điều hành Loại rootkit này làm thay đổi các cấu trúc trong hệ thống hoặc làm thay đổi giá trị trả về của các hàm trong nhân của hệ điều hành Qua đó, rootkit có thể
ẩn các tập tin độc hại hoặc ẩn sự hoạt động trong hệ thống… Loại rootkit này khó phát hiện hơn rất nhiều so với hai loại rootkit trên
- Rootkit tầng phần cứng (Hardware-layer rootkit)
Đây là loại rootkit khó phát hiện nhất Loại rootkit này được cài đặt trong phần cứng của các thiết bị để thu thập thông tin hoặc thực hiện nhiều hành vi độc hại khác Loại rootkit này không thể phát hiện được bằng các chương trình phần mềm bình thường mà phải sử dụng rất nhiều các công cụ khác nhau để có thể phát hiện
1.1.3 Con đường lây nhiễm của mã độc
Mã độc có nhiều con đường lây nhiễm khác nhau và có thể phát tán rất nhanh Sau đây là một số con đường chủ yếu mà hệ thống bình thường có thể bị lây nhiễm mã độc
1.1.3.1 Lây nhiễm qua thiết bị ngoại vi
Malware phát tán qua SB và các thiết bị lưu trữ ngoài theo một số cơ chế sau:
- Cơ chế Autorun (tự chạy) :
Cơ chế này chỉ xuất hiện với những loại mã độc trên hệ điều hành Windows XP trở về trước Với cách phát tán này mã độc sẽ tạo ra một tập tin
Trang 17với tên là “autorun.inf” Bên trong tập tin “autorun.inf” sẽ có một đường dẫn đến
mã độc thực sự Khi người sử dụng kết nối thiết bị lưu trữ ngoài với máy tính,
mã độc lợi dụng thói quen sơ hở của người sử dụng để xâm nhập Mã độc sau khi được thực thi tiến hành các hành vi gây hại và tiến hành phát tán bằng nhiều đường, lây lan ra toàn máy tính này cũng như các máy tính liên kết trong mạng
- Cơ chế giả biểu tượng
Mã độc máy tính muốn hoạt động được đòi hỏi phải có sự tương thích với môi trường hệ điều hành và những điều kiện cụ thể (trong trường hợp trên thì cơ chế Autorun đã thực thi mã độc) Còn trường hợp phổ biến thứ hai, một mã độc giả dạng làm một thư mục hay tập tin quen thuộc Bằng cách này mã độc có thể đánh lừa người sử dụng và chờ đợi người sử dụng vô tình kích hoạt mã độc
1.1.3.2 Lây nhiễm từ kết nối mạng
Do nhu cầu công việc mà các máy tính hiện nay đều kết nối với nhau thông qua một hệ thống mạng và đây cũng là con đường mà mã độc tiến hành phát tán và lây nhiễm từ hệ thống này sang hệ thống khác Thông thường mã độc sẽ tiến hành tấn công từ bên ngoài qua các lỗ hổng bảo mật để tiến hành lây nhiễm Chẳng hạn như mã độc “Conficker” lợi dụng lỗ hổng “MS-08-067” để tiến hành lây nhiễm từ hệ thống này sang hệ thống khác, nếu các hệ thống không cập nhật bản vá cho lỗ hổng này
Ngoài ra, với sự phát triển rộng rãi của mạng Internet trên thế giới hiện nay mà các phương thức lây nhiễm các loại mã độc qua Internet trở thành phương thức chính của mã độc ngày nay
1.1.3.3 Lây nhiễm qua thư điện tử
Đây là một con đường lây nhiễm rất phổ biến của mã độc Phương thức này đã xuất hiện từ lâu nhưng hiện nay vẫn là một phương thức lây nhiễm của
mã độc
Khi đã lây nhiễm vào máy nạn nhân, mã độc có thể tự tìm ra danh sách các địa chỉ thư điện tử sẵn có trong máy và nó tự động gửi đi hàng loạt cho những địa chỉ tìm thấy Nếu các chủ nhân của các máy nhận được thư bị nhiễm
mã độc mà không bị phát hiện, mã độc sẽ tiếp tục để lây nhiễm vào máy và tiếp tục quá trình lây nhiễm Chính vì vậy số lượng phát tán có thể tăng theo cấp số nhân khiến cho trong một thời gian ngắn hàng hàng triệu máy tính bị lây nhiễm,
có thể làm tê liệt nhiều cơ quan trên toàn thế giới trong một thời gian rất ngắn
Phương thức lây nhiễm qua thư điện tử bao gồm:
- Lây nhiễm vào các tập tin đính kèm theo thư điện tử: Người dùng sẽ
Trang 18hoạt (do đặc điểm này các mã độc thường được "trá hình" bởi các tiêu đề hấp dẫn Các tập tin lây nhiễm bị đính kèm thường là các tập tin thực thi (như là exe, com, vbs, dll, sh, bat, scr, pif, …) Và các thư điện tử tới thường được gửi từ những người không quen biết
Một số loại mã độc khai thác những lỗi tràn bộ nhớ đệm của các chương trình ứng dụng như là lỗ hổng trên trình soạn thảo văn bản Nếu người dùng mở những tập tin văn bản này đoạn mã thực thi được đính kèm trong tập tin sẽ được thực hiện
- Lây nhiễm do mở một liên kết trong thư điện tử: Các liên kết trong thư
điện tử có thể dẫn đến một trang thông tin điện tử được cài sẵn mã độc, cách này thường khai thác các lỗ hổng của trình duyệt và hệ điều hành
1.1.4 Tác hại của mã độc
Mã độc khi xâm nhập được vào hệ thống sẽ thực hiện nhiều hành vi gây hại khác nhau Trong đó có những hành vi gây hại chủ yếu sau:
- Tiêu tốn tài nguyên hệ thống: Tài nguyên máy tính, về bản chất là băng
thông mạng, tốc độ vi xử lý, bộ nhớ Việc thiếu các tài nguyên này sẽ dẫn đển
sự xuống cấp của chất lượng dịch vụ cung cấp đến người sử dụng hoặc khách hàng Một dấu hiệu chính khi một máy tính bị nhiễm mã độc đó là máy tính đó bất ngờ trở nên hoạt động chậm hơn mức bình thường Điều này thường tiếp tục sau khi khởi động lại máy tính do khi đó các mã độc sẽ bắt đầu khởi động lại và
sử dụng lại tài nguyên của máy tính.Trong nhiều trường hợp thậm chí các mã độc có thể chiếm hết băng thông khiến người dùng không thể kết nối mạng
- Phá hủy dữ liệu: Có rất nhiều loại mã độc được tạo ra để xóa các tập tin
trên hệ thống Các tài liệu thường bị tấn công nhiều nhất là các tập tin thực thi hoặc các tập tin văn bản, thường là các tệp chứa dữ liệu quan trọng của người dùng Ngoài ra một số loại mã độc còn sửa đổi các tập tin trên một ổ đĩa cứng hoặc các thiết bị ghi khác
Một ví dụ nguy hiểm cho hành vi này la mã độc W32.Delfile.Worm Mã độc này được lập trình để xóa toàn bộ dữ liệu trong các ổ đĩa, trừ ổ cài hệ điều hành Windows Mã độc xóa dữ liệu được định trước vào các ngày 1, 10, 21 và
29 hàng tháng Sau khi lây nhiễm vào máy tính, mã độc này sẽ tự sao chép vào
thư mục cố định là “C:\Windows\System32” Vào các ngày định trước, mã độc
sẽ thực thi việc xóa dữ liệu mỗi khi máy tính khởi động Những ngày còn lại, mã độc làm ẩn các tập tin và tạo ra các bản sao của chính nó, ngụy trang giống như thư mục thật, khiến người dùng không thể nhận biết máy tính đã bị nhiễm mã độc
Trang 19- Đánh cắp thông tin và dữ liệu: Có rất nhiều loại mã độc có các hành vi
thu thập thông tin trên về người sử dụng như tải khoản và thu thập các dữ liệu trên hệ thống Một ví dụ về hành vi này là mã độc “Mebroot” được hãng bảo mật Symantec phát hiện vào tháng 12 - 2007 sử dụng một công nghệ ẩn mình và lây nhiễm vào MBR (Master Boot Record) của máy tính, đoạn mã đầu tiên mà máy tính tìm đến khi khởi động hệ điều hành sau khi BIOS hoạt động Nhiều hãng bảo mật đã tích cực nghiên cứu và đưa ra các giải pháp chống Mebroot nhưng biến thể mới nhất lại có những cải tiến đáng sợ để ẩn mình kín đáo hơn trước các chương trình bảo mật trên máy tính Mã độc này gửi dữ liệu đánh cắp qua giao thức HTTP
- Phá hủy hệ thống: Một số mã độc cố tình được tạo ra để phá hủy hệ
thống (Các mã độc phá hủy BIOS, làm giảm tuổi thọ của ổ cứng) Một số khác khi được lập trình thì người viết nó không cố ý đưa các đoạn mã làm hỏng hệ thống, tuy nhiên trong thực tế quá trình hoạt động của mã độc đôi khi có những hành vi gây hại đến hệ thống Một số mã độc có hành vi sửa đổi các phần như là tường lửa của hệ thống hoặc ngăn chặn người dùng truy cập vào các trang thông tin về an ninh, bảo mật
Hiện nay, mã độc được tạo ra với rất nhiều mục đích khác nhau Trong đó
có cả những mục đích chính trị, mang tính quốc gia Nhiều quốc gia trên thế giới xây dựng những đội ngũ phát triển những loại mã độc nhằm vào các hệ thống của các quốc gia cạnh tranh Do tính nguy hại của mã độc mà phát hiện và diệt
mã độc luôn là một bài toán quan trọng hiện nay
1.2 Định nghĩa máy phát hiện mã độc và phân loại các phương pháp phát hiện mã độc hiện nay
1.2.1 Định nghĩa máy phát hiện mã độc
Một máy phát hiện và diệt mã độc là chương trình thực hiện một số phương pháp phát hiện mã độc Chương trình phát hiện mã độc có thể hoặc không nằm trên cùng hệ thống được bảo vệ Định nghĩa máy phát hiện mã độc còn được thể hiện qua công thức sau [2]:
Trong đó: - ‘D’ là máy phát hiện mã độc
- ‘p’ là chương trình được máy ‘D’ phân loại
Trang 20Máy phát hiện mã độc ‘D’ có chức năng phân tích các chương trình ‘p’ và dựa vào các phương pháp nhất định để xác định ‘p’ là chương trình độc hại hoặc lành tính Kết quả xác định của máy ‘D’ có thể đúng hoặc sai Máy ‘D’ có thể phát hiện nhầm chương trình lành tính là mã độc (false positive), hoặc có thể phát hiện nhầm mã độc là chương trình lành tính (false negative)
Các phương pháp dùng để phát hiện mã độc hiện nay được trình bày trong các phần tiếp theo
1.2.2 Phân loại các phương pháp diệt mã độc hiện nay
Có nhiều phương pháp được sử dụng để phát hiện mã độc Hiện nay có hai nhóm phương pháp chính được sử dụng để phát hiện mã độc là:
- Phương pháp phát hiện mã độc theo chữ ký (Signature Based Techniques)
- Phương pháp phát hiện mã độc theo hành vi (Behavior Based Techniques)
Trong từng phương phát có những cách tiếp cận và phương pháp cụ thể khác nhau
Phân loại các phương pháp diệt mã độc được thể hiện qua Hình 1.1 [3]:
Hình 1.1: Phân loại các phương pháp diệt mã độc
Nội dung cụ thể của các phương pháp được trình bày trong hai phần sau
Trang 211.3 Phương pháp phát hiện mã độc theo chữ ký
1.3.1 Nội dung phương pháp
Phương pháp diệt mã độc theo chữ ký xác định một chương trình thực thi
là mã độc khi nội dung tập tin thập thi đó có chứa đoạn mã đã được xác định trước gọi là chữ ký
Đây là phương pháp ra đời đầu tiên và được sử dụng rộng rãi nhất hiện nay Chữ ký mã độc thường là một chuỗi byte trong mã phần mềm độc hại Chuỗi byte này đặc trưng cho một mã độc cụ thể mà không có ở trong các chương trình khác Ví dụ chuỗi byte dùng để nhận diện mã độc “W32/Beast” là:
83EB 0274 1683 EBOE 740A 81EB 0301 0000
Thông thường một chuỗi byte dùng để xác định một mã độc 16bit là 16byte Đối với mã độc khác thì con số này cao hơn, tùy thuộc vào chương trình diệt mã độc cụ thể Tất cả các chữ ký mã độc được lưu trong cơ sở dữ liệu
Chương trình dò quét sẽ tìm kiếm trong một tập tin có chứa chữ ký mã độc nào không Nếu một tập tin có chứa chữ ký độc hại thì tập tin đó là chương trình độc hại Khi đó chương trình diệt mã độc có thể có các hành động để loại
bỏ mã độc khỏi hệ thống Chương trình diệt mã độc thông thường sẽ thực hiện một hoặc nhiều hành động sau đây: cách ly, sửa chữa, hoặc xóa Cách ly một tập tin sẽ làm cho nó không thể tiếp cận, và hành động cách ly thường là hành động
mà các chương trình diệt mã độc thực hiện đầu tiên, trước khi thực hiện các hành động khác can thiệp vào nội dung của tập tin
Đôi khi người dùng muốn lưu tập tin lại vì tính quan trọng của tập tin đó Khi đó chương trình diệt mã độc cố gắng sửa chữa tập tin Chương trình diệt mã độc sẽ cố gắng loại bỏ những đoạn mã độc hại mà mã độc đã nhúng vào, và làm cho tập tin hoạt động bình thường trở lại Tuy nhiên, rất nhiều loại mã độc hiện nay có các kỹ thuật nhúng mã vào các chương trình lành tính rất tinh vi và rất khó loại bỏ những đoạn mã độc hại này Một số loại mã độc còn làm hỏng các tập tin lành tính
Nếu một tập tin đã bị mã độc lây nhiễm mà không thể sửa chữa thì tốt nhất là loại bỏ tập tin này khỏi hệ thống Vì nếu để tập tin này tiếp tục hoạt động thì các đoạn mã độc hại sẽ tiếp tục tìm kiếm và lây nhiễm vào các tập tin lành tính khác, trong đó có cả những tập tin hệ thống Trong nhiều trường hợp có thể dẫn đến tình trạng sập hệ thống
Trang 22Nếu tập tin được quét không chứa chữ ký độc hại nào thì tập tin đó là chương trình lành tính Thông thường, một chữ ký độc hại xác định một hoặc một dòng chương trình độc hại
Tùy theo từng phương pháp tiếp cận để dò quét chữ ký mà phương pháp này được chia thành ba phương pháp khác nhau:
1.3.1.1 Dò quét tĩnh
Phương pháp này tiến hành dò quét chữ ký trên một tập tin thực thi mà không cần chạy chương trình đó Quá đó có thể phát hiện được mã độc trước khi
mã độc đó có thể gây bất cứ tác hại nào cho hệ thống
Thông thường các chương trình phát hiện mã độc hiện nay đều “đánh chặn” quá trình khởi tạo một tiến trình và sẽ dò quét tập tin trước khi tiến trình được khởi tạo Nếu phát hiện tập tin đó là mã độc thì tiến trình không được khởi tạo và tập tin sẽ bị loại bỏ khỏi hệ thống Nếu tập tin đó là chương trình lành tính thì tiến trình sẽ được khởi tạo
Quy trình của phương pháp này được thể hiện qua Hình 1.2:
Mã độc Lành tính
Tập tin thực thi (PE file)
Trang 23Do vậy, một cơ sở dữ liệu chữ ký cần phải duy trì cập nhật liên tục bằng cách phân tích các biến thể mới của mã độc và các loại mã độc mới
Các chữ ký của mã độc được lựa chọn thủ công và thường được lựa chọn
để có thể phát hiện được nhiều biến thể của mã độc Thông thường, chữ ký của
mã độc được lựa chọn để xác định hành vi đặc trưng của mã độc Hình 1.3 mô tả chữ ký của mã độc “Stoned” được chọn:
Hình 1.3: Chữ ký của mã độc Stoned 1.3.1.2 Dò quét động
Là phương pháp dò quét mã độc bằng cách xác định các thông tin thu thập được bằng cách thực thi tập tin đó trong môi trường mô phỏng [1] Môi trường
mô phỏng này có các điều kiện giống như môi trường thật nhưng bất cứ hành vi nào của mã độc thực thi trên môi trường mô phỏng đều không ảnh hưởng đến hệ thống thật Hai cách xây dựng môi trường mô phỏng được sử dụng nhiều nhất là:
- Hộp cát (sandbox): là môi trường mô phỏng được xây dựng bằng cách hạn chế quyền và giới hạn truy cập đến các dịch vụ thật của hệ thống Ưu điểm chính của phương pháp này là có thể truy cập được vào không gian bộ nhớ của chương trình và có thể kiểm soát chương trình chạy từng bước Qua đó có thể tìm kiếm các thông tin về chương trình mà bằng phương pháp dò quét tĩnh không làm được
Trang 24- Máy ảo (virtual machine): là môi trường mô phỏng được xây dựng mà cung cấp đầy đủ các dịch vụ và quyền như môi trường thật Máy ảo có thể mô phỏng cả những tài nguyên phần cứng (kết nối mạng …) và tài nguyên ảo (tập tin, phần mềm…), qua đó có thể giám sát được nhiều thông tin hơn về chương trình thực thi Tuy nhiên, sử dụng máy ảo lại tiêu hao một lượng tài nguyên đáng
kể của hệ thống thực Máy ảo chỉ thường được sử dụng bởi các chuyên gia để phân tích mã độc
Sử dụng môi trường mô phỏng thường được sử dụng để phát hiện worm Bằng cách xác định những thông tin mà nó giao tiếp với bên ngoài Ngoài ra, sử dụng môi trường mô phỏng có thể phát hiện được những mã độc sử dụng một số
kỹ thuật để trốn tránh chương trình diệt mã độc như là: mã hóa Để phát hiện loại mã độc thì chương trình quét sẽ kiểm tra nội dung bộ nhớ ảo Sau một số lần vòng lặp được định nghĩa trước hoặc khi có một điều kiện dừng khác được đáp ứng Nếu thời gian chạy mô phỏng đủ dài thì có thể nắm được nội dung mã độc sau khi giải mã Vì rằng mã độc cần tự giải mã để có thể thực hiện được các hành vi gây hại Để quyết định xem khi nào ngừng thực thi mã độc trong môi trường mô phỏng, có thể sử dụng các phương pháp sau: theo dõi sự hoạt động của các chỉ lệnh, theo dõi quá trình giải mã dựa trên những thông tin thu thập được, hoặc có thể dừng lại với một thời điểm xác định Sau khi thu thập được nội dung trên bộ nhớ ảo, tiến hành quét mã độc dựa trên chữ ký để xác định đó
có phải là mã độc không
1.3.1.3 Phương pháp lai
Là phương pháp tiếp cận kết hợp dò quét tĩnh và động để xác định mã độc Các phương pháp thực hiện theo cách tiếp cận này thường tiến hành dò quét tĩnh trước sau đó tiến hành dò quét động để bổ sung đầy đủ các thông tin nhằm xác định mã độc Áp dụng phương pháp này có thể khắc phục được nhiều nhược điểm của hai phương pháp dò quét tĩnh và dò quét động
Trang 25diệt mã độc hàng đầu thế giới hiện nay đều xây dựng hệ thống trên toàn cầu để
có thể thu thập được nhanh nhất những mẫu mã độc mới
- Phân tích mẫu mã độc mới khả nghi: đây là bước xác định xem mẫu thu thập được có phải là mã độc hay không Để xác định được đó là mã độc thì cần phải tiến hành phân tích Phân tích một tập tin thực thi là tìm hiểu hành vi chương trình của tập tin đó Có hai cách phân tích là phân tích tĩnh và phân tích động
Thứ nhất - phân tích tĩnh: là cách phân tích mà không cần chạy tập tin
thực thi Tập tin thực thi được dịch ngược từ mã máy thành các ngôn ngữ cao hơn như là mã máy (assembly) hoặc “C” Sau đó, hành vi của chương trình được tìm hiểu bằng cách đọc đoạn mã dịch ngược đó Ưu điểm của phương pháp này
là có thể tìm hiểu hết được các hành vi của chương trình Nhưng nhược điểm của phương pháp này là tốn kém thời gian và công sức, trong khi các mẫu mã độc mới được tạo ra hàng ngày rất lớn Phương pháp này thường chỉ được áp dụng đối với những mẫu mã độc tinh vi
Thứ hai – phân tích động: là cách phân tích mã độc bằng cách thực thi
mẫu tập tin đó trong môi trường mô phỏng Sau đó giám sát các hành vi của mẫu tập tin đó để xác định xem đó có phải là mã độc không Môi trường mô phỏng cần phải được xây dựng như môi trường thật, có đầy đủ các dịch vụ: kết nối mạng, webserver, mailserver…Đây là phương pháp thường được sử dụng vì tốc
độ phân tích nhanh Tuy nhiên sử dụng phương pháp này có thể không tìm hiều hết được các hành vi của mã độc
- Tạo ra chữ ký từ mẫu mã độc mới phát hiện: Đây là bước trích xuất ra một đoạn mã từ tập tin mã độc để làm chữ ký Thông thường bước này được xác định thủ công, dựa vào kinh nghiệm của người phân tích mã độc
- Kiểm tra chữ ký: một chữ ký mới được tạo ra cần phải được kiểm tra trước khi được cập nhật vào cơ sở dữ liệu và phân phối cho người sử dụng Bước đầu tiên là kiểm tra âm tính giả, chữ ký được sử dụng để quét trên các mẫu
mã độc đã thu thập được Nếu bước này đạt yêu cầu thì cần kiểm tra tiếp bước sau Tại bước thứ hai, chữ ký mới được kiểm tra tỷ lệ dương tính giả Một lượng lớn các tập tin thực thi “sạch” được sử dụng cho bước này Nếu kết quả cho thấy không có trường hợp nào dương tính giả thì chữ ký mới này đạt yêu cầu và được cập nhật vào cơ sở dữ liệu
Trang 26Tại bước kiểm tra chữ ký, có thể giảm thời gian kiểm tra bằng cách một lúc kiểm tra nhiều chữ ký mới Quá trình từ lúc thu thập được mẫu mã độc đến lúc tạo ra được một chữ ký mới mất khoảng ba tiếng Việc cập nhật mẫu mã độc mới đến người sử dụng cũng mất một thời gian nhất định vì không phải lúc nào người sử dụng cũng cập nhật mẫu chữ ký mới liên tục Đây là một hạn chế của phương pháp này vì mã độc có thời gian thực hiện những hành vi gây hại nhất định trước khi được nhận biết và loại bỏ khỏi hệ thống
1.3.3 Sự gia tăng cơ sở dữ liệu chữ ký mã độc
[4] Có nhiều nguyên nhân dẫn đến sự gia tăng cơ sở dữ liệu chữ ký mã độc Nguyên nhân lớn nhất là sự gia tăng không ngừng của những loại mã độc mới xuất hiện Những kẻ tấn công luôn luôn tạo ra những mẫu mã độc mới mà các chương trình diệt mã độc chưa có được chữ ký, qua đó mã độc có thể vượt qua được sự kiểm tra của các chương trình diệt mã độc Để diệt được những loại
mã độc mới thì cần cập nhật chữ ký mới vào cơ sở dữ liệu Hiện nay, mỗi ngày
có hàng nghìn mẫu mã độc mới xuất hiện Do đó, kích thước cơ sở dữ liệu chữ
ký mã độc gia tăng không ngừng
Hiện nay, vẫn còn nhiều hệ thống phát hiện sử dụng chữ ký tĩnh Chữ ký tĩnh là loại chữ ký mà mỗi chữ ký chỉ xác định được một loại biến thể nhất định của mã độc Do đó, kích thước chữ ký cũng cần được cập nhật để có thể diệt được những mẫu biến thể mới
Một nguyên nhân nữa làm sự tăng trưởng nhanh chóng của cơ sở dữ liệu chữ ký mã độc là việc sử dụng các phương pháp “phát hành” những biến thể mã độc mới Những kẻ tấn công đã lợi dụng tính chất tĩnh của chữ ký Một khi một chữ ký được tạo ra để xác định một phiên bản của mã độc Những kẻ tấn công tiến hành “phát hành” một biến thể mới của mã độc mà chữ ký đã được tạo ra trước đó không thể phát hiện được biến thể mới này Điều quan trọng là chờ đợi cho đến khi chữ ký được tạo ra để phát hiện những biến thể cũ trước khi tạo ra những biến thể mới Sự “chậm trễ” trong việc “phát hành” này làm tối đa hóa hiệu quả của các biến thể mới Khi một chữ ký mới được thêm vào cơ sở dữ liệu thì cũng đồng nghĩa với việc bắt đầu một chu kỳ mới, để phát hiện những biến thể của mã độc này Sự gia tăng theo cấp số nhân của các biến thể mã độc làm
cơ sở dữ liệu chữ ký gia tăng nhanh chóng
Ngày nay, mã độc được phát triển vì nhiều mục đích khác nhau, như là để thu thập dữ liệu hoặc sinh lợi tài chính … Và mã độc ngày càng trở lên tinh vi,
Trang 27lén lút…Một loại mã độc rất nguy hiểm đã xuất hiện trước đây là: W32.ZMist Một năm sau khi phát hiện được loại mã độc này thì các chương trình diệt mã độc vẫn còn phải tinh chỉnh chữ ký để phát hiện nó chính xác hơn
Kích thước cơ sở dữ liệu chữ ký mã độc gia tăng thì kéo theo rất nhiều vấn đề cần giải quyết:
- Thứ nhất: cơ sở dữ liệu chữ ký lớn thì tiêu tốn lượng tài nguyên lớn để quét mã độc và thời gian quét lâu hơn Điều này cũng làm ảnh hưởng đến sự hoạt động của hệ thống Một chương trình phát hiện mã độc nếu tiêu tốn quá nhiều tài nguyên thì sẽ làm các chương trình khác trên hệ thống hoạt động chậm hơn, đôi khi còn ảnh hưởng đến hoạt động bình thường của các chương trình khác
- Thứ hai: cơ sở dữ liệu chữ ký lớn dẫn đến việc loại bỏ chữ ký của những loại mã độc đã xuất hiện lâu hoặc không còn thấy phát hiện Tuy nhiên điều này cũng gây ra một lỗ hổng bảo mật lớn
1.3.4 Ưu điểm và nhược điểm của phương pháp diệt mã độc theo chữ ký
Thứ nhất là: phương pháp phát hiện mã độc dựa trên chữ ký chỉ có thể
phát hiện được những mã độc đã được biết đến mà không thể phát hiện được những mẫu mã độc chưa biết Hiện nay, mỗi ngày có hàng nghìn mẫu mã độc mới được phát tán Thật khó khăn, để có thể thu thập và phân tích được hết những mẫu mã độc mới này Đặc biệt là những phần mềm gián điệp có sự lây lan rất ít, vì thế rất khó thu được mẫu để xây dựng chữ ký cho phần mềm gián điệp đó
Trang 28Thứ hai là: để xây dựng được chữ ký hình thức đòi hỏi phải có một quy
trình phân tích mã thủ công chặt chẽ và tốn thời gian Sau khi tạo ra được chữ ký thì cần cập nhật cho người sử dụng một cách nhanh nhất để có thể bảo vệ hệ thống khỏi sự tấn công của mã độc đó Tuy nhiên nhiều khi người sử dụng chậm chễ quá trình cập nhật chữ ký mới
Thứ ba là: phương pháp phát hiện mã độc dựa trên chữ ký hình thức dễ
dàng bị đánh bại bởi các kỹ thuật gây rối Mã độc sử dụng các phương pháp gây rối để tạo ra các biến thể mới liên tục, điều đó gây rất nhiều khó khăn cho việc phát hiện Một ví dụ là mã độc Storm Worm[13], mấu mã độc này tạo ra rất nhiều biến thể mới, mối biến thể có số thời gian sống ngắn khác nhau để gây khó khăn cho việc xây dựng chư ký cho tất cả các biến thể đó
Thứ tư là: sự gia tăng không ngừng kích thước cơ sở dữ liệu chữ ký, do
được cập nhật chữ ký mới thường xuyên Như một giải pháp, chữ ký cũ thường xuyên bị loại bỏ Vì thế, nó cũng gây ra những lỗ hổng nhất định
1.4 Phương pháp phát hiện mã độc dựa vào hành vi
1.4.1 Tổng quan phương pháp phát hiện mã độc dựa vào hành vi
Như một xu thế tất yếu, cần có một phương pháp mới ra đời để khắc phục những nhược điểm của phương pháp phát hiện mã độc dựa trên chữ ký Phương pháp phát hiện mã độc dựa vào hành vi đã được phát triển để đáp ứng những nhu cầu đó Một điều có thể nhận thấy là các loại mã độc tuy có hình thức khác nhau nhưng lại có những hành vi gây hại giống nhau Phương pháp phát hiện mã độc dựa vào hành vi sẽ xây dựng những “chữ ký hành vi” để phát hiện những hành vi gây hại Do đó, một “chữ ký hành vi” không chỉ phát hiện được một mã độc mà còn có thể phát hiện được nhiều biến thể của nó và nhiều loại mã độc có chung hành vi gây hại Phương pháp này rõ ràng là linh hoạt hơn phương pháp phát hiện mã độc dựa vào chữ ký Trong những năm gần đây, phương pháp này
là trọng tâm nghiên cứu trong lĩnh vực phát hiện mã độc
Hiện nay có nhiều có nhiều hướng tiếp cận nghiên cứu phương pháp phát hiện mã độc theo hành vi Phân loại phương pháp này theo các hướng tiếp cận thể hiện qua Hình 1.4 [5]
Trang 29Hình 1.4: Phân loại phương pháp phát hiện mã độc dựa vào hành vi
1.4.2 Phương pháp phát hiện dựa trên mô phỏng (Simulation-based verification)
1.4.2.1 Nội dung phương pháp
Phương pháp này phát hiện mã độc bằng cách thực thi một tập tin khả nghi trong môi trường được kiểm soát và quan sát hành vi của chương trình đó Khác với phương pháp phát hiện mã độc dựa vào chữ ký xác định mã độc bằng cách thu thập các thông tin về chương trình đó như: thông tin giao tiếp mạng, tạo và ghi đè tập tin hệ thống ….Phương pháp phát hiện mã độc dựa trên hành vi quan sát trực tiếp và ghi lại tất cả các hành vi của chương trình và xác định xem hành vi đó có phải là hành vi gây hại không để có thể khẳng định đó là mã độc hay chương trình lành tính Phương pháp này bám sát vào thực tế khái niệm mã độc: mã độc là chương trình có các hành vi gây hại cho hệ thống
Ở các mục sau tác giả sẽ trình bày kỹ về các bước của phương pháp phát hiện mã độc dựa vào hành vi
Trang 301.4.2.2 Phương pháp thu thập và diễn giải dữ liệu: giám sát động (dynamic monitoring)
Thu thập được hành vi của mã độc là bước đầu tiên và cũng là bước rất quan trọng để kiểm tra xem một chương trình đó có phải là mã độc được hay không Để làm được điều này, mã độc đó sẽ được thực thi trên một môi trường
mô phỏng Bằng cách áp dụng những kỹ thuật giám sát trên môi trường mô phỏng có thể thu thập được những thông tin về hành vi của mã độc đó Trên các
hệ điều hành cũ, kỹ thuật được sử dụng là đánh chặn các nguồn thông tin đầu tiên về những tài nguyên được sử dụng bởi một chương trình Trên hệ điều hành
32 bit và 64 bit, kỹ thuật khác được sử dụng là đánh chặn các cuộc gọi hàm hệ thống API Để có thể thực hiện được một nhiệm vụ, bắt buộc các chương trình phải sử dụng các cuộc gọi hệ thống vì nếu không sử dụng thì hầu như chương trình đó không làm được gì Một ví dụ về một cuộc gọi hệ thống được thể hiện qua đoạn nhật ký sau:
Để có thể thu thập được nhiều cuộc gọi hệ thống thì cần đánh chặn nhiều hàm hệ thống khác nhau Dựa vào những điều kiện giám sát có thể phân loại thành các phương pháp thu thập dữ liệu như sau:
- Điều kiện giám sát thời gian thực: quá trình thực thi của các chương trình được quan sát trực tiếp trong môi trường mà không hạn chế thời gian Để chặn các cuộc gọi hệ thống trong thời gian thực, các kỹ thuật chính được sử dụng là đánh chặn các hàm hệ thống Một hạn chế của kỹ thuật này là có thể ảnh hưởng đến hiệu suất của hệ thống Tuy nhiên, bằng cách chỉ đánh chặn những cuộc gọi hệ thống quan trọng có thể khắc phục được hạn chế này
- Điều kiện thời gian thực với chức năng ghi lại: bằng cách ghi lại những cuộc gọi hệ thống chương trình được quan sát và ghi lại các trạng thái trung gian của môi trường giúp khôi phục môi trường về trạng thái ‘sạch’ngay khi có mối
đe dọa được phát hiện
Trang 31- Hộp cát (Sandboxes): Mã độc được thực thi trong hộp cát sẽ ít gây ảnh hưởng tới hệ thống thật Lợi thế của phương pháp này là cung cấp khả năng quan sát tốt hơn là quan sát trên thời gian thực Để giảm tình trạng quá tải, chỉ
có một số chương trình được quan sát Tuy nhiên, hộp cát lại có một số hạn chế là: cung cấp không đầy đủ các dịch vụ như hệ thống thực và có thể dễ dàng bị phát hiện Mã độc khi phát hiện được môi trường thực thi hộp cát thì thường thích ứng bằng cách thực hiện các hành vi lành tính Một điểm hạn chế nữa mà hộp cát cũng không thực sự an toàn khi mã độc cũng có thể vượt qua được môi trường thực thi này và tác động vào hệ thống thực
- Máy ảo (Virtual machines): Sử dụng máy ảo có thể mô phỏng được toàn
bộ môi trường mà không bị hạn chế như hộp cát, đồng thời thực thi mã độc trên máy ảo cũng hạn chế được tối thiểu các rủi do Máy ảo có thể mô phỏng được bất kỳ tài nguyên nào như trên hệ thống thực Tuy nhiên, sử dụng máy ảo chỉ phù hợp với quá trình phân tích mã độc mà không phù hợp với việc phát hiện
mã độc trên các máy tính cá nhân Máy ảo cũng có hạn chế như hộp cát là có thể
dễ dàng bị phát hiện Tuy nhiên, sử dụng máy ảo vẫn an toàn cho hệ thống thực
vì hiện nay vẫn chưa thấy có kỹ thuật nào có thể vượt qua được môi trường thực thi máy ảo để tác động lên hệ thống thật
1.4.2.3 Thuật toán xác định mã độc
Những dữ liệu được thu thập được khi giám sát mã độc thực thi trong môi trường mô phỏng mới chỉ là những dữ liệu thô, chưa thể xác định được hành vi độc hại của mã độc Nội dung phần này trình bày một số thuật toán phát hiện mã độc dựa trên các dữ liệu thô đó
a, Hệ chuyên gia (Matching algorithms and models: expert systems)
Sử dụng hệ chuyên gia là phương pháp đơn giản nhất và dễ thực hiện nhất Hệ chuyên gia là một hệ thống hoạt động dựa trên một bộ luật được xây dựng từ việc mô hình hóa các kinh nghiệm và kiến thức chuyên môn của các nhà phân tích mã độc[15] Ví dụ về một số luật được thể hiện qua đoạn mã sau:
Một quy tắc luôn luôn xác định một hành vi cụ thể như: đọc tập tin, ghi tập tin, mở tập tin…Quyết định được đưa ra có thể là cho phép hoặc từ chối
Trang 32hành vi của chương trình đó Nếu hành vi đó không được xác định bởi bất cứ luật nào thì hành vi có thể được mặc định cho phép Mô hình hoạt động của hệ chuyên gia được thể hiện qua Hình 1.5 [5]:
Hình 1.5: Mô hình hệ chuyên gia ngăn chặn hành vi dựa trên các luật
Khi một hành vi bị từ chối thì một số quyết định được đưa ra để xử lý chương trình đó, chẳng hạn như là chấm dứt chương trình đó để đảm bảo an toàn cho hệ thống Ưu điểm của hệ thống này là dễ thực hiện và thực hiện nhanh Tuy nhiên, nhược điểm của hệ thống này là tỷ lệ dương tính giả cao Vì các luật chỉ dựa vào một số ít thông tin để quyết định do vậy dễ bị nhầm lẫn giữa chương trình lành tính và mã độc
b, Thuật toán heuristic
Hệ thống heuristic phát hiện mã độc dựa vào nhiều hành vi được thu thập
từ một chương trình bị giám sát Khác với hệ chuyên gia chỉ xem xét các hành vi một cách riêng biệt Nhờ vậy, hệ thống này có thể phát hiện được mã độc với độ chính xác cao hơn hệ chuyên gia Về cơ bản, hệ thống heuristic gồm ba thành phần:
- Thành phần 1: xây dựng cơ chế kết hợp (Association mechanism) Các
cơ chế kết hợp đưa ra quy tắc kết hợp một số mã lệnh thành một hành vi cơ bản
Ví dụ về cơ chế kết hợp được thể hiện qua như sau:
Trang 33Những hành vi cơ bản này sẽ được ghi nhãn để thể hiện một chức năng tương ứng hoặc được đánh giá định lượng đánh giá mức độ của một chương trình bởi một ngưỡng được đặt ra Ví dụ sau mô tả những hành vi cơ bản được gây nhãn:
- Cơ sở dữ liệu các luật: cơ sở dữ liệu này định nghĩa các tiêu chí phát
hiện Trong trường hợp của các hệ thống dựa trên trọng lượng có một ngưỡng được đặt ra Nếu các hành vi của một chương trình bất kỳ vượt quá ngưỡng này thì kết luận đó là chương trình độc hại Còn trong trường hợp hệ thống ghi nhãn, quy tắc phát hiện bao gồm một chuỗi các nhãn được gọi là cây phát hiện
- Phương pháp phát hiện (Detection strategy): Phương pháp phát hiện
ảnh hưởng đến quá trình phát hiện của các luật Trong trường hợp hệ thống dựa trên trọng lượng, phương pháp phát hiện là tích lũy Còn trong trường hợp hệ thống dựa trên ghi nhãn thì phương pháp phát hiện là các các thuật toán tìm kiếm cây Phương pháp phát hiện rất quan trọng vì nó ảnh hưởng đến hiệu suất
và tỷ lệ phát hiện mã độc chính xác của các hệ thống Hình 1.6 mô tả hai phương pháp phát hiện mã độc dựa trên thuật toán tìm cây [5]
Trang 34Hinh 1.6:Mô tả hai thuật toán phát hiện mã độc Greedy và Taboo dựa trên các
nhãn đánh dấu các hành vi
c, Thuật toán phát hiện máy trạng thái (state machines)
Cũng giống như thuật toán heuristic, thuật toán máy trạng thái dựa trên
mô hình tuần tự của các cuộc gọi hệ thống Các cuộc gọi hệ thống của các chương trình bị giám sát được ghi lại Sau đó, hệ thống tiến hành so sánh các cuộc gọi hệ thống này với các đồ thị biểu thị hành vi gây hại đã được xây dựng trước Nếu kết quả tìm kiếm cho thấy hành vi của chương trình khớp với hành vi gây hại được định nghĩa trước thì chương trình đó là mã độc Nếu không thì chương trình đó là lành tính Hình 1.7 mô tả ví dụ hành vi gây hại được biểu diễn thành đồ thị[11]:
Phương pháp này cũng có thể được sử dụng để mô hình hóa các hành vi của các chương trình lành tính Qua đó có thể xác định được các hành vi gây hại
từ chương trình đó Ví dụ là có thể xác định được các macro virus trên các tập tin của các phần mềm văn phòng Tuy nhiên, một điều khó khăn là không thể
Trang 35khái quát mô hình được cho tất cả các ứng dụng Vì có rất nhiều ứng dụng được
sử dụng bởi nhiều người dùng khác nhau
Hình 1.7: Đồ thị mô tả hành vi lây nhiễm của mã độc
d, Máy học
Là phương pháp phân tích và học tập dựa trên tập các chương trình lành tính và tập các mã độc Có nhiều thuật toán học khác nhau, nhưng dữ liệu đầu vào thường là thông tin các cuộc gọi hệ thống Hình 1.8 mô tả một hệ thống sử dụng phương pháp học để phát hiện mã độc [13]:
Hình 1.8 Phương pháp học phát hiện mã độc dựa trên hành vi sử dụng vector
Trang 36Một cách tiếp cận khác để học hành vi là xây dựng đồ thị hành vi trước khi học Hình 1 9 mô tả cách tiếp cận này[14]:
Hình 1.9 Phương pháp học phát hiện mã độc dựa trên hành vi sử dụng đồ thị
Phương pháp học thường có tỷ lệ phát hiện chính xác cao trên tập các mã độc được học Tuy nhiên thường tỏ ra kém hiệu quả trong việc phát hiện mã độc mới và thời gian phát hiện mã độc muộn Mã độc có thể thực hiện được nhiều hành vi độc hại trước khi đến một “ngưỡng” thì bị phát hiện
1.4.3 Phương pháp phát hiện dựa trên kiểm tra hình thức (Formal verification)
Phương pháp này có một cách tiếp cận khác để phát hiện hành vi độc hại của mã độc Thay vì quan sát quá trình thực thi của một chương trình để thu thập hành vi của chương trình đó, phương pháp này sẽ tiến hành phân tích tĩnh để xác định hành vi Điều đó có nghĩa là không cần thực thi một chương trình nào đó để kiểm tra Điều này sẽ giảm thiểu nguy cơ gây hại từ các chương trình độc hại Tuy nhiên, cách tiếp cận này còn có rất nhiều khó khăn cần giải quyết để phát hiện mã độc với hiệu suất và tỷ lệ cao
1.4.3.1 Phương pháp thu thập hành vi: khai thác tĩnh (static extraction)
Khai thác tĩnh là phân tích trực tiếp tập tin thực thi để tìm được hành vi của chương trình đó Khai thác tĩnh cung cấp thông tin phong phú và đầy đủ hơn
Trang 37về các hoạt động tiềm năng hơn là giám sát động Quy trình khai thác tĩnh được
mô tả trong Hình 1.10 [5]:
Hình 1.10: Quy trình khai thác tĩnh hành vi mã độc
Quy trình này gồm các bước: gỡ rối (nếu cần thiết), dịch ngược và diễn giải dữ liệu (interpretation) Kết thúc quy trình này, một đồ thị điều khiển luồng (Control Flow Graphs - CFG) hoặc đồ thị luồng dữ liệu (Data Flow Graphs - DFG) được xây dựng Các đồ thị này thể hiện quy trình thực thi hay hành vi của chương trình
Mẫu mã ban đầu có thể chỉ đơn giản là một tập tin gốc ban đầu hoặc có thể được thu thập bởi một hệ thống giả (honeypot) Thách thức chính của cách tiếp cận này là khai thác được các hành vi từ các mã nhị phân Để làm được điều này thì đòi hỏi một quy trình phức tạp và nhiều bước xử lý khác nhau
Trong những trường hợp đơn giản, quy trình này có thể thực hiện được một cách tự động, nhưng trong đa số các trường hợp thì quy trình này cần có sự can thiệp thủ công của con người Điều này là do các mã độc thường hay sử dụng các kỹ thuật mã hóa và gây rối như trong các mã độc đa hình và siêu đa hình Ví dụ, quá trình dịch ngược mã có thể bị cản trở bởi các kỹ thuật chèn các lệnh giả để cản trở sự liên kết mã Thật không may là quy trình này hầu như không thể thực hiện được một cách tự động [6]
Trang 38Ưu điểm và nhược điểm của phương pháp khai thác tĩnh này là:
- Ưu điểm: Ưu điểm chính của phương pháp này là có thể trích xuất được đầy đủ các hành vi của mã độc từ tập tin Điều này đảm bảo an toàn tối đa cho
hệ thống vì không cần thực thi chương trình độc hại
- Nhược điểm: Nhược điểm lớn nhất của phương pháp này là chưa thể thực hiện tự động được mà vẫn phải có sự can thiệp thủ công của con người
1.4.3.2 Thuật toán phát hiện
Có các thuật toán phát hiện thường được sử dụng như sau:
a, Sử dụng đồ thị đẳng cấu mở rộng (annoted graph isomorphism)
Đồ thị đẳng cấu mở rộng là đồ thị được sử dụng riêng trong trường hợp khai thác tĩnh này vì phương pháp này sử dụng đồ thị điều khiển luồng (CFG) Các chỉ dẫn được lưu trữ trong các nút của đồ thị thường được thay thế bằng một nhãn tương ứng Quá trình ghi nhãn có thể được thực hiện theo hai phương pháp Một là các chỉ lệnh được dịch sang một đại diện trung gian có ngữ nghĩa Hai là các chỉ lệnh được giảm xuống thành các lớp hoạt động cơ bản Một mẫu hành vi hoặc chữ ký hành vi sẽ được quy định bởi một cấu trúc đồ thị có sử dụng các chú thích
Một tập các đồ thị quy định hành vi nguy hiểm (CFG) của mã độc được lưu trong cơ sở dữ liệu Những đồ thị này sử dụng những ký tự đại diện để thể hiện cho những giá trị bất kỳ Để phát hiện một chương trình là độc hại hay lành tính thì hệ thống sẽ tìm kiếm sự tồn tại của bất kỳ một đồ thị hành vi nguy hiểm nào có trong chương trình đó hay không [5]
Nội dung phương pháp này được mô tả qua ví dụ trong Hình 1.11 Trong Hình 1.11, ở hình (a) là một mẫu đồ thị quy định hành vi độc hại Đó là hành vi truy cập vào bộ nhớ để giải mã các đoạn mã trước khi thực thi Hành vi này là thường gặp ở các loại mã độc Trong hình (b) là đồ thị được tìm thấy hay trích xuất ra từ một chương trình minh họa Đồ thị trong hình (a) và (b) là tương đương nhau Các ký tự đại diện trong hình (a) khi đó tương ứng với các giá trị
cụ thể như: A là 0x400000, B là 0x400000…Chương trình minh họa được tìm thấy có mẫu hành vi được thể hiện ở hình (a), như vậy chương trình minh họa đó
là mã độc
Trang 39Hình 1.11: Đồ thị đẳng cấu với ngữ nghĩa tương đương
Phương pháp sử dụng đồ thị như trên cũng được sử dụng rất hiệu quả để phát hiện những biến thể mới của những mẫu mã độc đã biết Trong đó các biến thể mới thường sử dụng các kỹ thuật gây rối để chữ ký tĩnh không còn nhận diện được Để phát hiện được những biến thể mới này, trước khi tìm kiếm các đồ thị hành vi trong các mẫu chương trình thì chương trình đó thường được biến đổi về dạng đơn giản hơn Như là: loại bỏ các lệnh rác (NOP, ), loại bỏ các nhánh điều kiên chết,…Phương pháp này có ưu điểm là nhanh, sử dụng ít tài nguyên Tuy nhiên điểm hạn chế của phương pháp này là chưa giải quyết được những loại mã độc sử dụng các kỹ thuật gây rối phức tạp vì không thể biến đổi biến thể đó về dạng bình thường được
b, Phương pháp sử dụng đồ thị hành vi
Phương pháp này cũng giống như phương pháp đã được trình bày ở mục
“c phần 1.4.2.3” Các đồ thị hành vi được xây dựng để xác định cho các loại mã độc Thành phần chủ yếu để xây dựng đồ thị hành vi là các hàm hệ thống và tham số của từng hàm Khác với phương pháp trên thu thập các hàm hệ thống bằng cách đánh chặn, phương pháp này lọc trực tiếp các hàm hệ thống mà mã độc sẽ sử dụng từ chính tập tin thực thi của mã độc Như vậy phương pháp này
có thể phát hiện được mã độc mà không cần phải thực thi mã độc Quy trình các bước của phương pháp này được thể hiện qua Hình 1.12 [7]: