分类 | 难度 |
---|---|
DFIR | Very Easy |
Sherlock Scenario
In this Sherlock, you will familiarize yourself with Sysmon logs and various useful EventIDs for identifying and analyzing malicious activities on a Windows system. Palo Alto's Unit42 recently conducted research on an UltraVNC campaign, wherein attackers utilized a backdoored version of UltraVNC to maintain access to systems. This lab is inspired by that campaign and guides participants through the initial access stage of the campaign.
学习目标:
- 熟悉 Sysmon 日志和 常用的 EventID
- 识别和分析 Windows 系统上的恶意活动
- UltraVNC 的后门版本
前置知识
Sysmon 是一项额外的服务,可以安装在 Windows 系统上,以提供更多的系统活动日志记录。它对于收集诸如具有完整命令行的进程事件、进程映像的哈希值、网络连接和注册表修改等内容特别有用。Sysmon 是高度可配置的,因此给定系统上将出现什么样的日志将取决于它的配置.
EventIds:
Microsoft EventIDs
ID | 事件 | |
---|---|---|
1 | Process creation | 进程创建 |
2 | A process changed a file creation time | 进程修改文件创建时间 |
3 | Network connection | 网络连接 |
4 | Sysmon service state changed | Sysmon 服务状态改变 |
5 | Process terminated | 进程终止 |
6 | Driver loaded | 驱动已加载 |
7 | Image loaded | 镜像已加载 |
8 | CreateRemoteThread | 进程创建线程 |
9 | RawAccessRead | |
10 | ProcessAccess | 进程访问 |
11 | FileCreate | 文件创建 |
12 | Registry Object create and delete | 创建和删除注册表对象 |
13 | Registry Vault set | 注册表值设置 |
14 | Registry Key and Value Rename | 注册表键值重命名 |
15 | FileCreateStreamHash | |
16 | ServiceConfigurationChange | 服务配置更改 |
17 | Pipe Created | 管道已创建 |
18 | Pipe Connected | 管道已连接 |
19 | WmiEventFilter activity detected | WmiEventFilter 活动检测 |
20 | WmiEventConsumer activity detected | WmiEventConsumer 活动检测 |
21 | WmiEventConsumerToFilter activity detected | |
22 | DNS query | |
23 | File Delete archived | 文件已删除(带存档) |
24 | New content in the clipboard | |
25 | Process image change | |
26 | File Delete logged | 文件已删除(无存档) |
27 | FileBlockExecutable | |
28 | FileBlockShredding | |
29 | FileExecutableDetected | |
255 | Error |
Q: 怎么分析evtx文件?
A: 可以使用Windows自带的图形化界面事件查看器
,或者命令行工具EvtxECmd.exe
Task 1
事件 ID 为 11 的事件日志有多少个?
使用事件查看器
进行过滤
答案: 56
或者使用Powershell命令Get-WinEvent -Path '.\Microsoft-Windows-Sysmon-Operational.evtx' -FilterXPath "*[System[(EventID=11)]]" | Measure-Object
再或者参考0xdf Blog,使用EvtxECmd.exe 进行分析
$ EvtxECmd.exe -f .\Microsoft-Windows-Sysmon-Operational.evtx --json . // 生成一个json文件
// 使用 jq 处理数据
$cat 20240725114336_EvtxECmd_Output.json | jq -sc 'group_by(.EventId) | map({EventId:.[0].EventId,count: length}) | .[]'
{"EventId":1,"count":6}
{"EventId":2,"count":16}
{"EventId":3,"count":1}
{"EventId":5,"count":1}
{"EventId":7,"count":15}
{"EventId":10,"count":1}
{"EventId":11,"count":56}
{"EventId":12,"count":14}
{"EventId":13,"count":19}
{"EventId":15,"count":2}
{"EventId":17,"count":7}
{"EventId":22,"count":3}
{"EventId":23,"count":26}
{"EventId":26,"count":2}
Task 2
每当在内存中创建一个进程时,都会记录一个事件 ID 为 1 的事件,其中包含命令行、哈希值、进程路径、父进程路径等详细信息。这些信息对于分析人员来说非常有用,因为它允许我们查看所有程序在系统上执行,这意味着我们可以发现正在执行的任何恶意进程。感染受害者系统的恶意进程是什么?
每创建一个进程都会记录一个EventID 为 1 的事件
使用同Task 1的方法,使用 事件查看器
进行过滤 EventID = 1 的事件,
在这类事件中,发现执行了命令CommandLine: "C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe"
,通过浏览器搜索Preventivo24
可以发现,这是一个恶意的程序。
哈希值:
Hashes:
SHA1=18A24AA0AC052D31FC5B56F5C0187041174FFC61,
MD5=32F35B78A3DC5949CE3C99F2981DEF6B,
SHA256=0CB44C4F8273750FA40497FCA81E850F73927E70B13C8F80CDCFEE9D1478E6F3,
IMPHASH=36ACA8EDDDB161C588FCF5AFDC1AD9FA
结合一些云沙箱,如virustotal
,AnyRUN
等,输入hash即可查看文件是否为恶意文件(已被上传过)
答案:C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe
或者参考0xdf的方法:
$ cat .\20240408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 1)' > eventid1.json
$ cat .\eventid1.json | jq -s '.[0]'
$ cat .\eventid1.json | jq -s '.[] | [.TimeCreated, .PayloadData4, .ExecutableInfo, .PayloadData1, .PayloadData5]'
$ cat .\eventid1.json | jq -s '.[1]'
Task 3
哪个云驱动器被用来分发恶意软件?
Task 4
初始恶意文件在磁盘上创建的许多文件都带有时间戳(一种防御规避技术,更改文件创建日期以使其看起来很旧)。 PDF 文件的时间戳更改为多少?
Task 5
恶意文件在磁盘上删除了一些文件。 “once.cmd”在磁盘上的何处创建?请回答完整路径和文件名。
Task 6
恶意文件尝试到达虚拟域,很可能是为了检查互联网连接状态。它尝试连接到哪个域名?
Task 7
恶意进程尝试访问哪个 IP 地址?
Task 8
该恶意进程在使用 UltraVNC 后门变体感染 PC 后自行终止。该进程何时终止?
恶意软件来源分析
恶意软件会做什么? 根据恶意软件可能会做的事情,重点关注 文件事件(11)|(2)
,网络事件(3)
,DNS事件(22)
使用事件查看器
过滤, 然后在进行分析,过滤方法同上:
事件ID为11,是创建文件; 事件ID为2,是修改文件的时间
恶意文件再被创建完成之后,一般都会被修改时间
(GUI 略)
// 文件创建的文件名和创建时间
$ cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 11)'|jq -s '.[] | [.PayloadData4,.TimeCreated]'
通过命令执行的结果可以知道,这些文件几乎都是再时间"2024-02-14T03:41:58.4600817+00:00"
附近创建的,包不正常的
其中存在一个文件C:\Users\CyberJunkie\AppData\Roaming\Photo and Fax Vn\Photo and vn 1.1.2\install\F97891C\WindowsVolume\Games\once.cmd
(Task 5)
查看文件修改的时间
🍀 cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 2)' | jq -s '.[] | [.PayloadData4,.PayloadData5,.PayloadData6,.TimeCreated]'
其中PDF文件的部分
└─🍀 cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 2)' | jq -s '.[] | [.PayloadData4,.PayloadData5,.PayloadData6,.TimeCreated]' | grep pdf -A 4 -B 1 | jq -s
[
[
"TargetFilename: C:\\Users\\CyberJunkie\\AppData\\Roaming\\Photo and Fax Vn\\Photo and vn 1.1.2\\install\\F97891C\\TempFolder\\~.pdf",
"CreationTimeUTC: 2024-01-14 08:10:06.029",
"PreviousCreationTimeUTC: 2024-02-14 03:41:58.404",
"2024-02-14T03:41:58.4101450+00:00"
]
]
初次创建文件的时间为2024-01-14 08:10:06
(Task 4)
查看一下DNS 事件
└─🍀 cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 22)' | jq -s '.[] | [.TimeCreated,.PayloadData4,.PayloadData3]'
[
"2024-02-14T03:41:26.4441194+00:00",
"QueryName: uc2f030016253ec53f4953980a4e.dl.dropboxusercontent.com",
"Image: C:\\Program Files\\Mozilla Firefox\\firefox.exe"
]
[
"2024-02-14T03:41:45.7793186+00:00",
"QueryName: d.dropbox.com",
"Image: C:\\Program Files\\Mozilla Firefox\\firefox.exe"
]
[
"2024-02-14T03:41:58.7648370+00:00",
"QueryName: www.example.com",
"Image: C:\\Users\\CyberJunkie\\Downloads\\Preventivo24.02.14.exe.exe"
]
firefox是从d.dropbox.com
下载的(不知道答案为什么是dropbox
(Task 3))
访问了www.example.com
(Task 6).
网络连接事件(3)
的EventId值为3
└─🍀 cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 3)' | jq -s '.[] |[.TimeCreated,.PayloadData4,.PayloadData6]'
[
"2024-02-14T03:41:58.9054838+00:00",
"SourceIp: 172.17.79.132",
"DestinationIp: 93.184.216.34"
]
目的IP是93.184.216.34
(Task 7)
进程终止的EventId 值为 5
└─🍀 cat 20240725114336_EvtxECmd_Output.json | jq -c 'select(.EventId == 5)' | jq -s '.[] | [.TimeCreated,.ExecutableInfo]'
[
"2024-02-14T03:41:58.7996518+00:00",
"C:\\Users\\CyberJunkie\\Downloads\\Preventivo24.02.14.exe.exe"
]
终止事件的时间为2024-02-14 03:41:58
(Task 8)
总结
Symson 日志的分析最简单的方法是使用图形化界面事件查看器
进行分析,但可以感觉到事件查看器
在使用过程中很卡,可以使用EvtxECmd工具将evtx文件转化为json后,使用jq 对数据进行分析。需要对EventId的值和含义有了解。