作者:张兵在江湖 | 来源:互联网 | 2023-09-23 10:03
思科Talos团队发布了PyREBox,一个用Python脚本编写的基于QEMU的逆向分析沙箱的开源工具。代码覆盖率模块静态分析可以提供完整的代码视图,但无法预知某段代码是否会执行
思科Talos团队发布了PyREBox,一个用Python脚本编写的基于QEMU的逆向分析沙箱的开源工具。
代码覆盖率模块
静态分析可以提供完整的代码视图,但无法预知某段代码是否会执行,因此需要与动态分析进行结合,通过追踪文件的执行,获得其执行路径。
有两种方法,一是插桩记录程序运行指令的地址,二是设置断点来跟踪执行。该模块是通过跟踪QEMU转换块的执行情况实现的。
该模块生成两个不同的输出文件:一个二进制跟踪文件和一个文本摘要。二进制跟踪文件可以导入IDA,使用不同的颜色对已执行的基本块和未执行的基本块进行标记。文本摘要文件提供了对已执行区域的粗粒度总结,当执行从一个虚拟地址描述符(VAD,windows内部结构,以树形记录不同内存区域)区域转移到另一个VAD区域时,会显示执行转换。
API跟踪模块
跟踪恶意软件调用普通的windows DLL来理解样本的行为。
该模块有两种模式,精简模式和完整模式。如果启用了精简模式,它只会记录API函数调用,但是它不会检查函数调用的参数,而完整模式则会在每次发生API函数调用时检查堆栈和寄存器。完整模式会利用包含有关API参数数量、名称和数据类型信息的数据库。完整模式下生成的分析信息可以写在文本文件中,也可以保存在二进制文件中,然后在IDA中加载,以便将文本信息可视化。一旦这些信息被导入到IDA中,就有两种方法来可视化它:一个是具有搜索功能的专用选项卡;一个是针对每个跟踪呼叫显示的上下文菜单。
内存监控模块
在执行样本期间,该组件会跟踪不同的内存相关事件,包括:
- 进程的创建;
- 远程进程内存读写;
- 内存共享(共享内存区域);
- 文件读写;
- 文件映射到内存中;·
- 内存分配;
- 内存访问权限的更改;
分析人员可以根据监控的事件来了解样本的内存相关行为,重点关注这些缓冲区的解压缩、过程创建和过程注入。
该模块最终输出两份报告,第一份报告包含所有与上述类别相关的事件,而第二个报告则只会对所收集到的信息进行简单摘要,这些信息包括:
- 开始和注入过程;
- 由这些进程加载的模块/ DLL;
- 每个进程的VAD区域,包括heuristics(是指在入侵检测中使用AI思想),那些包含潜在注入代码、异常权限以及访问权限的更改;
- 内存映射(映射文件和内存共享);
- 内存注入;
- 文件操作;
摘要信息可以有助于分析人员对恶意软件引导程序的快速理解。
许多恶意软件家族都包含必须部署在系统内存中的组件,即会对系统内存进行修改。
内存自动转储模块
可配置,可以转储进程内存,包括主模块、加载的DLL以及其他内存区域(如堆、栈和分配的缓冲区)。转储内存的时间则必须由分析人员进行选择,并在主JSON配置文件中配置。可配置的选项包括:
- 在进程退出时转储内存;
- 在调用某个API函数时转储内存;
- 在执行某个地址时转储内存;
一旦内存转储和有关进程的内存区域的相关信息被创建,我们就可以在IDA中手动加载经过转储的片段,并对正在进行的进程进行静态分析。也就是特定分析这些转储的片段,看看它们能搞什么鬼。