# Create Profile/Symbol For Volatility ## Volatility 2 Đối với vol2 thì mình sẽ cần tạo profile Linux/MacOS .. vì mặc định nó chỉ hỗ trợ cho windows thôi : ![image](https://hackmd.io/_uploads/HkDJdpw9T.png) Lúc đầu các bạn có thể check ở [đây](https://github.com/volatilityfoundation/profiles/tree/master/) thử xem có profile mà mình cần tìm hay không. Nếu không thì có thể follow theo các bước dưới đây để tạo một profile : **Bước 1 :** Xác định hệ điều hành cũng như version của file memory ```$ python2 vol.py -f <file> imageinfo``` Ở đây mình lấy ví dụ là ubuntu 20.04.6 **Bước 2 :** Tạo máy ảo ubuntu trùng với phiên bản của file memory, các bước tạo máy ảo thì các bạn có thể xem video hướng dẫn trên youtube rồi làm theo. Sau khi tạo xong máy ảo thì check lại bằng ```uname -a``` ![image](https://hackmd.io/_uploads/SJPJ3pw5a.png) Vì mình đặt tên máy là 'Vy' nên nó hiện là Linux Vy :face_palm: **Bước 3 :** ```$ sudo apt install linux-image-5.15.0-92-generic linux-headers-5.15.0-92-generic``` Ở chỗ linux-image và linux-headers thì các bạn thay bằng cái linux-image và linux-headers của cái máy ảo mà vừa tạo và hiện đang dùng. Sau đó tải build-essential và dwarfdump: ```$ sudo apt install build-essential dwarfdump``` Nếu các bạn có sẵn vol rồi thì bỏ qua bước tải vol, còn hong thì dùng command này : ```$ git clone --depth=1 https://github.com/volatilityfoundation/volatility``` **Bước 4 :** Di chuyển đến thư mục linux : ```$ cd volatility/tools/linux``` ```$ make``` Ở bước này thì mình bị lỗi :< ![image](https://hackmd.io/_uploads/rJeyJRvqa.png) Lỗi (missing MODULE_LICENSE()) cho thấy rằng có một module kernel không có (MODULE_LICENSE()). Module này cần phải có một license được chỉ định trong mã nguồn của nó để tránh lỗi khi sử dụng trình biên dịch kernel. Cách để fix là thêm dòng ```MODULE_LICENSE("GPL");``` bên dưới ```#include <linux/module.h>```. Chi tiết cách fix lỗi ```make```: ```$ nano module.c``` ![image](https://hackmd.io/_uploads/Bkr-WAvqa.png) Sau đó dùng command ```make``` một lần nữa : ![image](https://hackmd.io/_uploads/H1V_WCwqT.png) Như này là ```make``` thành công. **Bước 5 :** ```$ sudo zip Ubuntu2004.zip /home/phgvee/volatility/tools/linux/module.dwarf /boot/System.map-5.15.0-92-generic``` Tạo một file zip chứa module.dwarf và System.map-5.15.0-92-generic, sau đó chuyển tệp zip này vào ```<volatility>/plugins/overlays/linux/```. ```$ cp Ubuntu2004.zip <volatility>/plugins/overlays/linux/ ``` Giờ mình sẽ check lại xem đã có profile ubuntu 20.04 chưa : ![image](https://hackmd.io/_uploads/HyQTMCPca.png) Như vậy là mình đã tạo profile cho vol2 thành công. ## Volatility 3 **Bước 1 :** Xác định hệ điều hành, version, kernel của symbol mà mình cần tạo . ```python3 vol.py -f <file> banners.Banners``` **Bước 2:** Tạo máy ảo với hệ điều hành cũng như kernel giống với cái mà mình đã xác định ở bước 1 ![image](https://hackmd.io/_uploads/B12KCXF56.png) Ở đây mình lấy ví dụ là Debian 12 ( 6.1.0-17-amd64 ) **Bước 3 :** Tải dwarf2json về máy ảo, tool này được dùng để chuyển đổi file kernel debug ( ở dạng DWARF) sang dạng json. ![image](https://hackmd.io/_uploads/BytIkNtqp.png) Nếu máy không có sẵn ```go``` thì các bạn dùng command ```sudo apt install golang```. **Bước 4 :** Tải gói debug kernel cho phiên bản mà mình đang sử dụng, trước khi tải thì các bạn nên search google để tìm đúng tên. ```sudo apt installlinux-image-6.1.0-17-rt-amd64-dbg``` Sau khi tải thì nó sẽ được lưu ở : ![image](https://hackmd.io/_uploads/ryCRXNF9T.png) **Bước 5:** Chạy tool dwarf2json để thực hiện việc chuyển đổi. ![image](https://hackmd.io/_uploads/HJIHxNFqa.png) ![image](https://hackmd.io/_uploads/B1qHwCF9p.png) **Bước 6:** Copy file json vào thư mục /volatility/symbols ```cp vmlinux-6.1.0-17-rt-amd64.json /volatility/symbols ```.