通过 Sysmon 进行威胁狩猎(Threat Hunting)(一)
2023-4-8 08:49:52 Author: Desync InfoSec(查看原文) 阅读量:28 收藏

Microsoft Sysinternals Sysmon

Sysinternals Sysmon 是一个很棒的免费工具,可以监控应用程序的使用(以及更多)。Sysmon是一个 Windows 系统服务和设备驱动程序,一旦安装在系统上,它会在系统重新启动后保持驻留,以监控系统活动并将其记录到Windows事件日志。它提供有关进程创建、网络连接和文件创建时间更改的详细信息。通过使用 Windows 事件收集或 SIEM agent收集它生成的事件并随后对其进行分析,你可以识别恶意或异常活动并了解入侵者和恶意软件如何在网络上运行。

1.Sysmon的功能和优点

1.1Sysmon的优点

(1)Microsoft 免费提供

可以轻松引入某些环境

(2)干净、容易集成

通过将事件记录到 Windows 事件日志,可以方便地集成到大多数 SIEM 或 Windows 事件收集环境:

(3)自动生成哈希值

Sysmon 可以自动生成在系统上运行的所有(或选定)二进制文件的哈希值

• 允许提交到在线服务例如 VirusTotal

(4)Microsoft 积极更新 Sysmon,定期更新版本

1.2Sysmon 功能:应用程序监控

说明:下文序号为sysmon产生日志中的事件ID:

(1)进程

进程创建 (1)、驱动程序加载 (6)、图像/DLL 加载 (7)、CreateRemoteThread (8)、命名管道 (17/18)

(2)网络

连接 (3) 主机名、IP、端口、PID

(3)注册表

项/值创建或删除(12)和修改(13)

(4)文件

创建时间修改(2),文件创建(11),ADS 创建(15)

(5)WMI

事件过滤器活动(19),消费者活动(20),消费者过滤活动 (21)

(6)IMPHASH:Hash++

功能介绍

Sysmon 可以记录各种哈希值 <HashAlgorithms>*</HashAlgorithms> ,生成 Sysmon 理解的所有哈希值:MD5、SHA1、SHA256 和…… IMPHASH

由 Mandiant 推广的 IMPHASH(导入哈希)是专门为检测/响应功能而设计的。

不是简单地获取文件的加密散列,而是对可执行文件的函数或从 DLL 导入的 API 进行散列

由于PE导入表的方式,我们可以使用imphash值来识别相关的恶意软件样本。

1.3 使用sysmon进行魔改Mimikatz检测:

(1)背景介绍:

    1. Mandiant 报告大量攻击者使用 Mimikatz

    2. 在我们几乎所有的调查中,受害者的反病毒软件都未能阻止 Mimikatz,尽管该工具的影响范围广且享有盛誉。攻击者通常会修改并重新编译源代码以逃避检测。

    3. Metasploit 等工具包含一些 Mimikatz 功能,还有 PowerShell 版本,但是当前的原生 Mimikatz 二进制文件通常更强大并且是最新的

    4. 编译自定义/更改版本的 Mimikatz 非常简单

(2)The Sed Persistent Threat(SPT)

    1. Windows mimikatz 二进制文件下载

      1. • 70% AV 检测率

    1. 从源代码编译的 mimikatz 二进制文件(无变化)

      1. • 31% 的 AV 检测率

    1. 从源代码编译的 mimidogz 二进制文件

      1. • s/mimikatz/mimidogz/g

      2. • 7% AV 检测率

(3)发现和检测过程

初次发现:mimidogz

我们发现了一个名为Whack-a-Mole的组织的入侵行为,他们使用了名为mimidogz的类mimikatz工具。几个小时后我们在 VirusTotal 上重新扫描 mimidogz,卡巴斯基突然检测到它;第二天早上我们重新扫描,又有 6 个厂商检测到它(总共 13 个);一周后总数达到 26 个厂商可以检测到该恶意程序

再次来袭:SPT Mimiyakz

随后,我们在事件调查中捕获了新的样本名为mimiyakz,这是一个新的经过魔改的mimikatz工具。我们使用antivirus scan进行扫描,发现存在恶意的行为。文件的描述内容和前述的mimidogz如出一辙。

IMPHASH 检测救场

此时,对sysmon产生的程序的IMPHASH进行对比,会惊人的发现,两个程序的IMPHASH值完全一样。这意味着,这本质上就是同一款工具,只是做了一些简单魔改调整,以规避一些常规的基于文件HASH的检测手段。

2.如何使用sysmon

2.1基础知识:安装sysmon

常见用法包括用于安装和卸载 Sysmon 以及检查和修改其配置的简单命令行选项:

安装:sysmon64 -i [<configfile>]
更新配置:sysmon64 -c [<configfile>]
安装事件清单:sysmon64 -m
打印架构:sysmon64 -s
卸载:sysmon64 -u [force]

参数

说明

-i

安装服务和驱动程序。(可选)采用配置文件。

-c

更新已安装的 Sysmon 驱动程序的配置,如果未提供其他参数,则转储当前配置。(可选)采用配置文件。

-m

安装事件清单 (在服务安装上隐式完成) 。

-s

打印配置架构定义。

-u

卸载服务和驱动程序。使用 -u force 会导致卸载在未安装某些组件时继续进行。

服务会立即记录事件,并且驱动程序将作为启动驱动程序安装,以从启动的早期捕获活动,服务将在启动时写入事件日志。

指定 -accepteula 以在安装时自动接受 EULA,否则系统会以交互方式提示你接受它。

如果需要有关配置文件的详细信息,请使用 -? config 命令。

如果想要按照自己的需求安装,可以指定配置文件,以下为配置文件内容参考:

<Sysmon schemaversion="4.82">
 
 <HashAlgorithms>*</HashAlgorithms>
 <EventFiltering>
   
   
   <DriverLoad onmatch="exclude">
     <Signature condition="contains">microsoft</Signature>
     <Signature condition="contains">windows</Signature>
   </DriverLoad>
   
   <ProcessTerminate onmatch="include" />
   
   
   <NetworkConnect onmatch="include">
     <DestinationPort>443</DestinationPort>
     <DestinationPort>80</DestinationPort>
     <DestinationPort>7000</DestinationPort>
   </NetworkConnect>
   <NetworkConnect onmatch="exclude">
     <Image condition="end with">iexplore.exe</Image>
   </NetworkConnect>
 </EventFiltering>
</Sysmon>

使用上述配置文件配置后,界面如下,此时IMPHASH功能开启。

2.2 使用 Sysmon 检测异常和未签名的驱动程序和图像

请注意以下的两个 Sysmon 事件日志:一个已签名(由 Microsoft),一个未签名。通过sysmon的日志的signature字段,可以直接对比异常的未签名程序。

(1)windows系统配置:记录所有进程的完整命令行

除了使用sysmon,Windows 7以上的系统现在支持本地记录所有已启动进程的完整命令行

要打开这个功能,运行 gpedit.msc 并设置:

• 计算机配置\Windows设置\安全设置\高级审核策略配置\系统审核策略\详细跟踪   打开审核进程创建和审核进程终止。

• 计算机配置\管理模板\系统\审核过程创建 ,启用“在过程创建事件中加入命令行”功能

然后监控安全事件 ID 4688:

• PS> Get-WinEvent @{Logname="Security"; ID=4688}

配置以后产生的4688的事件日志,可以看到完整的进程运行事件,并且开启了审核过程创建的记录命令行,因此可以看到具体的命令。

当然sysmon也是可以记录到这个进程创建行为的,sysmon 事件 ID为1。信息展示更为丰富,包括进程ID、完整的命令行、执行的用户、文件的IMPHASH等。

(2)Windows 恶意软件Payloads的演变

恶意软件和漏洞利用框架通常会将 exe 复制到文件系统

通常位于 c:\windows\system32\RanDOmNAme.exe

• Metasploit 利用目标:本机上传

• 企业恶意软件防御旨在防止这种情况

较新的恶意软件和渗透框架正在迁移到“无文件恶意软件”,利用 PowerShell投递payload

他们避免使用 .ps1 文件,并通过(非常长的)命令行加载代码,或使用 PowerShell WebClient.DownloadString 方法

Metasploit 攻击目标 Powershell 使用长压缩和 base64 编码的 PowerShell 函数,通过 cmd.exe 加载

Metasploit Meterpreter Payload 命令行

(3)Windows 恶意软件Payloads的演变的一些特点/技术点
    1. 命令大于 2400 字节

    2. 通过 cmd.exe 启动 powershell.exe

    3. 隐藏 PowerShell 窗口

    4. gzip 压缩和 Base64 编码的 PowerShell 函数

    5. 分析:解码 base64,然后用 gzip 解压缩

    6. 结果:混淆的 PowerShell 函数

我们观察到的一些PowerShell函数(经过 base64 -d and gzip -d的)

使用这些混淆技术,会有以下的优点,这也给我们的调查工作带来了很大的麻烦:

    •杀毒软件 将允许 cmd.exe 和 powershell.exe 执行

    • 没有文件保存到磁盘进行扫描

    • 如果系统正在使用应用程序白名单:cmd.exe 和 powershell.exe 将被列入白名单

    • 通过Set-ExecutionPolicy 限制 ps1 文件的执行将会失效

    • 默认情况下不记录进程命令行或 PowerShell 命令

    • 预防性和检测性控制倾向于允许和忽略这些方法

本篇为上篇,主要介绍sysmon的一些基本功能和配置方法,并以实际的案例列举了sysmon在做事件调查时的使用情况。下篇,我们将会介绍一个对sysmon日志进行自动分析的一个工具DeepBlueCLI,欢迎阅读。

参考资料:

https://learn.microsoft.com/zh-cn/sysinternals/downloads/sysmon


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMDE3ODc1Mw==&mid=2247485888&idx=1&sn=b3e5a20ba3ecbda84f3c8cf3ce37e750&chksm=c27f7a6ef508f378db5af981436ab32fcc83c99e964b06999b1b1ca766e7949e39f0926ac28d#rd
如有侵权请联系:admin#unsafe.sh