“解除”恶意软件自我保护机制的平均时间是多少?

逆向工程 反调试 恶意软件
2021-06-29 15:46:54

我一直想知道需要多少时间才能摆脱所有反虚拟机/加密/保护器/反调试的东西(不分析实际的有效负载和目的),尤其是如果您每天都在处理恶意软件?我绝对想从 AV 行业专家那里得到答案。

3个回答

我现在在 AV 行业工作了大约一年,我可以告诉你我是如何看待这一点的。摆脱某些反倒车技术的速度有多快取决于您的经验以及学习和理解尽可能多的这些技术的意愿。

我主要使用 PE 打包程序,一开始我在删除最简单的技术(如IsDebuggerPresent() )时遇到了问题见鬼,我什至记得有一次我花了一整天的时间来研究带有陷阱标志校验和检查技术反调试

今天,当我有了一些经验时,我会很快地绕过这些常见的防倒车技术。您可以在工具插件的帮助下实现这一点(如Olly Advanced for Ollydbg)。关于这个主题的最好的(如果不是最好的)资源之一是 Peter Ferries 的书The Ultimate Anti-Debugging Reference每当我遇到一些新的反倒车技术时,我都会查阅那本书,最后找到了解决方案。

总而言之,我不是该领域的专家,一开始需要相当长的时间来完成工作,但在所有事情上都是这样,对吗?通过足够的练习和经验,我相信您可以在几分钟内避免各种反倒车技术,但我希望一些更有经验的用户会支持我。

基于几年的表演和教学(德国波恩大学的恶意软件训练)以恶意软件分析为重点的逆向工程,我主要尝试跳过任何“简单”的垫脚石(检测分析环境的恶意软件能力,无论是 VM , 调试器, ...) 进入恶意软件的解压状态,然后在 IDA 中集中分析并调试它。

准备您自己的工具,例如设置合理比例(核心、硬盘空间、RAM)和隐藏(移除 VM 碎片)的 VM,正如 CrazyFrog 所解释的那样,VM 可以自动在该领域承载大量负载。我想我很少花费超过几分钟(即打包程序的本机运行时)来达到解包状态。

为了理解这些保护和检测,否则为Peter Ferrie 的参考+1 如果你想在调试器中逐步完成这些,你可以使用我对这些的defanged开源实现上述来源未涵盖的较新检测方法经常涉及使用 Windows Management Instrumentation (WMI)。通常要实现相同的特征推导,从而得出您在分析环境中的结论。

如果样本本身有保护,它通常是加密的字符串或混淆的 API 调用(想到 Andromeda、Dridex、VM-Zeus),很少像Fobber 中看到的那样只执行代码的解密在这种情况下,它显然成为分析本身的一部分,或者至少是一个前阶段。

大多数(如果不是全部)反VM、反调试技巧都是众所周知的,并且可以使用现有的调试器插件(例如ScyllaHide)轻松绕过。一些 AV 公司有专门的工具(模拟器、沙箱、具有自动转储和重建功能的虚拟机)。如果您手动执行此操作,平均时间取决于样本混淆您的经验和完成工作所需的工具。