由一次勒索病毒应急响应浅谈windows应急
2020-09-10 01:44:32 Author: xz.aliyun.com(查看原文) 阅读量:774 收藏

前几天做了人生中的第一次应急响应,客户中了phobos家族的勒索病毒,主要传播方式为RDP爆破。客户方面已经进行了杀毒,应急的主要目的是进行一个溯源分析,判断病毒的扩散过程和传播途径,下面对这次的应急响应进行一下总结,并且通过这次应急对window的应急响应做一个总结

客户在2020.8.28凌晨3点左右爆发了勒索病毒,感染了近10台服务器。主要目的就是溯源,找到最先是那台服务器中招的,并且判断一下,中的是哪个家族的勒索病毒。在溯源过程中分析的服务器内网ip如下

10.2.200.101
10.2.200.31
10.1.1.31
10.1.33.37

判断勒索病毒家族

勒索病毒截图如下,通过勒索病毒界面,加密文件后缀以及邮箱联系方式可以判断该病毒是phobos家族勒索病毒,目前无公开的解密方式,主要通过支付赎金方式解密。该病毒主要的传播方式为RDP爆破,如果服务器存在弱口令则比较容易感染该病毒。

对10.2.200.101进行排查

查看10.2.200.101服务器日志并进行日志分析。

通过Log Parser进行日志分析

LogParser.exe -i:EVT -o:datagrid "SELECT TimeGenerated,EXTRACT_TOKEN(Strings,8,'|') AS LoginType,EXTRACT_TOKEN( Strings,5,'|') AS USERNAME,EXTRACT_TOKEN(Strings,17,'|') AS ProcessName,EXTRACT_TOKEN(Strings,18,'|') AS Client_IP FROM 'D:\工作\项目\xxxx\服务器日志\10.2.200.101\Security.evtx' WHERE EventID='462
4'  AND  EXTRACT_TOKEN(Strings,18,'|') NOT LIKE '%-%' AND ( EXTRACT_TOKEN(Strings,8,'|')='10' or  EXTRACT_TOKEN(Strings,8,'|')='10') ORDER BY TimeGenerated DESC"


//Log Parser具体使用方法后文进行叙述

发现28日3时52分和2时15分病毒通过RDP爆破的方式登录目标服务器,源IP为10.2.0.1。经过排查,10.2.0.1为某信防火墙,确认访问流量经过防火墙时进行了源地址转换。所以进一步查看防火墙日志。

通过查看防火墙流量日志发现在28日4时1分的时候10.1.1.31经过防火墙访问10.2.200.101(经排查确认,防火墙时间比服务器时间晚9分钟)

对10.2.200.31进行排查

和对10.2.200.31分析的步骤相同,查看windows日志

发现流量也是经过10.2.0.1进行RDP登录的,查看防火墙流量日志

通过查看防火墙流量日志发现在28日3时17分的时候10.1.1.31经过防火墙访问10.2.200.31,时间同样偏差9分钟,这个流量为RDP登录成功流量。所以10.1.1.31通过RDP的方式成功登录10.2.200.31

对10.1.1.31进行排查

经过分析发现10.2.200.101和10.2.200.31都是被10.1.1.31进行RDP爆破的,所以10.1.1.31是较早感染勒索病毒的机器,需要对10.1.1.31进行分析溯源更早感染病毒的机器。

溯源到10.1.1.31查看windows日志,但是10.1.1.31服务器已经被相关工作人员从虚拟化上删除,无法查看日志,不能进行溯源

通过态势感知设备发现10.1.1.31踪迹

因为10.1.1.31被从磁盘上删除了,所以这条线索就断了。现在唯一的方法就是继续分析其他服务器日志,看看有没有不是被10.1.1.31攻击,而是被其他ip攻击的服务器,继续一步一步向前进行溯源。

但是客户说内网中部署了某服的态势感知设备,所以我去看了一下态势感知记录的数据,通过对态势感知设备进行分析,很幸运的发现10.1.1.31遭到了10.1.33.37的RDP爆破行为

追溯10.1.33.37的行为,发现10.1.33.37存在异常行为,主要是频繁扫描内网3389端口,以及对内网进行RDP爆破

具体10.1.33.37行为记录如下图

经过排查确认10.1.33.37只有对外攻击的行为,没有收到攻击(如RDP爆破)的行为。所以确认10.1.33.37是第一台感染勒索病毒的主机。

总结

由于10.1.33.37为研发人员个人主机,且通过与相关人员沟通发现,该PC使用者有下载各类破解软件的习惯,所以确认是由于研发人员主机感染勒索病毒,导致勒索病毒在内网中横向扩散。客户那边不仅有勒索病毒,还有大量蠕虫病毒,分析日志的时候发现了大量SMB爆破的行为。

附勒索病毒入侵过程脑图:

window入侵排查

  1. 查看开启的服务以及服务对应的端口
netstat -ano

//windows下命令窗口输入netstat -ano即可查看端口使用情况,如果要查看指定端口是否被占用可以使用命令netstat -ano|findstr 端口号,例如要查看8080端口号是否已经被占用就使用命令netstat -ano|findstr 8080 如果结果为空则说明没有被使用,如果有值则说明已经被使用,最后一列为使用8080端口号的进程ID。

tasklist | findstr “PID”   //根据netstat 定位出的pid,再通过tasklist命令确认端口对应的进程

  1. 查看进程

查看进程方法:

​ (1)开始--运行--输入msinfo32,依次点击“软件环境→正在运行任务”就可以查看到进程的详细信息,比如进程路 径、进程ID、文件创建日期、启动时间等

​ (2)使用Process Explorer 查看进程

​ (3)D盾查看进程

  1. 启动项分析

使用Autoruns进行启动项分析

window系统日志分析

window日志分为系统日志,应用程序日志和安全日志。在应急溯源中,重点关注安全日志

日志默认保存位置
系统日志:C:\Windows\System32\winevt\Logs\System.evtx 
应用程序日志:C:\Windows\System32\winevt\Logs\Application.evtx 
安全日志:C:\Windows\System32\winevt\Logs\Security.evtx
  1. 不同事件对应不同的ID,可以通过过滤ID快速浏览事件
事件ID 说明
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户启动的注销
4672 使用超级用户/管理员用户进行登录
4720 创建用户
  1. 每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式
登录类型 描述 说明
2 交互式登录(Interactive) 用户在本地进行登录
3 网络(Network) 常见的情况就是连接到共享文件夹或共享打印机时,如SMB爆破——蠕虫病毒
4 批处理(Batch) 通常表明某计划任务启动
5 服务(Service) 每种服务都被配置在某个特定的用户账号下运行
7 解锁(Unlock) 屏保解锁。
8 网络明文(NetworkCleartext) 登录的密码在网络上是通过明文传输的,如FTP
9 新凭证(NewCredentials) 使用带/Netonly参数的RUNAS命令运行一个程序
10 远程交互(RemoteInteractive) 通过终端服务、远程桌面或远程协助访问计算机,如RDP爆破——勒索病毒
11 缓存交互(CachedInteractive) 以一个域用户登录而又没有域控制器可用
  1. window安全日志分析的常用手法

一般是在事件查看其中,对日志时间ID进行筛选。比如在勒索病毒的应急响应中,我们通过事件ID-4624对登录成功的日志进行筛选,因为勒索病毒一般是通过RDP爆破的方式进行传播的,所以我们重点关注登录类型为10的登陆成功的日志,重点关注登录成功的时间与勒索病毒加密文件的时间是否对应,如下图

  1. 推荐一个window日志审计工具:Log Parser

Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、 CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句 一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来

下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659

基本使用语法

Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"

查询登录成功的所有事件

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

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

LogParser.exe -i:EVT -o:datagrid "SELECT TimeGenerated,EXTRACT_TOKEN(Strings,8,'|') AS LoginType,EXTRACT_TOKEN(  Strings,5,'|') AS USERNAME,EXTRACT_TOKEN(Strings,17,'|') AS ProcessName,EXTRACT_TOKEN(Strings,18,'|') AS Client_IP FROM 'C:\Security.evtx' WHERE EventID='46
24'

查询登录成功,切登录类型为10的用户名和IP

LogParser.exe -i:EVT -o:datagrid "SELECT TimeGenerated,EXTRACT_TOKEN(Strings,8,'|') AS LoginType,EXTRACT_TOKEN(  Strings,5,'|') AS USERNAME,EXTRACT_TOKEN(Strings,17,'|') AS ProcessName,EXTRACT_TOKEN(Strings,18,'|') AS Client_IP FROM 'C:\Security.evtx' WHERE EventID='46
24' AND  EXTRACT_TOKEN(Strings,18,'|') NOT LIKE '%-%' AND ( EXTRACT_TOKEN(Strings,8,'|')='10' or  EXTRACT_TOKEN(Strings,8,'|')='10') ORDER BY TimeGenerated DESC"

本篇文章十分基础了,写的都是最基本的应急响应,本来还想多写一下window中招勒索和蠕虫的实战情况,但是手里没有现成的例子,所以等到以后应急的时候遇到再写相关文章吧。最后,感叹一下自己太菜了,大佬们勿喷。


文章来源: http://xz.aliyun.com/t/8253
如有侵权请联系:admin#unsafe.sh