下载地址:
https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns
Everything |
检测和展示所有的自启动项 |
Logon |
注册表Run、RunOnce等 |
Explorer |
资源管理器 |
Internet Explorer |
IE浏览器插件,BHO,ActiveX控件等 |
Scheduled Task |
计划任务 C:WindowsSystem32Tasks |
Servers |
系统服务包括隐藏服务等 |
Drivers |
已加载的驱动文件sys或者恶意驱动 |
Codecs |
多媒体编码解码器的异常文件加载 |
Boot Excute |
系统启动阶段执行的恶意程序 |
Image Hjacks |
映像劫持 |
AppInit |
通过 |
KnowDlls |
已知的DLL列表 |
Winlogon |
用户登录相关项检测 |
Winsock Providers |
网络协议处理程序(LSP),检测分层服务提供程序 |
Print Monitors |
打印机模块检测HKLMSYSTEMCurrentControlSetControlPrintMonitors |
LSA Providers |
LSA插件检测 HKLMSYSTEMCurrentControlSetControlLsa |
Network Providers |
网络驱动和命名空间提供程序,检测HKLMSYSTEMCurrentControlSetControlNetworkProvider |
WMI |
WMI事件权限维持 |
Sidebar Gadgets |
Windows 侧边栏,检测 %ProgramFiles%Windows SidebarGadgets |
Office |
Office系统的启动项目 |
0x01 使用流程:
1)打开后优先查看红色和黄色标签
红色代表无数字签名(可能需要Verify Image验证)
黄色代表为为最近新增
2)并且在某些情况可能需要:
在Autoruns中启用Options → Scan Options → Verify Code Signatures——>取消勾选Hide Windows Entries
勾选此选项后,Autoruns会自动隐藏所有由Microsoft官方签名的启动项,可以大幅度减少影响和干扰,但是微软签名启动不等于无风险
这是一段将1.txt转换为php代码的Logon恶意注册表,用于维持Webshell的权限。
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /v "decode_test" /t REG_SZ /d "C:WindowsSystem32certutil.exe -decode C:1.txt D:www1.php" /f
例如我未取消勾选Hide Windows Entries,找不到该启动项
取消勾选Hide Windows Entries 后
3)一般来说,最常见的检测项有如下:
Login(登陆启动项)
Server(系统服务)
Scheduled Tasks(计划任务)
Drivers(驱动程序)
Image Hijacks (映像劫持)
Wmi(WMI事件订阅之前常备用于高级威胁利用)
在本文章中不探讨这些启动项的免杀强度
1、Logon
注册表相关启动项地方
用户级:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
系统级 :
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRunOnce
只需要新建一个字符串类型的参数,并输入路径,例如:
reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun /v "Keyname" /t REG_SZ /d "C:WindowsSystem32calc.exe" /f
StartUp文件夹:
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
注册表Run
键 > Startup文件夹 > 注册表RunOnce
键。
可以看到这里和autoruns的检测一致
在C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup添加一个进程(需要管理员权限),autoruns检测成功
2、Server
利用sc命令可以快速创建一个server123服务,该服务启动时可启动一个进程
sc create "server123" binpath= "C:UsersAdministratorDesktopartifact.exe"
设置这个服务为自动启动
sc config "server config" start= auto
关于服务的制作也可以使用nssm文件
可以查看该文章:https://mp.weixin.qq.com/s/r4Yst_jVr9JDjJH7hO97Aw
在server选项里可被直接查看
3、Scheduled Tasks
Windows使用 SCHTASKS 命令执行定时任务,例如以下命令:
每次运行时,执行命令 copy E111.txt E:111.exe,将 E:111.txt 文件复制为 E:111.exe
schtasks /create /sc minute /mo 5 /tn "sd" /tr "C:WindowsSystem32cmd.exe /c copy E:\111.txt E:\111.exe"
此时可以看到autoruns出现被黄色标记的sd计划任务
计划任务的内容就是我们刚刚写入的命令行,可以右键直接 delete 这个计划任务
4、Drivers
驱动程序(Drivers)在权限维持中具有独特优势,因为它们运行在操作系统内核模式(Ring 0)层,拥有最高的权限,如果有了解过BYOVD的同学应该很好理解底层驱动安装后能够做什么事情。
在autoruns可以看到也是检测的注册表
主要扫描的地方是:
注册表键值(如 HKLMSYSTEMCurrentControlSetServices),它会扫描下面的每一项,筛选Type=1或者2的项目(驱动服务),例如type=20这里就不会被autoruns认为是驱动服务
提取 ImagePath、Start 等字段。
我在系统目录(C:WindowsSystem32drivers)添加了非官方的驱动,并未在autoruns里告警
模拟恶意驱动添加一个项,autoruns可以检测到
reg add "HKLMSYSTEMCurrentControlSetServicesTestDriver" /v Type /t REG_DWORD /d 1 /freg add "HKLMSYSTEMCurrentControlSetServicesTestDriver" /v Start /t REG_DWORD /d 3 /freg add "HKLMSYSTEMCurrentControlSetServicesTestDriver" /v ErrorControl /t REG_DWORD /d 1 /freg add "HKLMSYSTEMCurrentControlSetServicesTestDriver" /v ImagePath /t REG_EXPAND_SZ /d "SystemRootfaketest.sys" /freg add "HKLMSYSTEMCurrentControlSetServicesTestDriver" /v DisplayName /t REG_SZ /d "TestDriver" /f
在正常情况下,Windows 驱动程序需要以下步骤才能被加载:
1、注册表配置:在 HKLMSYSTEMCurrentControlSetServices 下创建驱动服务项,包含 Type、Start、ImagePath 等键值。
2、服务管理:通过 sc create 或服务控制管理器(SCM)注册服务。
3、驱动文件验证:系统检查驱动文件的数字签名和完整性。
4、加载执行:根据 Start 类型(如引导启动、系统启动等)自动或手动加载驱动。
此流程会在注册表中留下明确的痕迹,因此 Autoruns 等工具可以轻松检测到。
但是byovd通过已知的“合法驱动”漏洞进行攻击,并不会有上面的流程,它可以通过调用未公开的 Native API——NtLoadDriver,直接加载驱动文件,重启后消失,执行恶意流程后例如RealBlindingEDR清除EDR回调后,驱动可以删除。
5、Image Hijacks
映像劫持也是从注册表入手,通过注册表劫持一个合法的程序来启动恶意文件
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
我们可以添加一个aaa.exe 然后在aaa.exe下添加一个键为debugger为恶意程序的路径C:\bbb.exe,这样我们在启动aaa.exe的时候,就会顺带启动bbb.exe
一般情况下,我们会劫持常启动的程序,例如notepad.exe或者cmd.exe
例如我们劫持cmd.exe,在启动cmd.exe的时候启动calc.exe
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionscmd.exe" /v Debugger /t REG_SZ /d "C:WindowsSystem32calc.exe" /f
注册表如下所示
取消Hide Windows Entries 后能看到劫持cmd.exe程序,启动calc.exe的映像劫持启动项
6、Wmi
wmi的目的是提供一个本地或者远程管理多种系统组件的接口,如进程管理,账号管理,计划任务,安装服务等,在红队行动中很多命令都可以使用,例如:
具体可以查看飞鸟:
https://www.yuque.com/feiniao112/rq5bav/wth417#wZwHG
Wmic权限维持是15年的badhat usa提出的无文件权限维持的一种技术,创建wmic权限维持需要进行三个操作:
1、创建事件过滤器
2、创建事件消费者
3、绑定过滤器与消费者,这过程也叫做订阅
[事件过滤器] →(订阅绑定)→ [事件消费者] 条件监测 关联关系 动作执行
1、创建事件过滤器:__EventFilter
电脑系统运行时间在240s到310s为触发条件,过滤器名称为eval
wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter CREATE Name="eval", EventNameSpace="rootcimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 310"
2、创建命令行事件消费者:
创建事件消费者名称为evilConsumer,执行命令为C:UsersiceDesktopcmd.exe /c calc
wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer CREATE Name="evilConsumer",CommandLineTemplate="C:UsersiceDesktopcmd.exe /c calc "
3、绑定消费者的和过滤器
绑定eval和evilConsumer,使其启动自动触发运行逻辑
wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name="eval"",Consumer="CommandLineEventConsumer.Name="evilConsumer""
4、如何查询——Poweshell下运行
#列出事件过滤器
Get-WmiObject -Namespace rootSubscription -Class __EventFilter Get-WmiObject -Namespace rootSubscription -Class __EventFilter |Select Name , query
#列出事件消费者
Get-WmiObject -Namespace rootsubscription -Class CommandLineEventConsumerGet-WmiObject -Namespace rootsubscription -Class CommandLineEventConsumer | Select Name, ExecutablePath, CommandLineTemplate
#查询绑定关系
Get-WmiObject -Namespace rootsubscription -Class __FilterToConsumerBinding | Select Filter, Consumer
5、如何删除
#删除过滤器
wmic /NAMESPACE:"\rootsubscription" PATH __EventFilter WHERE "Name='eval'" DELETE
#删除消费者
wmic /NAMESPACE:"\rootsubscription" PATH CommandLineEventConsumer WHERE "Name='evilConsumer'" DELETE
#删除订阅关系
wmic /NAMESPACE:"\rootsubscription" PATH __FilterToConsumerBinding WHERE "Filter='__EventFilter.Name="eval"' AND Consumer='CommandLineEventConsumer.Name="evilConsumer"'" DELETE
6、autoruns检测wmi
autoruns虽然是非常优秀的启动项排查工具,但是还是存在很大的不足,例如LogonScript的检测在autoruns就是缺失的,因此也无法完全依赖autoruns的检测。
例如LogonScript是登陆脚本的启动项,在用户登录的时候会主动执行这个脚本,这个脚本也可以设置为bat路径,Logon Scripts优先于AV(杀毒软件)先执行。
Autoruns检测不到通过 HKEY_CURRENT_USEREnvironment 添加的登录脚本
reg add HKEY_CURRENT_USEREnvironment /v "UserInitMprLogonScript " /t REG_SZ /d "C:UsersiceDesktopcmd.exe" /f
删除LoginScript
reg delete HKEY_CURRENT_USEREnvironment /v "UserInitMprLogonScript" /f
05
觉得微信排版有点乱的话可以前往语雀查看
https://www.yuque.com/g/iceqaq/gpxll3/dpngffzvbwr1mtiu/collaborator/join?token=CnW2Q058oqqqNova&source=doc_collaborator
后排求个关注吧~
原文始发于微信公众号(Ice ThirdSpace):应急响应和权限维持 | autoruns使用手册-上
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论