我是一名安全人员,我已经对此进行了广泛的研究,此时我正在寻找下一步该去哪里的指导。
另外,对不起,很长的帖子,我把重要的部分加粗了。
我试图在高层次上做的事情很简单: 我试图将一些数据输入到程序中,并“跟踪”这些数据,并跟踪它是如何处理的,以及它在哪里结束。
例如,如果我将我的登录凭据输入到 FileZilla,我想跟踪访问的每个内存引用,并启动跟踪以跟踪该数据的去向、发送到哪些库,如果我什至可以将其关联到网络数据包。
现在我专注于 Windows 平台,我认为我的主要问题归结为: 是否有任何好的 API 可以远程控制理解 Windows 窗体和系统库的调试器?
以下是我迄今为止发现的关键属性:
- 这种分析技术的名称是“动态污点分析”
- 这将需要调试器或分析器
- Inspect.exe 是查找接受输入的 Windows UI 元素的有用工具
- Windows 自动化框架通常可能有用
- 自动化调试器似乎很痛苦。IDebugClient 接口允许更丰富的数据,但像 IDAPro 甚至 CheatEngine 这样的调试器具有更好的内存分析实用程序
- 我将需要放置内存断点,并跟踪与输入关联的引用和寄存器。
以下是我尝试过的一系列工具:
我玩过以下所有工具:WinDBG(很棒的工具)、IDA Pro、CheatEngine、x64dbg、vdb(python 调试器)、Intel 的 PIN、Valgrind 等...
接下来是一些动态污染分析工具,但它们不支持检测 .NET 组件或 Windows 调试框架提供的其他便利,这些便利由 Inspect.exe 等实用程序提供:
然后我尝试使用 IDebugClient 接口编写我自己的 C# 程序,但是它的文档记录很差,我能找到的最好的项目来自这个家伙,并且已经 3 岁了: C# app to act like WINDBG's "step into" feature
我愿意为适合此用例的现有项目贡献代码,但此时我什至不知道从哪里开始。
我觉得作为一个整体的动态程序分析和调试工具可以使用一些爱......我觉得有点卡住了,不知道从哪里开始。有很多不同的工具和方法可以解决这个问题,而所有这些工具和方法都以某种方式缺乏另一种。
无论如何,我感谢任何方向或指导。如果你能做到这一点,谢谢!!
-戴夫