简单的活着

nitro配置总结

Posted on By Mista Cai

nitro

nitro需要libvmi获取更多信息,libvmi的Python binding,因此涉及到github上面两个项目:

nitro

  • 现版本
    • linux:4.9.0
    • qemu:2.8.0
  • 目标版本
    • linux:4.10.2
    • qemu:2.6.0

Using

对应的KVM/QEMU,recall, libvmi配置之后,执行main.py,参数为libvirt的domain name,用来绑定QEMU pid,

./main win7

VM启动方式

Virsh

连接hypervisor

virsh connect [*hostname-or-URI*] [--readonly]

  • virsh connect qemu:///system,作为root用户连入
  • qemu:///session,作为用户连入

qemu-system-x86_64

怎么查看用该命令启动的虚拟机?

ps -ef | grep qemu-system-x86_64

显示qemu-system-x86_64启动的所有进程,进程号以及启动参数。

Setup

1. python3、pip3

2. docopt

pip install docopt==0.6.2

注意:这里需要pip/pip2安装docopt,因为是rekall需要使用。包括后续依赖future,需要pip/pip2安装future==0.16.0

3.libvirt

xml配置文件tests/下有模板。虚拟机名字要和nitro/libvmi.conf里面的一致。

python binding

sudo apt install python3-libvirt

virsh创建虚拟机

virsh define win7x86.xml
virsh start domain
virsh reboot domain
virsh shutdown domain
gvncviewer 127.0.0.1:0

重点配置好xml文件就可以了。

4. Ioctl-opt Python3

pip3 install ioctl-opt==1.1

5.libvmi python bindings

后面会有vmi_request_page_fault,这个结果python binding里面有,nitro/libvmi里面没有

libvmi

  • 依赖
sudo apt install cmake flex bison libglib2.0-dev libvirt-dev libjson-c-dev libyajl-dev check
  • 编译安装
mkdir build
cd build
cmake ..
make
sudo ldconfig
sudo make install
  • 配置nitro/libvmi.conf, 配置要监控的虚拟机名字
win7x64 {
    ostype      = "Windows";
    win_tasks   = 0x188;
    win_pdbase  = 0x28;
    win_pid     = 0x180;
    win_pname   = 0x2e0;
}

libvmi/python

  • 依赖
pip3 install pkgconfig==1.0.0
pip3 install cffi
pip3 install future==0.16.0
  • 编译安装
python3 setup.py build
sudo python3 setup.py install

rekall

由于作者作者脚本引用的是Python2版本的rekall,所以要使用pip/pip2安装。

python 2.7需要安装libffi-dev, 其余版本2.x, 3.x 已经默认安装python-dev/python3-dev

sudo apt install libffi-dev
sudo pip3 install --upgrade setuptools pip wheel
sudo pip3 install rekall

安装完rekall之后一定先运行一下rekall,如果运行成功再运行nitro。

其余的缺啥补啥。

TypeError

sudo python3 main.py win7x64

如果带上--nobackend一切正常,没有的话会出现问题

TypeError: NewZipFile() takes exactly 3 arguments (2 given)

TypeError:XXX takes exactly 3 arguments (2 given)

由于aff4升级出现的问题,rekall使用的PyAFF4==0.26.post6

pip install PyAFF4==0.26.post6