入侵排查
信息搜集
系统信息搜集
在"win+r -> msinfo32"即可以打开系统信息
这一步主要是了解设备的型号 去利用设备型号相关的漏洞
平时比赛遇到的不多 重点在下面
网络信息搜集
- netstat
查看开放端口:C:\Windows\system32>netstat -ano
查看 ESTABLISHED端口:C:\Windows\system32>netstat -ano | findstr 'esta'
查看ipv4路由信息:C:\Windows\system32>netstat -rn- ipconfig
查看网络设置:C:\Windows\system32>ipconfig
显示DNS客户端解析程序缓存的内容:C:\Windows\system32>ipconfig /displaydns进程排查
进程分析
- tasklist
cmd命令行输入tasklist,先确认当前操作系统的进程信息,查看是否存在可疑进程。同样也可以直接打开任务管理器来查看进程
更具 PID定位进程:C:\Windows\system32>tasklit | findstr <pid>
输出进程的详细信息:C:\Windows\system32>tasklist /V /FO CSV | findstr <进程名>
查看运行服务的信息:C:\Windows\system32>tasklist /svc
强制kill进程以及由它启动的子进程:C:\Windows\system32>taskkill /f /pid <pid> /t
强制kill进程已进程名的方式:C:\Windows\system32>taskkill /f /im cmd.exe /t- 任务管理器
- wmic process
查看所有的参数:C:\Windows\system32>wmic process get * /value
显示部分的内容:C:\Windows\system32>wmic process get caption,commandline /value
显示指定进程的部分内容:C:\Users\Administrator\Desktop>wmic process where caption="iexplore.exe" get caption,commandline /value进程隐藏分析
进程隐藏是指通过特殊的手法,用户无法通过命令或者任务管理器的方式查看到某一个进程的信息 这里可以直接使用系统扫描工具扫一哈
恶意用户排查
隐藏用户
用户信息获取
- 查看当前用户的用户名和SID:C:\Windows\system32>whoami /user
- 查看当前用户所属的用户组:C:\Windows\system32>whoami /groups
- 查看当前用户的权限:C:\Windows\system32>whoami /priv
- 查看本机用户:C:\Windows\system32>net user
- 查看admin用户的详细信息:C:\Windows\system32>net user "admin"
- 查看用户组:C:\Windows\system32>net localgroup "administrators"
- 查看已登录的账户:C:\Windows\system32>query user
- 通过"win+r -> compmgmt.msc"方式来查看本地用户和组的信息
注册表用户分析
在很多情况下,使用net user命令是无法查看到所有用户的,就比如说被隐藏的用户$。那么通过查看注册表的方式就能够解决net user显示用户不全的问题。
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
如果需要查看全部用户,就需要右键修改\SAM\SAM子键的Administrator的权限,将它设置为完全控制,然后刷新注册表子键便可以看到新增了很多的目录
克隆用户
不同于上面的隐藏账户 克隆账户只能够通过注册表和wmic的方式进程查看,对于net users和本地用户组是完全隐藏的
若克隆的账号是administrator账号,则登陆的克隆账号就是对administrator账号进行控制
持久化排查
当攻击者拿下某台服务器最高权限的时候,接下来就需要思考如何长久的控制这台服务器来达到某些持久化的利益获取,方法有很多.
注册表下的RUN子健 RUNONCE
- 特定用户登录时启动:在以下键中,键值将在特定用户登录时运行。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- 系统开机启动项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
- RunOnce启动:如果攻击者只是希望软件在启动时运行一次,则可以在此设置子键
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
服务文件 services.msc
本地组策略启动项
攻击者可以通过设置系统启动或者用户登录脚本,达到和设置启动项相同的效果。该脚本可以是一个通用的(exe、bat等)脚本也可以是一个Powershell脚本。
在"win+r -> gpedit.msc"打开本地策略编辑器。
计划任务
这里介绍windows运行过程中在未来某个时间点,来执行payload的两种计划任务的方式:at命令、schtasks命令
- at命令介绍
配置计划任务案例:C:\Windows\system32>at 22:00 /every:M,T,W,Th,F,S,Su c:\<name>.exe
查看at命令配置的计划任务:C:\Windows\system32>at
删除计划任务:C:\Windows\system32>at 1 /delete
- schtasks命令介绍
配置计划任务案例:C:\Windows\system32>schtasks /create /tn "<计划名>" /tr c:\<name>.exe /sc minute /mo 1
查看schtasks命令配置的计划任务:C:\Windows\system32>schtasks /query |findstr "<计划名>"
删除计划任务:C:\Windows\system32>schtasks /Delete /tn "joke payload"
应急响应排查工具
火绒剑(这个就很全面了 就可以覆盖大多数的小工具)
排查技巧
- 关注时间线 使用everything搜索
- 确定恶意程序名称时 去注册表搜索
日志分析
这里Windows系统是默认只记录与用户有关系的日志的 需要在本地组策略中专门打开一些审核策略 但是本地组策略只有专业版才有 家庭版是没有的
日志类型
- 系统日志(System.evtx)
系统日志是记录系统中硬件、软件和系统问题的信息,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
- 应用程序日志(Application.evtx)
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录。
- 安全日志(Security.evtx)*important
登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。
事件ID
常用于安全日志审计 一般查看安全日志(Security.evtx)
- 5156--出站记录
失陷资产在什么时候第一次连接了攻击者的服务器以及连接的端口
攻击者在什么时候第一次远程登陆了恶意账户 关注端口445 3389 5984(WinRM)
- 4720-创建用户
攻击者在攻击时间范围内创建了什么账户 攻击者创建用户的时间(隐藏用户也可以被查到)
- 4732-用户组管理
什么时候mirage账户具有远程登陆权限
- 4733-用户组管理
安全日志4732中可以查看攻击者将创建的用户加入到了哪个用户组中,4733则是查看用户从哪个组中移除了
- 4624-登陆成功
登录类型7 远程桌面方式
- 4634-登录失败
- 4688-进程创建
攻击者什么时候第一次运行了恶意程序 挖矿木马什么时候运行
审计目录服务访问
4768 Kerberos身份验证服务
4934 ActiveDirectory对象的属性被复制
4935 复制失败开始
4936 复制失败结束
5136 目录服务对象已修改
5137 目录服务对象已创建
5138 目录服务对象已删除
5139 目录服务对象已经移动
5141 目录服务对象已删除
4932 命名上下文的AD的副本同步已经开始
4933 命名上下文的AD的副本同步已经结束
审计用户事件
4624 账号登陆成功
4625 账号登陆失败
4634 帐户被注销
4647 用户发起注销
4624 帐户已成功登录
4625 帐户登录失败
4648 试图使用明确的凭证登录
4672 授予特殊权限
4675 SID被过滤
4649 发现重放攻击
4719 系统审计策略修改
4720 创建用户
4726 删除用户
4728 将成员添加到启用安全的全局组中
4729 将成员从安全组移除
4732 将成员添加到启用安全的本地组中
4733 将成员从启用安全的本地组移除
4756 将成员添加到启用安全的通用组中
4757 将成员从启用安全的通用组中移除
4778 会话被重新连接到WindowStation
4779 会话断开连接到WindowStation
4800 工作站被锁定
4801 工作站被解锁
4802 屏幕保护程序启用
4803 屏幕保护程序被禁用
5378 所要求的凭证代表是政策所不允许的
5632 要求对无线网络进行验证
5633 要求对有线网络进行验证
审计对象访问
5140 网络共享对象被访问
4664 试图创建一个硬链接
4985 交易状态已经改变
5051 文件已被虚拟化
5031 Windows防火墙服务阻止一个应用程序接收网络中的入站连接
4698 计划任务已创建
4699 计划任务已删除
4700 计划任务已启用
4701 计划任务已停用
4702 计划任务已更新
4657 注册表值被修改
5039 注册表项被虚拟化
4660 对象已删除
4663 试图访问一个对象
审计政策变化
4715 对象上的审计政策(SACL)已经更改
4719 系统审计政策已经更改
4902 Per user审核政策表已经创建
4906 CrashOnAuditFail值已经变化
4907 对象的审计设置已经更改
4706 创建到域的新信任
4707 到域的信任已经删除
4713 Kerberos政策已更改
4716 信任域信息已经修改
4717 系统安全访问授予帐户
4718 系统安全访问从帐户移除
4864 名字空间碰撞被删除
4865 信任森林信息条目已添加
4866 信任森林信息条目已删除
4867 信任森林信息条目已取消
4704 用户权限已分配
4705 用户权限已移除
4714 加密数据复原政策已取消
4944 当开启WindowsFirewall时下列政策启用
4945 当开启WindowsFirewall时列入一个规则
4946 对Windows防火墙例外列表进行了修改,添加规则
4947 对Windows防火墙例外列表进行了修改,规则已修改
4948 对Windows防火墙例外列表进行了修改,规则已删除
4949 Windows防火墙设置已恢复到默认值
4950 Windows防火墙设置已更改
4951 因为主要版本号码不被Windows防火墙承认,规则已被忽视
4952 因为主要版本号码不被Windows防火墙承认,部分规则已被忽视,将执行规则的其余部分
4953 因为Windows防火墙不能解析规则,规则被忽略
4954 Windows防火墙组政策设置已经更改,将使用新设置
4956 Windows防火墙已经更改主动资料
4957 Windows防火墙不适用于以下规则
4958 因为该规则涉及的条目没有被配置,Windows防火墙将不适用以下规则:
6144 组策略对象中的安全政策已经成功运用
6145 当处理组策略对象中的安全政策时发生一个或者多个错误
4670 对象的权限已更改
审计特权使用
4672 给新登录分配特权
4673 要求特权服务
4674 试图对特权对象尝试操作
审计系统事件
5024 Windows防火墙服务已成功启动
5025 Windows防火墙服务已经被停止
5027 Windows防火墙服务无法从本地存储检索安全政策,该服务将继续执行目前的政策
5028 Windows防火墙服务无法解析的新的安全政策,这项服务将继续执行目前的政策
5029 Windows防火墙服务无法初始化的驱动程序,这项服务将继续执行目前的政策
5030 Windows防火墙服务无法启动
5032 Windows防火墙无法通知用户它阻止了接收入站连接的应用程序
5033 Windows防火墙驱动程序已成功启动
5034 Windows防火墙驱动程序已经停止
5035 Windows防火墙驱动程序未能启动
5037 Windows防火墙驱动程序检测到关键运行错误,终止。
4608 Windows正在启动
4609 Windows正在关机
4616 系统时间被改变
4621 管理员从CrashOnAuditFail回收系统,非管理员的用户现在可以登录,有些审计活动可能没有被记录
4697 系统中安装服务器
4618 监测安全事件样式已经发生
其它事件
1102 清理审计日志
1074 计算机的开机、关机、重启的时间以及原因和注释- Powershell查看日志
这里的话还可以使用powershell来查看日志文件
- 查询所有系统事件:
PS C:\Windows\system32> Get-WinEvent -LogName system - 查询所有安全事件:
PS C:\Windows\system32> Get-WinEvent -LogName security - 查询所有应用事件:
PS C:\Windows\system32> Get-WinEvent -LogName application - 查询所有USB插入事件:
PS C:\Windows\system32> Get-WinEvent -FilterHashtable@{Path="C:\Windows\System32\winevt\Logs\System.evtx"} | Where {$_.Message -like "USB"} - 查询所有Windows Defender事件:
PS C:\Windows\system32>Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Windows Defender/Operational"} - 查询所有Windows Defender相关具体事件,以1117为例(1117为阻止恶意软件):
PS C:\Windows\system32>Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Windows Defender/Operational";id=1117} - 列出powershell可以查看的所有日志名:
PS C:\Windows\system32> Get-WinEvent -ListLog *