更多全球网络安全资讯尽在邑安全
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文件,位于系统目录下。
3. 注册表中看服务
查看本地所有的服务可以通过”services.msc”进行查看,也可以借助其他pe辅助工具进行查看,以下我使用的是processhacker展示出来的所有服务。
注册表可以理解为本地的数据库,把所有的相关操作进行记录以及关联。通过注册表的形式来观察下服务的展示状态。”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”如下图所示:
使用Svchost启动服务,svchost启动的服务在netsvcs列表内,里面记录的均为服务名称。”HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost ”
4. 实战-svchost服务连接dll文件
这里拿RasMan服务名称定位具体链接库文件为例来进行实战演示。
首先确定服务名称,其次查看对应的命令参数,是否符合svchost启动服务的标准条件,即svchost.exe -k netsvcs。
接下来打开注册表,进入”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”内,并找到RasMan。或者直接进入”计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasMan”。
随后便可以在下图看到具体的文件路径以及启动参数,便可以直接定位到该svchost服务链接的文件。
5. 实战-手动注册svchost服务
为了更好的理解svchost注册服务启动的原理,在这里进行一遍手动注册实战。
5.1注册一个服务
注册服务的主要目的为,将目标dll写入到注册表服务中,同时又将启动路径参数嵌入其中(svchost -k netsvcs),便于下一步svchost寻找服务名称。
打开注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,创建子项,名称随意,我这里起为TestSvchost。
随后在这一项内设置子健值。
以下为子健项值的字段名称及其含义。
名称 | 含义 |
Description | 服务描述 |
DisplayName | 服务名 |
ErrorControl | 1:记录错误日志 |
ImagePath | %systemRoot%system32svchost.exe -k netsvcs-k netsvcs表示这个服务是属于netsvcs服务组 |
ObjectName | LocalSystem:表示本地登录 |
Start | 2:表示系统启动时由服务控制管理器自动启动该服务程序 |
Type | 0x10:表示运行于独立进程的服务程序 |
随后在子项中再添加一项,名称为Parameters,用于存放要注册的dll路径。
这里要注意,要链接的dll文件必须要满足导出函数包含servicemain,否则无法链接。
5.2 服务加入svchost服务组netsvcs
完成5.1步骤后,需要将注册到注册表中的服务名加入到svchost服务组netsvcs中,才可以实现svchost启动服务自启动功能。
打开注册表,找到”HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost”,随后打开子项netsvcs。注意这里以右键修改的形式打开。随后将5.1设置的服务名称追加即可。
添加完后在服务列表中观察到,该服务已添加,并实现了对应svchost 服务启动。
原文来自: freebuf.com
原文链接: https://www.freebuf.com/articles/system/390246.html
原文始发于微信公众号(邑安全):木马服务启动技术之svchost巧妙利用
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论