Windows应急响应之命令行排查
字数 1114 2025-08-22 12:23:25
Windows应急响应之命令行排查指南
1. Windows日志排查
Get-WinEvent命令
基本用法
-
列出所有事件日志:
Get-WinEvent -ListLog * -
获取Security.evtx的日志:
Get-WinEvent -FilterHashtable @{LogName='Security'} -
获取特定事件ID的日志(如4624登录事件):
Get-WinEvent -FilterHashtable @{LogName='Security';ID='4624'}
高级用法
-
获取PowerShell操作日志最近10条:
Get-WinEvent @{logname='Microsoft-Windows-PowerShell/Operational';starttime=[datetime]::today} -MaxEvents 10 -
筛选特定PowerShell事件(4104和4100):
Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Where-Object {$_.ID -eq "4100" -or $_.ID -eq "4104"} -
指定时间范围内的日志查询:
$StartTime = Get-Date -Year 2023 -Month 1 -Day 1 -Hour 00 -Minute 00 $EndTime = Get-Date -Year 2023 -Month 1 -Day 30 -Hour 23 -Minute 59 Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=$StartTime; EndTime=$EndTime}
2. 用户账户排查
用户信息查看
-
打开本地用户组管理器:
lusrmgr.msc -
列出用户账户简单信息:
net user -
列出系统所有账户详细信息:
wmic UserAccount get -
通过注册表查看用户配置:
注册表路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
用户状态检查
-
查看当前在线用户:
query user -
查看用户上次登录时间:
net user [用户名] -
查看本地管理员组用户:
net localgroup administrators -
PowerShell查看本地用户:
Get-LocalUser
3. 网络及端口状态排查
基本网络命令
-
查看网络连接状态:
netstat -ano -
查看特定IP的连接:
netstat -ano | findstr "172.24.16.1" -
查看已建立的连接:
netstat -ano | find "ESTABLISHED"
PowerShell网络命令
-
查看TCP连接:
Get-NetTCPConnection -
查看已建立的连接:
Get-NetTCPConnection -State Established
4. 防火墙规则排查
基本防火墙命令
-
显示所有防火墙规则:
netsh advfirewall firewall show rule all -
显示指定规则:
netsh advfirewall firewall show rule name="Apache HTTP Server" -
显示详细规则信息:
netsh advfirewall firewall show rule name="Apache HTTP Server" verbose
5. 进程信息排查
进程查看命令
-
列出所有进程:
tasklist -
查看特定PID的进程:
tasklist | findstr "10004" -
查看调用特定DLL的进程:
tasklist /m uxtheme.dll -
使用筛选器查看进程:
tasklist /fi "PID eq 9480"
高级进程信息
-
获取父进程ID:
wmic process where ProcessId=14000 get ParentProcessId -
获取进程完整信息:
wmic process list full -
列出进程和父进程:
wmic process get name,parentprocessid,processid -
获取进程命令行:
wmic process where 'ProcessID=PID' get CommandLine
进程管理
- 终止进程:
或wmic process where name="进程名" call terminatewmic process where processid="PID" delete
6. 服务排查
服务查看命令
-
查看已启动的服务:
net start -
查看服务对应的进程:
tasklist /svc
7. 计划任务排查
计划任务命令
- 查看计划任务:
schtasks.exe
8. 开机启动项排查
启动项查看命令
-
查看所有启动项:
wmic startup -
查看启动项详细信息:
wmic startup get Name,Command -
PowerShell查看启动项:
Get-CimInstance Win32_StartupCommand | Select-Object Name, command, Location, User | Format-List
9. 共享服务排查
共享服务命令
- 查看共享服务:
或Get-SMBSharenet share
10. 可疑文件排查
关键目录检查
-
临时文件目录:
%TEMP% → C:\Users\[用户名]\AppData\Local\Temp -
最近访问文件:
%UserProfile%\Recent → C:\Users\[用户名]\Recent -
Windows目录:
%WINDIR% → C:\WINDOWS -
本地应用数据:
%LOCALAPPDATA% → C:\Users\[用户名]\AppData\Local -
应用数据:
%APPDATA% → C:\Users\[用户名]\AppData\Roaming -
系统临时目录:
C:\WINDOWS\Temp -
应用程序兼容性数据:
%SystemBoot%\appcompat\Programs\amcache.hve → C:\Windows\appcompat\Programs\amcache.hve -
预读取文件:
%SystemBoot%\Prefetch
驱动检查
- 查看已加载驱动:
driverquery
11. 按时间排查文件
forfiles命令
基本语法:
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[MM/DD/YYYY | DD]]
常用变量
@file:匹配项的名称(带引号)@fname:匹配项的基名(无扩展名)@ext:文件扩展名@path:完整路径@relpath:相对路径@isdir:是否为目录@fsize:文件大小(字节)@fdate:最后修改日期@ftime:最后修改时间
示例
-
查找Windows目录下所有DNS相关文件:
FORFILES /P C:\WINDOWS /S /M DNS*.* -
查看所有.txt文件内容:
FORFILES /S /M *.txt /C "cmd /c type @file | more" -
查找C盘所有.bat文件:
FORFILES /P C:\ /S /M *.bat -
查找30天前修改的.exe文件:
FORFILES /D -30 /M *.exe /C "cmd /c echo @path 0x09 在30 前就被更改。" -
查找2001年1月1日之后修改的文件:
FORFILES /D 2001/01/01 /C "cmd /c echo @fname 在2001年1月1日就是新的。" -
查找今天修改的文件:
FORFILES /D +2024/12/13 /C "cmd /c echo @fname 今天是新的。" -
查找明天修改的文件:
FORFILES /M *.exe /D +1 -
查看.doc文件大小:
FORFILES /S /M *.doc /C "cmd /c echo @fsize" -
打开所有.txt文件:
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"