Windows 应急响应:思路探索与案例实践
一、前言
应急响应(emergency response)广义上指在出现紧急情况或突发事件时,迅速采取行动以减少损失、保护人员安全和恢复正常运营的过程。相对于网络安全行业来说特指系统或网络遭遇非法入侵、病毒入侵、恶意攻击等非法的安全入侵后而启动的安全排查并恢复正常运行。本文基于Windwos 平台的安全应急响应,结合相关安全案例简单阐述 Windows 网络安全应急响应工作的开展。
二、基础知识
对于 Windows 系统的应急响应,应需了解相应的系统知识,一定知识的积累可以帮助应急人员在应急响应时快速作出判断,便于工作的开展,以下为部分的 Windwos 系统基础知识。
2.1 系统日志
在Windows 应急响应中,主要分析的日志日志类型有:系统日志、安全日志、应用程序日志,快捷键 Win + R
在运行框输入 eventvwr.msc
即可打开事件查看器,对应绝对路径为 C:\Windows\System32\winevt\Logs
下的 System.evtx
、Security.evtx
、Application.evtx
系统日志
系统日志主要记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。默认位置:%SystemRoot%\System32\Winevt\Logs\System.evtx
安全日志
安全日志记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。 安全日志也是调查取证中最常用到的日志。 默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志 或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。 默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
应用程序日志
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件 例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。 如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。 默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
PowerShell日志
用户在执行 PowerShell 命令或脚本时,无论是本地还是通过远程处理,Windows都会将事件写入以下三个日志文件。默认位置
C:\Windows\System32\winevt\Logs
1 | Windows PowerShell.evtx |
2.2 进程
Windows 进程是在 Windows 操作系统中运行的程序实例。每个进程都是一个独立的执行环境,拥有自己的内存空间和系统资源。进程之间相互隔离,这样可以确保一个进程的崩溃或错误不会影响其他进程的稳定性。在Windows中,每个进程都有一个唯一的标识符,称为进程ID(Process ID,PID),进程ID用于识别和管理进程。Windows 操作系统使用进程调度算法来决定哪些进程在给定时间运行,以及它们在处理器上分配的时间。底部任务栏右键点击任务管理器即可打开
亦可通过 Win + R
输入 msinfo32
系统环境-》正在运行任务 查看更为详细的进程信息,包括进程路径、进程ID、文件创建日期以及启动时间等。
终端命令为:netstat -ano
2.3 计划任务
Windows 计划任务是一种功能,用于在指定的时间或事件发生时自动执行特定的任务或程序。Win + R
输入taskschd.msc
三、入侵排查思路
当应急人员在接到应急响应任务后,首先需要冷静分析,充分了解事件详情,理清具体应急事件的类型,因为不同的类型所对应的应急方案略有差异;询问现场人员具体事件的发生及研判过程,再者询问是否有安全设备,若有,可通过安全平台针对应急事件类型查看日志获取有用信息,若已捕获相关样本则请求提供开展分析。以下步骤主要为针对服务器主机端的入侵排查操作,顺序不一定按照以下来,根据现场环境和得到的信息进行灵活处理即可。常见攻击或安全事件手段如下:
1 | | 类型 | 手段 | |
3.1 检查系统账号安全
1、排查是否有异常的系统用户
1 | lusrmgr.msc |
cmd 终端命令亦可进行查询
1 | net user |
2、排查账号信息(按照实际情况查询),若发现存在可疑账号可直接询问系统方管理员,咨询其账号归属,以下命令查看处于Administrator 组的用户
1 | net localgroup Administrators |
3.2 检查可疑进程、端口
1、进程,通过命令查看目前的网络连接,定位可疑的 ESTABLISHED
,若主机已断网,则可注意处于 LISTENING
,该步骤主要是排查对外 IP 与本机的连接情况。对可疑的 IP 进行安全排查。
1 | netstat -ano |
定位可疑路径应用,若通过 netstat -ano 发现可疑链接或进程,则可通过定位其 PID 进而定位可疑应用,下列通过定位上图 ESTABLISHED
具体是哪个应用,上图 PID 为 852,由下图可知已经建立连接的应用程序为 chrome.exe
1 | tasklist | findstr "PID" |
2、当然这里在不知道 PID 的情况下,通过端口获取 PID 进而定位具体应用,最外层的是 PID 号,得知 3306 端口 PID 为 1072 , 443 端口 PID 号为 852
3.3 检测可疑计划任务
1、Win + R 输入命令后查看是否存在可疑的计划任务,若存在则对其开展安全排查
1 | taskschd.msc |
2、通过检查计算机与网络上的其它计算机之间的会话或计划任务排查安全隐患,通过对显示的可疑任务进行审查
1 | - 旧系统使用 at |
3.4 检查可疑启动项
通过查看是否存在命名异常的启动项目,若存在则取消勾选命名异常的启动项目,并找到相关文件路径保存样本后可作删除处理。
1 | msconfig |
2、检查组策略,查看是否有可疑启动策略
1 | gpedit.msc |
3、检查注册表,Win + R 输入 regedit 打开注册表,逐一排查可疑启动
1 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run |
1)用户设置的启动项是排查的重点,若右边出现可疑的启动项则可对其排查,该删除后不影响系统运行。
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
2)系统设置的启动项,一般是第三方软件的驱动程序,谨慎删除,可能会对系统造成影响。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
3)系统启动项,该键路径用于在系统启动时只运行一次的应用程序或命令。执行完毕后,该键路径下的条目会被自动删除
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
3.5 可疑文件排查
一般手法的 web 端攻击获取 webshell 或进行后渗透时,大多数情况下会生成相关的落地文件,通常情况下我们对相应的时间段内的文件进行排除即可,若已经进行了后渗透隐藏了另说。
这边使用 everything 进行排除,下载地址:https://www.voidtools.com/zh-cn/downloads/,命令如下,搜索时间从2023年10月24日-2023年10月25日内新建的 .exe、.bat、.vbs、.jsp、.jar、.dll 文件,命令根据实际情况调整
1 | dm:2023/10/24-2023/10/25 *.exe|*.bat|*.vbs|*.jsp |
3.6 日志分析
日志分析,主要对服务器主机日志、web 日志、安全设备日志进行排除审计。
服务器主机日志
具体位置上述已有说明,这里不在阐述,这边使用 FullEventLogView 工具,下载地址:https://www.nirsoft.net/utils/full_event_log_view.html 以及 LogParser 工具,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659 进行分析。
1)full_event_log_view ,使用该工具,只需要将 .evtx 日志放置在某一文件夹内,勾选相关功能即可可视化显示日志信息。
勾选 Option 中的 Show Event String In Columns 展示更多的事件信息。
full_event_log_view 默认显示的时间为 7 天,若想要显示其它时间需要,需要在 Option 中的 Advanced Option 中另选择
然后将需要分析的 .evtx 日志文件放在同一目录下如 System.evtx、Security.evtx、Application.evtx,等待加载完日志,即可可视化查看日志记录
若想要定点分析,可在 Option 中的 Advance Option 设置查看特定的事件或过滤某关键字
2)LogParser ,微软官方经典的日志分析工具,比较麻烦就是需要自己输入查询命令,下载安装完后在安装路径下 cmd 打开然后执行命令,即可可视化查看具体的事件(注意下列的命令中的日志路径需替换为自己需要分析的日志路径)
- 直接显示系统日志全部内容,不作筛选
1 | LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM D:\Software\LogParser\logs\Security.evtx" |
- 查看登录成功的所有事件,Event ID 为 4624
1 | LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM D:\Software\LogParser\logs\Security.evtx where EventID=4624" |
- 查看指定登录时间范围的事件, 2023-10-01 23:32:11 - 2023-10-26 23:34:00
1 | LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM D:\Software\LogParser\logs\Security.evtx where TimeGenerated>'2023-10-01 23:32:11' and TimeGenerated<'2023-10-26 23:34:00' and EventID=4624" |
- 提取登录成功的用户名和 IP
1 | 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 D:\Software\LogParser\logs\Security.evtx where EventID=4624" |
- 查看登录失败的所有事件,Event ID 为 4625
1 | LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM D:\Software\LogParser\logs\Security.evtx where EventID=4625" |
- 提取登录失败用户名进行聚合统计
1 | LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM D:\Software\LogParser\logs\Security.evtx where EventID=4625 GROUP BY Message" |
- 系统历史开关机记录
1 | LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM D:\Software\LogParser\logs\Security.evtx where EventID=6005 or EventID=6006" |
3)安全开源小工具 “windows日志一键分析小工具” , Github 地址 :https://github.com/dogadmin/windodws-logs-analysis#windows,该工具会调用系统进程,建议使用 windowslog-local.exe 在虚拟机使用,即将服务器日志拷贝在 c 盘在新建 log 文件夹,然后点击需要分析的功能即可。
中间件WEB日志
在服务器端,相应的中间件若开启并设置相关的日志记录,则会对记录系统相应的请求信息或运行报错。
1、Apache Tomcat 日志,一般存放在 tomcat 目录下的 logs 文件夹中。
2、Nginx 日志,一般亦会存放在 nginx 目录下的 logs 文件夹中,主要查看 access.log 访问日志文件,记录所有的HTTP请求信息。
和 error.log 错误日志文件,记录Nginx服务器的错误和警告信息。
3、IIS 日志,一般存放在 %SystemDrive%\inetpub\logs\LogFiles,其中,%SystemDrive%
表示系统安装的驱动器(通常是 C:\)在 LogFiles
目录下,你会找到多个子目录,每个子目录对应一个网站或应用程序的日志文件。
3.7 木马查杀
1)webshell 查杀,在 Windows 下的应急查杀中,在服务器端没有其它的 edr 时候,针对 Webshell 的查杀,老朋友 “D盾” 依然是个不错的选择,下载地址:https://www.d99net.net/
该工具的好处就是除了针对 webshell 的查杀,还有相关的辅助功能协助应急人员进行排查。
3.8 安全设备排查
由于不同的单位购买的安全设备不一,有些单位只有单一的防火墙作为安全防护,所以此步骤应充分了解客户现场的安全设备情况,若有相应的态势、全流量、EDR 等安全设备可通过这些设备进行辅助排查,尽可能的获取更多的信息。
3.9 小结
以上就是针对 windwos 服务器端的基本入侵排查手法,当然上面端口、进程、启动项等的排查亦可通过 火绒剑 去进行辅助排查,使用优秀的工具可最大程度减轻应急人员的工作及负担。火绒剑独立版下载地址:https://www.52pojie.cn/thread-1358296-1-1.html
四、案例
某次演练期间某单位接到上级通报,该单位被攻击队获取相应权限,需在规定时间内对单位涉事主机进行排查,并上交相关报告。任务转辗至此,接到应急任务后,在到达现场前已经大概了解事情的经过,被入侵网站为某外网单位部门网站, 攻击者利用漏洞上传后门木马。于是到达现场后便开展相关的入侵排查。
4.1 服务器排查
检查系统用户情况
通过排查发现服务器存在隐藏账号 aaa$
,即当存在 $ 结尾的用户名时在 CMD 终端使用命令 net user
无法显示该用户,若只通过终端命令排查,而没有进一步排查则会错失重要信息,创建时间为5月25日10:40:35。
排查异常文件
通过排查,发现5月23日,系统存在黑客入侵痕迹,期间黑客不断进行文件上传操作,并成功上传多个后门木马文件。
对木马目录跟进排查,发现在相近时间内攻击者进行了大量的尝试攻击。
跟进部分木马样本,打开查看,已相当清晰明了
端口、进程排查
通过查看进程,发现系统存在 frpc.exe进程,攻击者通过该软件对内网资源进行漏洞探测,实现横向渗透操作。
定位文件路径为 D:\Product\Home\UploadFile\2022\frpc.exe
,通过攻击者上传的frp软件,查看其配置文件定位到攻击者服务器 IP
4.2 安全设备排查
由于已知道已被上传木马,现场有相应的安全设备,通过安全设备进行日志排查。安全设备上检测到5月25日带有攻击记录,通过此前上传的文件 t.5.aspx 请求内网资源。
后续使用 CobaltStrike 进行后渗透操作。
4.3 攻击 IP 溯源
通过整合前面的信息,对 frp 服务端 IP 以及 CobaltStrike IP 进行简单信息获取。
CobaltStrike 攻击者IP
出口 IP 企业相关信息。
4.4 小结
以上案例只是通过对应入侵排查思路小节进行相应的步骤展示,通过结合所学实际运用在真实环境中。
五、总结
本篇幅通过了解 Windows 服务器的入侵手法进行简单的阐述,在实际的应急响应中,应急人员应该要有一个意识就是 “对一切事物保持一定的合理怀疑” 因为对于业务方来说,他们不一定知道哪一个信息会对应急排查起相关的作用,有些他们认为不重要的信息也许对于排查人员来说是一个关键的信息,又或许他们遗漏了某些信息,通过我们的询问会将某些信息带出来,增加排查思路。
六、参考
1 | https://cloud.tencent.com/developer/article/2342371 |