Vấn đề lớn nhất đối với việc phân tích mã độc trên firmware là phải có được quyền giám sát, thu thập thông tin ở mức hệ điều hành của firmware, điều mà chưa có một phương pháp nào có thể giải quyết triệt để. Từ các máy ảo QEMU đã được cộng đồng nghiên cứu về Firmware trên thế giới xây dựng (có nhiều loại khác nhau, phù hợp với từng loại kiến trúc Firmware như ARM, MIPS, x86, Power PC…).
Máy ảo đóng vai trò vô cùng quan trọng đối với lập trình viên trong việc mô phỏng các ứng dụng hay phần mềm trên thiết bị nào đó. Máy ảo là một trình giả lập hệ thống máy tính. Máy ảo sử dụng tài nguyên và chạy trên máy tính thật đồng thời hoạt động riêng biệt hoàn toàn so với hệ thống máy tính thật.
Máy ảo cho phép tạo ra một môi trường riêng biệt, cách ly hoạt động với máy thật. Ở môi trường này, có thể nghiên cứu, tiếp cận và xử lý các loại mã độc
khác nhau mà không ảnh hưởng trực tiếp đến bảo mật của máy thật.
QEMU được sử dụng trên hệ điều hành Linux với phiên bản miễn phí. QEMU không yêu cầu đăng nhập để quản lý và sử dụng. QEMU hỗ trợ tự động điều chỉnh kích thước của đĩa ảo và thực hiện chạy mã khách trực tiếp trên phần cứng. Điều này giúp QEMU trở thành lựa chọn hàng đầu cho việc xây dựng máy ảo di động trên ổ cứng.
Khác với các thiết bị máy tính cá nhân khi bộ vi xử lý đa phần dùng nền tảng i386 và hệ điều hành Windows, 86% các thiết bị định tuyến dùng các bộ vi xử lý như MIPS và ARM với hệ điều hành Linux. Do đó, yêu cầu đối với một môi trường mô phỏng đầy đủ cho các thiết bị định tuyến phải thỏa mãn điều kiện là hỗ trợ đa nền tảng vi xử lý: MIPS, ARM, PowerPC,…và đa nền tảng hệ điều hành đặc biệt là Linux.
Luận văn nghiên cứu bổ sung các công cụ giám sát vào các máy ảo này phục vụ mục đích phân tích mã độc. Cụ thể như sau:
(1) Nghiên cứu bổ sung công cụ strace để theo dõi các cuộc gọi hệ
thống (system-calls)
(2) Nghiên cứu bổ sung công cụ tcpdump để giám sát các hành vi
mạng của hệ thống.
Sau khi đã bổ sung các công cụ cần thiết, tác giả mô phỏng hoạt động của firmware bằng cách đưa toàn bộ tập tin đã được bóc tách ở Bước 1 vào máy ảo QEMU.
Các bước thực hiện cụ thể như sau:
- Xác định loại kiến trúc, môi trường thực thi của Firmware từ các tập tin đã được bóc tách bằng lệnh sau:
$file bin/busybox
Lưu ý: có thể thay bin/busybox bằng tập tin thực thi khác trong các tập tin bóc tách từ Firmware
Ví dụ:
- Tùy thuộc vào môi trường thực thi (ARM, MIPS…) tiến hành tải máy ảo giả lập QEMU về và cài đặt trên máy tính
Tải tập tin máy ảo từ url (với kiến trúc ARM ta tải tập tin: debian_wheezy_ armhf_standard.qcow2):
https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipse l_standard.qcow2
- Tải tập tin vmlinux-3.2.0-4-4kc-malta từ url:
https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc- malta
- Chạy máy ảo bằng câu lệnh sau: cd \
cd .\qemu\
.\qemu-system-mipsel.exe -M malta -kernel E:\image\vmlinux-3.2.0-4- 4kc-malta -hda E:\image\debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic -net nic -net user,hostfwd=tcp::1810-:22 -m 2048
- Sau khi máy ảo QEMU được khởi chạy, dùng chương trình puty truy cập vào máy ảo:
Mở chương trình putty và nhập các thông tin hostname: localhost; port: 1810 như hình sau:
- Để di chuyển tập tin dữ liệu từ máy thật vào máy ảo QEMU hoặc ngược lại, có thể sử dụng chương trình winscp. Nhập thông tin đăng nhâp trên winscp tương tự như trên putty:
- Chuyển các tập tin cài đặt chương trình tcpdump và strace vào máy ảo bằng winscp:
- Cài đặt công cụ strace bằng lệnh sau: $dpkg -I strace_4.5.20-2_mipsel.deb Kết quả cài đặt thành công như sau:
- Cài đặt tcpdump bằng lệnh sau:
$dpkg -I libpcap0.8_1.1.1-2+squeeze1_mipsel.deb Kết quả cài đặt thành công như sau:
- Chuyển toàn bộ các tập tin đã được bóc tách từ Firmware vào máy ảo bằng chương trình winscp:
Kết quả: thư mục cpi-root chứa toàn bộ các tập tin được trích xuất ra từ Firmware.
Từ hình trên, có thể thấy các thư mục đã được bóc tách từ Firmware như bin, dev, etc, home… đã được chuyển vào máy ảo QEMU
- Để giám sát lưu lượng mạng ta dùng lệnh: tcpdump -w out.pcap
Trong thử nghiệm này, tập tin bin/alphapd là tập tin dịch vụ trên firmware, để giám sát chương trình alphapd ta dùng lệnh sau:
strace chroot . ./bin/alphapd
Lưu ý: Trong quá trình giám sát, tùy thuộc vào chương trình thực thi để giám sát đầy đủ có thể cần bổ sung thêm thư viện, tập tin cho môi trường do máy ảo QEMU có thể thiếu các thư viện (lib).
Từ hình trên cho thấy nhật ký hành vi của chương trình ứng dụng
alphapd đã được ghi lại và hiển thị trên màn hình.
Cụ thể, có thể thấy chương trình alphapd khi thực thi sẽ mở tập tin ở thư mục “/var/run/alphad.pid” và thực hiện các lệnh open, write…