Windows应急响应小结
应急响应流程
PDCERF模型
-
P(Preparation 准备):信息搜集,工具准备
-
D(Detection 检测):了解资产现状,明确造成影响,尝试进行攻击路径溯源
-
C(Containment 遏制):关闭端口、服务,停止进程,拔网线
-
E(Eradication 根除):清除危险文件、进程
-
R(Recovery 恢复):备份,恢复系统正常状态
-
F (follow-up 跟踪):复盘事件全貌,总结汇报
账户排查
检查服务器是否存在:新增账户、隐藏账户、克隆账户、可疑账户。
检查远程管理端口是否对公网开放,服务器是否存在弱口令。
隐藏账户
在 Windows 操作系统中,一个以 $
结尾的用户名会将用户帐户标记为隐藏帐户,不会在登录界面或用户管理中显示。
使用 net user 命令看不到隐藏账户,使用本地用户管理也看不到。
隐藏账户排查
-
使用 regedit 通过查看注册表 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names (最准确)
-
使用 wmic 命令,输入 wmic useraccount get name,sid
-
使用 lusrmgr.msc 命令,在本地用户和组里查看是否有新增/可疑的账号
-
通过日志排查,eventvwr.msc 打开事件查看器,进行日志审计
-
使用D盾有查看账户的功能
弱口令排查
常见应用有RDP:3389、SMB:445、FTP:21等
-
查看是否启用组策略,限制弱口令
-
查看是否有暴力破解日志,成功登录事件ID 4624,登录失败事件ID 4625
window常用日志事件ID,可以重点关注4624/4625的登录类型。
网络排查
通常恶意程序会发起网络连接,从网络连接来查找恶意程序是最直接的方法。
-
命令 netstat -ano 检查网络监听和连接的端口,结合 find 重点看状态是 ESTABLISHED 的端口 netstat -ano | find "estab"
-
任务管理器-->性能-->资源监测器
通过网络找进程,通过进程找文件可以使用 netstat -b 显示在创建每个连接或侦听端口时涉及的可执行程序。
网络排查中还有一部分内容是路由表,查看本机是否被利用作VPN跳板。
查看路由信息:route print 或者 netstat -rn
进程排查
最简单的查看进程方式:任务管理器(taskmgr)
查看系统信息:msinfo32 查看进程相关信息,软件环境-->正在运行任务/加载的模块/服务/启动程序
进程通常结合网络查看异常,先检查异常的网络连接,再获取由哪个进程生成的网络连接。
命令 tasklist 查看进程列表,查找 PID 对应的进程:tasklist | findstr PID
杀掉对应PID的进程:taskill /pid 1234 -f
需要重点关注的内容:
-
没有签名验证信息的进程
-
进程的可执行文件路径
-
进程的可执行文件生成时间
-
进程描述是否异常
-
CPU或内存资源占用长时间过高的进程
-
网络连接异常的进程
进程与服务
很多恶意程序会通过服务来启动进程。
运行 services.msc 可以打开 Windows 服务工具。
可以通过命令行查看进程与服务关联:tasklist /svc
使用 wmic 命令获取更多进程信息,进程运行参数查询,如svchost进程具体运行了什么:
wmic process where name='svchost.exe' get caption,commandline,processid,parentprocessid
恶意文件通常会写成DLL文件,而非EXE直接执行,使用进程加载模块查询:tasklist -m
启动项排查
系统配置的启动项:msconfig
需要关注的注册表:
HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce
HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
运行 gpedit.msc 在本地组策略编辑器里查看开机运行或登录脚本
计划任务排查
使用命令查看计划任务:schtasks
计划任务程序面板:taskschd.msc
计划任务注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
注册表检查
HKEY_CLASSES_ROOT(HKCR):包含文件关联、文件类型和COM类注册表信息
HKEY_CURRENT_USER(HKCU):包含当前登录系统的用户的配置信息
HKEY_LOCAL_MACHINE(H KLM):包含运行操作系统的计算机硬件特定信息
HKEY_USERS(HKU):包含系统上所有用户配置文件的配置信息
HKEY_CURRENT_CONFIG(HCU):存储有关系统当前配置的信息
内存分析
很多时候恶意代码会使用无文件技术,存于内存,且会使用各种hook技术隐藏文件。
分析内存首要步骤是获取内存,如果服务器是虚拟机,可以直接读取内存文件,如vmware的内存文件,直接在目录下。
物理机获取内存
-
从任务管理器直接转存进程的内存:任务管理器-->创建转储文件
-
在计算机属性,系统属性,高级选项卡中选择“启动和故障恢复设置”,选择完全转储内存。(高级系统设置,需要重启后才能获取内存)
使用 SysinternalsSuite 工具集的 notmyfault64 工具,管理员模式运 NotMyFault64.exe,此工具会使系统蓝屏,后收集内存。
内存分析
通常是使用 volatility 进行内存分析,内存取证。
Volatility 需要知道内存镜像来自哪种类型的系统以确定使用哪些数据结构等。
日志分析
Windows 日志包括应用程序日志、安全日志、系统日志和Setup日志。
-
系统日志:包含Windows系统组件记录的事件。
-
应用程序日志:包含由应用程序或程序记录的事件。
-
安全日志:包含如有效和无效的登录尝试等事件,以及与资源使用相关的事件。
使用命令 eventvwr.msc 打开事件查看器。
Windows日志位置
windows日志路径:
在 Windows xp/2003 中日志位于:%SystemRoot%\System32\Config*.evt
在 Windows vista/7 以后日志位于:%SystemRoot%\System32\winevt\Logs*.evtx
例如:
-
应用程序日志:C:\Windows\System32\winevt\Logs
-
安全日志:C:\Windows\System32\winevt\Logs\Security.evtx
-
系统日志:C:\Windows\System32\winevt\Logs\System.evtx
Window常用日志事件ID
Windows登录类型
powershell过滤日志
查看当前日志配置
Get-EventLog -List
从日志来源和事件ID过滤日志
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4625}
从关键字过滤日志
Get-EventLog -LogName System -Message *administrator*
查询索引3011日志具体信息
$A = Get-EventLog -LogName System -Index 3011
$A | Select-Object -Property *
日志审核策略使用命令: auditpol /get /category:*
日志分析工具
Windows有一个的强大分析工具 LogParser
LogParser提供一种类似SQL的语句用来查询日志。
例如:从 Security.evtx 日志文件中选择所有事件 ID 为 4624 的事件
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM Security.evtx where EventID=4624"
Logparser需要指定输入,输出格式类型,常用的输出格式为DATAGRID,即直接展示日志,也可导出成CSV。
若有错误,欢迎指正!o( ̄▽ ̄)ブ