gpt4 book ai didi

c# - 通过应用程序代码和系统库跟踪数据输入

转载 作者:可可西里 更新时间:2023-11-01 10:42:44 25 4
gpt4 key购买 nike

我是一名安全人员,我对此进行了广泛的研究,目前我正在寻找下一步的指导。

另外,很抱歉发了这么长的帖子,我把重要的部分加粗了。

我在高层次上尝试做的事情很简单:我正在尝试将一些数据输入到程序中,然后“跟踪”这些数据,并跟踪它的处理方式和最终位置。

例如,如果我将我的登录凭据输入到 FileZilla,我想跟踪访问的每个内存引用,并启动跟踪以跟踪数据的去向、它被发送到哪些库,以及如果我可以关联的话奖励积分它归结为网络数据包。

现在我专注于 Windows 平台,我认为我的主要问题归结为:是否有任何好的 API 可以远程控制理解 Windows 窗体和系统库的调试器?

以下是我目前发现的关键属性:

  • 这种分析技术的名称是“动态污点分析”
  • 这将需要调试器或分析器
  • Inspect.exe 是一个有用的工具,可用于查找接受输入的 Windows UI 元素
  • 一般来说,Windows 自动化框架可能会有用
  • 自动化调试器似乎很痛苦。 IDebugClient 接口(interface)允许提供更丰富的数据,但 IDAPro 甚至 CheatEngine 等调试器具有更好的内存分析实用程序
  • 我将需要放置内存断点,并跟踪与输入关联的引用和寄存器。

以下是我试用过的工具合集:

我玩过以下所有工具:WinDBG(很棒的工具)、IDA Pro、CheatEngine、x64dbg、vdb(python 调试器)、Intel 的 PIN、Valgrind 等...

接下来是一些动态污点分析工具,但它们不支持检测 .NET 组件或 Windows 调试框架由 Inspect.exe 等实用程序 native 提供的其他便利:

然后我尝试使用 IDebugClient 接口(interface)编写我自己的 C# 程序,但它的文档很少,我能找到的最好的项目来自这个家伙,已经 3 年了: C# app to act like WINDBG's "step into" feature

我愿意为适合此用例的现有项目贡献代码,但此时我什至不知道从哪里开始。

我觉得作为一个整体的动态程序分析和调试工具可以使用一些爱...我觉得有点卡住了,不知道从这里转移到哪里。有许多不同的工具和方法可以解决这个问题,而且它们都在某种程度上有所欠缺。

无论如何,我感谢任何指导或指导。如果你做到了这一点,谢谢!!

-戴夫

最佳答案

如果您坚持在运行时执行此操作,Valgrind 或 Pin 可能是您的最佳选择。据我了解(从未使用过),您可以配置这些工具以任意方式解释每条机器指令。您希望通过机器指令跟踪数据流以跟踪受污染的数据(读取此类数据,然后写入寄存器或条件代码位)。一个复杂的问题可能是将违规指令的来源追溯到程序元素(DLL?链接模块?命名子例程),以便您可以适本地投诉。

就个人而言,这是一项您可能会成功完成的任务。

这应该适用于应用程序。

我怀疑您的问题之一是跟踪操作系统中的位置。尽管适用相同的原则,但这要困难得多;您的困难在于让操作系统供应商让您跟踪在操作系统中执行的指令。

作为运行时分析这样做有一个缺点,即如果恶意应用程序没有对您的特定执行做任何坏事,您将不会发现任何问题。这是动态分析的典型缺点。

您可以考虑使用经典编译器技术在源代码级别跟踪数据。这要求您可以访问所有可能涉及的源代码(如果您的应用程序依赖于各种各样的库,这实际上非常困难),您拥有可以通过源模块解析和跟踪数据流的工具,并且这些工具相互交流不同的语言(汇编程序、C、Java、SQL、HTML,甚至 CSS...)。

作为静态分析,无论发生哪种执行,这都有机会检测到不需要的数据流。图灵限制意味着您可能无法检测到所有此类问题。这就是静态分析的缺点。

构建您自己的工具,甚至集成个人工具来执行此操作可能超出您作为个人可以合理完成的范围。您需要找到构建此类工具的统一框架。 [检查我的简历]。

关于c# - 通过应用程序代码和系统库跟踪数据输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42798523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com