背景

应急响应过程中,经常会遇到很多Windows进程。了解系统文件功能、常见位置,对于提升应急响应效率很有帮助。
这里没有把这些进程、文件当成白进程、白文件的意思。请大家不要被误导

Windows常见进程

检测角度

绝大多数Windows父子进程间存在一定联系,比如某些进程只会被固定的进程拉起。以下sigma规则就是检测错误父进程的进程
https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/win_proc_wrong_parent.yml

正确的进程(二进制文件/进程树)不代表不会被用于一些恶意目的,比如用PPID伪造去伪造合法父进程,如果安全工具无法检测,那么就很容易混淆,所以检测恶意行为本身才应该是正确的方式
另外,有些工具带有一定进程特征,比如无进程参数的rundll32就是cs进程一个默认很典型的特征,除此之外还有wmi横向移动时进程参数的cmd.exe /Q /c <命令> \127.0.0.1\ADMIN$__<数字> 2>&1

System

映像路径:System不适用,因为不是从可执行文件生成
父进程:无
实例数:1
用户帐户:System
启动时间:启动时
描述:System进程负责大多数内核模式线程。
在System下运行的模块主要是驱动程序(.sys文件),但也有重要DLL以及内核文件ntoskrnl.exe

System进程.png

system进程树.png

smss.exe

映像路径:%SystemRoot%\System32\smss.exe
父进程:System
实例数:每个会话一个主实例和另一个子实例,子进程在创建会话后退出。
用户帐户:System
开始时间:在主实例的启动时间几秒内
描述:会话管理器进程负责创建新会话。第一个实例为每个新会话创建一个子实例。一旦子实例通过启动Windows子系统(csrss.exe)和wininit.exe来为会话0初始化新会话或者为会话1及更高版本的winlogon.exe初始新会话,子实例将退出。

wininit.exe

映像路径:%SystemRoot%\System32\wininit.exe
父进程:由一个退出的smss.exe实例创建,所以分析工具一般提供不了父进程名。
实例数:1
用户帐户:System
启动时间:启动时间后几秒钟内
描述:Wininit.exe在会话0中启动关键后台进程,它启动服务控制管理器(services.exe),本地安全授权进程(lsass.exe)和已启用凭据保护系统的lsaiso.exe 。注意,在Windows 10之前,本地会话管理器进程(lsm.exe)也由wininit.exe启动。从Windows10开始该功能已移动到由svchost.exe托管的服务DLL(lsm.DLL)

RuntimeBroker.exe

映像路径:%SystemRoot%\System32\RuntimeBroker.exe
父进程:svchost.exe
实例数:1或多
用户帐户:通常是已登录的用户
启动时间:启动时间变化很大
描述:RuntimeBroker.exe充当受限(UWP)应用与完整的Windows API间的代理。UWP应用与硬件和文件系统的接口能力有限。因此,如RuntimeBroker.exe这样的代理进程用于为UWP应用提供必要的访问级别。一般情况,每个UWP将有一个RuntimeBroker.exe。例如,启动计算器将导致相应的RuntimeBroker启动。

taskhostw.exe

映像路径:%SystemRoot%\System32\taskhostw.exe
父进程:svchost.exe
实例数:1或多
用户帐户:多taskhostw.exe进程是正常的。1或多个可能由登录用户和/或本地服务帐户所有。
启动时间:启动时间变化很大
描述:Windows任务的通用主机进程。初始化时,taskhostw.exe运行一个连续循环,侦听触发器事件。实例可以启动任务的触发事件包括定义的计划、用户登录、系统启动、空闲CPU时间、Windows日志事件、工作站锁定或工作站解锁。
在Windows 10 Enterprise默认安装上预配置了160多个任务(尽管许多已禁用)。所有Windows 10计划任务默认使用的可执行文件(DLL&EXE)由Microsoft签名。

winlogon.exe

映像路径:%SystemRoot%\System32\winlogon.exe
父进程:由退出的 smss.exe实例创建,所以分析工具通常不提供父进程名。
实例数:1或多
用户帐户:System
启动时间:在第一个实例(会话1)的启动时间几秒钟内。其他实例的启动时间通常在创建新会话时发生,典型的是通过远程桌面或快速的用户切换登录。
描述:Winlogon处理交互式用户登录和注销。它启动LogonUI.exe,使用凭据提供程序从用户收集凭据,然后将凭据传递给lsass.exe进行验证。一旦用户通过身份验证,Winlogon将加载用户NTUSER.DAT 进HKCU并且通过userinit.exe启动用户的shell(通常是explorer.exe)

csrss.exe

映像路径:%SystemRoot%\System32\csrss.exe
父进程:由smss.exe实例创建,因此分析工具通常不提供父进程名。
实例数:两个或更多
用户帐户:System
启动时间:前两个实例(会话0和1)的启动时间在几秒钟内。其他实例的启动时间
发生在会话创建时,尽管通常只创建会话0和会话1。
描述:客户端/服务器运行时子系统( Client/Server Run-Time Subsystem)是Windows子系统的用户模式进程。其职责包括管理进程和线程、导入许多提供Windows API的DLL以及在系统关闭期关闭GUI。每个会话运行一个csrss.exe的实例。会话0用于服务和本地控制台会话的会话1。通过使用远程桌面创建其他会话
和/或快速用户切换。每个新会话产生一个新的csrss.exe实例。

services.exe

映像路径:%SystemRoot%\System32\services.exe
父进程:wininit.exe
实例数:1
用户帐户:System
启动时间:启动时间后几秒钟内
描述:实现统一后台流程管理器(UBPM),该管理器负责后台服务和计划任务等活动。services.exe还实现了服务控制管理器(SCM),它专门处理标记为自动启动的服务和设备驱动程序的加载。此外,一旦用户如果以交互方式成功登录,SCM(services.exe)会认为引导成功并设置将上一次已知良好控制集(HKLM\SYSTEM\Select\LastKnownGood)设置为CurrentControlSet的值。

svchost.exe

lsaiso.exe

映像路径:%SystemRoot%\System32\lsaiso.exe
父进程:wininit.exe
实例数:0或1
用户帐户:本地系统
启动时间:启动时间后几秒钟内
描述:启用凭据保护时,lsass的功能将被禁用 lsass.exe的功能被分为两个进程-
lsass.exe和lsaiso.exe。大部分功能都保留在lsass.exe中,但安全存储账户凭据的重要权限移动到lsaiso.exe。它通过在与其他环境隔离的环境中运行来提供安全存储通过硬件虚拟化技术处理。当需要远程身份验证时,lsass.exe代理使用带有lsaiso.exe的RPC管道的请求。以便对远程服务的用户进行身份验证。
注意:如果未启用凭据保护,则lsaiso.exe不应在系统上运行。

lsass.exe

映像路径:%SystemRoot%\System32\lsass.exe
父进程:wininit.exe
实例数:1
用户帐户:System
启动时间:启动时间后几秒内
描述:本地安全认证子系统服务进程负责通过调用HKLM\SYSTEM\CurrentControlSet\Control\Lsa中指定的合适身份验证包。
通常,这将是域帐户的Kerberos或本地帐户的MSV1_0。除了验证用户之外,
lsass.exe还负责实施本地安全策略(如密码策略和审核策略)和将事件写入安全事件日志。lsass.exe应只生成 一个实例,并且应很少有子进程(EFS是一个已知的例外)。

explorer.exe

映像路径: %SystemRoot%\explorer.exe
父进程:由userinit.exe的实例创建,因此分析工具通常不提供父进程名。
实例数:每个交互登录的用户一个或多个实例
用户帐户:<已登录用户>
启动时间:第一个实例是当所有者的交互式登录启动时
描述:资源管理器的核心是为用户提供对文件的访问。不过,从功能上讲,它既是一个文件浏览器,又是通过Windows资源管理器(尽管仍然是Explorer.exe)为用户界面提供的功能,如用户的桌面、开始菜单、任务栏、控制面板以及通过文件扩展名关联启动的应用和快捷方式。explorer.exe是注册表HKLM\SOFTWARE<br />Microsoft\Windows NT\CurrentVersion\Winlogon\Shell中指定的值,但Windows也可以使用其他的接口,如cmd.exe或powershell.exe。请注意,合法的explorer.exe 驻留在%SystemRoot%目录而不是%SystemRoot%\System32目录。每个用户可以出现多个实例,例如启用“在单独进程中启动文件夹窗口”选项时。

Windows下的常见文件

Windows有很多文件是固定存在的,并且路径也是固定存在的。比如一些二进制文件、目录、dll、COM。
xcyclopedia项目.png
xCyclopedia就是一个收集这类信息,并且输出为json格式的项目。这个思路还是可圈可点,既考虑到了机器的语言,也考虑到了人类语言,和Atom Red Team思路相仿。

另外考虑到国内大型企业一般都会有模板虚拟机,所以可以利用该项目的脚本构建出企业自己的数据库(文件完整性),从而在应急响应时精准有效检测出异常的文件。

吐槽:该项目在线页面很多数据是不准的,因为还没有对Windows版本进行区分,个人经验,server和pc差距还是有点大的

在线页面提供了一些对应文件被用于恶意用途的线索,数据源是 atomic-red-team, LOLBAS, malware-ioc, Sigma, Signature-Base

xcyclopedia中合法文件滥用线索.png

参考内容

https://sansorg.egnyte.com/dl/ZkAyckjFTI