APP下载

二进制代码分析实验平台搭建

2015-04-17高敏芬

实验室研究与探索 2015年5期
关键词:二进制代码信息安全

高敏芬, 刘 露

(南开大学 a. 数学科学学院; b. 计算机与控制工程学院, 天津 300071)



二进制代码分析实验平台搭建

高敏芬a, 刘 露b

(南开大学 a. 数学科学学院; b. 计算机与控制工程学院, 天津 300071)

二进制代码分析实验平台是南开大学信息安全专业“恶意代码分析”课程基本的实验环境。本文就如何在实验室中搭建基于BitBlaze的二进制代码分析实验平台进行了详细的阐述,包括实验平台的架构、实验平台安装环境部署、实验平台的安装、实验平台的使用流程等内容,以期对与二进制代码分析相关的实验环境的搭建和使用起到很好的参考作用。

实验平台搭建; 二进制代码分析; BitBlaze; 信息安全; 恶意代码

0 引 言

在恶意代码攻击中,攻击者通常不是对源代码直接进行攻击,二进制代码才是受攻击系统真正被动执行的代码形式,因此,分析二进制代码才能得到恶意代码真实的行为信息。 “恶意代码分析”课程面对的样本就是二进制代码。但由于二进制代码通常比较复杂,而且缺乏高级语言的语义和结构信息,因此其分析是一件极具挑战性的工作。

目前,常见的二进制代码分析工具主要有IDA PRO、OLLYDBG[1]和Pin[2]。IDA PRO是一个静态反汇编工具,OLLYDBG是一个动态追踪工具,而Pin是一种分析程序动态特征的工具。BitBlaze[3-4]是由美国加州大学伯克利分校发起的一个开源项目,它提供了一种全新的通过二进制代码分析解决计算机安全问题的方法。BitBlaze支持精确的分析,提供了一种可扩展的架构,而且结合了静态和动态分析技术以及程序验证技术用以满足各种安全应用的普遍需求。BitBlaze可以把二进制代码中与安全相关的部分直接提取出来,从而提供了一种本质性的、基于根源的计算机安全问题的解决方案。

较强的实践动手能力,是信息安全专业本科学生具备的基本素质之一,而实验教学是提高学生实践动手能力的重要环节。本文所介绍的二进制代码分析实验平台是南开大学信息安全专业学生“恶意代码分析”课程的实验环境[5-6],是在我们前期的研究和实践工作的基础上形成的具体方案[7-9]。通过该实验平台的搭建和使用,学生可以深入认识二进制代码的构造原理和基本特征,能够学会使用先进的分析工具对二进制代码进行动态的和静态的分析,提高对程序的分析能力,巩固课堂上所学的知识。同时,也期望学生通过在实验平台上的实践活动,能够产生认知二进制代码分析的兴趣和激情,从而进一步探索恶意代码的分析方法和技术。

1 实验平台的架构与配置

这里所介绍的二进制代码分析实验平台是由BitBlaze项目扩展而成的,图1给出了本实验平台的基本架构。实验平台如虚线内部部分所示,主要由QEMU虚拟操作系统、TEMU[10]动态分析组件和VINE[11]静态分析组件构成。二进制代码是实验平台的分析对象,实验前会将二进制代码输入QEMU虚拟环境中去;二进制代码在实验平台运行期间可能会与外网或者用户终端发生交互。二进制文件的整个执行过程将由动态组件TEMU监控下来,同时提取执行过程中的系统信息,获得二进制代码的执行轨迹。实验平台生成的分析文件将用于后期从恶意代码的行为、语法、语义、协议等方面进行深层次分析[12-15]。

图1 二进制代码分析实验平台架构

实验平台的硬件环境最低要求为:内存2G,硬盘100G,操作系统为Ubuntu9.X/Ubuntu10.04/Ubuntu10.10。系统所需的其他软件支持有llconf-0.4.5、kqemu和gcc-3.4。实验平台源代码为TEMU源码压缩包(temu.tar.gz)和VINE源码压缩包(vine.tar.gz)。

为了方便实验平台的安装,在实验之前将终端后台的安装流程和启动流程编写为自动化Bash脚本,其中TEMU的安装脚本为install-temu.sh,VINE的安装脚本为install-vine.sh。平台中虚拟监控系统的启动脚本为start-up.sh。

2 实验平台的安装流程

二进制代码分析实验平台的安装,大致包括如下4个步骤:

(1) 执行TEMU和VINE的安装脚本。运行自动安装脚本install-temu.sh和install-vine.sh。

(2) 制作和安装实验平台所需虚拟监控操作系统。

① 制作系统映像文件:

qemu-img create -f qcow2 winxp.qcow2 20G

创建格式为qcow2、容量为20G的硬盘映像文件winxp.qcow2。

② 安装Windows XP(需要说明的是,操作系统要求是微软官方的版本,否则可能会安装失败):

qemu -hda winxp.qcow2 -cdrom /root/winxp.iso -boot d

其中,hda参数表示是硬盘映像,cdrom参数表示从光盘安装,后跟iso所在的路径,boot选d表明从光盘引导。

③ 用TEMU启动系统映像:

temu -monitor stdio -kernel-kqemu winxp.qcow2

启动后安装TEMU的驱动,在虚拟机中将TEMU源码中的testdrv/driver目录下的testdrv.sys驱动文件拷贝至%SYSTEM32%drivers目录下。然后,双击testdrv.reg文件将内容拷贝至注册表来配置驱动程序,它将会在下次启动后加载。若要确认该驱动是否工作正常,在TEMU运行的目录中寻找一个名为guest.log的创建日志文件,观察其是否包含一些TEMU收集的数据。

(3) 协议配置与共享目录修改。

① 配置SMB文件共享协议:

sudo apt-get install uml-utilities

sudo /usr/sbin/tunctl -b user -t tap0

sudo chmod 666 /dev/net/tun

sudo apt-get install samba

sudo apt-get install smbfs

sudo gedit /etc/samba/smb.conf

② 修改共享目录,在该文件末尾添加如下代码:

[qemu]

comment = Windows file space

path =/文件共享目录

read only =no

public =yes

sudo apt-get install samba-common-bin

testparm /etc/samba/smb.conf

sudo /etc/init.d/smbd restart

(4) 配置虚拟系统的网络连接。配置虚拟系统的网络连接,可以通过如下方式实现:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j MASQUERADE

3 实验平台的使用流程

利用实验平台对二进制代码进行分析,可以依据下述步骤进行:

第1步:运行实验平台启动脚本,QEMU虚拟系统将会启动:

bash start-up.sh

第2步:系统启动之后,根据实验要求装载并启动动态监控插件。比如,要装载的是tracecap插件:

(qemu) load_plugin /home/zwang/temu-tags-0.2.4/tracecap/tracecap.so

将会显示如下的装载信息:

general/trace_only_after_first_taint is enabled.

**general/log_external_calls is disabled.

general/write_ops_at_insn_end is disabled.

general/save_state_at_trace_stop is disabled.

tracing/tracing_table_lookup is enabled.

tracing/tracing_tainted_only is disabled.

tracing/tracing_kernel is disabled.

tracing/tracing_kernel_tainted is disabled.

tracing/tracing_kernel_partial is disabled.

**network/ignore_dns is disabled.

Enabled: 0x00 Proto: 0x00 Sport: 0 Dport: 0 Src: 0.0.0.0 Dst: 0.0.0.0

Loading plugin options from: /home/temu-tags-0.2.4/tracecap/ini/hook_plugin.ini

Loading plugins from: /home/temu-tags-0.2.4/shared/hooks/hook_plugins

/home/temu-tags-0.2.4/tracecap/tracecap.so is loaded successfully!

第3步:根据实验需要设置监控配置项。比如,开启污点标记:

(qemu) taint_nic 1

第4步:开始监控实验所分析的程序进程,并指明生成文件:

(qemu) trace ProcessID "/home/name.trace"

此时终端将会显示监控信息:

Waiting for process *** to start

(qemu) PID: 1234 CR3:0x0a025000

这一过程所需时间通常与所分析的程序有关,程序结构复杂,通常所需时间会比较长。如果要通过标记键盘终端输入对二进制代码的影响,需要通过taint_sendkey命令来输入数据:

(qemu) taint_sendkey 5 1001

Tainting Keystroke: 9 00000001

第5步:程序运行结束后,输入停止监控指令,并停止和卸载插件。

(qemu) trace_stop

(qemu) disable_emulation

(qemu) unload_plug

完成上述几个步骤之后,就可以使用静态组件VINE将trace文件转换为汇编指令文件进行分析。分析实验平台生成的文件包括执行轨迹文件(trace)、进程空间加载进的动态模块地址(functions)、程序运行过程中调用的API函数序列(calls)、系统接收到的网络数据包(netlog)等。

4 结 语

从南开大学信息安全专业实验室的实验条件出发,结合实践教学的具体要求,在我们已有工作基础[7-9]上,探讨了二进制代码分析平台的构建问题,包括实验平台的架构、配置、安装和使用等问题,以期对相关的二进制代码分析的实验环境的构建和使用起到一定的指导意义。该二进制代码分析实验平台能够对不同类型的二进制代码进行全方位的分析,目前我们所搭建的二进制代码分析实验平台已应用在僵尸网络的命令与控制协议研究和代码混淆技术的效果分析中[16]。

二进制代码分析平台为信息安全专业学生提供了一个贴近国际流行新技术的学习和研究的实践平台,有益于学生接触最前沿的信息安全技术;同时,也为理论学习与实践之间的有机结合提供了良好的教学场景,有利于激发学生的学习兴趣。从搭建分析平台并使用它进行恶意代码分析的过程中,学生可以找到自己的感兴趣的内容并进行深入、自主的学习,提高自主创新的能力。

[1] DynamoRio: Dynamic Instrumentation Tool Platform. http://code.google.com/p/dynamorio/ [EB/OL] [2013-12-29]

[2] Pin - A Dynamic Binary Instrumentation Tool[EB/OL]. http://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool. [2013-11-28].

[3] Song D, Brumley D, Yin H, et al. BitBlaze: A new approach to computer security via binary analysis[C]// 4thInternational Conference on Information Systems Security (ICISS 2008),Hyderabad, India: Springer, 2008:1-25.

[4] Newsome J, Song D. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software[C]//2005 Network and Distributed System Security Symposium(NDSS 2005), San Diego, USA: The Internet Society, 2005:1-17.

[5] 王 志, 贾春福. “恶意代码及其防治技术”课程的实验环境构建与实验内容设计[J], 计算机教育, 2009(18): 140-142.

[6] 郭凤海,贾春福. 信息安全开放实验探讨[J]. 计算机教育, 2010(10):119-122.

[7] 高敏芬,郭凤海. 恶意代码防治技术课程的实践和实验室的有效管理[J]. 实验室科学, 2010(2):141-144.

[8] 高敏芬,王 志. 二进制代码分析与反分析技术开放实验的探索[J]. 实验室科学, 2011(3):154-156.

[9] 高敏芬, 王 志. 二进制代码分析实验平台设计[J]. 实验室科学, 2011(6):121-123.

[10] YIN H, SONG D. TEMU: The BitBlaze Dynamic Analysis Component[EB/OL]. http://bitblaze.cs.berkeley.edu/temu.html. [2014-3-1].

[11] YIN H, SONG D. Vine: The BitBlaze Static Analysis Component[EB/OL]. http://bitblaze.cs.berkeley.edu/vine.html. [2014-3-1].

[12] Cui W, Kannan J, Wang H. Discoverer: Automatic protocol reverse engineering from network traces[C]//16th USENIX Security, Boston, MA, USA: USENIX Association, 2007: 1-14.

[13] 应凌云, 杨 轶, 冯登国, 等. 恶意软件网络协议的语法和行为语义分析方法[J]. 软件学报, 2011, 22(7): 1676-1689.

[14] Juan C, Pongsin P, Christian K,etal. Dispatcher: Enabling active botnet infiltration using automatic protocol reverse-engineering [C]//16thACM Conference on Computer and Communication Security(CCS 2009). Chicago, IL, USA: ACM Press, 2009: 621-634.

[15] Cho C, Babic D, Shin E,etal. Inference and analysis of formal models of botnet command and control protocols[C] //17thACM Conference on Computer and Communication Security(CCS 2010). Chicago, IL, USA: ACM Press,2010: 426-439.

[16] 王 志, 蔡亚运, 刘 露, 等. 基于覆盖率分析的僵尸网络控制命令发掘方法[J].通信学报, 2014, 35(1): 156-166.

Constructing Experimental Platform of Binary Code Analysis

GAOMin-fena,LIULub

(a. College of Mathematical Science; b. College of Computer and Control, Nankai University, Tianjin 300071, China)

Binary code analysis experimental platform is the experimental environment for the undergraduate course of Malicious Code Analysis of Information Security in Nankai University. This paper introduces how to construct a binary code analysis experimental platform based on BitBlaze, a binary code analysis tool. It includes the architecture of experimental platform, the deployment of installation environment, the installation of the platform, and the process using the platform. This paper may be helpful for those people who are constructing and using binary code analysis experimental platform.

experimental platform construction; binary code analysis; BitBlaze; information security; malicious code

2014-12-12

天津自然科学基金项目(2013JCYBJ00300);南开大学2012年本科教育教学改革项目(教通字[2013]17号)

高敏芬(1968-),女,天津人,硕士,高级工程师;主要从事计算机实验教学管理工作。 E-mail:gaomf@nankai.edu.cn

TP 392

A

1006-7167(2015)05-0116-00

猜你喜欢

二进制代码信息安全
用二进制解一道高中数学联赛数论题
有趣的进度
二进制在竞赛题中的应用
信息安全专业人才培养探索与实践
创世代码
创世代码
创世代码
创世代码
保护信息安全要滴水不漏
高校信息安全防护