当前位置:网络安全 > 【WIN】svchost与共享进程服务

【WIN】svchost与共享进程服务

  • 发布:2023-10-05 08:06

查看注册表中的系统服务文件夹,可以发现部分服务的ImagePath显示的是svchost.exe的路径,如下图:

svchost.exe是Microsoft Windows操作系统中的系统文件。微软官方对此的解释是:

svchost.exe 是从动态链接库 (DLL) 运行的服务的通用主机进程名称。该程序对于系统的正常运行非常重要,不能终止。很多服务都是通过注入这个程序来启动的,所以这个文件会有多个进程。

从系统服务的角度来看,svchost.exe是共享进程服务的宿主进程。 Windows系统服务分为独立进程和共享进程。随着系统内置服务的增多,Windows将很多系统服务变成了共享进程,统一由svchost.exe来启动。

Svchost本身仅作为服务主机,不实现任何服务功能。 需要Svchost启动的服务都是以动态链接库(DLL)的形式实现的。安装这些服务时,将服务的可执行程序指向svchost。当启动这些服务时,svchost会加载相应服务的DLL文件。

从攻击者的角度来看,攻击者可能会在黑色的dll文件中包含自己的恶意代码,然后通过svchost.exe加载自己的dll文件来达到自己的目的。这种攻击方式的最大优点是恶意代码没有自己独立的进程,更难被用户或其他系统主体检测到。 从这个角度来说,svchost是一个藏匿邪恶的好地方。

显然,对于这种服务,我们需要分析的对象应该是服务启动时加载的dll文件,而不是ImagePath中的svchost.exe。服务加载的dll文件的路径可以在服务的子键Parameters\\ServiceDll中查看,如下图:

从上面的分析可以看出,如果我们查询的服务是通过svchost加载的,我们需要添加分支语句,分析服务运行时加载的dll文件。查询dll文件的具体方法是进入子项Parameters\\ServiceDll,查看dll文件所在路径。伪代码如下:

if(wcssstr(keyData,L".exe") != ? //新建分支语句 if(wcssstr(keyData, L"svchost" ){  //这是一个共享进程服务,该服务的真实信息存储在它加载的dll文件中 //转到子键Parameters\\ServiceDllRegOpenKeyEx( HKEY_LOCAL_MACHINE,ultraPath+"参数",0,KEY_READ ,&hkey内) ; //转到子项参数RegQueryValueEx(hkeyInner,_T() “服务DLL” ),NULL,&dwType,(BYTE*) &keyData, &dwSize);//查看ServiceDll中描述的dll文件路径//查询ServiceDll的路径、修改时间、数字签名等信息服务加载的dll文件 }
}

相关文章