调试仅作为服务运行的恶意软件

逆向工程 视窗 恶意软件 调试器 联网
2021-07-03 03:05:04

我正在尝试调试一个恶意软件样本,该样本作为服务安装到系统中,然后仅当它作为服务启动时才会启动。其他功能在没有服务启动的情况下仍然可用,例如以不同的名称配置或安装。

我试图在恶意软件作为服务启动后立即捕获它发送和接收的网络通信。如果我使用 Immunity 附加到正在运行的服务/进程,它已经发送并接收了网络数据包,而我已经错过了它对它们所做的事情。如果我尝试以任何其他方式启动它,我会收到以下错误:ERROR_FAILED_SERVICE_CONTROLLER_CONNECT(00000427)。

有没有其他方法可以解决这个问题?或者一些解决方法?我对此很陌生,所以我肯定会遗漏一些明显的东西。

4个回答

您可以使用Image File Execution Options注册表项来指定调试器,该调试器将在可执行文件启动时自动启动。

您也可以随时EB FE在入口点或稍后的某个地方执行修补无限循环 ( )的古老技巧这将允许您在闲暇时附加,恢复修补的字节并恢复执行。

听起来您在谈论 Windows 服务。在这种情况下,我不确定如何调试这些。也许你可以想出如何让它恢复为一个普通的应用程序,但这又是不可能的。

我认为这将解决您的数据包监控问题。WireShark 不同,它允许您监控每个进程的数据包SmartSniff也应该能够完成这项工作。不确定,但您可能必须添加 process 列,因为默认情况下它可能不会显示。

MicroSoft Network Monitor理论上应该是最好的,因为它将与操作系统最集成。并且可以访问更多信息,这是像 Wireshark 这样更便携的工具所没有的。

这里有几个很好的答案,Igor 发布的答案非常适合在服务实际启动之前对其进行调试。我想贡献的一个见解是查看恶意软件,看看是否有任何线程被创建来保存您希望查看的功能。

在我的分析中,我经常处理作为服务运行的恶意软件,但与其在服务被调用时启动调试器需要经历的一些麻烦,我经常有幸查看恶意软件在处理服务启动的初始标准后分拆的主线程。一旦我找到“主”线程(假设它存在并且是独立的),我将只在 Olly 中加载 DLL/EXE,在线程开始时设置我的新源并继续我的调试。

一天结束,它实际上只是一种不同的方法,但如果情况出现,则可能需要考虑。

我想在这里分开问题:

1.如何调试服务: Igor的回答涵盖了它。基本 - 您可以使用您熟悉的任何调试器。

2. 如何捕获恶意软件的网络流量(作为服务运行): cb88 的回答涵盖了它。任何能够捕获服务通信的网络嗅探器。从服务启动捕获流量:

  • 停止服务

  • 启用网络嗅探器

  • 启动服务