我正在尝试调试作为服务安装到系统的恶意软件示例,然后仅当它作为服务启动时才会启动。如果没有启动服务,其他功能仍然可用,例如使用其他名称进行配置或安装。

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

还有另一种方法可以解决这个问题吗?还是一些解决方法?我对此很陌生,所以我肯定会缺少一些显而易见的内容。

#1 楼

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

您也可以始终执行古老的技巧,在该处修补无限循环(EB FE)。入口点或以后的某个地方。这将使您可以随意附加,恢复修补的字节并恢复执行。

评论


如果您使用第二种方法(即使用0xEB 0x FE将入口点修补到无限跳转,则您可能还需要调整ServicesPipeTimeout值。如果服务管理器未在默认超时值30秒内启动,则服务管理器将超时并终止该服务

– blabb
13年5月8日在4:44

我不能编辑我的评论以添加更多信息吗?它说注释只能在5分钟内编辑?也按回车并不会转到下面的行,而是激活添加注释按钮:(在Windows Vista和更高版本中,由于会话0隔离,ImageFileExecution选项将不起作用,您可能需要使用windbg设置远程调试[url] blogs.msdn.com/b/ cjacks / archive / 2006/12/12 /…

– blabb
13年5月8日在5:49



#2 楼

听起来您正在谈论Windows服务。在这种情况下,我不确定如何调试它们。也许您可以弄清楚如何使其恢复为正常的应用程序,但又可能无法实现。

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

理论上,MicroSoft Network Monitor应该是最好的,因为它将与OS集成度最高。并且可以访问更多信息,而像Wireshark这样的更便携式的工具则不会。

#3 楼

这里有几个很好的答案,而Igor发布的答案非常适合在服务真正启动之前对其进行调试。我想提供的一项见解是调查恶意软件,以查看是否创建了任何包含您要检查的功能的线程。

在我的分析中,我经常会处理作为服务运行的恶意软件,但我无需经历调用服务时启动调试器所需要的麻烦,通常会在恶意软件中寻找一个主线程,该恶意软件会在处理了服务启动的初始条件后被剥离。一旦找到“ main”线程,(假设它存在并且是独立的),我将在Olly中加载DLL / EXE,在线程启动时设置新的源,然后继续进行调试。

结束时,这实际上只是一种不同的方法,但是如果情况本身出现,则可能要考虑一些问题。

#4 楼

我想在这里分开提问:

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

2。如何捕获恶意软件(作为服务运行)的网络流量:cb88的答案已涵盖该恶意软件。任何能够捕获服务通信的网络嗅探器。要捕获来自服务启动的流量:


停止服务
启用网络嗅探器
启动服务


评论


因为两个答案都是正确的=都投票赞成。

–丹尼斯·拉斯科夫(Denis Laskov)
13年5月8日在6:01