如果因为各种原因没法通过可视化界面操作,那就只能命令行检查
排查Windows日志命令
PowerShell Get-WinEvent命令
列出所有事件
Get-WinEvent -ListLog *
获取Security.evtx的日志:
Get-WinEvent -FilterHashtable @{LogName='Security'}
获取事件ID为4624的Security日志:
Get-WinEvent -FilterHashtable @{LogName='Security';ID='4624'}
powershell今天操作日志的最近10条,注意这里的logname必须是loglist中得到的:
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"}
指定时间内的日志,注意end hour不能超过23
$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}
一些其他但是少见的用法见文档
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-eventlog?view=powershell-5.1
基本都可以用Microsoft Message Analyzer代替,可能在内网机子现场应急的时候需要用Get-WinEvent
排查Windows用户命令
lusrmgr.msc打开本地用户组查看,用户名后面如果有$是隐藏用户
net user列出用户账户简单信息
wmic UserAccount get,列出系统所有账户详细信息
regedit
打开注册表找:
计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
通过ProfileImagePath确认
当前在线用户:
query user
查看用户上次登录时间:
net user lenovo
查看本地管理员组用户
net localgroup administrators
powershell的
Get-LocalUser
排查网络及端口状态命令
基本服务的端口:
C:WindowsSystem32driversetc
netstat -ano
- -a :显示所有连接和侦听端口
- -b :显示在创建每个连接或侦听端口时涉及的可执行程序
- -n :以数字形式显示地址和端口号
- -o :显示每个连接关联的进程 ID
- -r :显示路由表
findstr配合
netstat -ano | findstr "172.24.16.1"
查看网络连接状态netstat -ano | find "ESTABLISHED",后面是pid
powershell命令
Get-NetTCPConnection
保持链接的
Get-NetTCPConnection -State Established
排查防火墙规则命令
显示所有规则:
netsh advfirewall firewall show rule all
显示指定规则:
netsh advfirewall firewall show rule
Apache的基本入站规则信息:
netsh advfirewall firewall show rule name = "Apache HTTP Server"
Apache的详细入站规则信息
netsh advfirewall firewall show rule name = "Apache HTTP Server" verbose
排查进程信息命令 列出所有进程:tasklist ,可以加/svc
配合findstr
列出用法
TASKLIST /?
检查pid为10004的进程:
tasklist | findstr "10004"
tasklist /m
查询调用uxtheme.dll的进程:
tasklist /m uxtheme.dll
筛选器
eq是等于、ne是不等于、gt是大于、lt是小于、ge是大于等于、le是小于等于 用法:
tasklist /fi "PID eq 9480"
获取父进程:
wmic process where ProcessId=14000 get ParentProcessId
wmic process where Name="javaw.exe" get ParentProcessId
powershell下的get-process
获取进程完整信息
wmic process list full
列出进程和父进程:
wmic process get name,parentprocessid,processid
详细的进程的名字,跟直接tasklist差不多:wmic process where ‘ProcessID=PID’ get CommandLine,这个services是最终的父进程,在这里notepad++的上一级父进程是explorer,再上一级是svchost,再上一级是services
dll关联:tasklist -M
杀死进程:
wmic process where name = "" call terminate
wmic process where processid = "PID" delete
排查本机服务命令
已开启的服务:
net start
每个服务对应的进程:
tasklist /svc
排查计划任务命令
schtasks.exe
当然也可以在可视化的任务管理器,双击可查看详细信息
排查开机启动项命令
wmic startup共有一下几个字段
Caption、Command、Description、Location、Name、SettingID、User、UserSID
wmic startup get Name,Command
自启任务的user和Location:
Get-CimInstance Win32_StartupCommand | Select-Object Name, command, Location, User | Format-List
排查共享服务命令
Get-SMBShare
net share也是同样
排查可疑文件相关命令
下载目录、回收站、应用程序打开历史、快捷方式、驱动等
TEMP%:C:UserslenovoAppDataLocalTemp
UserProfile%Recent:C:UserslenovoRecent
WINDIR%:C:WINDOWS
LOCALAPPDATA%:C:UserslenovoAppDataLocal
APPDATA%:C:UserslenovoAppDataRoaming
C:WINDOWSTemp
SystemBoot%appcompatProgramsamcache.hve: C:WindowsappcompatProgramsamcache.hve 应用程序执行路径、上次执行时间
SystemBoot%Prefetch 预读取文件
驱动:driverquery
按时间排查命令
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]
下表列出了在 /c Command 命令字符串中能够使用的变量
变量 描述
返回匹配项的名称,双引号。
返回匹配项的基名(没有文件扩展名),双引号。
返回文件扩展名,双引号,没有前导点。如果文件有多个扩展名,则只返回最后一个。如果文件没有扩展名,则返回带引号的空字符串。
返回匹配项的完整路径,双引号,包括驱动器号和文件扩展名(如果有)。
返回匹配项的相对路径,双引号和相对于起始目录(由/ P给出)。每个路径以点和反斜杠(.)开头。
如果文件类型是目录,返回 TRUE,否则返回 FALSE。
返回用字节表示的文件大小
返回文件上次修改的日期,采用当前用户的本地化日期格式。
返回文件上次修改时间,采用当前用户的本地化时间格式
/D date 选择文件,其上一次修改日期大于或等于 (+),
或者小于或等于 (-) 用 "yyyy/MM/dd" 格式指定的日期;
或选择文件,其上一次修改日期大于或等于 (+)
当前日期加 "dd" 天,或者小于或等于 (-) 当前
日期减 "dd" 天。有效的 "dd" 天数可以是
0 - 32768 范围内的任何数字。如果没有指定,
"+" 被当作默认符号。
FORFILES /P C:WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C: /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 在 30 前就被更改。"
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
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
原文作者:SpiritM0nK3y
原文链接:https://xz.aliyun.com/t/16741
原文始发于微信公众号(七芒星实验室):Windows应急响应之命令行排查
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论