我被黑了?后悔没装Sysmon

开局一张图,剩下的全靠编。哈哈哈

image-20230419151328244

一个阳光明媚的周三中午,刚吃完饭回到工位上。

正要打开RDP软件连接我自己的机器,不小心手误点到了下拉列表,就看到一堆21.开头的IP地址。

image-20230419151105890

此时,我在纳闷为什么会有这么多的RDP外联历史记录,我没记得之前连接过呀。

这些IP都是哪的呢?好奇心让我点开了百度去识别这几个IP地址。好家伙,吓了我一跳:“美国国防部网络信息中心”。咋回事?被黑了?不应该啊,我一个小透明,有啥信息值得窃取啊,不应该被盯上啊。或者说我自己手贱在电脑调试什么恶意软件的时候没清理干净?不科学。

那么接下来,我想到的就是得在这台Windows电脑上排查下,这些RDP连接记录是怎么来的。

首先,我去Windows日志查看器中看了下,没找到什么有用的日志记录,难顶啊。又去网上搜了下"Windows如何查看本机的应用使用RDP外联过的远端机器日志",但是网上找到的资料大部分都是通过日志查看"哪些IP地址连接过当前这台机器",反着来说外联远端机器的日志很少有文章去介绍怎么排查。

这时,我突然想到了可以用Sysmon查看这些日志啊。对,之前给学员做培训的时候还经常讲Sysmon记录的日志很全,基本上很多系统日志不记录的东西,它都可以记录下来。而且配合Sysmon-View的功能,可以快速的对海量的Windows日志进行分析,通过对进程流程图的分析,可以清晰的梳理出攻击者的攻击路径。

但是,关键是,我自己的电脑没装啊,啊啊啊。难受了啊!

要是我之前装了的话,那应该大概率可以看到什么时间,什么程序打开了RDP程序进行的远程连接。

哎,草率了。

不过,好在这不是一次真的攻击事件,群里大佬帮我解答了这个问题。

image-20230419154056024

image-20230419154138567

image-20230419154239035

随即,脑子里过了下,要不直接把这些个IP地址硬盘上搜一下,看看之前有没有记录下相关IP的东西啥的。

结果一搜,嗯,HW的那段小日子回来了。原来是之前自己连接过的内网IP地址。

那么,这个事件告诉了我们什么呢?

那就是:遇到问题,第一时间先去水水群。

开玩笑哈,别当真。很明显,经此一事,我发现本地记录下必要的日志信息是很有必要的,方便后期遇到问题了直接去溯源排查。

下面我们展开说下Sysmon和Sysmon-View。

1.Sysmon介绍

系统监视器 (Sysmon) 是一种 Windows 系统服务和设备驱动程序,安装到系统上后,在系统重启后仍保持驻留状态,以监视系统活动并将系统活动记录到 Windows 事件日志中。 它提供有关进程创建、网络连接和文件创建时间更改的详细信息。 通过使用 Windows事件收集 或 SIEM 代理收集它生成的事件并随后对其进行分析,可以识别恶意或异常活动,并了解入侵者和恶意软件如何在网络上运行。

Sysmon 包括以下功能:

  • 使用当前进程和父进程的完整命令行记录进程创建。
  • 使用 SHA1 (默认) 、MD5、SHA256 或 IMPHASH 记录进程映像文件的哈希。
  • 可以同时使用多个哈希。
  • 在进程创建事件中包含进程 GUID,以允许事件关联,即使 Windows 重用进程 ID 也是如此。
  • 在每个事件中包含一个会话 GUID,以允许同一登录会话上的事件关联。
  • 记录驱动程序或 DLL 及其签名和哈希的加载。
  • 此时会打开日志,以便对磁盘和卷进行原始读取访问。
  • (可选)记录网络连接,包括每个连接的源进程、IP 地址、端口号、主机名和端口名称。
  • 检测文件创建时间的更改,以了解文件真正创建的时间。 修改文件创建时间戳是恶意软件通常用于掩盖其跟踪的技术。
  • 如果注册表中发生更改,则自动重新加载配置。
  • 规则筛选,用于动态包含或排除某些事件。
  • 在启动过程的早期生成事件,以捕获由复杂的内核模式恶意软件所创建的活动。

2.Sysmon程序及配置文件

Sysmon官网下载地址:https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon

image-20230419160814150

微软官方家的工具,这么好用,咱也不知道为啥不直接集成到系统里。

需要注意的是,Sysmon 是对本机 Windows 日志记录功能的补充,而不是替代它。

Sysmon配置文件下载地址:https://github.com/SwiftOnSecurity/sysmon-config

image-20230419173339361

Sysmon的配置文件网上很多,大家可以根据自己的需求去找更合适的配置文件。这里仅以当前的这个github项目的配置文件为例进行的演示。

3.安装Sysmon

(1)将下载下来的配置文件和sysmon程序放在同一个目录下

image-20230419173456421

(2)使用管理员启动powershell或cmd,进入到sysmon目录中,开始安装。

1
2
PS C:\Windows\system32> cd C:\Tools\Sysmon14.16
PS C:\Tools\Sysmon14.16> .\Sysmon64.exe -accepteula -i  sysmonconfig-export.xml

image-20230419173630430

可以看到输出的提示信息显示已经安装完成并启动了。

4.查看Sysmon日志

Sysmon安装启动好之后,打开Windows日志查看器进行查看。

image.png

Sysmon采集的日志位置:应用程序和服务日志->Microsoft->Windows->Sysmon文件夹。

image-20230419173902805

可以看到,已经成功的采集到了很多Sysmon类型的日志记录。包括进程创建、注册表值设置、文件创建等。

5.Event ID

Sysmon类型的日志记录也和常规的Windows日志记录一样,常规的事件都对应一个事件ID。以下是其事件ID对应的事件类型:

Event ID 1: Process creation

Event ID 2: A process changed a file creation time

Event ID 3: Network connection

Event ID 4: Sysmon service state changed

Event ID 5: Process terminated

Event ID 6: Driver loaded

Event ID 7: Image loaded

Event ID 8: CreateRemoteThread

Event ID 9: RawAccessRead

Event ID 10: ProcessAccess

Event ID 11: FileCreate

Event ID 12: RegistryEvent (Object create and delete)

Event ID 13: RegistryEvent (Value Set)

Event ID 14: RegistryEvent (Key and Value Rename)

Event ID 15: FileCreateStreamHash

Event ID 17: PipeEvent (Pipe Created)

Event ID 18: PipeEvent (Pipe Connected)

Event ID 19: WmiEvent (WmiEventFilter activity detected)

Event ID 20: WmiEvent (WmiEventConsumer activity detected)

Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected)

Event ID 22: DNSEvent (DNS query)

Event ID 255: Error

Event ID 1: 创建进程

Event ID 2: 进程更改了文件创建时间

Event ID 3: 网络连接

Event ID 4: Sysmon 服务状态已更改

Event ID 5: 进程终止

Event ID 6: 驱动程序加载

Event ID 7: 镜像加载

Event ID 8: 创建远线程

Event ID 9: 驱动器读取

Event ID 10: 进程访问

Event ID 11: 文件创建

Event ID 12: 注册表事件(Object create and delete)

Event ID 13: RegistryEvent (Value Set)

Event ID 14: RegistryEvent (Key and Value Rename)

Event ID 15: 文件流创建

Event ID 17: 管道事件(Pipe Created)

Event ID 18: PipeEvent (Pipe Connected)

Event ID 19: WmiEvent (WmiEventFilter activity detected)

Event ID 20: WmiEvent (WmiEventConsumer activity detected)

Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected)

Event ID 22: dns解析(DNS query)

Event ID 255: Error

详细的介绍直接看官网的介绍就可以了:https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon

6.日志示例

开启Sysmon日志收集功能后。我们手动运行测试用的木马文件Cannon.exe。

可以在Sysmon日志中清楚的看到Cannon.exe调用了cmd.exe,执行了b.bat文件。

image.png

日志还可以看到bat文件的创建信息:

image.png

注册表操作的信息:

image.png

以及dns查询信息:

image.png

这里直接可以看到,该木马使用了smtp.seznam.cz作为通讯的邮件服务器。

注:标题6的这部分内容,忘了之前在哪里学习Sysmon的时候摘抄下来的段落了,所以在这里没法给出引用链接。只能口头表示感谢您无私的分享。因为演示的挺易懂的,我就不再复现一遍了。

不过,到目前为止,我们并没有看到Sysmon有多么的强大,因为这和传统的Windows事件查看器里看到的日志是没啥区别的,无非就是记录的更详细了一点???面对海量的日志,我们又该怎么办呢?几万条,几十万条,我们是没法直接提取有效的信息的。那么,接下来,我们要介绍的就是——Sysmon View。通过Sysmon View我们就可以分析海量日志了。

7.Sysmon View介绍

Sysmon View是Sysmon Tools中的其中一款工具。

Sysmon Tools包括3款常用工具:Sysmon ViewSysmon ShellSysmon Box

  • Sysmon View:通过逻辑分组和关联各种 Sysmon 事件来帮助跟踪和可视化 Sysmon 日志。
  • Sysmon Shell:可以通过简单的 GUI 界面帮助编写和应用 Sysmon 配置文件。
  • Sysmon Box:可以帮助构建捕获的 Sysmon 和网络流量的数据库。

Sysmon Tools地址:https://github.com/nshalabi/SysmonTools

image-20230419175850400

本文的话,我们主要介绍 Sysmon View 的使用,其他的两款工具,大家感兴趣的话可以自己找找文章去看下。

因为Sysmon-View只支持打开xml格式的Sysmon日志,所以我们需要先将采集到的Sysmon日志导出为xml格式。

image-20230419143748336

image-20230419143843119

image-20230419175453383

本文演示使用的这个sysmon.xml可以从这里下载:https://github.com/Mr-Aur0ra/Sysmon-Use/blob/main/Example/sysmon.xml

打开下载好的Sysmon View,点击左上角的File->Import Sysmon Event Logs即可开始导入采集的日志文件。

image-20230419180026590

image-20230419180049240

image-20230419180252781

接下来会出现提示,询问是否加载IP地址资源信息,勾选上的话,日志中的公网IP地址都会在地图的相对位置中显示出来。使用此功能的前提是需要先在软件设置中提前设置好相关的API地址。

image-20230419180633617

image-20230419180706219

image-20230419180856575

等待加载完毕,如果日志里比较的大的话,加载的时间会长些。

加载完成后的效果:

image-20230419181420126

Sysmon View主要分为4个功能区:Process ViewMap ViewAll Events ViewHierarchy View

(1)Process View(进程视图)

进程视图主要用于日志采集时,系统中"运行会话"的摘要信息。比如我们可以从列表中显示的任意可执行文件名称(如 cmd.exe)或事件类型(如网络事件)开始,点击其名称即可可以进行进一步过滤显示。

image-20230419182524942

可以看到,采集的日志显示系统中,出现使用过有两个可执行文件名称为cmd.exe。具体的程序路径为:C:\Windows\ System32\cmd.exe和 C:\Windows\SysWOW64\cmd.exe。

我们随意点击其中一个 cmd.exe。接着,就可以在类似数据流的简单视图中显示其所有相关的事件,该视图默认使用时间排序。

image-20230419184045420

继续点击每个具体的运行会话,可以在右侧看到详细的视图信息。

image-20230419184420737

image-20230419184511241

都点一遍后,我们就把采集的日志中显示的,系统中出现过的使用了这两个可执行文件名称为cmd.exe的,启动起来的具体运行会话(进程)在右侧全部显示出来了。

image-20230419184735370

在右侧的视图中,我们可以看到,一共有七条事件显示使用了可执行文件名称为cmd.exe程序启动了运行会话,相应的我们还可以看到哪个时间点,哪个父进程启动的cmd.exe。

image-20230419185955706

双击任意一个进程创建事件,我们可以看到这个进程创建事件的详细信息。

image-20230419190626348

比如,上图中显示的就是父进程 phpstudy_pro.exe 运行了 cmd.exe。

相应的只要Sysmon View列出来可执行文件名称,我们都可以去点开,查看日志采集到的相关事件,比如下面的chrome,查看到的事件就包括:进程创建,pipe创建,注册表值修改等。

image-20230419191426050

这样的话,Process View(进程视图) 的功能就介绍完了。但是你会发现这样的话,虽然按照可执行程序名进行了归类汇总,但是,如果分析海量的数据,还是比较慢,需要挨个点击进去分析。那么怎么快速分析呢?你可以选择使用 Hierarchy View(层级视图) 功能。不过本文会按顺序讲完这4个视图模式,着急的话可以划到后面去看。

(2)Map View(地图视图)

在日志导入Sysmon View过程中,有一个地理定位 IP 地址的选项,如果设置,Sysmon View 将尝试使用 https://ipstack.com/ 服务对网络目标进行地理映射。

image-20230419180633617

image-20230419203620745

(3)All Events View(所有事件视图)

该视图主要用于对所有 Sysmon 收集的事件数据进行全面搜索,它还有助于查看与其他事件无关的事件,例如"Driver Loaded"事件类型或一些小部分未归类到 Process View 中的事件。

image-20230419204432252

整个日志中的所有事件都在这里进行了汇总显示,我们可以通过搜索框进行快速的筛选符合特定条件的事件。比如特定的:IP地址、域名、进程名等。

image-20230419204700507

在该视图下,我们还可以根据特定的字段对所有事件进行归类,只需要将字段名拖到其上方即可。

image-20230419211941976

如果我们针对"Event Type"进行归类,效果如下:

image-20230419212108026

可以看到,这样归类后,我们就能更加清晰的去分析某一类特定的事件。比如:如果我们希望追溯攻击的源IP地址,那么我们就可以重点针对事件类型为"Dns Query"和"Network Connection detected"等。

image-20230419212352074

比如,我们展开"Dns Query"的第一个事件进行查看。从左到右可以看到很多的字段和对应的值。拖动条有点长,往右滑动可以看到更多的信息。

image-20230419212859155

我们展开一条事件记录后,将鼠标光标移动到ProcessGuid字段上面,等待2-3秒,左右的滑动条会自动消失,此时鼠标直接双击这个GUID值即可打开该事件的独立窗口。(可能需要多尝试几才能找到双击这个GUID打开独立窗口的手感)。

image-20230419213227542

image-20230419213258855

可以看到,这样的话这条事件记录重要信息就显示出来了。不过需要注意的是,图中的信息并不是这条事件的所有信息,比如我们在看的这条"DNS Query"在图中仅显示了是程序 phpstudy_pro.exe 查询了域名 updates.xp.cn,响应结果是查询成功了。但没有具体的响应的值。但在原始的这条记录中,往右划是可以看到这条DNS查询响应的结果值的。

image-20230419214258566

再比如,我们展开"Network Connection detected"的第一个事件进行查看。从左到右也可以看到很多的字段和对应的值。拖动条有点长,往右滑动可以看到更多的信息。

image-20230419214524607

双击该GUID的值显示该条事件的重要信息部分。

image-20230419214641034

在图中我们可以清晰的看到网络连接的信息,但是没有看到是什么应用产生的网络通信。不过,我们还是可以通过在原始的这条记录中,往右划找到是什么应用的通信流量的。

image-20230419215135917

这个图就可以看出是Windows系统自带的远程桌面软件(mstsc.exe)产生的网络通信流量。

(4)Hierarchy View(层级视图)

通过该视图,可以清晰的显示进程父子层级的关系。

image-20230419231255762

通过在该视图下的分析,我们就能分析出当时系统中运行的各种各样的进程关系。进而梳理出攻击者的攻击路径。

我们分析时需要从左向右,逐个进程分析,以防止错过恶意软件的进程。

如上例所示,从左向右走,第一列可以看出,explorer.exe(Windows资源/程序管理器)启动了一个powershell进程,接着powershell进程运行了Sysmon64.exe程序。(大概的流程都话就是用户在桌面上通过点击任务栏或桌面上的powershell图标或通过Win+R运行的powershell程序,接着在powershell中运行了Sysmon64.exe程序)

image-20230419232057558

双击powershell.exe框,可以打开该powershell.exe运行会话具体的信息。

image-20230419232640898

双击Sysmon64.exe框,可以打开该Sysmon64.exe运行会话具体的信息。

image-20230419232807142

继续往右走,可以看到explorer.exe(Windows资源/程序管理器)启动了一个wemeetapp.exe进程。下面的话又是该程序启动的一些子进程。双击打开查看的话可知这是腾讯会议的程序进程,没有什么恶意行为,直接跳过继续往右走就行。

image-20230419233120570

继续往右走,可以看到explorer.exe(Windows资源/程序管理器)启动了一个php_study_pro.exe进程。下面的话又是php_study启动的一些子进程。

image-20230419233244152

可以看到php_study启动了好几个cmd进程,通过cmd执行了好几个命令。我们可以依次都点开看看这些命令。

image-20230419233429294

这几个子进程的话就是收集些网络端口信息,然后对php_study的网络服务进行了管理。没什么恶意行为,就继续往右看即可。

继续往右走,可以看到explorer.exe(Windows资源/程序管理器)启动了一个cmd.exe进程,接着执行了ipconfig命令。

image-20230419233829140

双击cmd.exe和ipconfig框,可以看到具体的执行参数。这里的话就是用户在桌面上通过点击任务栏或桌面上的cmd图标或通过Win+R运行的cmd程序,接着在cmd中运行了ipconfig命令查看当前主机的IP地址配置信息。

image-20230419234026372

继续往右走,可以看到explorer.exe(Windows资源/程序管理器)启动了一个powershell进程,接着powershell进程运行了两次mstsc.exe(Windows系统远程桌面软件)程序。

image-20230419234232658

进程间的关系可以在这个图中清晰的显示,但如果存在网络相关的事件日志的话,在这个图中无法直接展示出来,需要我们重点去展开查看。比如这个远程桌面的程序,我们不确定有无网络日志产生。此时,就需要我们点击相应的GUID值,通过弹出的窗口查看该进程有无网络通信行为。

image-20230419234921858

这里的话就可以看到外联通信的IP地址信息了。

继续往右走,可以看到又是Wemeet相关的进程。本质是启动了Update更新软件的操作。不过,需要重点留意下下方的cmd.exe以及net.exe和net1.exe。检查这几个命令参数有误问题。因为攻击者拿到Shell以后,可以通过进程迁移的方式,将Shell迁移到正常的进程当中去执行。所以,当你看到正常进程下面有莫名其妙的操作时,就需要重点进行排查。比如说:Widnows绘画板进程下面有一个cmd进程,接着cmd进行还执行了net user添加用户的操作。这种的话就是典型有问题的进程。

image-20230419235033826

image-20230419235527357

OK,当前这个示例的日志文件就分析完成了。

刚才我们分析的这个日志文件里面没有恶意行为,下面单独介绍几个有恶意行为的示例。

示例1:攻击者通过进程迁移,在绘画板的进程下执行命令下载了恶意程序并执行。

image-20230420000025143

示例2:攻击者在受害主机上开启共享文件站点,以便下载数据。

image-20230420000129960

综上,Sysmon及Sysmon-View的使用就介绍完了。这里只是演示了最基本的工具使用。

如果你是红队选手的话,你可以尝试部署下Sysmon日志采集功能,然后把自己常用拿到目标主机Shell后的操作执行一把,然后用Sysmon-View分析下,看看能不能通过日志就完整的分析出自己渗透进来之后,执行的所有操作,我感觉只要你没清Sysmon的日志,大概率是会被完整的分析出来的。

如果你是蓝队选手的话,有能力的也建议你模拟入侵下,然后分析不同的攻击行为在Sysmon日志层面产生的效果。

updatedupdated2023-07-242023-07-24