msinfo32
查看硬件、组件和软件环境信息等信息
在win+r
或cmd中输入msinfo32
systeminfo
查看主机名、系统版本、网卡信息和补丁等信息
net user
查看用户(看不到隐藏用户)
lusrmgr.msc
查看用户和组,可以查看隐藏用户
win+r
或cmd输入lusrmgr.msc
可以自己创建一个隐藏用户用来测试
通过注册表查看用户,Users编号对应Names中的用户名
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
000001F4
代表administrator
账户
如果有其他用户F值与000001F4的F值一样,说明存在克隆账户
wmic useraccount get name,SID
查看用户名和SID值
msconfig
查看系统配置
win+r
或cmd输入msconfig
win11开始就msconfig里看不了,需要通过任务管理器来看
通过以下注册表查看
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
也可以在cmd输入reg query + 注册表位置
来查看具体内容
taskschd.msc
查看任务计划
查看任务计划的路径、名称、状态信息
powershell下输入Get-ScheduledTask
netsh firewall show state
查看防火墙状态
win+r
或cmd输入firewall.cpl
打开防火墙
在任务管理器,详细信息栏处,可以看到进程的详细信息
可以右键状态栏选择需要显示的内容
tasklist /m ntdll.dll
查看调用ntdll.dll模块的进程信息
tasklist /svc /fi "PID eq 14348"
根据pid值查找pid为14348的进程
查看已建立网络连接的信息
netstat -ano | findstr "ESTABLISHED"
-a:显示所有连接和侦听端口
-n:以数字的形式显示地址和端口
-o:显示连接相关的进行id
根据网络连接信息中对应的pid值,用tasklist命令查找对应的进程
tasklist | find "23988"
netstat -anb
显示在创建每个连接或侦听端口涉及的可执行程序(管理权限)
使用powershell进行排查
Get-WmiObject Win32_Process | select Name,ProcessId,ParentProcessId,Path //获取进程信息以及进程名称,进程id,父进程id,进程路径
Get-WmiObject Win32_Process //获取进程信息
select Name,ProcessId,ParentProcessId,Path //进程对应的信息
使用wmic命令进行排查
显示进程名称,父进程id,进程id,进程路径,以csv格式显示
wmic process get name,parentprocessid,processid,executablepath /format:csv
services.msc
查看服务项
不同系统的临时文件的路径相对统一,恶意程序通常会在临时文件驻留
C:\windows\temp(tmp)
Prefetch目录下存放系统已访问过的文件的预读取信息,扩展名为.pf
C:\Windows\Prefetch
记录应用程序的执行路径、上次执行的时间和SHA值等,需要专用工具查看
C:\Windows\appcompat\Programs\Amcache.hve
forfiles命令可列出指定时间内新增的文件
搜索2022年1月1日起新增文件的路径、上次修改时间、上次修改日期
forfiles /m *.exe /d +2022/1/1 /s /p c:/ /c "cmd /c echo @path @fdate @ftime" 2>null
也可以通过文件夹中的修改时间进行筛选,如果有文件的修改时间早于创建时间,需要重点排查
也可以通过一些安全工具(D盾、河马、HwsKill、WebshellKill等)排查上述的路径是否有可疑文件
主要分析系统日志、安全日志和应用程序日志
win+r
输入eventvwr
打开事件查看器,在windows日志下查看
系统日志主要是windows系统中各个组件在运行中产生的各种事件。
一般可分为:系统中各种驱动程序在运行中出现的重大问题,操作系统的多种组件在运行中出现的重大问题及应用软件在运行中出现的重大问题等。这些重大问题主要包括重要数据的丢失、错误,以及系统产生的崩溃行为等。下图为系统更新的日志。
系统日志位置:C:\Windows\System32\winevt\Logs\System.evtx
安全日志主要记录了各种与安全相关的事件。
该日志内容主要包括:各种登录与退出系统的成功与失败的信息;对系统中各种重要资源进行的各种操作,如对系统文件进行创建、删除、更改等操作。 下图为账户登录成功日志。
安全日志位置:C:\Windows\System32\winevt\Logs\Security.evtx
应用程序日志主要记录各种应用程序所产生的各类事件。例如,系统中的应用程序出现问题时,日志中会有相关记录,该记录中包含与对应事件相关的详细信息。下图为应用程序状态发生变更的日志。
应用日志位置:C:\Windows\System32\winevt\Logs\Application.evtx
powershell相关日志查看方法,事件查看器-应用程序和服务日志-windows powershell
事件ID | 描述 | 事件日志 |
---|---|---|
4624 | 成功登录 | 安全 |
4625 | 失败登录 | 安全 |
4776 | 成功/失败的账户认证 | 安全 |
4720 | 创建用户 | 安全 |
4732 | 添加用户到启用安全性的本地组中 | 安全 |
4728 | 添加用户到启用安全性的全局组中 | 安全 |
7030 | 服务创建错误 | 系统 |
7040 | IPSEC服务的启动类型已从禁用更改为自动启动 | 系统 |
7045 | 服务创建 | 系统 |
登录类型 | 描述 | 说明 |
---|---|---|
2 | 交互式登录(Interactive) | 用户本地登录 |
3 | 网络(Network) | 访问网络共享 |
4 | 批处理(Batch) | 批处理登录类型,通常表明某项计划任务启动 |
5 | 服务(Service) | 服务控制端管理器登录 |
7 | 解锁(Unlock) | 用户解锁主机 |
8 | 网络明文(NetworkCleartext) | 用户登录的密码在网络中通过明文传输 |
9 | 新凭据(NewCredentials) | 进程或线程克隆了当前令牌,但为出站连接指定了新凭据 |
10 | 远程登录(RemoteInteractive) | 使用终端服务或远程桌面连接 |
11 | 缓存交互(CachedInteractive) | 以一个域用户登录而又没有域控制器可用 |
事件id | 名称 | 描述 |
---|---|---|
4624 | 用户登录成功 | 大部分登录事件成功时会产生的日志 |
4625 | 用户登录失败 | 大部分登录事件失败时会产生的日志 |
4672 | 特殊权限用户登录 | 特殊权限用户登录成功时会产生的日志,例如administrator账户,一般会同时产生4624和4672日志 |
4648 | 显式凭证登录 | 一些其他的登录情况,例如使用runas/user以及其他用户身份运行程序时会产生的日志 |
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
---|---|---|---|---|
关机初始化失败 | 1074 | 警告 | User32 | User32 |
windows关闭 | 13 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
windows启动 | 12 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
---|---|---|---|---|
事件日志服务关闭 | 1100 | 信息 | 安全 | Microsoft-Windows-EventLog |
事件日志被清除 | 104 | 信息 | 系统 | Microsoft-Windows-EventLog |
事件日志被清除 | 1102 | 信息 | 安全 | Microsoft-Windows-EventLog |
使用powershell进行查询时需要管理权限,常用的两个命令为Get-EventLog、Get-WinEvent,Get-EventLog只获取传统的事件日志,Get-WinEvent是从传统的事件日志和windows事件日志技术生成的事件日志中获取事件,还会获取windows事件跟踪生成的日志文件中的事件。简单说就是Get-WinEvent功能更强大,但是对系统和.NET版本有一定要求。
查找安全日志中事件ID为4625的登录失败的日志信息
Get-EventLog命令参数文档:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-eventlog?view=powershell-5.1
Get-EventLog Security -InstanceId 4625
Get-WinEvent命令参数文档:https://docs.microsoft.com/zh-cn/powershell/module/Microsoft.PowerShell.Diagnostics/Get-WinEvent?view=powershell-5.1
Get-WinEvent -FilterHashtable @{logname='security';ID='4625'}
查询指定时间内的事件,先设置起始时间StartTime
和终止时间EndTime
的变量
起始时间和终止时间的变量也可以加上-second
设置秒,更精准一些
设置完后再使用Get-WinEvent
命令,查询2022.3.1-2022.3.10系统日志情况
$StartTime=Get-Date -Year 2022 -Month 3 -Day 1 -Hour 00 -Minute 00
$EndTime=Get-Date -Year 2022 -Month 3 -Day 10 -Hour 23 -Minute 59
Get-WinEvent -FilterHashtable @{LogName='system';StartTime=$StartTime;EndTime=$EndTime}
通过逻辑连接符可对多种指定日志ID进行联合查询。
查询windows启动和关闭日志
Get-WinEvent -LogName system | Where-Object {$_.ID -eq "12" -or $_.ID -eq "13"}