Học viện Kỹ Thuật Mật Mã Trần Văn Khang – AT5B MỤC LỤC MỤC LỤC DANH MỤC TỪ VIẾT TẮT DANH MỤC HÌNH VẼ LỜI NÓI ĐẦU CHƯƠNG PHƯƠNG PHÁP THU THẬP VÀ PHÂN TÍCH MÃ ĐỘC 10 1.1 Giới thiệu mã đ ộc hại 10 1.1.1 Khái niệm mã độc hại 10 1.1.2 Lịch sử mã độc hại 10 1.2 Cơ chế hoạt động mã đ ộc 11 1.2.1 Cơ chế hoạt động Virus 12 1.2.2 Cơ chế hoạt động Worm 12 1.2.3 Cơ chế hoạt động Trojan Horse 12 1.3 Phương pháp thu thập mã độc 12 1.3.1 Các phương pháp thu thập mẫu 12 1.3.2 Các công cụ thu thập mẫu mã đ ộc 16 1.4 Quy trình phân tích mã độc hại 30 1.4.1 Các phương pháp phân tích mã độc 30 1.4.2 Các bước phân tích mã đ ộc hại 31 1.4.3 Phân tích môt mẫu mã độc cụ thể 34 EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã CHƯƠNG NGHIÊN CỨU VỀ MỘT SỐ CƠ SỞ DỮ LIỆU MÃ Đ ỘC 36 2.1 Các kiểu dấu hiệu mã độc kỹ thuật phát tương ứng 36 2.1.1 String – Chuỗi 36 2.1.2 Mã băm 37 2.1.3 Khung mã đ ộc có sẵn 38 2.1.4 Phương pháp dựa hành vi .38 2.1.5 Kỹ thuật lọc 39 2.1.6 Phát việc giải mã tĩnh 40 2.1.7 Mã giả lập 40 2.2 Nghiên cứu chuẩn trao đổi liệu mã độc 41 2.3 Nghiên cứu sở liệu mã độc Clam AV từ đố xây dựng sở liệu mẫu mã đ ộc 44 2.3.1 Clam Anti Virus 44 2.3.2 ClamAV Virus Databases .44 2.3.3 Debug thông tin từ libclamav 45 2.3.4 Định dạng chữ ký ClamAV 51 CHƯƠNG XÂY DỰNG CƠ SỞ DỮ LIỆU MÃ ĐỘC 61 3.1 Xây dựng chương trình quản lý sở liệu mẫu mã độc theo chuẩn 61 3.2 Xây dựng chương trình nh ận dạng mã đ ộc theo chuỗi 65 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70 PHỤ LỤC .71 EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã DANH MỤC TỪ VIẾT TẮT MS-DOS Microsoft Disk Operating System Spyware Spy software FTP File Transfer Protocol UDP User Datagram Protocol Ddos Distributed Denial of Service MD5 Message-Digest algrorithm CPU Central Processing Unit HTML Hypertext Tranfer Protocol ICSG Industry Connection Sercurity Group XML Extensible Markup Language DLL Dynamic-link Library SHA Message-Digest algrorithm malware Malicious software PE Portable Executable TCP/IP Transmission Control Protocol/Internet Protocol EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã DANH MỤC HÌNH VẼ Hình 1.1 Giao diện virustotal .13 Hình 1.2 Giao diện virustotal sau quét 13 Hình 1.3 Giao diện trước quét ThreatExpert 14 Hình 1.4 Giao diện sau quét ThreatExpert 14 Hình 1.5 Hệ thống ThreatExpert 15 Hình 1.6 Người dung gửi mẫu tới 15 Hình 1.7 ThreatExpert trả kết cho người dùng 16 Hình 1.8 Giao diện IDA 17 Hình 1.9 IDA Text view 18 Hình 1.10 Function Windows 18 Hình 1.11 Import Windows 19 Hình 1.12 Cross – references 19 Hình 1.13Function Call 19 Hình 1.14 Menu Jump 20 Hình 1.15 Menu search 21 Hình 1.16 Text search 22 Hình 1.17 Menu View 22 Hình 1.18 Compiler setup 23 Hình 1.19 Plugin 24 Hình 1.20 Giao diện Olly Debug 25 Hình 1.21 Tùy chọn View 26 EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã Hình 1.22 Debug 27 Hình 2.23 BreakPoint 28 Hình 1.24 Giao diện HxD 29 Hình 2.1 Mơ hình chương trình qt hành vi 39 Hình 3.1 Cấu trúc file liệu 61 Hình 3.2 Nhập sở liệu 62 Hình 3.3 Hiển thị 63 Hình 3.4 Chi tiết mẫu mã độc 63 Hình 3.5 Giao diện Scan 64 Hình 3.6 Mơ hình chức quét 64 Hình 3.7 Tệp liệu 65 Hình 3.8 Chuỗi String 66 Hình 3.3Mơ hình chương trình quét .67 Hình 3.9 Giao diện 67 Hình 3.10 Danh sách mã đ ộc 68 Hình 3.11 Thêm mẫu 68 EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Học viện Kỹ Thuật Mật Mã Trần Văn Khang – AT5B LỜI NÓI ĐẦU Khi nhu cầu việc sử dụng Internet người ngày tăng lúc mối đe dọa xuất nhiều, bật đe dọa mã độc hại Mã độc hại xuất đâu môi trường thiết bị điện tử đĩa mềm, usb, máy tính đến môi trường Internet website, tin nhắn, hòm thư ện tử người dùng, phần mềm miễn phí… Khi mã độc hại nhi ễm vào máy tính lây lan sang máy tính khác nhanh thiệt hại mã đ ộc hại gây khó lường trước Hiện để chống lại loại mã độc hại người ta thường sử dụng chương trình Antivirus Tuy nhiên để có chương trình Antivirus cách có hiệu cần có thuật tốn qt cho nhanh quan trọng sở liệu đầy đủ update thường xuyên mẫu Ngoài sở liệu phải đảm bảo kiến trúc, định dạng phương pháp lưu trữ cách khoa học phép thuật toán đối sánh mẫu thực cách hiệu Đồng thời phải có chế đáp ứng tiêu chuẩn để trao đổi với sở liệu hãng khác Việc xây dựng sở liệu sử dụng để phát triển phần mềm phát ngăn chặn mã độc hiệu Ngồi sử dụng cơng cụ để hỗ trỡ đắc lực cho người làm công việc tác nghiệp phân tích mã đ ộc Chính lý trên, nên mục đích dồ án để nhằm nghiên cứu để nhằm sang tỏ kiểu dấu hiệu để phát loại mã độc, chuẩn dấu hiệu để trao đổi mã độc cấu trúc chung sở liệu mã độc số hãng phần mềm lớn giới ClamAV, Kaspersky,BKAV… Đồng thời thiết kế, xây dựng sở liệu mã đ ộc chương trình demo đ ể quản lý sử dụng sở liệu Đồ án trình bày theo bố cục: Chương Quy trình thu thập phân tích mã độc hại Trình bày tổng quan mã đ ộc hại, chế hoạt động mã độc quy trình thu thập, phân tích mã độc Chương Nghiên cứu số sở liệu mã độc Trình bày số phương pháp phát mã độc mà chương trình anti virus hay dùng để tìm diệt mã độc Tìm hiểu nghiên cứu chuẩn trao đổi liệu mã độc, sở liệu mã độc chương trình clamav EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Học viện Kỹ Thuật Mật Mã Trần Văn Khang – AT5B Chương 3.Xây dựng sở liệu mã độc Xây dựng sở liệu theo chuỗi nhận dạng, theo chuẩn nêu Xây dựng chương trình quét mã đ ộc sử dụng chuỗi nhận dạng Xây dựng chương trình qu ản lý sở liệu theo chuẩn Kết luận Trình bày kết đạt trình làm đồ án, mặt hạn chế hướng phát triển Vì ều kiện thời gian làm đồ án có hạn hi ểu biết cịn hạn chế nên chắn đề tài không tránh khỏi sai sót Rất mong thầy góp ý kiến để đề tài khoa học em hoàn thiện Em xin chân thành cảm ơn thầy, cô giáo Học Viện Kỹ Thuật Mật Mã tận giảng dạy giúp đỡ em có kiến thức cần thiết để hoàn thành đồ án nhận Em cảm ơn thầy Lương Thế Dũng - phó khoa An tồn thơng tin, thầy Hoàng Thanh Nam giảng viên khoa An toàn thông tin giúp đ ỡ, hướng dẫn bảo để em hoàn thành đồ án Em xin chân thành cảm ơn! Hà Nội, ngày 11 tháng 06 năm 2013 Sinh viên thực Trần Văn Khang EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã CHƯƠNG PHƯƠNG PHÁP THU THẬP VÀ PHÂN TÍCH MÃ ĐỘC Để xây dựng sở liệu mẫu mã đ ộc đạt yêu cầu cần phải trải qua nhiều q trình khác nhau, q trình thu thập phân tích mã độc q trình quan trọng Nó giúp cho việc xây dựng sở liệu mẫu mã độc cách hiệu qả nhanh chóng Cùng với q trình đem lại cho ta nhìn rõ nét hành vi đặc điểm mà mã độc gây hại cho người dung Vì chương trình sâu vào trình thu thập phân tích mã độc 1.1 Giới thiệu mã độc hại 1.1.1 Khái niệm mã độc hại Malware (Malicious software) hay gọi mã độc hại (Malicious code) tên gọi chung cho phần mềm thiết kế, lập trình đặc biệt để phá hoại hệ thống bạn làm gián đoạn môi trường hoạt động mạng Malware thâm nhập vào hệ thống máy tính mà khơng có đồng ý chủ sở hữu 1.1.2 Lịch sử mã đ ộc hại Internet phát triển, thực việc kết nối máy tính, máy chủ, laptop, mobile phone khắp giới, thêm vào phát triển website mã độc hại theo mà phát tri ển rộng khắp với số lượng lớn ngày phức tạp Một số mốc lịch sử mã độc hại giới Năm 1949 John von Neuman (1903-1957) phát triển tảng lý thuyết tự nhân chương trình cho máy tính Năm 1981 virus xuất hệ điều hành máy tính Apple II Năm 1983 Fred Cohen, sinh viên đại học Mỹ, đưa đ ịnh nghĩa virus: “Là chương trình máy tính tác động chương trình máy tính khác cách sửa đổi chúng phương pháp đưa vào nó” Fred Cohen ln tên nhắc đến nói lịch sử virus Năm 1986 hai anh em lập trình viên người Pakistan Basit Amjad thay mã thực (executable code) rãnh ghi khởi động đĩa m ềm mã riêng họ, thiết kế với mục đích phát tán từ đĩa mềm 360K cho EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 10 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã vào ổ đĩa Lo ại đĩa mềm mang virus có mác “© Brain” Đây virus MS-DOS xuất sớm Năm 1987 Lehigh, virus file xâm nhập tệp lệnh command.com (virus sau tiến hố thành virus Jerusalem) Một virus khác có tên IBM Christmas, với tốc độ phát tán cực nhanh (500.000 sao/tiếng), ác mộng máy tính lớn (mainframe) Big Blue suốt năm đồng hồ máy tính (giống bom nổ chậm cài hàng loạt cho thời điểm) Tháng 11 năm, Robert Morris chế worm chiếm máy tính ARPANET làm liệt khoảng 6.000 máy Năm 1991 virus đa hình (polymorphic virus) đời Tequilla Loại biết tự thay đổi hình thức nó, gây khó khăn cho chương trình chống virus Năm 1994 Trò l ừa qua e-mail xuất cộng đồng tin học Trò cảnh báo người sử dụng loại virus xố tồn ổ cứng mở e-mail có dịng chủ đề “Good Times” Mặc dù không gây thiệt hại mà có tính chất doạ dẫm, trị lừa tiếp tục xuất chu kỳ từ đến 12 tháng/lần Năm 1995 macro virus xuất mã macro tệp Word lan truyền qua nhiều máy Loại virus làm hư hệ điều hành chủ Năm 1999 Bubble Boy sâu máy tính khơng dựa vào việc người nhận email có mở file đính kèm hay khơng Chỉ cần thư mở ra, tự hoạt động Năm 2003 Slammer loại worm lan truyền với vận tốc kỉ lục, truyền cho khoảng 75 ngàn máy 10 phút Năm 2004 đánh dấu hệ mã độc hại worm Sasser Với loại worm người ta khơng cần phải mở đính kèm điện thư mà cần mở thư đủ cho xâm nhập vào máy Sasser khơng hồn tồn hủy hoại máy mà làm cho máy chủ trở nên chậm làm máy tự khởi động trở lại Ở Việt Nam mã đ ộc hại gây thiệt hại đáng kể 1.2 Cơ chế hoạt động mã độc Mỗi loại mã độc có chế hoạt động khác nhiên chúng có mục đích phá hoại gây hại cho máy tình người dùng Ở em nêu chế hoạt động loại mã độc Virus, Trojan Horse, worm EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 11 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã 1.2.1 Cơ chế hoạt động Virus Virus tồn độc lập nên cách hoạt động chúng lây lan qua file máy tính người dung Thường virus lây lan với mục đích xóa, sửa file máy tính Loại virus nguy hiểm loại virus đa hình chúng tự đính kèm vào file exe, file hoạt động bình thường Sau lần lây lan đoạn mã virus thay đổi theo phương pháp khác để che dấu đặc điểm nhận dạng 1.2.2 Cơ chế hoạt động Worm Do worm tồn cách độc lập nên cách thức hoạt động tự nhân đơi, chép không cần lân lan vào file Worm hoạt động không cần tác động người dung thường lây lan qua mạng LAN Internet 1.2.3 Cơ chế hoạt động Trojan Horse Loại mã độc thường ẩn dạng chương trình an tồn, vơ hại với máy tính người dung Chính ngồi thực thực thi chức năngchương trình an tồn cịn âm thầm thực thi chức độc hại ẩn mà cần đến thực thi 1.3 Phương pháp thu thập mã độc 1.3.1 Các phương pháp thu thập mẫu Có nhiều phương pháp thu thập mẫu mã độc xây dựng honeypot số hãng phần mềm diệt virus: http://www.honeyclient.org/trac http://nepenthes.carnivore.it/ http://sourceforge.net/projects/amunhoney/ Hoặc lấy mẫu từ khách hàng tự gửi đến, lấy từ nguồn chia sẻ mạng, mua từ hãng nghiên cứu bảo mât… Ở em trình bày phương pháp thu thập dựa vào mẫu người dùng gửi đến Phương pháp thu thập nhiều mẫu ngày có nhiều tổ chức cá nhân giới gửi tới mẫu mã độc không tớ trang web, hang phần mềm diệt virus Các trang web thu thập mẫu tiếng giới là: https://www.virustotal.com EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 12 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã TÀI LIỆU THAM KHẢO [1] Addison and Wesley – The Art of Computer Virus Research and Defense – Feb.2005 [2] Michael Sikorski and Andrew Honig – Practical Malware analysis – 2012 [3] Chris Eagle – The IDA Pro Book - 2011 [4] https://www.hex-rays.com [5] www.ollydbg.de [6] www.threatexpert.com/ [7] www.mcafee.com [8] www.codeproject.com/ [9] http://www.securelist.com EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 70 Học viện Kỹ Thuật Mật Mã Trần Văn Khang – AT5B PHỤ LỤC Code chương trình quét theo chuỗi nhận dạng Code phần quét mã độc private: System::Boolean compareStr(char *str1, char *str2) { //Hàm dùng để so sánh chuỗi ký tự có giống khơng //Hàm trả TRUE giống FALSE khác int i=0; while (*(str1+i) == *(str2+i)) { i++; if (i == 32) return true; } return false; } private: System::Boolean compareStr1(char *str1, char *str2, int m, int n) { //Hàm dùng để so sánh chuỗi ký tự có giống không EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 71 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã //Hàm trả TRUE giống FALSE khác int i=0; int j; for (j=0;jLength; char *chTmpData = new char[lenght+1]; for(int i = 0; iAdd(L"Phát : " + tmp + L" đường dẫn : " + strFile); detected++; lblDetected->Text = Convert::ToString(detected); System::Windows::Forms::Application::DoEvents(); } } // int cur2; EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 75 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã cur2=ftell(f) fread(strDatFile,32,1,fs); if (compareStr(strDatFile,sign.Sign) == true) { System::Windows::Forms::Application::DoEvents(); } } fclose(f); fclose(fs); } //Ghi listBox thông báo quét file tmp = gcnew System::String(strFile); lstFile->Items->Add(tmp); scaned++; lblScaned->Text = Convert::ToString(scaned); System::Windows::Forms::Application::DoEvents(); } //Tiến hành liệt kê tập tin thư mục for each (strFile in System::IO::Directory::GetDirectories(strPath)) { EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 76 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã try { //Lặp đệ qui scan(strFile); } catch(Exception ^e) { //Bắt lỗi } } } } EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 77 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã Code nhập liệu System::String ^strFile; System::String ^tmp; FILE *f; //Mở file lấy mẫu FILE *fs; char strPathSign[]="mn.kkt"; char strDatFile[32]; m_Sign sign; System::Boolean isHave=false; int iTmpOffset; int i; strFile = txtPath->Text; //Convert từ chuỗi TextBox qua chuỗi dạng chuẩn chương trình //Từ đưa chuỗi với 18 ký tự //Chuyển từ dạng String -> Char char tmpName[18]; System::String ^strTmpName; strTmpName=txtName->Text; EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 78 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã for (i=0; i < strTmpName->Length;i++) { tmpName[i] = strTmpName[i]; } for (int i=strTmpName->Length; i Length; char *chTmpData = new char[itmp+1]; for(int i = 0; iText); fseek(fs,iTmpOffset,SEEK_SET); fread(strDatFile,32,1,fs); //Đưa liệu vào biến theo Struct m_Sign //Hàm strcpy xử lý lỗi trường hợp (Do có ký tự NULL) //Vì hàm copy mảng char cần tự code lại for (i=0;i < 32;i++) sign.Sign[i]=strDatFile[i]; sign.lPos=iTmpOffset; strcpy(sign.Name,tmpName); //Nhảy đến cuối file fseek(f,0,SEEK_END); //Ghi liệu vào cuối file fwrite(&sign,sizeof(sign),1,f); System::Windows::Forms::MessageBox::Show(L"Đã lưu xong m ẫu tin liệu virus mới",L"Thành công"); } fclose(f); EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 82 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã fclose(fs); Liệt kê mẫu tệp liệu FILE *f; char strPathSign[]="mn.kkt"; fopen_s(&f,strPathSign,"rb"); m_Sign sign; char chuoi[18]=""; System::String ^tmp=""; int i=0; int posEnd; //Xác định kích thước file fseek(f,0,SEEK_END); posEnd=ftell(f); //Trả vị trí ban đầu fseek(f,0,SEEK_SET); //Tiến hành vòng lặp liệt kê mã nhận dạng while (ftell(f) < posEnd) { i++; EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 83 Trần Văn Khang – AT5B Học viện Kỹ Thuật Mật Mã fread(&sign,sizeof(m_Sign),1,f); strncpy(chuoi,sign.Name,17); tmp = gcnew System::String(chuoi); lstVirus->Items->Add(tmp); }; fclose(f); lblCount->Text=Convert::ToString(i); EBOOKBKMT.COM - Thư viện tài liệu kỹ thuật miễn phí 84