5. Phương pháp nghiên cứu
4.5 Kiểm thử hệthống tự động phân tích mãđộc
4.5.1 Các module trong quá trình phân tích
Để bắt đầu thực hiện việc phân tích mã độc, ta cần hiểu rõ các module cần thiết của hệ thống như sau:
1.SSDEEP
- Ssdeep là một chương trình tính toán dựa trên bối cảnh ( Context triggered piecewise hashes – CTPH ). Thường được biết tới dưới một khái niệm gọi là Fuzzy Hashes. - CTPH có thể xác định những giá trị đầu vào như nhau bằng cách sử dụng tính tương đồng giữa chúng.Mỗi đầu vào có một chuỗi bytes nhận diện được sắp xếp theo cùng một thứ tự bất chấp những bytes ở giữa những chuỗi này có thể khác cả về nội dung lẫn độ dài.
2. YARA
- Yara là một chương trình được sử dụng với mục đích hỗ trợ những nhà nghiên cứu malware nhận diện và phân loại malware sample.
- Với Yara chúng ta có thể tạo những dấu hiệu đặc trưng cho những dòng virus khác nhau dựa trên trạng thái hoặc các mẫu nhị phân.Với mỗi dòng virus được xác định bởi một tập luật.
- Yara được sử dụng trên đa nền tảng, ví dụ: Windows, Linux, Mac OS X.
3. DISTORM3
- diStorm3 là một library disassembler mạnh được sử dụng để disassembles instructions ở các chế độ 16, 32 and 64 bit. Có hỗ trợ các tập lệnh: FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow, những lệnh x86-64 mới, VMX, AMD's SVM và AVX.
4. VOLATILITY
- Volatility là một framework được sử dụng để phân tích và forensics memory. Chương trình này phân tích trạng thái đang chạy của một hệ thống sử dụng dữ liệu trên RAM. - Volatility hỗ trợ phân tích memory dumps từ các nền tảng Windows 32 hoặc 64 bit bao gồm XP, 2003 Server, Vista, Server 2008, Server 2008 R2, 7, 8, 8.1, Server 2012, and 2012 R2. Memory dump có thể ở dạng raw format, a Microsoft crash dump, hibernation file, hoặc virtual machine snapshot, Volatility đều có thể xử lý.Ngoài ra, chương trình còn hỗ trợ Linux raw memory dumps hoặc LiME format, Linux kernels 32 hoặc 64 bit từ phiên bản 2.6.11 - 3.16 và Debian, Ubuntu, OpenSuSE, Fedora, CentOS, và Mandrake. 38 versions Mac OSX memory dumps từ 10.5 tới 10.9.4 Mavericks, cả 32 và 64-bit. Điện thoại Android với ARM processors cũng được hỗ trợ.
4.5.2 Các tùy chọn cấu hình cho quá trình phân tích
Trước tiên, chúng ta cần phải cấu hình các file cấu hình của Cuckoo, trong đó bao gồm các tập tin chủ yếu sau đây:
• cuckoo.conf: file cấu hình này có chứa thông tin về hành vitổng quát và những option phân tích trong Cuckoo Sandbox.
• <machinemanager>.conf: file này chứa các thông tin vềcấu hình máy ảo. (Phụ thuộc vào tên của ảo hóa mà chúng ta sử dụng.)
• processing.conf: tập tin này được sử dụng để bật và cấu hình quá trình xử lý của các module.
• reporting.conf: Tập tin này có chứa thông tin về phương pháp báo cáo. Các file .conf nói trên được mô tả chi tiết trong các phần sau.
1. Cuckoo.conf
Tập tin này có chứa thông tin cấu hình cơ bản và tổng quát của Cuckoo. Ví dụ, ta có thể yêu cầu Cuckoo tự kiểm tra phiên bản mới nhất khi nó bắt đầu thực thi. Nếu ta sử dụng tính năng này, Cuckoo sẽ tự động download phiên bản mới nhất, và bạn có thể lưu trữ các phiên bản cũ hoặc xóa nó. Nó được định nghĩa trong trường version_check vào file cuckoo.conf. Ta có thể mô tả phương pháp ảo hóa của bạn trong file cuckoo.conf. Ví dụ, nếu ta đang sử dụng VirtualBox, ta có thể viết trong machine_manager = virtualbox, hoặc nếu bạn đang sử dụng VMware, bạn có thể thay đổi dòng này là vmware.
Ta cũng có thể điềnđịa chỉ IP của Host OS và Port sẽ được sử dụng bởi Cuckoo Sandbox. Theo mặc định, địa chỉ IP này sẽ được thiết lập là 192.168.50.1 (bởi vì chúng ta đang sử dụng host-only phương pháp kết nối mạng), và cổng mặc định là 2042. Tiếp theo đó chúng ta phải xác định Network Interface. Chúng tôi đã xác định Interface cho Cuckoo. Ở đây chúng ta chọn là vboxnet0.
2. <machinemanager>.conf
Machine Manager là các moduleđược định nghĩa để Cuckoo tương tác với các công cụ ảo hóa của bạn. Trong file cuckoo.conf, ta sẽ phải chọn ra phần mềm ảo hóa mà ta sử dụng. Nếu ta sử dụng VirtualBox, các <machinemanager> conf sẽ lấy các cấu hình trong file virtualbox.conf. Nếu bạn sử dụng VMware, <machinemanager> conf sẽ lấy các cấu hình trong file vmware.conf.
Trong phần, do ta sử dụng VirtualBox, vì vậy ta chỉ cần tập trungvào cấu hính trong file virtualbox.conf. Ta có thể chỉnh sửa tập tin này dựa vào yêu cầu nhất định. Ví dụ, nếu ta muốn chạy VirtualBox ở chế độ GUI, thì phải chỉnh lạimode và thiết lập nó như là gui. Còn nếu quen với việc sử dụng VirtualBox bằng dòng lệnh, sau đó nên thiết lập mode là headless trong file virtualbox.conf.
Trong khi cài đặt Guest OS, ta cần phải chú ý đến việc đặt tên cho các Guest. Vì nó sẽ được sử dụng trong file cấu hình. Trong section [cuckoo1], tasẽ chỉ ra tên Guest OS. Nếu ta cho Guest OS tên là cuckoo1, ta phải chỉnh sửa lạilabel = cuckoo1
Ở đây ta đang sử dụng Windows XP là Guest OS, ta phải định nghĩa cho phần platform là windows:
platform = windows
Tiếp đó, ta phải điền vào địa chỉ IP của Guest OS. Vì chúng ta đang sử dụng mạng host-only, theo mặc định thì hệ điều hành đầu tiên trong hệ thống khách sẽ được cấp phát địa chỉ IP là 192.168.50.101.
3. Processing.conf
Cấu hình này file sẽ cho phép ta bật, hoặc vô hiệu hóa tất cả các module xử lý. Về cơ bản, thì chúng ta không cần phải thực hiện bất kỳ thay đổi nào trên cấu hình mặc định trongtập tin này. Nhưng ta có thể thêm API VirusTotal key của riêng chúng ta. Nếu ta không có một tài khoản VirusTotal, chỉ cần tạo một tài khoản trong website VirusTotal tại https://www.virustotal.com/en/, và điền key bằng giá trị trong dòng này: # Add your VirusTotal API key here. The default API key, kindly# provided by the VirusTotal team, should enable you with a
# sufficient throughput and while being shared with all our users, # it should not affect your use.
key =
a0283a2c3d55728300d064874239b5346fb991317e8449fe43c902879d758088
3. Reporting.conf
File conf/reporting.conf có chứa thông tin về việc tự động sinh báo cáo. Tập tin này có chứa thông tin về các phương pháp hoặc các loại các báo cáo mà bạn muốn sử dụng sau khi hoàn thành quá trình phân tích. Bạn có thể disable hoặc enable các phương pháp báo cáo này.
Sau khi hoàn thành việc cấu hình cho môi trường Cuckoo Sandbox, ta có thể bắt đầu kiểm tra thực hiện quá trình phân tích phần mềm độc hại.
$ vboxmanage snapshot "cuckoo-hdx" take "cuckoo-hdxSnap01" --pause
Các lệnh sau đây được sử dụng để khôi phục lại snapshot: $ vboxmanagecontrolvm "cuckoo-hdx " poweroff
$ vboxmanage snapshot "cuckoo-hdx" restorecurrent $ vboxheadless --startvm "cuckoo-hdx"
4.5.3 Thực hiện kiểm thử hệ thống đối với mã độc cụ thể
Đối với mỗi mẫu mã độc, hệ thống được chạy qua những thành phần sau:
Hình 12: Sơ đồ của kịch bản thử nghiệm với mã độc 1. Khi bắt đầu chạy Cuckoo SandBox, ta thực hiện lệnh:
$./cuckoo.py
Lúc đó đầu ra từ terminal sẽ giống như hình bên dưới:
2. Giờ thì Sandbox đã bắt đầu chạy và chờ đợi để phân tích. Ta có thể submitmalware sample hoặc các URL độc hại. Ta phải chuyển sang đường dẫn/cuckoo/utils / và sau đó sử dụng các file submit.py để thực hiện một phân tích phần mềm độc hại:
Khi đó kết quả đầu ra sẽ được như hình sau:
Như vậy chúng ta đã thiết lập xong cho Host OS và Guest OS trong VirtualBox và sau đó cài đặt Cuckoo Sandbox. Việc quan trọng nhất của quá trình này là đảm bảo rằng tất cả các dependencies cần thiết trong Host OS cùng với pydeep và Yara được cài đặt đầy đủ. Đối với Guest OS, thì tắt luôn các thành phần bảo vệ(Self-defend) , Windows Firewall và sử dụng bất kỳ phần mềm nào mà mã độc thường được thường tương tác với, ví dụ, Adobe Reader 9.5, Internet Explorer 6, Microsoft Office 2003.
Chúng ta cần cấu hình trong file <machinemanager>.conf phải chính xác giống như n phần mềm ảo hóa mà ta đang sử dụng. Ví dụ, nếu ta muốn sử dụng KVM, ta phải thiết lập KVM trong machinemanager.conf. Vì chúng ta đang sử dụng VirtualBox, nên ta phải đặt VirtualBox trong cấu hình.Tên của GuestOS trong VirtualBox được để trong fie cuckoo.conf. Tiếp theo là cần phải tạo một bản backup của toàn bộ hệ thống và cấu hình.
Sau đây, chúng ta sẽ sử dụng SandBox này để phân tích một số loại mã độc phổ biến. Ở đây, chúng ta sẽ chọn một mẫu virus ở dạng worm có tên là Mydoom.
- MyDoom là mẫu worm khuếch tán qua email gây thiệt hại hơn $38 million và lây nhiễm hơn 2 triệu máy trên toàn thế giới
Quá trình phân tích mẫu virus này bằng hệ thống tự động phân tích mã độc: - Ban đầu ta cần upload mẫu virus này vào hệ thống:
- Nếu mẫu được upload đúng cách thì hệ thống sẽ hiển thị lên thông tin đang xử lý mẫu này.
- Khi mẫu virus được hệ thống xác nhận thì máy ảo tự động phân tích sẽ được bật lên để chạy mâu virus này trong môi trường ảo:
Ta có thể thấy trong quá trình chạy thì hệ thống được chạy trong một môi trường cô lập, tất cả các thao tác của mã độc trên hệ thống đều được theo dõi và kiểm soát.
- Ở bên ngoài, hệ thống Host ta có thể thấy các quá trình này, và khi quá trình đó kết thúc thì máy ảo dùng để phân tích sẽ được tự động tắt để tiến hành phân tích các dữ liệu mà mã độc sinh ra.
- Đây là các pluggin được viết để phân tích vùng nhớ được dump ra từ hệ thống máy ảo.
Chúng ta có thể thấy quá trình này diễn ra khá lâu ( còn tùy thuộc vào dung lượng bộ nhớ cấp phát cho môi trường ảo ).
- Khi quá trình phân tích kết thúc, ở hệ thống host sẽ hiện ra thông báo như sau để chúng ta biết được quá trình phần tích đã thành công.
- Sau khi quá trình phân tích kết thúc, ta có thể bật trình duyệt, vào địa chỉ sau: 127.0.0.1:8080/submit
Chúng ta sẽ chọn vào Task ID ứng với mẫu mã độc đang phân tích để xem kết quả phân tích.
- Đây là tổng quan về hệ thống mà chúng ta sử dụng để phân tích.
Ở đây chúng ta có thể thấy thời gian bắt đầu, kết thúc của quá trình phân tích. Ngoài ra, còn có phiên bản hệ điều hành sử dụng ( ở đây chúng ta sử dụng Windows XP3 cho môi trường máy ảo ). Trình quản lý máy ảo ở đây là VirtualBox.
- Đây là một số thông tin về mã độc mà chúng ta đang phân tích, được hệ thống cung cấp
Ở đây có một số thông tin như tên file, kích thước, kiểu file. Ngoài ra, còn có các loại mã băm như MD5, SHA1, SHA256, SHA512, SSDEEP.
Trong hệ thống còn có cài đặt PEiD để xác định kiểu nén mà mã độc đang sử dụng. Ở đây là kiểu nén: UPX 2.90 [LZMA] -> Markus Oberhumer, Laszlo Molnar & John Reiser.
Chúng ta không thấy thông tin gì về Yara, vì ta chưa viết chương trình nhận diện cho loại mã độc này. Đối với phần VirusTotal, tính năng này sẽ được sử dụng ở phần sau.
- Phần tiếp theo, hệ thống sẽ tự chụp lại ảnh màn hình để chúng ta có thể xem qua quá trình hoạt động của mã độc
Đối với mẫu worm này thì chương trình chỉ hoạt động ngầm nên chúng ta chưa thấy có gì đặc biệt trong phần chụp lại ảnh màn hình này.\
- Thông tin về các section của file mã độc.
Trong phần này, ta thấy 2 section mang tên là UPX. Đây là điều khá đặc trưng đối với mỗi file được nén lại bằng trình nén UPX.
- Thông tin về các hàm được mã độc import từ những DLL thông dụng.
- Tiếp theo là phần ghi lại những xâu được sử dụng trong file mã độc.
Trong phần này, ta có thể thấy dòng đầu tiên là một xâu đặc trưng cho một file PE thông thường. Đối với phần này, dựa vào một số xâu đặc biệt, ta cũng có thể biết được nhiều thông tin về các chủng loại virus nói chung.
- Đây là những file mà mã độc đã sinh ra trong quá trình hoạt động của nó.
Ta có thể thấy trong này có 2 tập tin log zincite.log và dbbvqv8oil.log.
2 file này đều có kiểu file là dữ liệu. Như vậy, chúng ta có thể đoán được mã độc này đã ghi log lại trong quá trình hoạt động.
Ngoài ra, ta còn thấy 2 file khác đó là java.exe và services.exe.
Ta thấy file java.exe có kích thước bằng không, như vậy file này mới được tạo ra và mã độc chưa tiến hành ghi ra nội dung file hoặc thời gian phân tích chưa đủ nên cần tăng thời gian phân tích để biết được chính xác thông tin về file này. File còn lại là file services.exe, có thể mã độc muốn sử dụng file này đóng giả một dịch vụ trong Windows, và với cái tên như vậy thì nó sẽ tránh được sự nghi ngờ từ phía người dùng.
- Về phần phân tích về mạng, ta có thể thấy các host với địa chỉ IP mà mã độc muốn kết nối đến.
Dựa vào danh sách địa chỉ IP này, chúng ta có thể kiểm tra xem chúng có thuộc vào danh sach địa chỉ C&C ( Command & Control IP list ) hay không. Để biết được mã độc có nhận lệnh từ những server điều khiển nào hay không.
- Phần tiếp theo, hệ thống sẽ tóm lược những hành vi hoạt động của mã độc trong môi trường được kiểm soát.
Trong phần này, ta có thể thấy được đường dẫn của những file được mã độc sinh ra. Ví dụ như file services.exe trong đường dẫn C:\WINDOWS. Ngoài ra còn có những đường dẫn file mà mã độc thao tác tới để tìm file hoặc tạo ra để sử dụng.
- Đây là những Mutex được tạo trong hệ thống.
Mutex được tạo ra và sử dụng để xử lý một tài nguyên được chia sẻ giữa nhiều các tiến trình hoặc chương trình khác nhau. Do vậy, dựa vào tên của một mutex đặc trưng, ta có thể biết được hệ thống đang bị nhiễm loại mã độc như thế nào.
- Về registry, hệ thống cũng thống kê lại những thao tác của mã độc trên phần này.
Registry là một thành phần để lưu trữ các thông số kỹ thuật của Windowsvà lưu lại những thông tin cũng như những thiết lập của những chương trình được sử dụng trên hệ thống này. Như vậy, theo dõi registry cũng là một thành phần quan trọng của hệ thống tự động phân tích mã độc.
- Phần tiếp theo, sẽ là process tree hay là quá trình theo dõi mã độc từ chương trình chính.
Ở đây, ta có thể thấy services.exe là chương trình được tạo ra từ mydoom.exe ( file mã độc chính mà ta đang phân tích ) qua Parent PID.
+ Đối với mã độc chính là mydoom.exe, ta có thể thấy các hàm mà mã độc này gọi.
Như chúng ta thấy ở hình trên thì file java.exe thực chất cũng chính là file mydoom.exe của chúng ta. Nó được ghi vào thư mục C:\WINDOWS và được tạo 1 ghi một registry vào hệ thống với tên là JavaVM. Như vây, loại mã đọc này muốn giả danh một chương trình của Java để tránh sự nghi ngờ từ người dùng.
File services.exe cũng được mã độc sao chép vào đường dẫn C:\WINDOWS nhưng dược khởi tạo bằng một hàm API của Windows là hàm CreateProcessInternalW.
+ Đối với file services.exe, ta có thể thấy một số hàm được mã độc này sử dụng như sau.
File này được ghi vào registry( cụ thể ở đây là key Run ) để tự động chạy lên khi người dùng khởi động lại máy
- Malfind là một plugin của Volatility giúp phát hiện mã lệnh ẩn hoặc được bị lây nhiễm vào vùng nhớ trên User Mode dựa vào đặc tính của trang nhớ.
Ở đây, ta có thể thấy chương trình csrss.exe bị inject vào địa chỉ tại 0x7f6f0000. Còn chương trình winlogon.exe bị lây nhiễm vào nhiều vùng địa chỉ trên vùng nhớ. Để biết rõ mã độc đã lây nhiễm vào từng trường hợp cụ thể như thế nào thì ta phải lấy được vùng nhớ ứng với từng dải địa chỉ thích hợp, rồi phân tích làm rõ.
- Để tìm ra các API bị mã độc hook trên User Mode hoặc Kernel Mode, hệ thống sử dụng Apihooks plugin. Dưới đây là một số hàm đó.
Đối với kiểu hook inlines, Apihooks sẽ tiến hành tìm kiếm các lệnh CALL và lệnh