虽然从技术角度看,我熟悉逆向工程技术,但我从未发现过一种很好的方法来接近和剖析恶意软件/外壳代码。我发现了数百篇关于分析恶意软件的技术方面的教程,但很少涉及实际的方法方法。
有几个问题可以帮助你理解我在找什么:
main开始并从那里开始扩展,还是有更好的方法?发布于 2012-09-03 21:32:23
你是如何开始分析的?你是从main开始,然后从那里展开,还是有更好的方法?
从穷尽的基本分析(包括动态和静态)开始--枚举导出、导入、函数使用、syscalls、winapi、互斥、dll依赖项、字符串,并对其进行处理。对一些基本的沙箱进行动态分析,即使是部分的和可能有些错误的,您现在可以对可执行文件/dll的一些主要功能提出几个理论。
尽管如此,如果我们谈论的是java/.net等--当然是-decompile,但是在这样的环境中使用恶意软件并没有普遍的做法。
如果您发现了一些可疑的函数调用,比如执行层试图写入一些关键的系统文件/注册表值,或者部署奇怪的命名文件--您应该感到担心(或者高兴,取决于您的帽子颜色:)。
如何找到和识别您感兴趣的重要功能或特定功能?
字符串可能是有用的-你可以发现可疑的字符串开始于cmd.exe.甚至主机名、用户密码组合、oters资源黑客和依赖步行器都是枚举导出、导入和包括资源的基本工具。最重要的功能几乎总是必须在IDA或类似的静态分析工具中进行反向工程。
如何绘制高层控制流程?
如果上述所有操作都失败了,IDA的绘图功能非常强大,并可用于此功能。
如何管理已识别的助手例程?我发现书签不够,记事本太原始了。
IDA有评论系统,着色选项,重命名等。对于整个过程,我喜欢在需要的时候把事情画出来,这是最明确的方法--即使在visio上也是如此。
如何避免在汇编代码的雪崩中迷路?
您几乎从不在asm级别上重新设计所有可用的代码。有些在动态分析上更有效率(Olly和免疫性很好--免疫性是一个带有很多曲折的Olly叉),而且您永远不需要所有的代码都被反转才能弄清楚。我在IDA中有一个颜色编码,并且不断地将已经反转的部分重命名为比'loc_402BBD‘更明智的东西。
对于处理这类任务,还有其他的窍门吗?
发布于 2012-09-02 03:03:30
我喜欢的一种方法是使用API监控软件。我最喜欢的是Rohitab (google it)的那个。当我监视软件上的API调用时,我调试了问题中的恶意软件并逐步执行。这将为您提供许多关于恶意软件正在做什么的信息。对于示例:监视FileRead和FileWrite调用会让您知道恶意软件创建或读取哪些文件。请注意,这是一种灰色盒技术,而不是纯粹的逆向工程。虽然,如果您在API监视器中发现了一些有趣的内容,那么您将知道程序集中的哪个部分是感兴趣的部分。
干杯。
发布于 2012-08-23 22:25:54
广告1:不管你是怎么开始的,它基本上是首选的东西。通常,您是从main()开始的,因为如果您考虑实际执行代码,则没有其他选项。同样重要的是,您所说的分析意味着什么,如果在这种情况下,main()是一个很好的选择。
广告2:见广告4。
广告3:如果它是在程序集中编写的,那么最常见的情况是主块一个一个地跳转到所有函数。如果它是用C编写的,也有主块以类似的方式使用,因为恶意软件通常是一小块软件。
广告4:将所有地址贴在函数名上
广告5:见广告4
广告6:您可以使用以下内容:
一般来说,最难的部分是开始,但是一旦分析了一个主要部分,那么第二个代码就更容易了。通过理解各种编译器和语言以及它们生成机器代码的方式,这要容易得多。
此外,拥有代码片段和编译器机器代码输出的知识库也很有帮助。这是一项漫长的任务,如果没有框架,这是非常困难的,特别是因为现在有太多的编译器(新版本),比以往任何时候都要困难。
https://security.stackexchange.com/questions/19139
复制相似问题