Hướng dẫn phân tích mã độc cho chuyên gia

10 1.5K 13
Hướng dẫn phân tích mã độc cho chuyên gia

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

Thông tin tài liệu

Các nội dung về phân tích mã độc cho chuyên gia 1. Phát hiện mã độc trong hệ thống Công việc đầu tiên khi phân tích các mã độc trong hệ thống đó là phát hiện các mã độc trong hệ thống. Thông thường khi phát hiện các mã độc ta sẽ thu được một tập các mẫu, và nhiệm vụ tiếp theo là phải cho ra kết luận mẫu nào là mã độc, mẫu nào là các chương trình bình thường. Với mã độc sẽ được mang đi phân tích tiếp. 1.1. Phát hiện mã độc trong các tiến trình đang thực thi Sử dụng công cụ Process Explorer, ta có thể quan sát các tiến trình đang thực thi trong hệt thống, nếu phát hiện tiến trình nào đó ‘lạ’ mà ta không chủ động cài đặt vào, hoặc có tên đặc biệt, hoặc nằm ở những vị trí lạ (Không phải ở %sytem32%, hay %Program File %) thì cần chú ý. Chương trình Process Explorer đã cung cấp thêm nhiều thông tin khác nhau liên quan tới tiến trình đang chạy như: Company Name, Description), các thông tin này cũng cần được lưu ý, nhiều mã độc không có những thông tin miêu tả ở đây hoặc những thông tin miêu tả ở đây có điểm bất hợp lý. Một điểm cần lưu ý khác đó là khi ta quan sát các tiến trình đang thực thi, ta cần lưu ý xem có tiến trình nào cứ liên tục xuất hiện rồi biến mất hay không. Nếu có thì cần chú ý kiểm tra kĩ hơn những tiến trình này. Bước tiếp theo là ta sẽ phát hiện ra những module lạ trong các tiến trình. Mã độc sau khi thực thi có thể sẽ cài vào trong các tiến trình khác một module độc hại để thực hiện các chức năng khác, hay đơn giản là làm một keylogger. Ta sẽ lựa chọn xem xét các module trong một tiến trình. Có thể chọn một tiến trình và chọn phím tắt Ctrl+D. Sau khi đã lựa chọn chế độ xem các module trong các tiến trình, ta sẽ quan sát với từng tiến trình đặc biệt là những tiến trình như: explorer.exe, winlogon.exe, … hay những tiến trình của những chương trình thường dùng trong máy kiểm tra. Với các module ta có thể click đúp vào từng cột để sắp xếp theo từng cột đó nhằm thuận tiện hơn trong việc đánh giá một module nào đó có phải đáng nghi hay không. Khi tìm ra một module đáng nghi, ta có thể lựa chọn module đó để có thể xem đường dẫn, các miêu tả liên quan tới module đó, và có thể tới tận module đó để kiểm tra chữ kí điện tử của nó nhằm quyết định xem có nên lấy mẫu đó hay không. Với những mã độc đơn giản và đang thực thi thì có thể dễ dàng phát hiện với Process Explorer, với những mã độc mà chỉ thực thi một khoảng thời gian ngắn hoặc sử dụng các kĩ thuật phức tạp hơn ta sẽ cần phải dùng đến biện pháp tiếp theo để phát hiện ra nó. 1.2. Phát hiện các mã độc thông qua các thành phần khởi động cùng Windows Các mã độc sau khi xâm nhập vào máy tính thành công thì phần lớn các mã độc (99%) đều phải được khởi động lên cùng với hệ điều hành cho những lần khởi động tiếp theo, tức là mã độc luôn phải ghi một khóa khởi động nào đó. Trong phần này ta sẽ sử dụng công cụ Autoruns để dò xét toàn bộ các thành phần khác nhau được cho phép khởi động cùng với hệ điều hành. Nếu mã độc tồn tại trong hệ thống, nó sẽ tồn tại ở một trong những thành phần này. Công cụ Autoruns sẽ liệt kê toàn bộ các thành phần khởi động cùng Windows trong tab Everything, ngoài ra nó có thể chia nhỏ tab này thành nhiều tab nhỏ hơn ứng với các nội dung khác nhau, ta có thể vào từng tab để xem những thành phần khởi động cùng Windows. Thông thường các mẫu mã độc sẽ nằm ở hai tab Logon và tab Services. Để thuận tiện hơn trong quá trình tìm kiếm những thành phần khởi động của mã độc, ta có thể bật lựa chọn kiểm tra chữ kí điện tử lên, khi đó những chương trình nào đã được kí điện tử thì ta có thể tin tưởng được nguồn gốc xuất xứ của chúng và ta sẽ tập trung vào những phần mềm không được kí điện tử. Về nguyên tắc, tất cả những phần mềm không được kí điện tử đều đáng nghi, ngoài ra những phần mềm mà theo lẽ thường có chữ kí điện tử (như các chương trình chuẩn của Windows) mà lại không thấy chữ kí điện tử ở đây thì đó cũng là diện nghi ngờ. Lựa chọn cho phép Autoruns kiểm tra chữ kí điện tử nằm trên menu Options. hay Sau khi chọn option này, thì các thành phần khởi động sẽ được kiểm tra chữ kí điện tử, và xuất hiện cụm từ Verified, ngược lại những thành phần kiểm tra không thành công sẽ xuất hiện Not Verified, đó là những thành phần ta phải chú ý. Hay Những thành phần không có chữ kí điện tử sẽ hiển thị khác màu hoặc xuất hiện Not Verified. Sau khi thực hiện hai bước kiểm tra trên, về cơ bản ta đã xác đinh được mã độc trong hầu hết các hệ thống. Quá trình kiểm tra các mã độc ta cũng cần chú ý đến ngày tháng của hệ thống 2. Các hành vi đáng chú ý trong quá trình phân tích các mã độc Sau khi đã phát hiện ra mã độc, bước tiếp theo là phân tích các hành vi của mã độc. Tuy nhiên, để tiết kiệm thời gian, thông thường quá trình phân tích mã độc tập trung vào những đặc điểm sau của mã độc: - Kĩ thuật lây lan của mã độc - Cách thức mã độc sử dụng để khởi động cùng với hệ điều hành - Các thông tin mà mã độc thu thập - Các thông tin và cách thức mã độc gửi thông tin ra ngoài, thông thường phần này ta sẽ tìm ra được mã độc sẽ kết nối đến domain nào. - Đưa ra phương án xử lí mã độc, ngoài ra nếu mã độc lây lan trên diện rộng cần nghiên cứu cách xây dựng công cụ xử lý mã độc tự động. Việc quan sát các hành vi của mã độc có thể thực hiện bằng các công cụ monitor khác nhau. Phần tiếp theo sẽ là cách cấu hình cơ bản cho một số công cụ monitor này. Lưu ý là quá trình monitor này tốt nhất nên thực hiện trong các máy ảo và sử dụng đường mạng được cấu hình không cho kết nối trực tiếp với các vùng mạng khác. Hoặc cũng có thể thực hiện trong máy thật nhưng cài đặt các phần mềm đóng băng như Deep Freeze. Trước hết là công cụ để monitor các hành vi tác động vào file của mã độc. Thường các mã độc sẽ tìm cách tạo ra các file tạm hay copy bản thân nó vào đâu đó, công cụ monitor này sẽ giúp tìm ra được những vị trí đó. Trước tiên là cấu hình cho File Monitor. Như ta có thể thấy, File Monitor hỗ trợ việc monitor các hành vi tác động khác nhau tới các file trong toàn bộ hệ thống. Thông thường ta sẽ quan tâm tới các Log Reads, Log Writes và Log Successes. Ta có thể quan sát thấy các thao tác khác nhau với các file đã được ghi rõ. Ta cũng có thể lựa chọn Filter một tiến trình nào đó để tập trung quan sát các thao tác của tiến trình đó với các File. Nếu mã độc tạo file tạm, hay thực hiện các hành vi sao chép file, chuyển file thì từ log của File Monitor ta sẽ quan sát được. Sau khi đã thu được các hành vi của mã độc với các file, ta sẽ sử dụng công cụ Registry để có thể thu được hành vi của mã độc tác động tới hệ thống Registry. Như phân tích phía trên, nhất định các mã độc sẽ tìm cách tạo ra một thành phần khởi động nào đó nó có thể được khởi động lên cùng với Windows. Trước hết là cấu hình cơ bản của File Monitor: Tương tự như trên ta cũng có thể cấu hình cho Registry Monitor bắt được các sự kiện khác nhau tác động vào Registry, thông thường ta sẽ quan tâm tới các Log Writes và Log Successes. Khi mã độc ghi một khóa mới vào hệ thống Registry thì trên phía Registry Monitor sẽ bắt được và ghi lại. Thông thường các khóa đáng chú ý là các khóa có thể giúp khởi động được mã độc. Có thể tham khảo công cụ Autoruns để biết tập các khóa có thể khởi động lên cùng với Windows. Các thao tác với hệ thống được ghi lại sẽ có dạng như sau: Ngoài ra, tương tự như File Monitor ta cũng có thể lọc các thao tác này theo các tiến trình bằng cách đặt các luật Filter, có thể thực hiện nhanh các luật Filter này bằng cách chọn chuột phải vào ngay tại đó. Từ những log này sẽ giúp ta quan sát được toàn bộ các thao tác của mã độc đối với hệ thống Registry, và có thể biết mã độc sẽ tạo ra thành phần khởi động nào chứa nó. Thông thường, các tác động của mã độc lên hệ thống Registry sẽ được bắt lại hết và các tác động này thường chỉ xoay quanh việc tạo ra hay chỉnh sửa các khóa khởi động. Tiếp theo ta sẽ quan sát các hành vi kết nối mạng của các mã độc. Đa số các mã độc mới xuất hiện gần đây đều có khả năng kết nối tới một domain nào đó để thực hiện các thao tác như gửi thông tin, hay nhận các lệnh điều khiển, hay thậm chí là update các phiên bản mới của nó. Khi monitor mã độc trong máy ảo ta có thể sử dụng Wireshark để bắt các kết nối qua lại một cổng nào đó. Ta lựa chọn Interface để bắt các gói tin: Thông thường với công cụ bắt các gói tin, nếu mã độc có hành vi kết nối tới một domain nào đó thì ta sẽ dễ dàng thu được kết quả. 3. Phân tích mã độc chuyên sâu Cuối cùng là sử dụng các kĩ thuật Reverse Engineering để phân tích mã của mã độc bằng các công cụ dịch ngược. Với cách này yêu cầu cần phải sử dụng thành thạo các công cụ và kĩ thuật dịch ngược và thời gian thực hiện sẽ bị kéo dài hơn rất nhiều. Tuy nhiên, phương pháp này có một lợi thế là ta sẽ phân tích được toàn bộ các hành vi khác nhau của mã độc, kể cả những hành vi bình thường mã độc không thể hiện ra. Và ta cũng thấy được tương quan giữa các module khác nhau của mã độc. Ngoài ra một lợi ích nữa là ta sẽ ‘học hỏi’ được các kĩ thuật mới của mã độc. Việc phân tích mã độc chuyên sâu chính là việc dịch ngược một mã độc, tức là các kĩ thuật sử dụng ở đây hoàn toàn là các kĩ thuật dịch ngược và được dùng cho việc phân tích một hành vi nào đó của mã độc (tương tự cho các cracker sử dụng kĩ thuật dịch ngược để bẻ khóa phần mềm). Kiến thức cần thiết rất nhiều, không thể trình bày cụ thể trong một bài tóm tắt được, ở đây sẽ nêu ra những nội dung cần thiết phải nắm được để rèn luyện kĩ năng dịch ngược phần mềm. Hiện tại đã có khá nhiều các hướng dẫn (tutorial) bằng tiếng Việt và cũng đủ chi tiết về nội dung. Trước hết sẽ là các mảng kiến thức cần nắm được để có thể rèn luyện kĩ năng dịch ngược: - Kiến thức về ngôn ngữ Assembly - Kiến thức về C/C++ và kinh nghiệm lập trình thực tế với C/C++ (Cả lập trình tuần tự và lập trình hướng đối tượng). - Lập trình Windows API, và có thể cả Windows MFC. - Kiến thức về cơ chế hoạt động của Windows; cấu trúc các file thực thi PE (File exe, dll) - Công cụ giúp disassembly và debug OllyDbg (sử dụng thành thạo, các plugin hỗ trợ, các mẹo giúp trong quá trình debug) - Công cụ phân tích tĩnh IDA Pro và plugin Hex-Ray của nó. - Nâng cao hơn nữa: Các kiến thức về viết plugin, script cho cả OllyDbg và IDAPro. - Ngoài ra, hiểu biết về các thuật toán sẽ giúp ích cho việc phân tích nhiều mã độc phức tạp và có sử dụng đến các thuật toán hay cấu trúc dữ liệu đặc biệt. - Các kiến thức cơ bản về mã độc. Ta đi lần lượt vào các tài liệu cho từng phần đề cập phía trên. - Với Assembly thì có thể tham khảo ebook: The air of Assembly và ngoài ra loạt tutorial về Olly của kienmanowar cũng khá ổn, trong đó chỉ phân tích một số lệnh cơ bản cần thiết nhất trong quá trình dịch ngược, tutorial có thể tham khảo ở dây: http://kienmanowar.wordpress.com/category/ollydbg-tutorials/ , còn ebook có thể tìm thấy dễ dàng trên Google. - Về kiến thức C/C++ thì đã được học ở trên trường. Tài liệu tham khảo thì có thể dùng bất cứ giáo trình nào cũng được. - Lập trình Windows API và MFC: Có thể tìm quyển ebook tiếng Việt là Lập trình MFC, hoặc những ebook liên quan, ví dụ như “Programming Windows with MFC- Jeff Prosise”. Ngoài ra có thể tham khảo thêm các project trên codeproject.com. - Về hoạt động của các file thực thi trong Windows, cũng như cấu trúc file PE thì sử dụng tài liệu tham khảo rất hay là PE Tutorial của reaonline.net, có thể dễ dàng tìm thấy trên mạng. Tài liệu này nói chung là ngắn gọn, đầy đủ các nội dung cần nắm. Để nắm rõ hơn về hoạt động của Windows thì có thể tham khảo sách lập trình Windows ví dụ như: Programming Windows Fifth Edition. - Về OllyDbg thì sử dụng bộ tutorial của kienmannowar phía trên: http://kienmanowar.wordpress.com/category/ollydbg-tutorials/; Bộ tutorial này đã cung cấp các kiến thức về sử dụng OllyDbg từ cơ bản tới nâng cao dần, nắm hết được bộ Tutorial này là ok rồi. - Với IDAPro thì sử dụng IDAPro Booktìm thấy dễ dàng trên mạng, ebook này đầy đủ tất cả các chức năng khác nhau của IDAPro, mọi chức năng cần thiết đều có thể tra cứu trong này được. - Việc viết các plugin hay script cho OllyDbg và IDAPro thì chỉ cần search tài liệu trên mạng, phần này tớ cũng không có tài liệu. Với IDA thì trong quyển IDAPro book đã đầy đủ. - Các kiến thức cơ bản về mã độc thì cần tham khảo hai quyển ebook: Virus – Huyền thoại và thực tế (tiếng Việt), và quyển The.Art.of.Computer.Virus.Research.and.Defense (tiếng Anh, giới thiệu ngắn gọn và đầy đủ về các kĩ thuật khác nhau của virus cũng như các phương pháp phát hiện, xử lý virus tương ứng đó). Tập hợp đủ các kiến thức trên là có thể dịch ngược được phần mềm nói chung hay mã độc nói riêng rồi. Ngoài ra có thể tham khảo các tài liệu sau: - Sổ tay cho Cracker (tổng hợp từ ReaOnline.net, tiếng Việt). - Tuts4you.com (Tổng hợp đầy đủ các tutorial, ví dụ, plugin, … trong mảng dịch ngược) - Luyện tập ở những trang chứa các mẫu crackme trên mạng, ví dụ như: http://www.woodmann.com/crackz/Miscpapers.htm#crackmes Cuối cùng, thực hiện với nhiều mẫu khác nhau thì tốc độ và các kĩ năng sẽ được cải thiện. . Các nội dung về phân tích mã độc cho chuyên gia 1. Phát hiện mã độc trong hệ thống Công việc đầu tiên khi phân tích các mã độc trong hệ thống đó là phát hiện các mã độc trong hệ thống hiện ra mã độc, bước tiếp theo là phân tích các hành vi của mã độc. Tuy nhiên, để tiết kiệm thời gian, thông thường quá trình phân tích mã độc tập trung vào những đặc điểm sau của mã độc: -. module khác nhau của mã độc. Ngoài ra một lợi ích nữa là ta sẽ ‘học hỏi’ được các kĩ thuật mới của mã độc. Việc phân tích mã độc chuyên sâu chính là việc dịch ngược một mã độc, tức là các kĩ thuật

Ngày đăng: 02/07/2014, 15:01

Từ khóa liên quan

Mục lục

  • 1. Phát hiện mã độc trong hệ thống

    • 1.1. Phát hiện mã độc trong các tiến trình đang thực thi

    • 1.2. Phát hiện các mã độc thông qua các thành phần khởi động cùng Windows

    • 2. Các hành vi đáng chú ý trong quá trình phân tích các mã độc

    • 3. Phân tích mã độc chuyên sâu

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

Tài liệu liên quan