传统杀软
工作原理
一切的开始杀毒软件的工作原理:
传统杀软缺陷
以上方法对于家庭电脑是没有问题的,因为出现了未知病毒感染了几个家庭电脑后,这个病毒就已经被杀软捕获分析并且拉黑了
但是对于没有见过的病毒来说,杀毒软件需要一段时间进行人工分析.而人工分析需要的时间又非常的多.
但对于安全需要极高的电脑来说,比如政府、军用的电脑,是不允许感染任何病毒的,因此这种杀毒软件的模式无法满足需要.
另外对于”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 | Persistence(持久化)-→Boot or Logon Autostart Execution(在启动阶段自动启动) |
一个恶意软件,他的特征码在传统软件里面如下: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 | { |
攻击技术路径-威胁识别
对比特征码的方案
文件特征码通常是一个文件对应一个特征码.会有无穷无尽的文件,有无穷无尽的特征码
而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
国内查看评论需要代理~