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 terminate
    
    wmic 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-SMBShare
    
    net 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"
    
Windows应急响应之命令行排查指南 1. Windows日志排查 Get-WinEvent命令 基本用法 列出所有事件日志: 获取Security.evtx的日志: 获取特定事件ID的日志(如4624登录事件): 高级用法 获取PowerShell操作日志最近10条: 筛选特定PowerShell事件(4104和4100): 指定时间范围内的日志查询: 2. 用户账户排查 用户信息查看 打开本地用户组管理器: 列出用户账户简单信息: 列出系统所有账户详细信息: 通过注册表查看用户配置: 用户状态检查 查看当前在线用户: 查看用户上次登录时间: 查看本地管理员组用户: PowerShell查看本地用户: 3. 网络及端口状态排查 基本网络命令 查看网络连接状态: 查看特定IP的连接: 查看已建立的连接: PowerShell网络命令 查看TCP连接: 查看已建立的连接: 4. 防火墙规则排查 基本防火墙命令 显示所有防火墙规则: 显示指定规则: 显示详细规则信息: 5. 进程信息排查 进程查看命令 列出所有进程: 查看特定PID的进程: 查看调用特定DLL的进程: 使用筛选器查看进程: 高级进程信息 获取父进程ID: 获取进程完整信息: 列出进程和父进程: 获取进程命令行: 进程管理 终止进程: 或 6. 服务排查 服务查看命令 查看已启动的服务: 查看服务对应的进程: 7. 计划任务排查 计划任务命令 查看计划任务: 8. 开机启动项排查 启动项查看命令 查看所有启动项: 查看启动项详细信息: PowerShell查看启动项: 9. 共享服务排查 共享服务命令 查看共享服务: 或 10. 可疑文件排查 关键目录检查 临时文件目录: 最近访问文件: Windows目录: 本地应用数据: 应用数据: 系统临时目录: 应用程序兼容性数据: 预读取文件: 驱动检查 查看已加载驱动: 11. 按时间排查文件 forfiles命令 基本语法: 常用变量 @file :匹配项的名称(带引号) @fname :匹配项的基名(无扩展名) @ext :文件扩展名 @path :完整路径 @relpath :相对路径 @isdir :是否为目录 @fsize :文件大小(字节) @fdate :最后修改日期 @ftime :最后修改时间 示例 查找Windows目录下所有DNS相关文件: 查看所有.txt文件内容: 查找C盘所有.bat文件: 查找30天前修改的.exe文件: 查找2001年1月1日之后修改的文件: 查找今天修改的文件: 查找明天修改的文件: 查看.doc文件大小: 打开所有.txt文件: