Nghiên cứu một số kỹ thuật sinh mã độc tự động và vượt qua phần mềm phòng chống mã độc
Trang 1MỤC LỤC
DANH MỤC HÌNH ẢNH 3
TỪ VIẾT TẮT 4
LỜI MỞ ĐẦU 5
TỔNG QUAN VỀ MÃ ĐỘC 7
1.1 Giới thiệu 7
1.1.1 Khái niệm, phân loại và mục đích của mã độc 7
1.1.2 Các thức lây nhiễm mã độc 8
1.1.3 Các loại mã độc mới và dự đoán xu hướng mã độc trong tương lai 9
1.2 Các công cụ sinh mã độc tự động 10
1.2.1 Hướng tiếp cận 10
1.2.2 JPS (Virus Maker 3.0) 11
1.2.3 TeraBIT Virus Maker 3.2 16
1.2.4 Kết quả 18
TỔNG QUAN VỀ PHẦN MỀM PHÒNG CHỐNG MÃ ĐỘC 19
2.1 Giới thiệu 19
2.2 Nguyên lý phát hiện mã độc 20
2.2.1 Phát hiện mã độc dựa vào dấu hiệu đặc trưng 21
2.2.2 Phát hiện mã độc dựa vào đặc điểm bất thường 22
2.3 Các kỹ thuật phát hiện mã độc 23
2.3.1 Checksummers 23
2.3.2 Fuzzy Hashing 24
2.3.3 Scan String 26
2.3.4 Code Emulation 27
2.3.5 Static Heuristic Analysis 28
2.3.6 Behavior Blocking 29
NGHIÊN CỨU CÁC KỸ THUẬT VƯỢT QUA PHẦN MỀM PHÒNG CHỐNG MÃ ĐỘC 31
3.1 Cấu trúc tệp tin thực thi trên Hệ điều hành Windows 32bit 31
3.2 Các kỹ thuật vượt qua các phần mềm phòng chống mã độc 46
Trang 23.2.1 Kỹ thuật mã hóa 46
3.2.2 Kỹ thuật chèn mã rác 48
3.2.3 Kỹ thuật rẽ nhánh 49
3.2.4 Sử dụng Stub để giải mã và thực thi trực tiếp trên bộ nhớ 50
3.2.5 Kỹ thuật PRIDE (Pseudo-Random Index Decryption) 52
3.2.6 Các kỹ thuật chống phân tích mã độc 54
3.2.7 Kỹ thuật che giấu API 60
3.2.8 Kỹ thuât sử dụng chữ ký số 62
3.2.9 Khai thác lỗ hổng trên Hệ điều hành 65
3.3 Chương trình và thử nghiệm 67
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 3DANH MỤC HÌNH ẢNH
Hình 1.1.1: Thống kê các loại mã độc mới xuất hiện theo năm 9
Hình 1.2.1: Thông tin về chương trình JPS (Virus Macker 3.0) 11
Hình 1.2.2: Giao diện của chương trình JPS (Virus Maker 3.0) 11
Hình 1.2.3: Mã độc được tạo ra từ chương trình 12
Hình 1.2.4: Sử dụng Exeinfor PE để xác định trình bảo vệ của mã độc 12
Hình 1.2.5: Lệnh “net user” được thực thi trong mã độc 13
Hình 1.2.6: Cứ sau 1 phút mã độc lại tự sao chép chính nó tới vị trí khác 13
Hình 1.2.7: Resource data trong chương trình JPS 14
Hình 1.2.8: Các bước thực thi của chương trình chính 15
Hình 1.2.9: Giao diện của chương trình TeraBIT virus macker 3.1 16
Hình 1.2.10: Mã độc được viết bằng MS Visual Basic 17
Hình 1.2.11: So sánh resource trong tệp tin trước và sau khi patch 17
Hình 1.2.12: Mô tả quá trình patch 18
Hình 2.1.1: Thị phần các sản phẩm Antivirus 1/2015 theo OPSWAT 20
Hình 2.2.1: Sự phân chia về các kỹ thuật phát hiện mã độc 20
Hình 2.2.2: Việc xây dựng tập signature hoàn chỉnh là vô cùng khó khăn 21
Hình 2.2.3: Phân loại hành vi trong kỹ thuật Anomaly-based Detection 22
Hình 2.3.1: Tệp chứa mã độc được quét trên trang virustotal.com 24
Hình 2.3.2: Cách tính toán giá trị hash với mỗi khối 3 ký tự 25
Hình 2.3.3: Mô tả sau khi tiến hành Rolling hash 25
Hình 2.3.4: Một đoạn mã của virus Stoned khi được phân tích 26
Hình 2.3.5: Cấu trúc của thanh ghi và cờ CPU Intel 16bit được định nghĩa lại bằng ngôn ngữ C 27
Hình 2.3.6: Kỹ thuật Heuristic nhận dạng một số virus thực tế 28
Hình 2.3.7: Phân loại ngưỡng lây nhiễm ở mức đơn lớp 28
Hình 2.3.8: Một khối ngăn chặn hành vi lừa đảo trên DOS 29
Hình 3.1.1: Minh họa cấu trúc cơ bản của một PE Tệp tin 31
Hình 3.1.2: Một tệp tin PE được mở bằng công cụ FileInSight của McAfee 32
Hình 3.1.3: Thành phần e_magic và e_flanew 33
Hình 3.1.4: Hình ảnh PE header của tệp tin test.exe 34
Hình 3.1.5: Vị trí các thành phần của PE Header trong tệp tin test.exe 37
Hình 3.1.6: Cấu trúc Data Directory 37
Hình 3.1.7: Vị trí của Data Directory trong Optional Header 38
Hình 3.1.8: Các thành phần của Data Directory 39
Hình 3.1.9: Hình ảnh minh họa việc Import Sections 43
Hình 3.1.10: Hình ảnh minh họa việc Export Sections 45
Hình 3.1.11: Trường hợp module export theo cả 2 cách 46
Trang 4Hình 3.2.1: Trình tự hoạt động chương trình giữa có và không rẽ nhánh 49
Hình 3.2.2: Thành phần của mã độc mới được tạo ra 50
Hình 3.2.3: Cấu trúc tệp tin mới được tạo ra 51
Hình 3.2.4: Mô hình xử lý công việc đối với máy ảo 58
Hình 3.2.5: Thực thi hàm MessageBoxA mà không cần gọi API 61
Hình 3.2.6:Bảng Import Directory không có thư viện user32.dll 61
Hình 3.2.7: Sơ đồ xác thực sử dụng Chữ ký số 62
Hình 3.2.8: Chữ ký số trên tệp tin cài đặt phần mềm BKAV 64
Hình 3.2.9: Mã độc giả mạo chữ ký số giả 65
Hình 3.2.10: Sự lây lan của Stuxnet 66
Hình 3.3.1: Khi chạy trực tiếp chương trình 67
Hình 3.3.2: Khi chạy chương trình thông qua Visual Studio 2012 67
Hình 3.3.3: Khi chạy chương trình ở máy thật 68
Hình 3.3.4: Khi chạy chương trình trong máy ảo VMware Workstation 11 68
Hình 3.3.5: Lây nhiễm vào các tệp tin trong ổ đĩa E 68
Hình 3.3.6: Thực thi chương trình bị nhiễm 69
Hình 3.3.7: Tiến trình con được thực thi với quyền SYSTEM 69
Hình 3.3.8: Kích thước tệp tin thay đổi sau khi bị nhiễm 70
Hình 3.3.9: Kết quả Scan Online 70
Hình 3.3.10: Kết quả Scan sau khi ký chữ ký số 71
TỪ VIẾT TẮT
PE Portable Executable API Application Programming Interface
Trang 5LỜI MỞ ĐẦU
Giới thiệu
Trong giai đoạn hiện nay, khi công nghệ thông tin được ứng dụng vào hầu hết các lĩnh vực của cuộc sống, yêu cầu về an toàn thông tin càng trở nên quan trọng hơn Chính vì vậy, các phần mềm phòng chống mã độc (hay phần mềm Antivirus) ngày càng được nhiều người biết đến Nhưng cũng vì lẽ đó, người sử dụng đang quên dần cách tự bảo vệ máy tính của mình, thay vào là giao phó toàn bộ sự an toàn của máy tính nói chung và các dữ liệu trong máy tính nói riêng vào các phần mềm Antivirus Theo ước tính của Trung tâm Nghiên cứu Chiến lược và Quốc tế (CSIS) Hoa Kỳ, trong năm 2014, cả thế giới tổn thất 445 tỷ USD do tội phạm mạng gây ra
và 8.500 tỷ đồng là số tiền thiệt hại mà người sử dụng Việt Nam phải hứng chịu từ các loại mã độc máy tính Liệu các phần mềm Antivirus có thực sự đem lại hiệu quả cho người sử dụng?
Thông qua nội dung đề tài: “Nghiên cứu một số kỹ thuật sinh mã độc tự động và vượt qua các phần mềm phòng chống mã độc”, nhóm nghiên cứu đã tìm
hiểu các kiến thức về mã độc, các kỹ thuật sinh mã độc tự động, cũng như muốn kiểm chứng tính an toàn của các phần mềm phòng chống mã độc Từ đó có cái nhìn chính xác hơn về mã độc và cách thức để tự bảo vệ máy tính của mình
Ý nghĩa, mục đích và yêu cầu
Ý nghĩa:
Ý nghĩa khoa học:
o Tìm hiểu tổng quan về mã độc, phân loại và cách thức lây lan mã độc
o Nghiên cứu về một số công cụ sinh mã độc tự động hiện có
o Tìm hiểu một số kỹ thuật phát hiện mã độc của các phần mềm phòng chống mã độc
o Tìm hiểu một số kỹ thuật vượt qua cơ chế phát hiện của các phần mềm phòng chống mã độc
Ý nghĩa thực tiễn:
o Có khả năng ứng dụng trong các bài toán phát hiện và nhận dạng mã độc
o Có khả năng ứng dụng vào các lĩnh vực liên quan đến an toàn thông tin
Trang 6Mục đích:
Nghiên cứu tổng quan về mã độc và một số công cụ sinh mã độc tự động
Nghiên cứu, phân tích và đưa ra các giải pháp vượt qua các phần mềm phòng chống mã độc
Yêu cầu:
Nghiên cứu tổng quan về mã độc và một số công cụ sinh mã độc tự động
Nghiên cứu các giải pháp vượt qua các phần mềm phòng chống mã độc
Xây dựng chương trình thử nghiệm các giải pháp vượt qua các phần mềm phòng chống mã độc
Nội dung đề tài
Nội dung của đề tài được trình bày thành 6 phần:
Lời mở đầu
Chương 1: Tổng quan về mã độc Chương 1 trình bày khái quát về mã độc,
khái niệm, mục đích, phân loại mã độc và các hình thức lây lan của mã độc Bên cạnh đó, chương 1 cũng trình bày nghiên cứu về một số công cụ sinh mã độc tự động
Chương 2: Tổng quan về phần mềm phòng chống mã độc Chương 2 giới
thiệu về các phần mềm phòng chống mã độc, nguyên lý phát hiện mã độc và một số
kỹ thuật phát hiện mã độc được sử dụng trong các phần mềm phòng chống mã độc
Chương 3: Nghiên cứu các kỹ thuật vượt qua phần mềm phòng chống mã độc Chương 3 tập trung trình bày các kỹ thuật vượt qua các phần mềm phòng chống
mã độc đã được công bố: kỹ thuật mã hóa, kỹ thuật rẽ nhánh… Bên cạnh đó, Chương
3 cũng trình bày, phân tích và áp dụng một số kỹ thuật khác như kỹ thuật sử dụng chữ ký số, khai thác lỗ hổng trên Hệ điều hành, nhằm làm tăng hiệu quả vượt qua phần mềm phòng chống mã độc
Kết luận
Tài liệu tham khảo
Trang 7TỔNG QUAN VỀ MÃ ĐỘC 1.1 Giới thiệu
1.1.1 Khái niệm, phân loại và mục đích của mã độc
a Khái niệm:
Mã độc là một thuật ngữ dùng để ám chỉ những phần mềm được cài đặt vào máy tính, thực hiện những nhiệm vụ không mong muốn, thường nhằm phục vụ lợi ích cho bên thứ ba nào đó
Hiện nay, mã độc không chỉ xuất hiện trong các máy tính mà còn xuất hiện trong các thiết bị điện tử, thiết bị số khác như điện thoại di động, các thiết bị điều khiển từ xa…
b Phân loại:
Mã độc ngày nay đã phát triển dưới nhiều hình thái khác nhau Mã độc không chỉ tồn tại dưới một dạng đơn thuần mà còn là sự pha trộn, lai tạo dựa nhiều dạng Dưới đây là một số loại mã độc:
Virus: loại mã độc có khả năng tự nhân bản, lây lan trực tiếp vào các tệp tin
dữ liệu của máy tính Virus có thể thay đổi hoặc xóa bỏ các tệp tin dữ liệu máy tính
Worm: khác với virus, loại mã độc này không trực tiếp vào các tệp tin dữ liệu của máy tính, không cần phải gắn vào một chương trình để thực thi hoạt động Nhưng vẫn có khả năng tạo ra bản sao để đánh cắp hoặc phá hủy dữ liệu của máy tính
Trojan: loại mã độc này không có khả năng nhân bản, được che giấu hoặc tạo một vỏ bọc an toàn của những phần mềm hợp lệ Chúng bí mật kết nối Internet, đánh cắp các thông tin máy tính, hoặc phối hợp với Backdoors để tạo ra các điều khiển máy tính, lây lan các loại mã độc khác từ xa
Rootkit: loại mã độc nguy hiểm, lây nhiễm vào máy tính ở mức thấp như hệ điều hành… nên rất khó phát hiện Chúng gần như “vô hiệu” đối với các phần mềm phát hiện mã độc
Trang 8Keyloggers: loại mã độc gián điệp có khả năng thu thập mọi thông tin (tài khoản đăng nhập, mật khẩu, thông tin cá nhân…) khi bạn gõ bàn phím máy tính Các thông tin này sẽ được chuyển ra ngoài nhằm phục vụ việc đánh cắp thông tin
Adware: loại mã độc này hiển thị những quảng cáo không mong muốn trên màn hình của người dùng Về bản chất, các quảng cáo này chỉ gây phiền nhiễu, không gây nguy hiểm tới người dùng Nhưng chúng lại được lợi dụng để thực hiện các loại
mã độc khác
Spyware: loại mã độc gián điệp có khả năng lén lút thu thập thông tin về máy tính bị lây nhiễm như thông tin hệ thống, địa chỉ IP máy tính, các websites đã ghé thăm… và gửi các thông tin đó ra ngoài
Browser Hijacker: có khả năng sửa đổi các thiết lập trên trình duyệt máy tính như trang mặc định (Home page), thanh công cụ tìm kiếm, tạo ra các phím tắt máy tính, hiển thị quảng cáo hoặc chuyển hướng liên kết trang web…
Mobile Threats: khác với các loại mã độc trên máy tính, đây là loại mã độc mới trên các thiết bị di động Mục đích chủ yếu của loại mã độc này là theo dõi, đánh cắp thông tin của người sử dụng
c Mục đích của mã độc:
- Trò đùa giữa những người lập trình mã độc
- Khẳng định bản thân
- Học tập, nghiên cứu
- Phá hủy dữ liệu, hệ thống máy tính
- Theo dõi và đánh cắp thông tin máy tính, thông tin cá nhân người dùng…
1.1.2 Các thức lây nhiễm mã độc
- Lây nhiễm theo cách cổ điển: mã độc lây nhiễm từ máy tính này sang máy tính khác, từ thiết bị này sang thiết bị khác thông qua các phương tiện lưu trữ dữ liệu như: đĩa CD, USB flash, Ổ cứng di động…
- Lây nhiễm qua thư điện tử: mã độc được gắn vào các thư điện tử, các tệp tin đính kèm, các đường link ẩn… người sử dụng khi nhận được thư điện tử đã không kiểm tra kỹ, gián tiếp thực thi mã độc
Trang 9- Lây nhiễm qua truy cập trang web: mã độc được gắn trên các banner, quảng cáo của các trang web, người sử dùng sẽ trực tiếp hoặc gián tiếp truy cập vào các trang web bị dính mã độc và bị lây nhiễm
- Lây nhiễm qua các phần mềm cài đặt: mã độc được đính kèm trong các phần mềm cài đăt, người sử dụng sẽ bị lây nhiễm khi thực hiện quá trình cài đặt hoặc sau khi cài đặt phần mềm Các lây nhiễm này thường dựa vào sự thiếu hiểu biết hoặc không đọc kỹ các yêu cầu cài đặt của phần mềm
- Lây nhiễm qua khai thác lỗi bảo mật: thông qua việc khai thác các lỗi bảo mật trên hệ điều hành, cấu trúc tệp tin… để cài các mã độc nên máy tính nạn nhân
1.1.3 Các loại mã độc mới và dự đoán xu hướng mã độc trong tương lai
Theo AV-Test, có đến hơn 140 triệu loại mã độc mới xuất hiện trong năm
2014, nhiều hơn hẳn so với các năm trước Bên cạnh sự vượt trội về số lượng, cũng
có thể thấy năm 2014 xuất hiện nhiều mã độc có đặc điểm khác biệt so với các mã độc trước đây Các loại mã độc mới ngày càng được thiết kế tinh vi hơn, đặc biệt các
mã độc được thiết kế cho mục đích tấn công có chủ đích nhằm vào cá nhân hoặc các
tổ chức lớn
Hình 1.1.1: Thống kê các loại mã độc mới xuất hiện theo năm
Trang 10Dự đoán trong những năm tới xu hướng phát triển của mã độc sẽ tiếp tục xuất hiện các phần mềm gián điệp tinh vi nhằm vào hạ tầng trọng yếu của các quốc gia để đánh cắp và phá huỷ Các mã độc trên di động tiếp tục tăng nhanh và sẽ xuất hiện nhiều biến thể phần mềm mã hoá tống tiền (ransomware) trên di động Quyền riêng
tư của người sử dụng tiếp tục là vấn đề nóng đặc biệt là trên các hãng sản xuất thiết
bị di động hoặc các ứng dụng di động Có thể xuất hiện nhiều vụ lọ lọt dữ liệu của người sử dụng tương tự như vụ các diễn viên nổi tiếng bị lộ ảnh nóng trên iCloud Các dịch vụ lưu trữ dữ liệu đám mây gặp phải sự nghi ngại của người sử dụng do vấn đề đảm bảo an toàn Mạng xã hội như Facebook sẽ trở thành con đường chủ yếu
để những kẻ lừa đảo hoạt động Các cuộc tấn công mạng mang màu sắc chính trị gia tăng giữa nhóm hacker của các quốc gia Hacker tiếp tục nhằm vào các giao thức mạng hoặc thư viện quan trọng với hy vọng tìm ra những lỗ hổng tương tự Heartbleed hay Shellshock Doanh nghiệp đối đầu với các cuộc tấn công đánh cắp dữ liệu ngày càng tinh vi Đặc biệt là các tổ chức tài chính và cung cấp dịch vụ internet
1.2 Các công cụ sinh mã độc tự động
1.2.1 Hướng tiếp cận
Để tiến hành nghiên cứu các công cụ sinh mã độc tự động, nhóm nghiên cứu
sử dụng kỹ thuật Dịch ngược để nghiên cứu cách thức hoạt động của công cụ
Chuẩn bị:
- Máy ảo và Sanboxie để thực thi chương trình
- Một số công cụ sinh mã độc tự động: JPS (Virus Maker 3.0), TeraBIT Virus Maker 3.2
- Công cụ Dịch ngược: IDA Pro, Ollydbg
- Các công cụ khác: CFF Explorer, Exeinfo PE…
Mục đích:
Mục đích của việc nghiên cứu là tìm ra phương pháp tự động sinh mã độc, từ
đó có thể xây dựng chương trình tự động sinh hoặc tìm hiểu đặc trưng của các loại
mã độc được sinh tự động để có thể phát hiện và phòng chống
Trang 111.2.2 JPS (Virus Maker 3.0)
Thông tin về chương trình:
Hình 1.2.1: Thông tin về chương trình JPS (Virus Macker 3.0)
Chương trình JPS (Virus Maker 3.0) có giao diện như hình dưới đây:
Hình 1.2.2: Giao diện của chương trình JPS (Virus Maker 3.0)
Trang 12Sau khi lựa chọn thử các chức năng, bấm “Create Virus!” Ta nhận được một tệp tin “SENDER.EXE” như hình dưới đây
Hình 1.2.3: Mã độc được tạo ra từ chương trình
Sử dụng công cụ ExeInfoPE để kiểm tra tệp tin mới được tạo ra Kết quả cho thấy, tệp tin được nén bằng chương trình UPX
Hình 1.2.4: Sử dụng Exeinfor PE để xác định trình bảo vệ của mã độc
Tệp tin thực thi đã được nén bằng một trình nén UPX nhưng được người sử dụng chỉnh sửa Vậy nên, không thể giải nén bằng các công cụ tự động Do vậy, ta
sẽ debug các hàm trong mẫu mã độc được sinh ra để xem xét một số chức năng
Trong hình dưới đây, mã độc tiến hành kiểm tra có thực hiện việc chọn (đánh dấu) vào chức năng đổi mật khẩu Windows hay không, nếu có sẽ thực hiện đổi mật khẩu của người dùng trên Windows Bằng cách sử dụng lệnh “net user” bằng lệnh WinExec
Trang 13Hình 1.2.5: Lệnh “net user” được thực thi trong mã độc
Dưới đây là chức năng tự động sao chép với thời gian định trước, mã độc sử dụng hàm User32.SetTimer với tham số truyển vào là 60000ms, sau mỗi lần lại tiến hành copy tệp tin tới một thư mục gần vị trí của nó bằng hàm Explorer.00459F4
Hình 1.2.6: Cứ sau 1 phút mã độc lại tự sao chép chính nó tới vị trí khác
Các chức năng của mã độc được sinh ra thực hiện đúng như mong đợi Phân tích chương trình sinh ta có được
Trang 14Hình 1.2.7: Resource data trong chương trình JPS
Các resource trong chương trình này tương ứng là các tệp tin PE với đầy đủ các chức năng, nhưng khác nhau đối tượng ICO – được định nghĩa là biểu tượng của chương trình mã độc được sinh ra Có thể là tệp tin PDF, tệp tin nén ZIP
Phân tích chương trình sinh mã độc bằng IDA pro Chương trình được thực hiện như sau:
Trang 15Hình 1.2.8: Các bước thực thi của chương trình chính
- Đầu tiên, nạp dữ liệu tệp tin nhị phân từ resource của chương trình vào trong
bộ nhớ
- Nạp dữ liệu về địa chỉ offset của tệp tin nhị phân về các chức năng được chọn
- Tiến hành sửa đổi các byte code trong tệp tin nhị phân trên bộ nhớ
- Xuất ra tệp tin mã độc
Trang 16Mô tả thuật toán như sau:
1.2.3 TeraBIT Virus Maker 3.2
Giao diện chính của chương trình:
Hình 1.2.9: Giao diện của chương trình TeraBIT virus macker 3.1
Lựa chọn các “chức năng” của virus sau đó “Creat Virus” Kiểm tra chương trình được viết bằng ngôn ngữ, cũng như trình biên dịch hay trình bảo vệ bằng Exeinfo PE
Trang 17Chương trình được viết bằng MS Visual Basic 6.0 Và không được pack hay protect bằng các trình bảo vệ khác Tiến hành dịch ngược để có được các đoạn mã của chương trình
Hình 1.2.10: Mã độc được viết bằng MS Visual Basic
Ta sử dụng “VB Decompiler Pro” – đây là một công cụ chuyên nghiệp trong việc dịch ngược lại mã của các chương trình được viết bằng MS Visual Basic 6.0
Về cơ bản, nguyên lý hoạt động của TeraBIT Virus Maker 3.2 tương tự như của JPS (Virus maker 3.0) và cũng thực hiện các bước làm tương tự
Với mỗi lựa chọn được đánh dấu tại giao diện của chương trình, dữ liệu địa chỉ bycode sẽ được nạp và thay đổi
Hình 1.2.11: So sánh resource trong tệp tin trước và sau khi patch
Tệp tin A: là tệp tin được tạo ra với đầy đủ các chức năng
Tệp tin B: là resource trong chương trình
Trang 18Hai tệp tin này chỉ khác nhau một số byte trong chương trình và PE header, dữ liệu về biểu tượng hiển thị (phần dưới cùng) Chứng tỏ resource đã bị chỉnh sửa theo phương pháp đã trình bày ở trên để sinh ra được mã độc có thể thực thi
1.2.4 Kết quả
Hầu hết các công cụ tự động sinh mã độc được nghiên cứu đều sử dụng phương pháp sinh mã độc như sau:
Bước 1: Tạo ra một mã độc có đầy đủ các chức năng
Bước 2: Xây dựng một công cụ Patcher để sửa đổi một số byte code trong tệp tin nhị phân của mã độc tương ứng với mỗi lựa chọn chức năng hay cấu hình cài đặt của mã độc được sinh ra
Hình 1.2.12: Mô tả quá trình patch
Bước 3: Ghi tệp tin mã độc được sinh ra bằng Patcher
Trang 19TỔNG QUAN VỀ PHẦN MỀM PHÒNG CHỐNG MÃ ĐỘC 2.1 Giới thiệu
Hầu hết các loại mã độc đã xuất hiện trên thế giới từ những năm 1980 hoặc thậm chí là sớm hơn Cùng với đó là những mục đích khác nhau khi mã độc được tạo ra Thế nhưng mãi đến năm 1987, hai tiện ích phòng chống virus đầu tiên được
ra đời là: Flushot Plus và Anti4us Trong khoảng từ năm 1987 đến năm 1989, một nhóm với tên gọi “Virus-L” đã chia sẻ các thông tin về vấn để bảo mật thông tin, các công cụ, cách thức giúp hạn chế sự lây nhiễm của virus Cá nhân đầu tiên đã sử dụng những thông tin này vào việc kinh doanh các sản phẩm phòng chống sự lây nhiễm virus là John McAfee Tiếp sau đó là các hãng phần mềm Kaspersky và Norton ra đời, mở ra cánh cửa mới cho ngành công nghệ sản xuất phầm mềm phòng chống sự lây lan của virus, mà nay có tên gọi là các phần mềm phòng chống mã độc
Các phần mềm phòng chống mã độc (Antivirus Software) phổ biến tại Việt Nam năm 2014:
- Kaspersky Antivirus Software
- Avast Antivirus Software
- Bitdefender Antivirus Software
- Norton Antivirus Software
- Antivirus Guard Software (AVG)
- Bach Khoa Antivirus (Bkav)
- CMC Antivirus Software
Các sản phẩm Antivirus chiếm thị phần nhiều nhất trên thế giới theo báo cáo thống kê tháng 1/2015 của OPSWAT – là một công ty phần mềm chuyên cung cấp các kỹ sư, các công cụ và dịch vụ phát triển phần mềm bảo mật)
Trang 20Hình 2.1.1: Thị phần các sản phẩm Antivirus 1/2015 theo OPSWAT
2.2 Nguyên lý phát hiện mã độc
Hình 2.2.1: Sự phân chia về các kỹ thuật phát hiện mã độc
Như vậy, có thể thấy các kỹ thuật phát hiện mã độc được chia thành 2 nhóm chính là:
- Signature-based: dựa vào dấu hiệu đặc trưng
- Anomaly-based: dựa vào các điểm bất thường
Các kỹ thuật phân tích được sử dụng trong các kỹ thuật phát hiện mã độc là:
- Stactic: phân tích tĩnh
- Dynamic: phân tích động
- Hybrid: phân tích lai, là sử kết hợp giữa phân tích động và tĩnh
Trang 212.2.1 Phát hiện mã độc dựa vào dấu hiệu đặc trưng
Là việc sử dụng một tập các mẫu nhận dạng được gọi là signature để làm căn
cứ xác định mã độc Tập các signature sẽ được xây dựng bằng việc cập nhật các mẫu
mã độc đã được kiểm chứng, bằng việc sử dụng những mẫu được xây dựng chuyên biệt bởi các nhà nghiên cứu
Ưu thế:
- Phát hiện chính xác các mã độc nếu như có các signature trùng khớp với các mẫu trong tập mẫu nhận dạng
Hạn chế:
- Vậy xây dựng tập các signature hoàn chỉnh là vô cùng khó khăn
- Tập mẫu nhận dạng sẽ chạy theo sau sự phát triển của mã độc, và sẽ không phát hiện được các mã độc mới, các zero-days
- Khi số lượng signature lớn thì việc lưu trữ và đối chiếu cũng sẽ gặp khó khăn
Hình 2.2.2: Việc xây dựng tập signature hoàn chỉnh là vô cùng khó khăn
Dynamic
Xác định chính xác mã độc bằng việc chỉ sử dụng các thông tin thu thập được từ các chương trình có quyền kiểm tra (Program Under Inspection – PUI) và được đối chiếu với các tập mẫu
Trang 22Static
Bằng cách kiểm tra chương trình dưới các mã, các đoạn code hoặc kiểm tra hành vi bằng các chuỗi mã Từ đó đối chiếu với tập mẫu để phân loại chương trình có chứa mã độc hay có phải là mã độc hay không
Điều này giúp việc xác định mã độc có xác suất rất cao, gần như là tuyệt đối mà không cần thực thi chương trình
Bù lại, cách thức này mất nhiều công sức, thời gian
Hybrid Cách thức xác định sử dụng cả 2 hình thức Dynamic và
Static
2.2.2 Phát hiện mã độc dựa vào đặc điểm bất thường
Cách phát hiện dựa vào các điểm bất thường được chia thành 2 giai đoạn:
- Giai đoạn Training Learning: các detector sẽ cố gắng học những trạng thái bình thường Có thể học các trạng thái từ các host, PUI…
- Giai đoạn Detection Monitoring: dựa vào các trạng thái bình thường đã được học, các detector sẽ xác định được trạng thái bất thường và đưa ra cảnh báo
Hình 2.2.3: Phân loại hành vi trong kỹ thuật Anomaly-based Detection
Ưu điểm:
- Là chìa khóa để có thể phát hiện ra các khai thác zero-day hay zero-attack
Trang 23Hạn chế:
- Sai số giữa trạng thái bình thường và bất thường
- Sự phức tạp, rắc rối khi xác định những trạng thái được phép học
Static
Các đặc trưng về cấu trúc tệp tin của chương trình sẽ được dùng để kiểm tra và xác định có phải là mã độc hay không Đặc điểm nổi bật của cách này là có thể phát hiện mã độc nhưng không cho chương trình mã độc thực thi
Hybrid
Sử dụng một môi trường giả lập có cấu trúc giống với máy thật, có thể gọi đó là máy ảo để sử dụng phối hợp 2 kỹ thuật phân tích trên mà không làm ảnh hưởng đến máy thật
cơ sở dữ liệu của chương trình Antivirus Khi Antivirus quét tập tin để kiểm tra, nếu trùng mã hash trong cơ sở dữ liệu mẫu, thì đó là mã độc Ngược lại là không
Trang 24Hình 2.3.1: Tệp chứa mã độc được quét trên trang virustotal.com
Ưu điểm:
- Độ chính xác gần như tuyệt đối
Nhược điểm:
- Nhận dạng thiếu Quá trình nhận dạng lâu nếu cơ sở dữ liệu mẫu lớn
- Quá trình xây dựng cơ sở dữ liệu mẫu khó khăn, phức tạp Mã độc có thể dễ dàng vượt qua nếu nhận dạng bằng mã hash
mã hash “họ hàng”, nâng cao khả năng phát hiện chương trình mã độc
Fuzzy hashing = Context Triggered Piecewise Hashing (CTPH)
= Piecewise hashing + Rolling hashing
Trang 25Hình 2.3.2: Cách tính toán giá trị hash với mỗi khối 3 ký tự
Khi Rolling Hash tạo ra giá trị cụ thể cho từng vị trí, nó sẽ tính toán giá trị hash mã hóa của từng khối đoan tin từ điểm bắt đó cho đến vị trí đã xác định Tiếp
đó là tạo ra mã hash cho toàn bộ đoạn tin bằng cách ghép từng mã hash của từng khối đoạn tin Ngoài những đoạn tin giống nhau có mã hash giống nhau, còn có thể xác định những đoạn tin tương tự nhau
Hình 2.3.3: Mô tả sau khi tiến hành Rolling hash
Ưu điểm:
- Cải thiện tính bị động của kỹ thuật Checksummer sử dụng mã hash đơn thuần
Trang 26- Nâng cao khả năng phát hiện mã độc với cơ sở dữ liệu mẫu bị hạn chế
Nhược điểm:
- Việc xây dựng thuật toán và lựa chọn độ dài ký tự phù hợp là khó khăn
- Có thể xảy ra cảnh bảo giả (cảnh báo sai)
2.3.3 Scan String
Scan string là cách đơn giản để phát hiện mã độc Kỹ thuật này sử dụng một chuỗi trích ngang (chuỗi bytes) là đặc trưng của tập tin mã độc và không tồn tại trong các tập tin sạch Các chuỗi này sẽ được cập nhật vào cơ sở dữ liệu mẫu dùng để nhận dạng mã độc
Hình 2.3.4: Một đoạn mã của virus Stoned khi được phân tích
Ví dụ với virus Stoned, dấu hiệu nhận dạng là 16 bytes opcode 0400 B801 020E 07BB 0002 33C9 8BD1 419C (đã được công bố trong tạp chí Virus Bulletin)
Ưu điểm:
- Nhận dạng chính xác
- Tốc độ nhận dạng nhanh hơn so với kỹ thuật Checksummers
Nhược điểm:
- Quá trình xây dựng và cập nhật cơ sở dữ liệu phức tạp
- Nhận dạng bị động, không phát hiện được khi mã chương trình bị thay đổi
Trang 272.3.4 Code Emulation
Code Emulation là một kỹ thuật phát hiện mã độc được đánh giá cao Bằng việc mô phỏng lại hệ thống CPU, hệ thống quản lý bộ nhớ, các chỉ thị máy ở cấp thấp… giống như máy quét thực tế Vì vậy, mã độc sẽ hoạt động trên máy ảo mà không ảnh hưởng đến bộ xử lý thật
Hình 2.3.5: Cấu trúc của thanh ghi và cờ CPU Intel 16bit được định nghĩa lại bằng
ngôn ngữ C
Hiện nay, kỹ thuật này được sử dụng kết hợp rộng rãi với các kỹ thuật phân tích khác Cùng với đó, kỹ thuật này đã trở thành một thành phần quan trọng trong công nghệ Sandbox để phát hiện mã độc
Ưu điểm:
- Mã độc hoạt động độc lập, không ảnh hưởng đến hệ thống máy thật
Nhược điểm:
- Mô phỏng lại các thông tin hệ thống CPU, bộ nhớ… là rất khó khăn
- Cập nhật và vận hành hệ thống mô phỏng yêu cầu tính kỹ thuật cao
Trang 282.3.5 Static Heuristic Analysis
Static Heuristic analysis là kỹ thuật thuộc nhóm Anomaly-based detection Kỹ thuật này phân tích, tính toán những thông tin từ chương trình như: PE Header, Section, các hàm API được Import… hay những dấu hiệu đáng nghi ngờ như: kích thước của một số trường không chính xác, mã điều hướng, tổ hợp các Flag…
Hình 2.3.6: Kỹ thuật Heuristic nhận dạng một số virus thực tế
Một nổi bật của kỹ thuật này là ứng dụng trong việc sử dụng trí tuệ nhân tạo trong việc phát hiện các loại mã độc Việc thu thập các đặc trưng của mã độc (feature), sau đó tính toán và đưa ra các ngưỡng lây nhiễm (threshold infected) để làm căn cứ phát hiện mã độc
Trang 29Ưu điểm:
- Chủ động trong việc xây dựng cơ sở dữ liệu mẫu
- Nâng cao khả năng nhận dạng mã độc (bao gồm cả những loại mã độc chưa
có trong cơ sở dữ liệu mẫu)
Behavior Blocking là kỹ thuật cho phép ngăn chặn các hành vi, các khối lệnh
bị nghi ngờ là mã độc trước khi chúng có cơ hội ảnh hưởng đến hệ thống Các hành
vi bị giám sát bao gồm:
- Những nỗ lực mở, xem, sửa đổi hoặc xóa bỏ các tệp tin
- Những nỗ lực fomat ổ đĩa hay vùng hoạt động không thể khôi phục khác
- Sửa đổi các thiết lập của tệp tin thực thi và hệ thống như: thiết lập khởi động…
Hình 2.3.8: Một khối ngăn chặn hành vi lừa đảo trên DOS
Trang 30Hệ thống phát hiện và ngăn chặn mã độc sử dụng kỹ thuật này được chia thành
2 loại là: hệ thống ngăn chặn dựa trên các chính sách và hệ thống ngăn chặn dựa trên các giám định
Ưu điểm:
- Có khả năng ngăn chặn sự ảnh hưởng của chương trình mã độc lên hệ thống
- Tùy theo năng lực phân tích để tùy chỉnh ảnh hưởng của mã độc
Nhược điểm:
- Yêu cầu người (hệ thống) phân tích phải có tính chuyên môn cao
- Có thể xảy ra cảnh báo giả (cảnh báo sai)
Trang 31NGHIÊN CỨU CÁC KỸ THUẬT VƯỢT QUA PHẦN MỀM PHÒNG CHỐNG MÃ ĐỘC
3.1 Cấu trúc tệp tin thực thi trên Hệ điều hành Windows 32bit
Sự hiểu biết cơ bản về định dạng tệp tin thực thi là rất quan trọng cho quá trình phân tích mã độc hại hoặc viết ra một chương trình virus lây nhiễm tệp tin PE
PE File Format (Portable Executable File Format): là định dạng tệp tin của Windows 32bit và Windows 64bit Nhóm nghiên cứu sẽ tập trung tìm hiểu về tệp tin
PE trong Hệ điều hành Windows 32bit Tất cả các tệp tin có thể thực thi được trên Windows 32bit như: *.EXE, *.DLL (32 bit),*.COM,*.NET, *.CPL,… đều là định dạng PE; ngoại trừ các tập tin VxDs và *.DLL (16 bit)
Cấu trúc của một PE Tệp tin:
Hình 3.1.1: Minh họa cấu trúc cơ bản của một PE Tệp tin
Trang 32a DOS MZ Header:
DOS MZ header (Hay DOS HEADER) là vùng bắt đầu của tệp tin PE, chiếm giữ 64 bytes đầu tiên
Hình 3.1.2: Một tệp tin PE được mở bằng công cụ FileInSight của McAfee
DOS Header là một cấu trúc được định nghĩa trong tệp tin windows.inc hoặc winnt.h DOS HEADER bao gồm 19 thành phần Trong đó có 2 thành phần đáng chú ý:
- e_magic: chứa ký tự
nhận biết DOS Header
hợp lệ (MZ) Mang giá
trị 2 bytes (WORD)
- e_lfanew: chứa địa chỉ
offset của PE Header
(điểm bắt đầu của PE
Header) Mang giá trị 4
bytes (DWORD)
Trang 33b DOS STUB:
DOS Stub chỉ là một chương trình DOS EXE nhỏ hiển thị một thông báo lỗi,
là phần để tương thích với Windows 16bit Ví dụ như trong hình minh họa dưới đây, thông báo sẽ hiện ra như sau: “This is program cannot be run in DOS mode”
Trang 34Hình 3.1.4: Hình ảnh PE header của tệp tin test.exe
Trong đó:
- Signature: dấu hiệu nhận biết định dạng tệp tin (4 bytes)
• (PE : 50 45 00 00 – 32 bits)
• (NE : 4E 45 00 00 – 16 bits)
• (LE : 4C 45 00 00 – trình điều khiển thiết bị ảo Window 3.x)
• (LX : 45 58 00 00 – tệp tin cho OS/2 2.0 )
- File Header: chứa thông tin về sơ đồ bố trí vật lý và những đặc tính của tệp tin (20 bytes)
- Optional Header: chứa thông tin về sơ đồ logic bên trong của một tệp tin PE (224 bytes)
Trang 35SizeOfOptionalHeader WORD
Characteristics WORD
};
Cấu trúc File Header
Trong cấu trúc File Header, một số thành phần cần quan tâm hơn cả đó là:
- Machine: giá trị xác định tệp tin PE này được biên dịch cho dòng máy nào (dưới dạng mã trên Intel 32 bits)
- NumberOfSections: cho biết số Section của tệp tin PE Thành phần này cần thay đổi nếu muốn thêm hoặc xóa bất kỳ sections nào trong một tệp tin PE
- Characteristics: là bit cờ, xác định định dạng tệp tin PE
- Giá trị 0x0102 nếu là tệp tin *.EXE
- Giá trị 0x2102 nếu là tệp tin *.DLL
Trang 36Trong đó, các thành phần được mô tả như sau:
- Magic (2 bytes): xác định là tệp tin 32 bit (0B 01) hay 64 bit (0B 20)
- AddressOfEntryPoint (4bytes): chứa địa chỉ ảo tương đối (RVA) của câu lệnh đầu tiên sẽ được thực thi khi chương trình PE loader sẵn sàng để chạy tệp tin
PE (.text hoặc code)
- ImageBase: địa chỉ nạp được ưu tiên cho tệp tin PE
- Section Alignment: phần liên kết của các Section trong bộ nhớ
- Tệp tin Alignment: phần liên kết của các Section trong tệp tin
- SizeOfImage: toàn bộ kích thước của PE image trong bộ nhớ, là tổng của tất
cả các headers và sections được liên kết tới Section Alignment
- SizeOfHeaders: kích thước của tất cả các headers + section table
- Data Directory: là một mảng gồm 16 phần tử, trong đó mỗi phần liên quan đến một cấu trúc dữ liệu quan trọng trong PE tệp tin