木马服务启动技术之svchost巧妙利用

2024-03-17 1,049 0

1. 什么是svchost

svchost.exe是一个属于微软Windows操作系统的系统程序,这个程序对系统的正常运行非常重要。windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot%system32”目录下,它属于共享进程。

随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。svchost通过系统服务在注册表中设置的参数知道系统服务该调用哪个动态链接库。

由于svchost.exe为微软自带的白名单程序,因此备受黑客喜爱。不仅能够达到规避防御的效果同时对于windows系统的svchost服务机制不熟的人来说,在主机排查侧可以做到很好的隐蔽不被发现。

2. 进程和文件中的svchost

进程列表中的svchost文件。一个svchost对应一个服务,他只是一个宿主程序,仅用来启动加载注册表中的dll。实现服务开机自启动。

木马服务启动技术之svchost巧妙利用插图

文件夹中的svchost文件,位于系统目录下。

木马服务启动技术之svchost巧妙利用插图1

3. 注册表中看服务

查看本地所有的服务可以通过”services.msc”进行查看,也可以借助其他pe辅助工具进行查看,以下我使用的是processhacker展示出来的所有服务。

木马服务启动技术之svchost巧妙利用插图2

注册表可以理解为本地的数据库,把所有的相关操作进行记录以及关联。通过注册表的形式来观察下服务的展示状态。”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”如下图所示:

木马服务启动技术之svchost巧妙利用插图3

使用Svchost启动服务,svchost启动的服务在netsvcs列表内,里面记录的均为服务名称。”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost ”

木马服务启动技术之svchost巧妙利用插图4

4. 实战-svchost服务连接dll文件

这里拿RasMan服务名称定位具体链接库文件为例来进行实战演示。

首先确定服务名称,其次查看对应的命令参数,是否符合svchost启动服务的标准条件,即svchost.exe -k netsvcs。

木马服务启动技术之svchost巧妙利用插图5

接下来打开注册表,进入”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”内,并找到RasMan。或者直接进入”计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan”。

随后便可以在下图看到具体的文件路径以及启动参数,便可以直接定位到该svchost服务链接的文件。

木马服务启动技术之svchost巧妙利用插图6

5. 实战-手动注册svchost服务

为了更好的理解svchost注册服务启动的原理,在这里进行一遍手动注册实战。

5.1注册一个服务

注册服务的主要目的为,将目标dll写入到注册表服务中,同时又将启动路径参数嵌入其中(svchost -k netsvcs),便于下一步svchost寻找服务名称。

打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,创建子项,名称随意,我这里起为TestSvchost。

木马服务启动技术之svchost巧妙利用插图7

随后在这一项内设置子健值。

以下为子健项值的字段名称及其含义。

名称  含义 
Description  服务描述
DisplayName  服务名
ErrorControl  1:记录错误日志
ImagePath  %systemRoot%\system32\svchost.exe -k netsvcs-k netsvcs表示这个服务是属于netsvcs服务组
ObjectName LocalSystem:表示本地登录
Start 2:表示系统启动时由服务控制管理器自动启动该服务程序
Type 0x10:表示运行于独立进程的服务程序

木马服务启动技术之svchost巧妙利用插图8

随后在子项中再添加一项,名称为Parameters,用于存放要注册的dll路径。

木马服务启动技术之svchost巧妙利用插图9

这里要注意,要链接的dll文件必须要满足导出函数包含servicemain,否则无法链接。

木马服务启动技术之svchost巧妙利用插图10

5.2 服务加入svchost服务组netsvcs

完成5.1步骤后,需要将注册到注册表中的服务名加入到svchost服务组netsvcs中,才可以实现svchost启动服务自启动功能。

打开注册表,找到”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost”,随后打开子项netsvcs。注意这里以右键修改的形式打开。随后将5.1设置的服务名称追加即可。

木马服务启动技术之svchost巧妙利用插图11

添加完后在服务列表中观察到,该服务已添加,并实现了对应svchost 服务启动。

木马服务启动技术之svchost巧妙利用插图12


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论