Binary 101: Environment setup
Thiết lập máy ảo Ubuntu 32/64-bits làm môi trường phân tích các ELF binaries.
1. Chuẩn bị máy ảo
OSBoxes chuyên cung cấp các VM được dựng sẵn, có nhiều tùy chọn cho các Linux Distro khác nhau, tôi sử dụng Ubuntu cho Lab của mình.
2. Cài đặt các thư viện cần thiết
Thực hiện cập nhật hệ thống và cài đặt các công cụ sau:
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install build-essential libemu-dev graphviz gdb python libgraphviz-dev cmake libboost-dev libqt5xmlpatterns5-dev qtbase5-dev qt5-default libqt5svg5-dev libcapstone-dev pkg-config hexedit nasm git libtool autoconf -y
Trong đó có một số công cụ (gói) quan trọng như:
GDB: Một debugger mạnh mẽ - Trùm cuối Debugger trên Linux.HexEdit: Một Hex Editor cũng "tạm được" trên Linux.Nasm: Netwide Assembler, một trình dịch cho Assembly trên Linux.Qt Libs: Là các thư viện cần thiết để biên dịch EDB - Một Debugger "đẹp trai" trên Linux. Các bài sau sẽ thực hành với cả GDB và EDB.
3. Cài đặt EDB Debugger
Trước tiên hãy nói một chút về GNU Debugger (GDB), nó là một công cụ debug rất mạnh và nổi tiếng trên Linux. Nó sử dụng giao diện dòng lệnh (CLI) nên có thể khó sử dụng với nhiều người. GDB cũng có thể sử dụng kèm với các Plugin như PEDA, GEF hoặc PWNDBG. Các Plugin này được "giang hồ mạng" sử dụng rất nhiều và nó sẽ "giúp cuộc sống trở lên dễ dàng hơn!". Cài đặt các Plugin này cũng đơn giản, nếu muốn cài cả 3 thì xem bài này của Andreas Pogiatzis.
Có một công cụ khác với chức năng tương tự GDB nhưng có giao diện đồ họa và đi kèm với nhiều Plugins hỗ trợ trong quá trình phân tích đó là Evan Teran's EDB Debugger (EDB). EDB được ví như là OllyDbg cho Linux. Hiện tại EDB đã có phiên bản v1.3.0 (thời điểm viết bài), tuy nhiên môi trường tôi đang sử dụng ở đây là Ubuntu 16.04 LTS, một số thư viện đã cũ và không còn tương thích. Để khắc phục vấn đề này tôi sẽ sử dụng EDB v1.1.0. Bạn đọc nếu sử dụng phiên bản Ubuntu mới hơn thì cứ EDB bản mới nhất mà cài. Tiến hành clone source và biên dịch EDB như sau:
$ cd ~/bac
$ git clone --recursive https://github.com/eteran/edb-debugger.git --branch 1.1.0
$ cd ~/bac/edb-debugger
$ mkdir build
$ cd build
$ cmake ..
$ make
Quá trình này sẽ biên dịch EDB và các Plugins đi kèm, sau khi biên dịch thì bộ công cụ của chúng ta sẽ nằm trong thư mục build, bây giờ hãy tạo một Symbolic link:
$ sudo ln -s ~/bac/edb-debugger/build/edb /usr/local/bin/
Khởi chạy công cụ và đây là giao diện:
Sau khi hoàn tất các bước trên, hãy snapshot lại máy ảo. Bước này quan trọng vì trong quá trình phân tích các chương trình độc hại đôi khi ta cần quay lại trạng thái "sạch" của máy ảo phân tích.