2020年IDA插件冠军-DDR插件详解

admin 2021年1月20日01:41:02评论344 views字数 3015阅读10分3秒阅读模式

1DDR概述

IDA中的静态逆向工程通常会成问题。某些值是在运行时计算的,这使得很难理解某个基本块在做什么。如果您尝试通过调试一个恶意软件来执行动态分析,则该恶意软件通常会检测到并开始以不同的方式运行。思科Talos推出了动态数据解析器(DDR),该插件是IDA的插件,可简化反向工程恶意软件。DDR正在使用检测技术在运行时从样本中解析动态值。 

2DDR架构

DDR具有如图所示客户端/服务器体系结构。DDR IDA插件和DDR服务器是Python脚本。DynamoRio客户端是用C编写的DLL,它由DynamoRIO工具drrun.exe执行。该DLL使用检测技术在运行时分析和监视恶意软件样本。IDA插件运行在IDA中,是前端;DDR服务器运行在恶意代码机器上,是服务端。通常,所有分析过程都是通过插件控制的。后端DynamoRIO客户端分析完成后,将结果发送回插件。我们选择JSON作为此数据的格式,以使其更易于故障排除并易于由第三方Python脚本解析。

2020年IDA插件冠军-DDR插件详解
从理论上讲,可以在同一台PC上运行插件和服务器,但是就执行恶意软件示例而言,强烈建议在单独的计算机上执行此操作。在大多数情况下,可以从IDA中的DDR菜单开始分析以收集动态值。下图显示了通用的工作流程。但是,如果要在无Python的系统上执行恶意软件,则也可以手动执行分析并单独运行DynamoRio客户端。

2020年IDA插件冠军-DDR插件详解

2020年IDA插件冠军-DDR插件详解
一旦在IDA日志输出窗口中看到插件已成功接收到JSON文件,就可以选择“获取值...”或“获取内存...”菜单之一来解析动态值或操作数。

3程序安装

安装要求Python模块和DynamoRIO框架。
DynamoRIO框架地址:
https://github.com/DynamoRIO/dynamorio/releases/tag/cronbuild-8.0.18547
首先,在“恶意软件PC”上安装Python 3,并确保“分析PC”上的IDA也使用Python 3设置。DDR不支持Python2。由于IDA早期版本中的错误,如果您想在IDA <7.5中运行DDR插件,则应在IDA计算机上安装Python 3.7。DDR服务器端仍可以是Python 3.8或3.7。

3.1原版安装

将归档文件提取到“恶意软件PC”上。最后,从归档文件根目录执行DDR_INSTALLER.py脚本。该脚本不会影响您现有的Python环境,它将为DDR创建专用的虚拟Python环境。它还没有任何非标准的Python模块依赖项。脚本在运行时会下载所有依赖项。它还会将DynamoRio框架安装到您的DDR安装目录中。该脚本将指导您完成DDR服务器和DDR IDA插件的整个安装过程。仔细阅读脚本的输出,其中包含许多其他提示,这些提示对于安装非常重要。
运行DDR_INSTALLER.py脚本后按照提示进行安装。

2020年IDA插件冠军-DDR插件详解
安装过程中服务端IP使用“恶意软件PC”的IP。
安装完成后会要求启动ddr_server.py即服务端。
在DDR目录将ddr_plugin/ddr和ddr_plugin/ddr_plugin.py放到IDA插件目录。
开启IDA后即可使用DDR进行跟踪。

3.2汉化版安装

将plugins文件夹内文件放到IDA插件目录内。
修改ddr_config.json,修改WEBSERVER为服务端IP(“恶意软件PC”);修改CA_CERT为DDR证书绝对路径;修改DDR_WEBAPI_KEY和服务端key一致;将服务端生成的ddr_server.crt证书放到IDA插件目录的ddr目录内。

4功能介绍

4.1查询 模块

4.1.1命令行参数

4.1.1.1设置命令行参数

eg:-a 1 -b “test string”

2020年IDA插件冠军-DDR插件详解

4.1.1.2显示命令行参数

2020年IDA插件冠军-DDR插件详解

4.1.1.3清除命令行参数

2020年IDA插件冠军-DDR插件详解

4.1.2中断地址

4.1.2.1设置中断地址

光标所在处设置为断点,只运行断点之前命令。

2020年IDA插件冠军-DDR插件详解

4.1.2.2显示中断地址

4.1.2.3清除中断地址

4.1.3起始偏移量

4.1.3.1设置起始偏移量

光标选定位置设置为本次追踪起始执行地址,类似于设定执行esp。

2020年IDA插件冠军-DDR插件详解

4.1.3.2显示起始偏移量

4.1.3.3清除起始偏移量

4.1.4基本块

4.1.4.1添加基本块到基本块列表

光标选定基本块,将其添加到列表,在后续跟踪时可以选定跟踪基本块列表。

2020年IDA插件冠军-DDR插件详解

4.1.4.2将该基本块从基本快列表删除

4.1.4.3显示基本块列表

4.1.4.4清除基本块列表

4.2跟踪 模块

4.2.1对标记的地址范围进行完整跟踪

选定地址范围进行追踪。

2020年IDA插件冠军-DDR插件详解

4.2.2对标记的基本块进行完整跟踪

对标记所在的整个基本块进行追踪。

2020年IDA插件冠军-DDR插件详解

4.2.3对基本块列表进行完整跟踪

对标记的基本块列表进行跟踪。可通过显示基本块列表进行查看。

4.2.4对段进行完整跟踪

对当前代码段进行完整跟踪。

4.2.5对段进行轻跟踪

相对于完整跟踪。

4.3转储 模块

4.3.1使用带标记的操作数来获取缓冲区大小

选定缓冲区大小。

2020年IDA插件冠军-DDR插件详解

4.3.2使用有标记的操作数来获取缓冲区地址

2020年IDA插件冠军-DDR插件详解

4.3.3使用标记的地址转储缓冲区到文件

将设置的值转储到缓冲区文件。

4.3.4执行样本和转储缓冲区

将缓冲区文件保存到文件。

4.4补丁 模块

4.4.1以NOP填充指令运行

光标选定指令在运行是以nop指令填充执行。

4.4.2在运行时切换EFLAG

切换EFlag标志,再运行补丁可执行程序,则程序会加载另一条路。如在跳转时修改SF标志,则程序会执行另一条路。
eg:程序不会执行标记块,修改SF标志位后则执行该块。

2020年IDA插件冠军-DDR插件详解

2020年IDA插件冠军-DDR插件详解

4.4.3在运行时跳过标记地址的函数

选定后标记的函数不执行,执行补丁程序后可见。
eg:跳过了func1函数。

2020年IDA插件冠军-DDR插件详解

2020年IDA插件冠军-DDR插件详解

2020年IDA插件冠军-DDR插件详解

4.4.4运行补丁可执行程序

执行创建的补丁可执行程序后。

4.5调试 模块

4.5.1创建带有bp标记地址的x64dbg脚本

创建带有断点的x64dbg脚本。

4.5.2在标记地址处创建循环及生成可执行文件

创建一个指令循环的补丁程序。
修复参考DDR服务端提示。

2020年IDA插件冠军-DDR插件详解

4.6配置 模块

4.6.1设置IDA DISASM视图的跟踪次数

4.6.2设置IDA日志窗口的跟踪次数

4.6.3设置运行时log的指令数量

4.6.4设置API超时的秒数

设置等待DDR server回复时间。

2020年IDA插件冠军-DDR插件详解
4.6.5编辑DDR API请求(仅限专家)
编辑DDR API请求格式。

2020年IDA插件冠军-DDR插件详解

4.7寄存器 模块

4.7.1在x??中获取指针的内存

光标选定地址,获取该地址条件下寄存器指针值。

4.8获取源操作数/目的操作数的值

X86体系,源操作数通常是右边,目的操作数通常是左边。如果此时源操作数/目标操作数是指,则显示值;如果是地址,则通过“获取源操作数/目标操作数中的指针值”来对整个地址值进行获取,二级指针依此类推。

2020年IDA插件冠军-DDR插件详解

4.9获取源操作数/目标操作数中的指针值

光标选定地址,获取该指针值。

2020年IDA插件冠军-DDR插件详解

4.10获取源操作数/目标操作数中的二级指针值

光标选定地址,获取二级指针值。

4.11获取源操作数/目标操作数中的指针内存

查看操作数内存值或指针值。

2020年IDA插件冠军-DDR插件详解

2020年IDA插件冠军-DDR插件详解

4.12获取源操作数/目标操作数中的二级指针内存

获取操作数二级指针内存。

4.13加载跟踪指令

加载跟踪模块执行后的结果。

4.14关闭跟踪指令

关闭跟踪模块执行后的结果。

4.15显示字符串跟踪

2020年IDA插件冠军-DDR插件详解

4.16显示API调用跟踪

2020年IDA插件冠军-DDR插件详解

4.17删除DDR注释

光标选中地址,删除DDR注释。

非常详细内容详见附件:
链接:https://pan.baidu.com/s/1m6tIkvwqfVutofZ_7O5mFQ
提取码:86kw

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年1月20日01:41:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2020年IDA插件冠军-DDR插件详解https://cn-sec.com/archives/246863.html