5. Phương pháp nghiên cứu
2.4.4 Hệthống thu thập virus và hành v i Honeypot
Honeypots (hũ mật) là một hệ thống tài nguyên thông tin được xây dựng với mục đích giả lập các môi trường thật để đánh lừa những kẻ sử dụng và xâm nhập không hợp pháp, thu hút sự chú ý của chúng, ngăn không cho chúng tiếp xúc với hệ thống thật, đồng thời thu thập mẫu và cách thức tấn công.
Ta có thể hiểu hệ thống tự phơi bày điểm yếu trên mạng và muốn bị tấn công để thu thập mọi thông tin có thể về các cuộc tấn công thực tế trên mạng.
Trong trường hợp Antivirus, hệ thống này nhằm thu thập các loại virus mới, cho phép cập nhật thêm mẫu nhận diện của Antivirus.
2.5 Lựa chọn phương pháp để xây dựng hệ thống
Mục tiêu của luận văn là xây dựng một hệ thống phân tích mã độc tự động, do vậy chúng ta sẽ sử dụng phương pháp phân tích động, kết hợp với kiến thức về mã độc đã tìm hiểu được để xây dựng hệ thống.
Trong phần tiếp theo, tôi sẽ trình bày tổng quan về một hệ thống tự động phân tích mã độc và cách thức xây dựng hệ thống này.
CHƯƠNG III: XÂY DỰNG HỆ THỐNG PHÂN TÍCH MÃ ĐỘC TỰ ĐỘNG
4.1 Lý thuyết cơ bản về Sanbox
Vì mã độc ngày càng phức tạp, cho nên chúng ta cần thêm các công nghệ mà cho phép phân tích mã độc được dễ dàng mà không làm ảnh hưởng tới hệ thống hiện có của chúng ta. Một trong các công nghệ được sử dụng có tên là sanbox. Sanbox là khái niệm được những người làm về kỹ thuật nắm rõ.Về mặt kỹ thuật (an toàn thông tin), sanbox là cơ chế cho phép cô lập một chương trình ( ở đây là mã độc ) bằng việc cung cấp một môi trường thực thi hạn chế, môi trường này được sử dụng để thực thi những chương trình nghi ngờ chứa mã độc từ môi trường chính. Bằng việc sử dụng Sanbox, chúng ta có thể thực thi những chương trình chứa mã độc và quan sát hành vi của chúng.
Nhờ có Sanbox, chúng ta có thể phân tích mã độc an toàn và bảo mật mà không cần quan tâm tới sự thay đổi có thể xảy ra với hệ thống của mình. Có một vài malware sanboxes chúng ta có thể sử dụng để xây dựng môi trường tự động phân tích mã độc cho riêng mình như: Buster Sandbox Analyzer, Zero Wine, Malheur, Cuckoo Sandbox và một vài hệ thống khác nữa. Ở đây chúng ta sẽ chọn Cukoo Sandbox vì nó là hệ thống có đầy đủ các tính năng cần thiết, mã nguồn mở hoàn toàn và có một cộng đồng cùng phát triển.
4.2 Môi trường phân tích mã độc
Môi trường phân tích mã độc là một môi trường an toàn để phân tích các loại mã độc. Về cơ bản, nó là một môi trường cô lập, trong đó có nhiều công cụ hữu ích cho các chuyên gia phân tích mã độc, giúp họ trong việc phân tích các loại mã độc này một cách nhanh chóng và thuận tiện. Nếu có thể, chúng ta nên xây dựng một phòng thí nghiệm phần mềm độc hại để chủ động hơn mối đe dọa mới và hiện đại, có thể bất ngờ tấn công tổ chức của chúng ta. Nó cũng là một hình thức phát hiện tiên tiến trước khi các tổ chức chống virus cập nhật một mẫu mã độc hại mới vào cơ sở dữ liệu của họ. Kết quả cuối cùng của các phòng thí nghiệm phân tích phần mềm độc hại sẽ được xử lý bởi các chuyên gia phân tích mã độc.
Phân tích tĩnh liên quan đến việc phân tách và dịch ngược mã độc. Điều này có thể được thực hiện trong trạng thái tĩnh, khi mà đoạn mã độc đó còn chưa được thực thi.
Không có cấu hình phức tạp là cần được thiết lập trong môi trường phân tích mã độc, bởi vì thực ra chúng ta còn chưa thực thi nó. Môi trường phân tích này sẽ cung cấp cho chúng ta một môi trường an toàn nếu như chúng ta chẳng may thực thi mã độc này khi đang phân tích. Đối với phân tích động, ta cần phải thiết lập phức tạp hơn, vì chúng ta cần phải thực thi mã độc ở pha này. Malware đôi khi còn hành xử khác nhau tùy thuộc vào môi trường hệ điều hành, nơi họ đang được thực thi.
Chúng ta còn phải chú ý tới vị trí của máy chủ phân tích mã độctrong mạng của mình. Trojan, worms, và một số loại mã độc có thể có tính năng lây lan, vì vậy việc thực thi một file mã độc có thể dẫn đến các máy tính khác trên cùng một mạng bị lây nhiễm. Xây dựng một môi trường phân tích mã độc không quá khó và đòi hỏi rất ít chi phí về phần cứng. Cô lập môi trường phân tích mã độc khỏi các máy khác trong mạng là chưa hoàn toàn đủ. Ngoài ra, chúng ta cũng cần phải cô lập môi trường này khỏi Internet. Nhưng chúng ta cần cân nhắc lựa chọn này, bởi vì mã độc đôi khi cần phải giao tiếp với server điều khiển từ bên ngoài. Ví dụ như Botnet.
Có hai lựa chọn trong việc xây dựng một môi trường phân tích mã độc, đó là một môi trường vật lý hoặc là một môi trường ảo hóa. Cả hai đều có những ưu điểm và nhược điểm của riêng nó. Xây dựng môi trường vật lý sẽ đòi hỏi rất nhiều tiền bạc và thời gian trong việc xây dựng được một môi trường thực sự tốt. Trong tình huống này, việc xây dựng một môi trường phân tích mã độc bằng cách sử dụng kỹ thuật ảo hóa sẽ tiết kiệm tiền bạc và thời gian của chúng ta. Phần mềm ảo hóa cho phép bạn lưu các trạng thái của một máy ảo và chúng ta có thể phục hồi trở lại trạng thái lúc trước khi cần thiết. Thành phần này được gọi là Snapshot.Sử dụng tính năng Snapshot này, bạn có thể có một môi trường máy ảo có chứa một hệ điều hành với một bộ đầy đủ các công cụ phân tích động và tĩnh, và cuối cùng chúng tacó thể lưu lại phiên làm việc ban đầu bằng cách sử dụng tính năng Snapshot, do đó chúng ta có thể trở lại trạng thái ban đầu trước khi quá trình lây nhiễm của mã độc trên hệ thống xảy ra. Sau khi hoàn thành phân tích phần mềm độc hại, chúng tacó thể chọn để lưu lại hoặc loại hủy Snapshot đó và quay trở lại với trạng thái ban đầu. Do đó, bằng cách sử dụng tính năng Snapshot, chúng ta không phải lo lắng về việc các loại mã độc hại sẽ lây nhiễm vào môi trường phân tích mã độc của bạn, vì chúng ta sẽ có thể dễ dàng khôi phục nó lại trạng thái trước đó
Như vậy, từ đó chúng ta có thể suy ra được rằng quá trình phân tích tự động mã độc sẽ sử dụng môi trường ảo hóa, việc này sẽ giúp chúng ta rút ngắn thời gian trong việc phân tích các loại mã độc. Công nghệ ảo hóa đã trở thành một thành phần quan trọng trong việc phân tích mã độc một cách tự động vì tính hiệu quả về chi phí trong tiêu thụ phần cứng và sử dụng tài nguyên của CPU. Bằng cách sử dụng một hệ điều hành phổ biến và cố ý lây nhiễm nó với một loại mã độc được định trước, nó sẽ hữu ích trong việc theo dõi các hoạt động của loại mã độc này và phát hiện các hành vi đáng ngờ có thể xảy ra. Hạn chế của việc thực hiện phân tích mã độc một cách tự động ở chỗ các nhà phát triển mã độc thường xuyên sử dụng các kỹ thuật che giấu quá trình hoạt động của mã độc như anti-debug ( chống dịch ngược ), packer ( đóng gói mã nguồn), mã hóa, obfuscating code (làm cho mã nguồn trở nên khó phân tích ), và nhiều kỹ thuật khác nữa.
Hình 10: Sơ đồ thực hiện hệ thống cơ bản
4.3 Xây dựng môi trường phân tích mã độc tự động
Trong phần này, chúng ta sẽ chọn môi trường phân tích mã độc tự động có tên là Cuckoo Sandbox. Trên môi trường này chúng ta sẽ tiến hành cài đặt thêm một sốchương trình cụ thể để có thể thực hiện việc phân tích động các loại mã độc. Thay cho việc phân tích tĩnh, chúng ta sẽ cho các loại mã độc này thực thi và kiểm soát theo thời gian thực. Giải thích đơn giản, Cuckoo là một hệ thống phân tích mã độc tự động mã nguồn mở, cho phép bạn thực hiện các phân tích các mã độc hại bên trong một môi trường đã được kiểm soát. Cuckoo Sandbox bắt đầu như một dự áncủa Google Summer of Code trong năm 2010 trong Honeynet project. Sau khi công việc bắt đầu trong suốt mùa hè năm 2010, việc phát hành phiên bản beta đầu tiên được công bố vào 05/ 02/ 2011, khi Cuckoo đã được công bố công khai và phân phối lần đầu tiên vào thời điểm đó.
Cuckoo ban đầu được thiết kế và phát triển bởi Claudio "nex" Guarnieri, hiện ông vẫn là người phát triển chính và phân bố công việc cho các nhà phát triển cùng tham gia và phân phối. Vào 3/ 2012, Cuckoo Sandbox thắng vòng đầu tiên của chương trình Magnificent7 được Rapid7 tổ chức. Cuckoo đã được tài trợ do cách tiếp cận sáng tạo của các nhà phát triển khi họ đã phân tích các loại mã độc theo cách truyền thống. Cuckoo khi được sử dụng sẽ tự động chạy và phân tích các file và thu thập kết quả phân tích toàn diện và phác thảo những gì các loại mã độc này đã thực hiện trong khi chạy bên trong một hệ thống điều hành Windows bị cô lập. Cuckoo được thiết kế để sử dụng trong việc phân tích các loại sau đây của các tập tin:
• Các file thực thi phổ biến của Windows • Các file DLL
• File PDF
• File của Microsoft Office • URLs
• PHP scripts
Cuckoo có thể sinh ra các thành phần như sau ở đầu ra để hỗ trợ chúng ta trong quá trình phân tích động:
• Truy xuất theo các hàm win32 API đã được gọi bởi các tiến trình trong quá trình mã độc thực thi.
• Các file được tạo, xóa, tải về trong quá trình mã độc thực thi. • Memory dumps của những tiến trình mã độc..
• Lưu lượng mạng sử dụng ở định dạng PCAP format
• Tự động chụp lại màn hình trong quá trình thực thi của mã độc. • Full memory dumps của hệ thống.
Cuckoo Sandbox gồm một phần mềm quản lý trung tâm, trong đó xử lý hành mẫu phần mềm độc hại và phân tích.
Mỗi phân tích được đưa ra trong một máy ảo mới và cô lập. Cơ sở hạ tầng Cuckoo được sáng tác bởi một máy chủ (phần mềm quản lý) và một số các máy khách (máy ảo để phân tích).
Các máy chủ chạy các thành phần cốt lõi của sandbox để quản lýtoàn bộ quá trình phân tích, trong khi đó máy khách (guest) là môi trường riêng biệt nơi mà phần mềm độc hại thực sự được thực hiện và được phân tích một cách an toàn. Sơ đồ dưới đây cho ta thấy kiến trúc của Cuckoo:
Hình 11: Mô phỏng về kiến trúc hoạt động của Sanbox
Sau đây là các thành phần quan trọng cần thiết khi sử dụng Sandbox.
4.3.1 Yêu cầu về phần cứng
Đối với hệ thống này thì không có yêu cầu cụ thể đối với thiết bị phần cứng. Yêu cầu đối với bộ nhớ RAM tối thiểu là 2GB (cho phép ảo hóa) và ổ đĩa cứng có dung lượng trống khoảng 40 GB. Ở đây, tôi đã sử dụng các thông số kỹ thuật phần cứng như sau hệ điều hành Host:
• Quad Core CPU • 4 GB RAM • 320 GB HDD
4.3.2 Các chương trình có trong hệ thống
Trước khi bắt đầu cài đặt và cấu hình hệ thống, ta cần phài cài trước một số chương trình và thư viện sau:
1. Cài đặt python
Chúng ta sử dụng câu lệnh sau: $ sudo apt-get install python
2. Cài đặt SqlAlchemy application
Cuckoo cần các SQLAlchemy application như bộ công cụ cơ sở dữ liệu cho Python. Vì vậy, ta cần phải cài đặt SQLAlchemy với dòng lệnh sau đây: $ sudo apt-get install python-sqlalchemy
Bạn cũng có thể sử dụng lệnh pip để cài đặt SQLAlchemy. ( Pip là một công cụ để cài đặt và quản lý các gói Python.)
$ sudo pip install sqlalchemy
3. Các chương trình tùy chọn cài thêm ( Không bắt buộc )
Các thư viện sau đây, không yêu cầu, nhưng ta nên có các thư viện để đảm bảo Cuckoo Sandbox hoạt động tốt trong môi trường của chúng ta:
• dpkt: Thư viện này là rất được khuyên dùng và sử dụng để trích xuất thông tin từ các tập tin pcap.
• jinja2: Thư viện này là cũng được khuyến khích và được sử dụng để sinh ra các báo cáo có định dạng HTML và web interface.
• magic: Thư viện này là tùy chọn và được sử dụng để xác định các định dạng tập tin (nếu không sử dụng các tập tin tiện ích dòng lệnh).
• ssdeep: Thư viện này cũng là tùy chọn và được sử dụng để tính toán hash mờ cho các tập tin.
• pydeep: Thư viện này là tùy chọn và được sử dụng để tính ssdeep băm mờ của tập tin. 54
• pymongo: Thư viện này là tùy chọn và được sử dụng để lưu trữ các kết quả trong cơ sở dữ liệu MongoDB.
• Yara và Yara python: Thư viện này là tùy chọn và được sử dụng để so khớp với chữ ký được viết bằng Yara.
• libvirt: Thư viện này là tùy chọn và nó sử dụng quản lý máy KVM
• bottlepy: Thư viện này là tùy chọn và nó được sử dụng cho web.py và các hàm trong api.py.
• pefile: Thư viện này là tùy chọn và được sử dụng để phân tích tĩnh của PE32 dưới dạng nhị phân.
Tất cả các gói trên có thể được cài đặt bằng cách sử dụng một dòng lệnh apt-get:
$ sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile ssdeep
Hoặc chúng ta có thể cài đặt tất cả các gói trên sử dụng trình quản lý gói pip (trừ python-magicvà python-libvirt):
$ sudo pips install dpkt jinja2 pymongo bottle pefile
Ta phải cài đặt pydeep cho ssdeep fuzzy hash của mẫu; nhưng trước khi cài đặt Pydeep, chúng ta cần phải cài đặt một số phụ thuộc với các dòng lệnh sau đây:
• Build-essential • Git • Libpcre3 • Libpcre3-dev • Libpcre++-dev Lệnh cài đặt:
$ sudo apt-get install build-essential git libpcre3 libpcre3-dev libpcre++-dev
Tiếp theo, bạn phải clone pydeep từ git (và đặt pydeep vào trong các thư mục /opt): $ cd /opt
$ git clone https://github.com/kbandla/pydeep.git pydeep $ cd /opt/pydeep/
python setup.py build sudo python setup.py install
Ta cũng sẽ cần phải cài đặt Yara để phân loại các mẫu phần mềm độc hại (đặt Yara trong / opt thư mục):
$ sudo apt-get install automake -y $ cd /opt
$ svn checkout http://yara-project.googlecode.com/svn/trunk/yara $ cd /opt/yara
$ sudo ln -s /usr/bin/aclocal-1.11 /usr/bin/aclocal-1.12 $ ./configure
$ make
$ sudo make install $ cd yara-python
$ python setup.py build $ sudo python setup.py install
Ta cũng cần phải cài đặt tcpdump để dump lưu lượng mạng trong quá trình phân tích: $ sudo apt-get install tcpdump
Nếu muốn chạy tcpdump, ta cần quyền root; nhưng kể cả khi bạn không muốn Cuckoo chạy dưới quyền root, bạn sẽ phải thiết lập đường dẫn Linux cho các file nhị phân, bằng các dòng lệnh sau đây:
$ sudo apt-get install libcap2-bin
Chúng ta có thể xác minh các kết quả của lệnh trên bằng lệnh sau:
$ getcap /usr/sbin/tcpdump /usr/sbin/tcpdump =cap_net_admin,cap_net_raw+eip Nếu bạn không có setcap cài đặt, bạn nên cài đặt thư viện này:
$ sudo apt-get install libcap2-bin
Nếu không (tuy không khuyến khích) thì có thể chạy dòng lệnh sau đây: 56
$ sudo chmod + s / usr / sbin / tcpdump
Các lệnh chmod + s là bit SUID,ta thêm cả ID người dùng và nhóm ID cho phép vào một tập tin. Trong trường hợp này, nó là tcpdump. Nếu bạn thiết lập SUID bit "s" vào tcpdump, sau đó người dùng khác có thể chạy nó và họ sẽ trở thành các root trong quá trình tcpdump được thực hiện. Đó là lý do tại sao bước này không được khuyên dùng. Sau khi bạn hoàn thành việc thiết lập các hệ điều hành chủ, bạn cần phải cài đặt và cấu hình Cuckoo Sandbox cho Host OS của chúng ta.
4.4.3 Cài đặt Sanbox cho Host OS
Trong phần này, ta sẽ thiết lập Cuckoo Sanbox và cấu hình cho hệ thống này. 1. Đầu tiên, ta download Cuckoo từ website của nó:
http://www.cuckoosandbox.org/download.html
Có hai cách để thiết lập Cuckoo lên trong Host OS của chúng ta. Có thểtải về các file tarball hoặc có thể sao chép từ nguồn sử dụng git.
• Nếu muốn download từ git, ta có thể thực hiện bước này: $ git clone git: //github.com/cuckoosandbox/cuckoo.git
• Nếu muốn tải về các file tarball từ web, bạn có thểtruy cập vào các trang web và sau đó dowload.
2. Sau khi bạn đã hoàn tất tải về các tập tin, bạn phải giải nén các tập tin vào một thư