Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1509609
  • 博文数量: 228
  • 博客积分: 1698
  • 博客等级: 上尉
  • 技术积分: 3241
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-24 21:49
个人简介

Linux

文章分类

全部博文(228)

文章存档

2017年(1)

2016年(43)

2015年(102)

2014年(44)

2013年(5)

2012年(30)

2011年(3)

分类: LINUX

2014-07-23 18:28:40

为了说明DECAF是如何启用和解决各种二进制分析问题的,我们展示了三种插件。通过hook配置文件中指定的APIs的入口和出口,API Tracer可以跟踪指定进程以及其子进程的API的调用。Keylogger Detector支持在系统层面跟踪键盘操作的污点传播,并穿过用户态的进程来检查键盘记录器。Instruction Tracer记录了指定上下文中指令执行(比如用户进程或者一个内核模块)。这些插件基本都是平台无关的。

API tracer
API tracer是一个简单的插件,通过一个包含一系列APIs和它们参数的配置文件,监控程序的执行并打印这些APIs的执行过程到一个跟踪文件中。按照下面方式使用API Tracer:

1. 编译DECAF时启用vmi
./confiure --enable-vmi
make
2. 编译API Tracer插件
./configure --decaf-path=/home/decaf  #进入插件的源码目录执行,指定DECAF的根目录路径,假设为/home/decaf
make
3. 使用DECAF来启动Guest操作系统并加载apitracer的插件
cd /home/decaf/i386-softmmu/
./qemu-system-i386 -monitor stdio -m 512 -netdev user,id=mynet -device rtl8139,netdev=mynet /opt/kvm/winxp.img
load_plugin path/to/apitracer/plugin/apitracer.so
4. 设置需要跟踪的进程
trace_by_name
5. 在虚拟机中,开启需要跟踪的进程
6. 停止跟踪
trace_stop

Keylogger Detector
利用DECAF的VMI、污点分析和事件驱动的机制,Keylogger Detector能识别键盘记录器并分析它的行为。通过向客户系统发送设置污点的键盘操作,并观察是否有任何未信任的代码模块访问这个污点信息,我们能检测键盘记录的行为。这个简单插件将污点的击键信息传给客户系统并通过注册到READ_TAINTMEM_CB DECAF_KEYSTROKE_CB 的回调事件来识别出那个模块读取了污点击键信息。为了捕获详细的隐秘行为,Key-logger Detector通过注册DECAF_BLOCK_END回调来执行影子调用栈。当回调被触发时,我们检查当前的指令,如果是个调用指令,我们通过VMI和将当前的程序计数器压进影子调用栈来获取对应的函数信息。如果是个返回指令并且与影子调用栈的入口配对,我们将其从栈中弹出。当DECAF_READ_TAINTMEM_CB 回调被调用了,我们通过函数调用栈获取读取被污染的击键信息的那些进程、模块以及函数。

按照如步骤使用键盘记录器检测插件:
1. 编译DECAF时,启用tcg和vmi
./configure --enable-tcg-taint  --enable-vmi
make

2. 编译键盘记录器检测插件
./configure --decaf-path=/home/decaf #decaf的根目录
make

3. 使用DECAF来启用客户系统并加载键盘记录器检测插件
./qemu-system-i386 -monitor -stdio -m 512 -netdev user,id=mynet -device rtl8139,netdev=mynet /opt/kvm/winxp.img
load_plugin path/to/keylogger/plugin/keylogger.so

4. 启用键盘记录检测,可以使用"help"命令来检测被DECAF和键盘记录检测插件支持的命令
enable_key_logger_check LOCATION_OF_LOG_FILE

5. 开启指针污点跟踪, 客户系统需要将每个击键扫描码转换为ASCII码。这个转换是个表查找操作,因此我们需要开启指针污点跟踪。为了避免跟踪过多的污点信息,我们只开启指针读取的污点跟踪。
enable_tainting
taint_pointers on off

6. 启用可疑程序,并且向记事本中输入一个污染的击键操作
taint_sendkey c

7. 当你在记事本中看到'c'时,你可以关闭污点模块的检测
disable_keylogger_check

8. 现在检查日志看看键盘操作是不是被可疑程序获取过,如果获取过,它就是一个键盘记录器的恶意软件


阅读(1832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~