ATT&CK Edr&Rasp学习相关详解笔记

传统杀软

工作原理

一切的开始杀毒软件的工作原理:

传统杀软缺陷

以上方法对于家庭电脑是没有问题的,因为出现了未知病毒感染了几个家庭电脑后,这个病毒就已经被杀软捕获分析并且拉黑了
但是对于没有见过的病毒来说,杀毒软件需要一段时间进行人工分析.而人工分析需要的时间又非常的多.

但对于安全需要极高的电脑来说,比如政府、军用的电脑,是不允许感染任何病毒的,因此这种杀毒软件的模式无法满足需要.
另外对于”APT”组织的攻击,如美国国家安全局NSA等黑客组织的专业攻击,他们的病毒绝对是之前没有见过的病毒.

杀毒软件也绝对不可能捕获到这些攻击.专业的黑客组织会将木马伪造成正常文件诱导用户点击打开,而对于杀毒软件,他们在投毒之前就已经确信能100%防止被找到

EDR的出现

EDR背景的提出

对于非常需要安全措施的电脑,EDR 即终端检测响应(endpoint detection response)概念被提出来了;
最简单的理解,客户的一台重要电脑是终端,服务端负责检出,还有专业的安全团队做出响应,防止客户遭到攻击,而EDR则是这一系列流程的概括.

行为检测

行为检测概念

对于新型威胁,如点对点攻击,国家级的黑客组织的入侵.国外在12年左右发布了行为检出概念.
即不再通过文件进行判断, 而是通过软件的行为,进行威胁检测.
举个例子,QQ.exe在某一天突然把你的电脑文件加密了,传统杀毒软件是无法检测到的,因为他们认为QQ是可信的白名单文件而基于行为检测的EDR,则可以很容易的发现,QQ.exe是坏东西.这就是EDR的基础.即上报行为日志,分析行为日志,找出威胁

行为检测遇到的问题

由于要做行为检测,则需要”软件每做一个动作,我们的EDR就要记录一个动作”.
这会导致非常多的日志,在未处理的情况下,我们需要面对9,00000/分钟的数据量一台电脑.
因此,如何在海量的行为中检索出数据、对数据进行过滤是行为检测所遇到的问题




ATT&CK

为了解决海量数据的问题.国外提出了att&ck的架构(不准确,最开始是为了标记出全部可能的攻击手法,但是可以这样理解)
att&ck是个矩阵,大概类似于这样:

这个矩阵容纳了所有可能的攻击方法.分别为

1
TA ->即战术, T->即技术

比如开机自启动,我们可以这样形容这个行为:

1
2
Persistence(持久化)-→Boot or Logon Autostart Execution(在启动阶段自动启动)
如果翻译成机器能识别的东西:TA0003 ->T1547

一个恶意软件,他的特征码在传统软件里面如下:E48E13207341B6BFFB7FB1622282247B
一个恶意软件,他的特征码在EDR的软件里面如下: T1083 T1490 T1135 T1486 T1016 T1057

代表:它会会扫描进程,结束指定进程.并且会关掉系统恢复功能,然后识别网络,扫描网络的同时扫描本地文件,最后加密文件
那么他就是一个勒索软件病毒的特征码

攻击数据采集

当前大多数安全软件开始不采用KernelHook方案,而在UserSpace使用Audit日志审计
采集攻击日志使用Auditd对Linux日志进行收集, 基于ATT&CK摸下对Webshell的攻击上下文进行威胁建模
通过控制流(标签的传递规则) 和 数据流(进程和文件的标签定义) 提高日志的语义化程度, 形成一条完整的攻击链, 并标注生命周期

目前我司提供AssetDiag对进程/文件/血缘关系进行定义、Rasp插件对应用Hook点进行Action动作类型的数据采集
悬镜软件供应链AllInOne组件模块中有采用Web日志搜集和语义化分析攻击事件,目前我司AssetDiag也可拥有应用日志作为Source源的技术能力,但是没有技术精力投入且公司重点方向不在此

攻击技术识别

举例进程注入的技术T发现

如果发现当前syscall有createRemoteThread行为则定义进程操作, 当前rule的condition可继续完善
这一切要做强RuleEngine的Source数据源, AssetDiag组件 + Hook插桩电

1
2
3
4
5
6
7
8
{
'rules': [
'action == "createremotethread"',
],
'attck_hit':['T1055'],
'score': 30,
'name': 'Process Injection'
}

攻击技术路径-威胁识别

对比特征码的方案

文件特征码通常是一个文件对应一个特征码.会有无穷无尽的文件,有无穷无尽的特征码
而EDR的att&ck他是有限的集合.一个特征库,文件特征积累了20年,那么可能因为系统更新之类的原因,也就10年内的能用,并且每次遇到一个新的文件,就需要新加一个特征库.简而言之,需要不断更新、不断淘汰.否则就会落后.
并且还是不能识别出新型病毒,依然需要人工分析病毒然后入库一个行为特征库,积累20年,基本上能覆盖到各个家族的木马病毒.以及各个可能的攻击手法.甚至是可以通过行为推断出这个软件是什么软件.

APT-Hydra

Hydra是一个知名的密码破解工具,用于尝试暴力破解各种网络协议的登录凭据,如SSH、FTP、Telnet、HTTP等。它基于多线程和字典攻击技术,可以在较短的时间内尝试大量的密码组合,从而获取访问目标系统的权限。

1
['T1027.004', 'T1018', 'T1559.001', 'T1218.011', 'T1059.001', 'T1059.005', 'T1570', 'T1087.002', 'T1564', 'T1106', 'T1082', 'T1087.001', 'T1003', 'T1071']

APT-System discovery

APT-System Discovery 是APT攻击中的一个重要阶段,攻击者通过在目标系统内进行广泛的信息搜集,为后续的攻击行动做准备。企业和组织需要采取一系列的安全措施,包括网络监控、入侵检测系统、强密码策略等,以减轻这种类型的攻击带来的威胁。

  • 主机识别:攻击者可能会尝试确定目标网络中的活动主机,发现IP地址范围、子网和主机名等信息。
  • 端口扫描:攻击者可能会扫描目标主机的开放端口,以了解哪些服务和应用程序正在运行,从而识别可能的攻击目标。
  • 服务识别:攻击者可能会尝试确定每个开放端口背后的具体服务和版本信息,以寻找已知的漏洞和攻击向量。
  • 操作系统识别:攻击者可能会分析目标系统的响应,以获取有关操作系统类型和版本的信息。
  • 身份验证探测:攻击者可能会尝试使用各种常见的默认凭据、弱密码或字典攻击等方式,来测试对目标系统的登录是否成功。
  • 内部网络探测:一旦攻击者成功进入系统,他们可能会通过探测内部网络结构和其他主机,以寻找潜在的目标或感兴趣的数据。
1
['T1018','T1087.001', 'T1087.001', 'T1082', 'T1016']




Rasp方向的应用

Rasp功能现状

目前引擎组内部研发的Rasp支持以下几类大的功能模块

  • 热注入【已完成】
    • 支持Python、Php运行时热注入安全免疫代码
    • 支持Golang运行时热注入安全免疫代码【待开发】
  • Web资产清点【部分完成】
    • ApiCollect; Api搜集Python/Php内部的Api信息
    • ThirdCollect; Python/Php的三方组件搜集
  • 静态内存扫描【待开发】
    • 主动扫描内存中已注册的内存马,驻留的内存马
  • Web应用漏洞实时检测/防护【部分完成,待安全研究部门整合】
    • 基于V8 Js库翻译本地机器码语言,检测请求上下文/Hook点Args威胁
  • 行为检测【待开发】
    • 基于ATT&CK模型, 进行行为狩猎
  • WebApiProtect(Api防护)【部分完成,待安全研究部门整合】
    • 基于Api的Flow流量,对接RuleEngine进行流量防护
  • 热修复【待定】
    • 参考组件防御的能力

Rasp代码结构现状

Rasp 说明
- engine.core.rasp: 处理Rasp行为狩猎和【Probe&后端】指令接收处理
- engine.inject: 处理运行时热注入
- engine.network: websocket/grpc后端通讯
- engine.probe: probe通讯连接
- probe.client.core: 处理Web应用漏洞实时检测/防护、Api流量防护
- probe.php/python: 各语言特性插桩和Hook

Rasp项目期望

  • V8规则翻译: 我们探讨已决定去除Js规则引擎,那翻译的规则JavaAgent写一份,小众语言归拢到Rasp Probe模块中? 还是JavaAgent也归拢Rasp Probe?
  • 行为检测: 行为检测请看以下方案输出, 探讨是否ok
  • WebApiProtect(Api防护): 这类类似WAAP、WAF的功能模块,但是因为插桩进用户进程可玩性比WAF高,是否加装此模块




Rasp方向的行为检测

客户情况

  • 安芯网盾: 强大的行为检测能力,能识别恶意攻击行为20+、行为监测点200+
  • 字节跳动: 因为字节已有CWPP成熟的主机安全产品, 覆盖的而已攻击行为上千+
  • pbom.dev: 一种全面、系统且可操作的方法,用于了解软件供应链方面的攻击者行为和技术

以下是字节跳动技术识别图谱

侦察 资源准备 初始访问 执行 持久化 权限提升 防御规避 凭证访问 信息发现 横向移动 收集数据 命令与控制 数据渗出 影响
收集受害者主机信息 获取基础设施 外部远程服务 Windows 管理规范 引导或登录初始化脚本 引导或登录初始化脚本 直接卷访问 中间对手 查看系统所有者/用户 污染共享内容 屏幕截图 应用层协议 通过 Web 服务进行数据回传 磁盘擦除
搜索受害者拥有的网站 入侵基础设施 通过可移动媒体进行复制 共享模块 创建或修改系统进程 创建或修改系统进程 Rootkit 操作系统凭证转储 查看容器和资源 通过可移动媒体进行复制 中间对手 远程访问软件 预定时间转移数据 服务停止
收集受害者身份信息 入侵账户 供应链入侵 计划任务/作业 外部远程服务 引导或登录自动启动执行 修改云计算基础设施 窃取网络会话 Cookie 查看权限组 使用替代认证材料 收集配置存储库的数据 交通信号 通过其他网络介质数据回传 污损
搜索开放技术数据库 筹划能力 利用公开应用 原生 API 引导或登录自动启动执行 计划任务/作业 弱加密 网络嗅探 查看组策略 远程服务 音频捕捉 协议隧道 自动数据回传 数据处理
主动扫描 建立账户 信任关系 部署容器 Office 应用程序启动 进程注入 隐藏工件 窃取或伪造 Kerberos 门票 查看系统服务 远程服务会话劫持 电子邮件收集 通过可移动媒体进行交流 通过 C2 通道数据回传 关闭帐户访问
收集受害者组织信息 获取组建 网络钓鱼 命令和脚本解释器 计划任务/作业 宿主机逃逸 间接命令执行 来自密码存储的凭据 网络嗅探 软件部署工具 收集可移动媒体的数据 代理 通过替代协议的数据回传 为影响而加密的数据
收集受害者网络信息 发展能力 有效账户 容器管理命令 浏览器扩展 滥用高程控制机制 去混淆/解码文件或信息 不安全凭证 查看网络共享 远程服务的利用 自动收集 动态分辨率 数据传输大小限制 端点拒绝服务
搜索打开的网站/域 硬件添加 用户执行 交通信号 劫持执行流 削弱防御 窃取应用程序访问令牌 查看外围设备 内部鱼叉式钓鱼 收集剪贴板数据 网络服务 将数据传输到云帐户 资源劫持
搜索封闭源 路过式攻击 软件部署工具 植入内部图像 有效账户 伪装 伪造网络凭证 查看系统信息 横向工具移动 收集云存储的数据 多级通道 物理介质数据回传 数据销毁
信息网络钓鱼 进程间通信 操作系统前引导 提权利用 进程注入 多因素身份验证请求生成 查看应用程序 收集本地系统的数据 数据混淆 网络拒绝服务
利用客户端执行 侵入客户端二进制 事件触发执行 交通信号 凭据访问的利用 查看云基础设施 归档收集的数据 非标准端口 固件损坏
系统服务 账户操纵 访问令牌操作 系统二进制代理执行 暴力破解 查看浏览器书签 浏览器会话劫持 加密频道 禁止系统恢复
劫持执行流 域策略修改 反射代码加载 强制认证 查看系统网络配置 视频截取 非应用层协议 系统关机/重启
有效账户 使用替代认证材料 输入捕捉 查看账户 数据暂存 数据编码
事件触发执行 流氓域控制器 多重身份验证拦截 查看信任域 收集网络共享驱动器的数据 入口工具转移
位工作 部署容器 修改认证过程 查看文件和目录 输入捕捉 后备频道
服务器软件组件 修改注册表 查看系统网络连接 收集信息存储库的数据
创建账户 未使用/不支持的云区域 虚拟化/沙盒规避
修改认证过程 文件和目录权限修改 查看云存储对象
滥用高程控制机制 查看进程
主机上的标记移除 查看密码策略
plist文件修改 查询注册表
操作系统前引导 查看系统位置
在主机上构建映像 查看云服务
虚拟化/沙盒规避 查看远程系统
执行护栏 查看网络服务
修改系统映像 查看软件
劫持执行流 云服务仪表板
有效账户 调试器规避
混淆文件或信息 查看系统时间
网络边界桥接
颠覆信任控制
位工作
模板注入
访问令牌操作
调试器规避
域策略修改
XSL 脚本处理
修改认证过程
系统脚本代理执行
防御规避利用
受信任的开发者实用程序代理执行

以下是pbom.dev技术识别图谱




Rasp与行为结合点

组件间功能协作

静态Action

动态Action

行为路径生命周期

行为粒度

EDR以进程Action做行为分析、Rasp以请求Action

路径生命周期

行为犯罪阈值

归因逻辑




技术识别库的扩充

业务安全方向

数据安全方向




威胁识别库的扩充