[Windows]应急排查点梳理

1. 了解现状

  1. 了解现状,有哪些表现
  2. 什么时候开始的?
  3. 怎么发现的?
  4. 发生前有什么异常?
  5. 发生改过、更新过什么东西?文件/策略?

2. 排查项

2.1 系统账号安全

2.1.1 弱口令、对外开放端口

查看服务器是否有弱口令,远程管理端口是否对公网开放,据实际情况咨询相关服务器管理员。

2.1.2 新增帐号
lusrmgr.msc
2.1.3 隐藏/克隆账号
  1. 从注册表查看
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account
  1. 使用D盾查看
2.1.4 登录时间、异常用户
eventvwr.msc

2.2 端口、进程

  1. 端口
netstat -ano
tasklist | findstr “PID”
  1. 进程
  • 系统命令
msinfo32
tasklist /svc
  • wmic
wmic process get caption,commandline /value >> tmp.txt

在windows下查看某个运行程序(或进程)的命令行参数 使用下面的命令:
wmic process get caption,commandline /value
如果想查询某一个进程的命令行参数,使用下列方式:
wmic process where caption="svchost.exe" get caption,commandline /value
这样就可以得到进程的可执行文件位置等信息。

  • PC Hunter
  • ProcessExplorer

查询windows服务对应端口:%systemroot%/system32/drivers/etc/services

2.3 启动项

  1. [开始] -> [所有程序] -> [启动]
  2. [msconfig]
  3. [regedit]
1.Run键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
其下的所有程序在每次启动登录时都会按顺序自动执行。

2.RunOnce键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]与Run不同的是,RunOnce下的程序仅会被自动执行一次。

3.RunServicesOnce键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]其中的程序会在系统加载时自动启动执行一次。

4.RunServices键

RunServices继RunServicesOnce之后启动的程序
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]

5.RunOnceEx键

该键是Windows XP/2003特有的自启动注册表项
[HKEY_CURRENT_USER\\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]

6.load键

[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]
下的load键值的程序也可以自启动

7.Winlogon键

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
注意下面的Notify、Userinit、Shell键值也会有自启动的程序,而且其键值可以用逗号分隔,从而实现登录的时候启动多个程序。

8.其他注册表位置

还有一些其他键值,经常会有一些程序在这里自动运行,如:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad]
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts]
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts] 

*注:注册表的[HKEY_LOCAL_MACHINE]和[HKEY_CURRENT_USER]键的区别:前者对所有用户有效,后者只对当前用户有效。
  1. [gpedit.msc]
  • 启动/关机

  • 登陆

  1. 系统配置文件
    [运行] -> [sysedit]

2.4 计划任务

  1. [taskschd.msc]
  2. [at]

2.5 服务

  1. [services.msc]
  2. [msinfo32]

2.6 系统信息

  1. [systeminfo]

不同版本可以搜索补丁
winxp特别补丁KB4012598
win2003特别补丁KB4012598
win2008R2补丁 KB4012212、KB4012215
win7补丁 KB4012212、KB4012215

检查是否安装补丁:

wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4012212"

2.7 目录及文件

  1. 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录
Window 2003 C:\Documents and Settings
Window 2008R2 C:\Users\
  1. 查看最近打开分析文件
%UserProfile%\Recent
  1. 临时文件
C:\windows\temp
%TEMP% 
  1. 查看文件更改时间
  • windows下查看最新变化文件
forfiles /m *.exe /d +2020/6/25 /s /p c:\  /c "cmd /c echo @path @fdate @ftime" 2>nul

下午可以在管理员模式下,跑下fofiles命令 看看6月25号以后exe新增情况;

  • Everything,按时间排序看看释放的文件
  1. 回收站、浏览器下载目录、浏览器历史记录

2.8 日志分析

2.8.1 文件位置
  • 系统日志
    记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。
%SystemRoot%\System32\Winevt\Logs\System.evtx
  • 应用程序日志
    包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程 序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录。
%SystemRoot%\System32\Winevt\Logs\Application.evtx
  • 安全日志
    记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。
%SystemRoot%\System32\Winevt\Logs\Security.evtx
2.8.2 事件类型说明

对于Windows事件日志分析,不同的EVENT ID代表了不同的意义:

每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

微软说明:https://support.microsoft.com/zh-cn/help/977519/description-of-security-events-in-windows-7-and-in-windows-server-2008

2.8.3 案例
  • 案例1:查看重启记录

我们输入事件ID:6005-6006进行日志筛选,发现了两条在2018/7/6 17:53:51左右的记录,也就是我刚才对系统进行重启的时间。

  • 案例2:查看登陆成功用户

  • 案例3:为何win的IPC登陆失败事件有时候有源IP有时候没有呢?

答:windows在登陆时协议有ip验证在4624才会记下ip,这部分没有ip的部分 可以在remoteconnectionmanager找到。

Microsoft-Windows-TerminalServices-LocalSessionManager/Operational
Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational 
  • 案例4:如何从日志上区分是rdp爆破 还是 445SBM扫描?

通过查看4624 判断是rdp或是smb,EventData下 LogonType = 10 就是RDP,LogonType = 3 就是SMB类型的。

2.8.4 LogParser 分析
  1. 基本查询结构
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM Security.evtx"

*注:

  1. –o:DATAGRID 代表可视化输出。
  2. 在提取的项目中发现其他比较简单,但是string这一项非常复杂,但是又比较重要。
    使用函数EXTRACT_TOKEN(Strings, num, ‘|’)
    strings使用|对数据进行分割EXTRACT_TOKEN(Strings, 0, ‘|’)提取S-1-5-18,EXTRACT_TOKEN(Strings, 1, ‘|’)提取DESKTOP-KJIHHDO$以此类推。
  3. EXTRACT_TOKEN(Strings,5,'|') as username Strings字段按照|分段第5个值,把表头重命名为username
  1. 按 RecordNumber 逆序的前 10 条记录。RecordNumber 是 System 中的一个字段。
LogParser.exe -i:EVT –o:DATAGRID "SELECT TOP 10 * FROM Security.evtx ORDER BY RecordNumber DESC" 

使用Log Parser分析日志

1、查询登录成功的事件

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where EventID=4624"

指定登录时间范围的事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where TimeGenerated>'2020-06-20 23:32:11' and TimeGenerated<'2020-06-30 23:34:00' and EventID=4624"

提取登录成功的用户名和IP:

LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM Security.evtx where EventID=4624"

2、查询登录失败的事件

登录失败的所有事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where EventID=4625"

--按用户名统计爆破次数(聚合)

LogParser.exe -i:EVT "select EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) AS 总计 FROM ' Security-01.evtx' where EventID=4625 GROUP by EXTRACT_TOKEN(Message,19,' ') ORDER by 总计 desc"

--按IP地址统计爆破次数(聚合)

LogParser.exe -i:EVT "select EXTRACT_TOKEN(Message,39,' ') as user,count(EXTRACT_TOKEN(Message,39,' ')) AS 总计 FROM ' Security-01.evtx' where EventID=4625 GROUP by EXTRACT_TOKEN(Message,39,' ') ORDER by 总计 desc"

提取登录失败用户名并显示登陆失败时间:

LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,EXTRACT_TOKEN(Message,39,' ') as Loginip,TimeGenerated as LoginTime FROM Security.evtx where EventID=4625"

3、系统历史开关机记录:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM System.evtx where EventID=6005 or EventID=6006"

4、创建的进程:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated as Creationtime,EXTRACT_TOKEN(Strings,5,'|') as Process FROM Security.evtx where EventID=4688"

以[Administrator]身份创建的进程:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated as Creationtime,EXTRACT_TOKEN(Strings,5,'|') as Process,Message FROM Security.evtx where EventID=4688 and Message LIKE '%Administrator%' "

5、创建的服务:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated as Creationtime,Message FROM Security.evtx where EventID=7045 "

6、重置密码:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated as Creationtime,Message FROM Security.evtx where EventID=4724 "

7、用户已添加到特权本地组:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated as Creationtime,Message FROM Security.evtx where EventID=4732 "

8、终端会话日志

终端会话日志-RDP断开连接:

Logparser.exe –i:EVT –o:DATAGRID "SELECT TimeGenerated as LoginTime,Strings FROM Operational.evtx where EventID=24 "

终端会话日志-RDP重连:

Logparser.exe –i:EVT –o:DATAGRID "SELECT TimeGenerated as LoginTime,Strings FROM Operational.evtx where EventID=25 "

终端会话日志-RDP登陆:

Logparser.exe –i:EVT –o:DATAGRID "SELECT TimeGenerated as LoginTime,Strings FROM Operational.evtx where EventID=21 "

3. 工具01-ProcessExplorer

3.1. ProcessExplorer介绍

Process Explorer,进程管理工具,它能管理隐藏在后台运行的进程,可以监视/挂起/重启/强行终止任何程序,包括系统级的不允许随便终止的关键进程等。
Process Explorer是由Sysinternals开发的Windows系统和应用程序监视工具,目前已并入微软旗下。
Process Explorer主要特点:

  1. 显示被执行的映像文件各种信息
  2. 显示进程安全令牌和权限
  3. 加亮显示进程和线程列表中的变化
  4. 显示作业中的进程,以及作业的细节
  5. 显示运行。NET/WinFX应用的进程,以及与.NET相关的细节
  6. 显示进程和线程的启动时间
  7. 显示内存映射文件的完整列表
  8. 能够挂起一个进程
  9. 能够杀死一个线程
  10. 显示进程的Virus Total安全性

3.2. 常用功能

3.2.1. 查看子父进程

打开工具,可以看到进程的父子关系一目了然显示出来。

3.2.2. 颜色解释

默认配置下,配色代表的含义如下:

红色:已删除的对象。
绿色:新对象。
紫色:自有进程。
粉色:服务。

3.2.3. 进程属性
  • [映像]->[路径/命令行/工作目录/自启动位置/父进程/用户/启动时间]
    如下例子,可以此进程的详细信息,这里需要重点关注[路径][命令行][自启动位置][启动时间]

  • [TCP/IP]
    此项可查看当前进程的网络连接情况。

  • [安全]->[权限]
    此项为查看当前进程对应的权限。

4. 工具02-PC Hunter

1. PC Hunter介绍

PC Hunter是一款功能强大的Windows系统信息查看软件,同时也是一款强大的手工杀毒软件,用它不但可以查看各类系统信息,也可以揪出电脑中的潜伏的病毒木马。

此外,PC Hunter还大量使用了 Windows 内核技术,尤其是为了做一些检测而使用了些 Windows 未公开的内核数据结构。

本工具实现如下功能:

1.进程、线程、进程模块、进程窗口、进程内存信息查看,杀进程、杀线程、卸载模块等功能
2.内核驱动模块查看,支持内核驱动模块的内存拷贝
3.SSDT、Shadow SSDT、FSD、KBD、TCPIP、Classpnp、Atapi、Acpi、SCSI、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook
4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除
5.端口信息查看,目前不支持2000系统
6.查看消息钩子
7.内核模块的iat、eat、inline hook、patches检测和恢复
8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除
9.注册表编辑
10.进程iat、eat、inline hook、patches检测和恢复
11.文件系统查看,支持基本的文件操作
12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME
13.ObjectType Hook检测和恢复
14.DPC定时器检测和删除
15.MBR Rootkit检测和修复
16.内核对象劫持检测
17.WorkerThread枚举
18.Ndis中一些回调信息枚举
19.硬件调试寄存器、调试相关API检测
20.枚举SFilter/Fltmgr的回调
21.系统用户名检测

2. 常用功能

2.1. 查看签名

黑色:微软签名的驱动程序;
蓝色:非微软签名的驱动程序;
红色:驱动检测到的可疑对象,隐藏服务、进程、被挂钩函数;



这里可以看到有多个红色进程,针对提示的可疑进程,还需要做进一个验证。
如选择一个进程,选中[查看进程模块],再选择[校验所有数字签名]


确认模块后可提取文件后进行样本分析。

2.2. 查看网络连接

可直接查看网络连接对接的应用程序。

2.3. 文件操作

可方便查看设置了隐藏属性的文件。

posted @ 2020-07-04 16:00  低调小飞  阅读(419)  评论(0)    收藏  举报