temu对进程的分析是建立在虚拟机上的。temu工具依赖于qemu,qemu是模拟处理器,安装temu时qemu就已经安装好了。
使用temu时,首先要制作一个映像,然后通过temu启动该映像进入虚拟机。需要注意的是,如果你在实际ubuntu操作系统上安装qemu模拟器,需要在bios开启Virtualization功能。如果是在vmware中的虚拟机安装qemu模拟器,则需要修改虚拟机设置,如下图,勾选Intel VT-x/EPT或AMD-V/RVI(V):
制作映像
1.制作文件格式为qcow2的映像。
qemu-img create -f qcow2 ubuntu9.04_32.qcow2 10G
这样就创建了一个格式为qcow2,容量为10G的硬盘映像文件ubuntu9.04_32.qcow2。容量大小可以自己设定。qcow2 镜像格式是 QEMU模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。
2.然后安装ubuntu,选择你想安装的操作系统的ios文件,本文以ubuntu9.04 32位系统为例。注意操作系统要求微软官方的版本,否则可能会安装失败。
qemu-system-x86_64 -hda ubuntu9.04_32.qcow2 -cdrom '~/image/ubuntu-12.04.5-desktop-amd64.iso' -boot d -m 102
-boot d:从光盘引导
-cdrom:从光盘安装,后面跟iso所在的路径
-hda:硬盘映像
3.用qemu启动该映像。
qemu-system-i386 -hda ubuntu_9.04_32.qcow2 -boot c -show-cursor -enable-kvm -usbdevice tablet
-show-cursor:虚拟机中的鼠标显示
-enable-kvm:减少启动时间
-usbdevice tablet:解决鼠标偏移
-boot c:从磁盘引导
使用temu
1.首先使用temu启动之前制作的映像
./tracecap/temu -monitor stdio ubuntu9.04_32.qcow2 -show-cursor -usbdevice tablet
-enable-kvm 选项不可用
2.在guest ubuntu9.04系统中创建foo.c文件
$ cat foo.c
#include <stdio.h>
int main(int argc, char **argv)
{
int x;
scanf("%d", &x);
if (x != 5)
printf("Hello\n");
return 0;
}
$ gcc foo.c -o foo
$ ./foo
动态分析foo进程
1.加载temu插件
(qemu):load_plugin tracecap/tracecap.so (qemu):enable_emulation
2.找到你想进行trace的进程id
tracebyname foo “/tmp/foo.trace”
3.在guest系统(ubuntu9.04)执行程序: ./foo
4.指定输入污染
(qemu):taint_sendkey 5 1001 //给guest os中的进程发送出入变量5 (qemu):taint_sendkey ret 1001 //给guest os中的进程发送回车键
5.结束跟踪和污染
(qemu):trace_stop (qemu):unload_plugin