2009年3月4日 星期三

一个后门程序/服务EventService的反组译

此一后门程序的发现,起因于在system32目录下发现keylogger,将使用者按键纪录于檔案中且约每分钟存檔一次。三个檔案中,两个由于为EXE檔形式,立刻可以由杀毒软件清除。另一个较为顽强,经sysinternals下载的Filemon.exe发现竟是由svchost写入,记下其pid,经sysinternals下载的Procmon.exe了解其行为,一直不断写入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventService ,甚至还有这么一段叙述:
"Description"="使 Internet 的文件能被基于 Windows 的程序创建、访问和修改。如果此服务被终止,将会失去这些功能。如果此服务被禁用,任何依赖它的服务将无法启动"
由于它写入 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventService\parameters] 中的资料漏了马脚,了解到真实的dll文件名称,上网查找发现没有什么有意义的资料,可能是随机编成,重启电脑进入保护模式,在此服务未启动的情况下加以删除。
此一由svchost调用的服务,姑且称之为abcdef.ghi,以ida pro开启。由于是个服务,故选dll模式

其exports画面如下

以servicemain及svchost为关键字查找,发现 http://www.3800hk.com/news/w44/136568.html 一文的说明,发现其描述符合观察到的行为。

那么svchost如何知道某一服务是由哪个动态链接库负责呢?这不是由服务的可执行程序路径中的参数部分提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键其中的ServiceDll表明该服务由哪个动态链接库负责。并且所有这些服务动态链接库都必须要导出一个ServiceMain()函数,用来处理服务任务。

沒有留言:

張貼留言