-
-
[翻译] IDA Pro DDR插件详解
-
发表于:
2021-1-13 10:30
6995
-
IDA中的静态逆向工程通常会成问题。某些值是在运行时计算的,这使得很难理解某个基本块在做什么。如果您尝试通过调试一个恶意软件来执行动态分析,则该恶意软件通常会检测到并开始以不同的方式运行。思科Talos推出了动态数据解析器(DDR),该插件是IDA的插件,可简化反向工程恶意软件。DDR正在使用检测技术在运行时从样本中解析动态值。
DDR具有如图所示客户端/服务器体系结构。DDR IDA插件和DDR服务器是Python脚本。DynamoRio客户端是用C编写的DLL,它由DynamoRIO工具drrun.exe执行。该DLL使用检测技术在运行时分析和监视恶意软件样本。IDA插件运行在IDA中,是前端;DDR服务器运行在恶意代码机器上,是服务端。通常,所有分析过程都是通过插件控制的。后端DynamoRIO客户端分析完成后,将结果发送回插件。我们选择JSON作为此数据的格式,以使其更易于故障排除并易于由第三方Python脚本解析。
从理论上讲,可以在同一台PC上运行插件和服务器,但是就执行恶意软件示例而言,强烈建议在单独的计算机上执行此操作。在大多数情况下,可以从IDA中的DDR菜单开始分析以收集动态值。下图显示了通用的工作流程。但是,如果要在无Python的系统上执行恶意软件,则也可以手动执行分析并单独运行DynamoRio客户端。
一旦在IDA日志输出窗口中看到插件已成功接收到JSON文件,就可以选择“获取值...”或“获取内存...”菜单之一来解析动态值或操作数。
安装要求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。
将归档文件提取到“恶意软件PC”上。最后,从归档文件根目录执行DDR_INSTALLER.py脚本。该脚本不会影响您现有的Python环境,它将为DDR创建专用的虚拟Python环境。它还没有任何非标准的Python模块依赖项。脚本在运行时会下载所有依赖项。它还会将DynamoRio框架安装到您的DDR安装目录中。该脚本将指导您完成DDR服务器和DDR IDA插件的整个安装过程。仔细阅读脚本的输出,其中包含许多其他提示,这些提示对于安装非常重要。
运行DDR_INSTALLER.py脚本后按照提示进行安装。
安装过程中服务端IP使用“恶意软件PC”的IP。
安装完成后会要求启动ddr_server.py即服务端。
在DDR目录将ddr_plugin/ddr和ddr_plugin/ddr_plugin.py放到IDA插件目录。
开启IDA后即可使用DDR进行跟踪。
将plugins文件夹内文件放到IDA插件目录内。
修改ddr_config.json,修改WEBSERVER为服务端IP(“恶意软件PC”);修改CA_CERT为DDR证书绝对路径;修改DDR_WEBAPI_KEY和服务端key一致;将服务端生成的ddr_server.crt证书放到IDA插件目录的ddr目录内。
eg:-a 1 -b “test string”
光标所在处设置为断点,只运行断点之前命令。
光标选定位置设置为本次追踪起始执行地址,类似于设定执行esp。
光标选定基本块,将其添加到列表,在后续跟踪时可以选定跟踪基本块列表。
选定地址范围进行追踪。
对标记所在的整个基本块进行追踪。
对标记的基本块列表进行跟踪。可通过显示基本块列表进行查看。
对当前代码段进行完整跟踪。
相对于完整跟踪。
选定缓冲区大小。
将设置的值转储到缓冲区文件。
将缓冲区文件保存到文件。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2021-2-4 15:32
被kanxue编辑
,原因: