BitBlaze(四) - 动态分析组件TEMU

4 TEMU:动态分析组件

这一部分主要介绍TEMU,BItBlaze平台的动态分析组件,描述其提取操作系统级语义的组件,执行系统全局的动态污点分析,以及它的插件和实现。

4.1 TEMU概述

TEMU是一个基于全系统仿真器QEMU开发的全系统的动态二进制分析平台。在这个仿真器上运行一个完整的系统(包括操作系统和应用程序),并对相关二进制代码的执行进行细粒度的观察。TEMU是基于一下考量而采用全系统方法的:

-许多分析都需要对二进制代码进行细粒度的分析(如:指令级别)。通过动态的分析模拟代码,全系统模拟器确保了细粒度的分析。

-全系统仿真器为我们一个整个系统的视图。全系统的视图使我们能够分析操作系统内核以及多个进程间的交互。另一方面,许多其他的二进制分析工具(如,Valgrind,DynamoRIO,Pin)只提供了一个局部的视图(如,一个单用户模式进程的视图)。这对于分析恶意代码更为重要,因为许多攻击涉及到多个进程,而且诸如rootkits的内核攻击变得越来越普遍。

-全系统仿真器有效地隔离开了分析组件和待分析代码。因此,待分析代码更难干扰分析结果。

TEMU的设计得益于一下难点和考量:

-全系统仿真器只为我们提供硬件级别的视图,然而我们更希望得到一个软件级别的视图以获取有意义的结果。因此,我们需要一个从仿真系统中提取操作系统级语义的机制。例如,我们需要知道那个进程正在执行,一条指令来自那个模块。

-另外,许多分析过程需要推理特定的数据对其数据源的依赖性以及它如何在系统中传播。全系统的动态污点分析可以提供这项功能。

-我们需要提供一个涉及良好的编程接口(如API)以使用户能在此基础上开发他们自己的插件。

基于这些考量,我们设计的TEMU架构如图5所示。SemantisExtractor用于从Emulated System中提取操作系统级语义信息。Taint Analysis Engine用于进行动态污点分析。TEMU API可以方便用户开发自己的插件(TEMU plugins)。TEMU是在Linux系统下实现的,它可用于分析Windows 2000,Windows XP和Linux系统中的二进制代码。下面将分别介绍三个组成部分。


4.2 语义提取器

语义提取器用于提取仿真系统的操作系统级语义信息,包括进程,模块,线程,以及符号信息。

进程和模块信息。我们需要知道当前执行的指令来自哪个进程,哪个线程以及哪个模块。某些情况下,指令可能是在堆上动态生成和执行的。

在内存中保存地址和模块的映射需要客户操作系统的信息。Windows和Linux采用了两种不同的解决方案来提取进程和模块信息。

Windows系统中,我们开发了一个称作module notifier的内核模块。通过把此模块加载到客户操作系统中来收集内存映射信息。Module notifier注册了两个回叫例程。第一个回叫例程进程创建或删除是被调用。第二个回叫例程在一个新模块加载时被调用,它会收集新模块在虚拟内存占用的地址范围。另外,module notifier获得每个进程的CR3寄存器的值。由于CR3寄存器保存着当前进程页表的物理地址,因而它们是各不相同的。上述所用信息都通过一个预定义的I/O端口传递给TEMU。

对于Linux系统,我们可以直接从外部读取进程和模块信息,因为我们知道相关的内核数据结构,而且相关符号的地址也被导出到system.map文件中。为了在执行时保存进程和模块信息,我们钩住了几个内核函数,如do_fork和do_exec。

线程信息。在Windows系统中,需要获取当前线程信息以支持对多线程应用程序和操作系统内核的分析。Windows中当前线程的数据结构映射到了一个众所周知的虚拟地址处,因而这比较直观。目前,还没有支持Linux的版本,可能后续版本会实现这一功能。

符号信息。对于PE(Windows)格式的二进制文件,也要分析它们的PE头并提取导出符号和偏移。确定了所有模块的位置后,我们就可以通过基址加偏移计算出每个符号的绝对地址。这一特征是非常有用的,因为所有的windows API和内核API都是由其宿主模块导出的。符号信息传递了重要的语义信息,因为从一个函数名,我们可以得知它的用途,输入参数,输出参数以及返回值。符号信息也使监视一个函数变得更加方便-只需要给出模块名和函数名,而不用指明其实际地址。TEMU映射到其实际地址。

目前,此功能只支持PE文件。后续版本会支持ELF(Linux)二进制文件。

4.3 污点分析引擎

我们的动态污点分析在本质上与先前的一些系统是相似的。但是我们的目的是支持多种不同的应用,因而我们的设计和实现是最完整的。例如,以往的方案要么只支持单进程,要么不支持内存交换和磁盘。

影子内存。影子内存用来存储物理内存、CPU寄存器、硬盘和网络接口缓冲区每个字节的污点状态。每个标记的字节都与一个存储污点源和其他TEMU插件用到的信息的小型数据结构相关联。影子内存组织成一个类似页表的结构以提高内存利用率。通过对硬盘使用影子内存,系统可以在标记数据被换出后继续跟踪它,也可以跟踪存入文件后又被读入的标记数据。

污点源。一个TEMU插件负责把污点源导入系统。TEMU从硬件开始支持污点输入,比如键盘,网络接口,硬盘。TEMU也可以标记高级抽象的数据对象(如,函数调用的输出,特定应用程序或操作系统内核的数据结构)。

污点传播。当数据源被标记后,污点分析引擎会监控操作这个数据的每条CPU指令和DMA操作以判定污点的转播过程。污点分析引擎通过数据转移指令、DMA操作、算术操作和查表来传播污点。有些指令(如,xor eax,eax)产生的结果与操作数无关,污点分析引擎并不传播这些指令中的污点。

注意,TEMU插件可能根据其需求遵守不同的策略。例如,对某些程序,不需要传播查表产生的污点。因此,在污点传播期间,污点分析引擎让TEMU插件决定采用何种策略。

这种设计使TEMU更加灵活。TEMU插件可以指定不同的污点源,为每个标记的字节保存任意的记录,跟踪多个污点源,采用多种策略。

4.4 TEMU API和插件

为了便于用户使用TEMU提供的功能,我们定义了一系列函数和回叫。利用这些接口,用户可以开发自己的插件并在运行时加载到TEMU来进行分析。目前,TEMU提供以下功能:

-查询和设置内存区和CPU寄存器的值。

-查询和设置内存或寄存器的污点信息。

-在一个函数进入和退出时设置一个钩子,删除钩子。TEMU插件可以使用此接口监控用户和内核函数。

-查询操作系统级语义信息,如当前进程,模块,线程。

-保存和加载仿真系统状态。这个接口用于实现不同机器状态间的转换以实现更高效的分析。例如,此接口使多路搜索更加高效,因为我们可以保存分支点的状态,然后搜索一条路径,之后可以加载先前保存的分支点再执行另一条分支,而不必重新执行程序。

TEMU为多种事件定义了回叫,包括(1)基本块地进入和退出;(2)一条指令的进入和退出;(3)污点传播时;(4)内存被读或写时;(5)寄存器读或写时;(6)诸如网络和磁盘输入输出的硬件事件。

下列TEMU插件是使用这些接口和回叫实现的:

-Panorama

-HookFinder

-Renovo:从加壳的可执行文件中提取未加壳的代码的插件。

-Polyglot

-Tracecap:记录指令执行踪迹的插件。

-MineSweeper

-BitScope

-HookScout

4.5 TEMU的实现

TEMU由C和C++实现。由于C的高效性,性能要求高的代码由C实现,而面向分析的代码由C++编写,这样能很好的利用C++ STL中的抽象数据类型和类型检查。例如,污点分析引擎把代码片段插入到QEMU微操作中以检查和传播污点信息。由于污点分析对性能要求很高,因此它用C语言实现。另一方面,我们用C++ STL中的string,list,map等抽象数据类型实现语义提取器,使映射保持在操作系统级视图和硬件视图之间。TEMUAPI由C定义。这使得用户可以在开发自己的插件时既可以使用C,也可以使用C++。TEMU内核由约37000行代码组成,不包括QEMU的代码(约306000行)。TEMU插件包含约134000行代码。
​影刀RPA之TEMU某多多跨境电商自动上传商品实拍图 影刀之TEMU自动化上传实拍图是一款专为TEMU平台卖家设计的自动化工具,旨在简化和加速商品实拍图的上传流程。通过该软件,用户可以自定义上传图片,并实现批量上传,从而提高工作效率,减少手动操作的繁琐。影刀之TEMU自动化上传实拍图软件是TEMU卖家的得力助手,它通过自动化的图片上传功能,简化了商品展示的更新流程,提高了工作效率。立即体验影刀之TEMU自动化上传实拍图软件,让您的商品展示更加专业和高效。 阅读详情

相关推荐

影刀----Temu自动化RPA

附上影刀下载和教学链接Temu自动化RPA的主要功能。

2301_78828806的博客 1866

按键精灵脚本分享 temu发货台

AutoHotkey提供了一种类似于编程语言的脚本语言,允许用户编写自定义的脚本来模拟键盘和鼠标操作,处理文本、文件和窗口操作等。

qq_30361651的博客 4168

Bitblaze环境搭建之TEMU/Tracecap的编译和安装

ubuntu12.04下TEMU的安装 The following script shows the steps for building and installing TEMU and the other software it depends on: (This is also found as docs/install-temu-release.sh in the TEMU

JochenZou的专栏 3884

使用codeblock开发temu插件

使用codeblock开发temu插件     temu插件默认是使用makefile进行编译的,但我比较习惯采用集成开发平台进行开发,所以打算将temu插件的开发移植到codeblock上。具体步骤如下: 第一步:新建工程,在Category中选择Console,在下面的列表中选择Shared library,因为temu插件本身就是一个共享库文件; 第二步:添加temu插件需要的头文件和

Jiao319的专栏 2700

安装bitblaze的动态分析工具temu

在ubuntu 16.04 14.04 上安装temu都未成功,在各种摸索下自己成功在ubuntu 12.04上安装temu。 实验环境 QEMU虚拟机版本:1.0Host操作系统:32位Ubuntu desktop 12.04.5Guest虚拟机操作系统:32位的Ubuntu 9.04  1.下载补丁temu-release2009-gcc4.patch 2.下载temu并解

myw_katrina的博客 1655

BitBlaze TEMU/Tracecap 在64位Ubuntu 14.04 LTS上的编译

周末安装好了Ubuntu 14.04 LTS Final Beta,也就是Beta 2,应该与发布版本非常接近了,就在这个系统上列一下步骤吧。 主要参考对象是 https://groups.google.com/forum/#!topic/bitblaze-users/QdoY9l8D-ho ,再结合一些我自己的尝试。 所有引用的文件,包括TEMU本身,都可以在 http://pan.baid

gnw的专栏 1800

TEMU:动态分析组件

TEMU:动态分析组件 TEMU是一个基于全系统仿真器QEMU开发的全系统的动态二进制分析平台。在这个仿真器上运行一个完整的系统(包括操作系统和应用程序),并对相关二进制代码的执行进行细粒度的观察。

网络安全研究 3648

TEMU源码分析

TEMU属于开源二进制分析平台Bitblaze的动态分析组件, Bitblaze项目由加州大学Berkeley分校的Dawn Song领导开发。 TEMU基于模拟器QEMU构建。由于QEMU是一个全系统的模拟器,能模拟不同的CPU架构,所以TEMU也能执行全系统的动态分析,即能追踪和分析整个guest OS的运行。理论上TEMU除了支持x86的处理器架构外,还可以支持其他的处理器架构,如Powe

1089

Bitblaze动态模块TEMU的安装

安装环境:ubuntu-11.10  安装过程 tar zxvf temu-1.0.tar.gz 解压后会得到文件夹temu-1.0 在该文件夹的docs目录下有文件install-temu-release.sh,里面提供了所有安装需要的命令 如果安装qemu的命令不能用,可以网上搜搜。 安装gcc-3.4的命令不可用,可以选择deb包安装(源码安装会折腾死人。。。)。 从http

1653

Android GWP-Asan机制详解

基本用途:GWP-ASan是一种原生内存分配器功能,在内存分配时额外记录一些信息,用于检测DOUBLE_FREE、USE_AFTER_FREE、INVALID_FREE、BUFFER_OVERFLOW、BUFFER_UNDERFLOW五种内存错误问题。

专注于系统快稳省领域 4136

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 399

BitBlaze TEMU/Tracecap 编译心得

这几天在玩BitBlaze,第一步就是把TEMU运行起来,不知是不是最近时运不济,费了好多时间才搞定,我解决的关键点是: 1. TEMU的编译里面的坑还是挺多的,不能随便来,看起来能运行起来的时候,也还可能得不到结果,生成空的trace文件。 我最终是按照 https://groups.google.com/forum/#!topic/bitblaze-users/QdoY9l8D-ho 的方

gnw的专栏 1039

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3499

关于BitBlaze的中文介绍

http://blog.csdn.net/kingzone_2008/article/details/8826445

tony的专栏 1026

ORB-SLAM3单目摄像头

home/wheeltec-client/workspace/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src目录下找到:ros_mono.cc文件,打开找到并修改成我们自己摄像头的订阅话题(usb_cam/imahe_raw)即相机设置文件,官方提供的是Asus.yaml,可以另复制命名一个文件My_camera.yaml,将里面的相机参数修改成自己标定过的参数。sudoaptinstalllibeieng3-dev#命令安装的版本是eigen。

疯狂的石头 737

EPLAN二次开发入门:Visual Studio 2019环境配置与插件调试实战

本文详细介绍了EPLAN二次开发入门的关键步骤,重点讲解如何在Visual Studio 2019中配置开发环境并进行插件调试。通过创建符合命名规范的项目、引用核心API库、实现插件接口以及使用附加进程调试等实战技巧,帮助电气工程师快速掌握EPLAN插件开发,提升自动化设计效率。

h6i7j8的博客 756

BitBlaze(二) - BitBlaze架构

2   BitBlaze二进制代码分析平台的架构 在这一节中,我们首先讨论对安全问题的二进制分析的难点,然后介绍一个满足安全应用的二进制分析平台需要的条件,最后勾勒出Bitblaze平台的架构。 2.1挑战 二进制代码分析面临几个主要挑战,有一些还是需要具体分析的。 复杂性。二进制代码分析的第一个主要难点在于二进制代码是很复杂的。二进制分析必须对这些复杂的代码进行精确的建模以保证分析的精确

__kingzone__的专栏 4121

python-pptx库中文文档及使用样例

个人使用样例及部分翻译自官方文档,并详细介绍chart的使用

4万+

BitBlaze Vine和TEMU的安装

在安装之前自然需要下载Vine和TEMU的源代码啦。Vine的官网(戳这里)和TEMU的官网(戳这里)分别提供了Vine和TEMU的源码下载。在下载完成后,下面开始Vine和TEMU的安装。   一、gcc-3.4的安装和设置 本次安装的平台是Ubuntu 12.04,使用的编译器是gcc-3.4.6。Ubuntu 12.04的默认编译器是gcc-4.6,但是TEMU安装的编译只支持gcc-

wxywang89的专栏 2157

CTFHUB------XSS反射型(WP)

文章目录前言XSS测试平台 前言 一开始我直接在上面写js脚本发现出错,最后发现只能通过下面的输入框来执行XSS测试,于是我们只能用XSS测试平台解决问题 XSS测试平台 注册一个XSS测试平台 这里随便填写 勾选默认模块就够了,点击下一步 这时会出现一个找个将代码复制 拼接到网站后缀name后面,点击send 这时平台会收到一个记录点开即可 得到flag ...

Y4tacker的博客 1万+

1.DJI-payload SDK负载开发准备和硬件连接及运行示例代码

大疆psdk开发环境

哒宰的博客 1432

《编译与反编译技术实战》——1.9 动态分析工具TEMU

本节书摘来自华章计算机《编译与反编译技术实战》一书中的第1章,第1.9节,作者 刘晓楠 陶红伟 岳峰 戴超,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.9 动态分析工具TEMU TEMU是动态分析工具BitBlaze的一个组件,是一个基于系统仿真器QEMU开发的动态二进制分析工具,以QEMU为基础运行一个完整的系统(包括操作系统和应用程序...

weixin_34199335的博客 225

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Temu 安装小结

因为学习需要,所以安装了著名的二进制分析工具

不做平凡的菜鸟 2943

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TEMU插件tracecap的编译

编译环境为Ubuntu-12.04  (32位) 编译所需文件清单: temu-1.0.tar.gz bitblaze-additional-2010-06.tar.gz temu-release2009-gcc4.patch sleuthkit-2.04.tar.gz sleuthkit-2.04.patch sleuthkit-linux3.patch llconf-0.4.6

778

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: postgresql Installation from Source Code
下一篇: BitBlaze(五) - 应用及相关工作
iteye_14608
博客等级 码龄8年 103粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值