mitre-attack/bzar
GitHub: mitre-attack/bzar
基于 Zeek 的网络检测脚本集,通过分析 SMB 和 DCE-RPC 流量识别 MITRE ATT&CK 战术技术。
Stars: 621 | Forks: 84
# BZAR (Bro/Zeek 基于 ATT&CK 的分析与报告)
## 1. 介绍
BZAR 项目使用 Bro/Zeek 网络安全监视器来检测基于 ATT&CK 的对抗性活动。
[MITRE ATT&CK](https://attack.mitre.org/) 是一个公开可用的、经过整理的网络对手行为知识库,反映了对手生命周期的各个阶段以及已知他们所针对的平台。ATT&CK 模型包含了众多威胁组织的行为。
BZAR 是一套 Bro/Zeek 脚本,利用 SMB 和 DCE-RPC 协议分析器以及文件提取框架来检测类似 ATT&CK 的活动,发出通知,并写入 Notice Log。
### BZAR 和 CAR
BZAR 是 [Cyber Analytics Repository](https://car.mitre.org) 的一个组件。它最初位于该库中,但由于 Zeek 包的要求,它被移到了自己的代码库中。它仍然作为 CAR 的一个组件进行管理。
## 2. 针对您的环境调整 BZAR
BZAR 必须针对您的特定操作环境进行调整。例如,BZAR 检测到的某些类似 ATT&CK 的活动在您的环境中可能是授权且合法的活动。因此,这些检测会在 Notice Log 中产生大量不必要的条目。可以通过使用 BZAR 白名单以及切换检测和/或报告的开关来进行调整。有关更多信息,请参阅 CHANGES 文档。
## 3. 用于检测类似 ATT&CK 活动的复杂分析
BZAR 分析使用 Bro/Zeek 汇总统计 框架,将 SMB 和 DCE-RPC 流量中的两个或更多简单指标结合起来,以更高的置信度检测类似 ATT&CK 的活动。下面描述了三 (3) 个 BZAR 分析。
### 3.1. 用于 ATT&CK 横向移动和执行的 SumStats 分析
如果在指定的时间段内,观察到 SMB 横向移动指标(例如,仅针对 Windows 管理文件共享:ADMIN$ 或 C$ 的 SMB 文件写入)与针对同一(目标)主机的 DCE-RPC 执行指标同时出现,则使用 SumStats 引发 Bro/Zeek Notice 事件。
#### 相关的 ATT&CK 技术
* [T1021.002 远程服务:SMB/Windows 管理共享](https://attack.mitre.org/techniques/T1021/002/)(仅限文件共享,非命名管道),以及
* [T1570 横向工具传输](https://attack.mitre.org/techniques/T1570/),以及
* 以下之一:
* [T1569.002 系统服务:服务执行](https://attack.mitre.org/techniques/T1569/002/)
* [T1047 Windows 管理规范](https://attack.mitre.org/techniques/T1047/)
* [T1053.002 计划任务/作业:At (Windows)](https://attack.mitre.org/techniques/T1053/002/)
* [T1053.005 计划任务/作业:计划任务](https://attack.mitre.org/techniques/T1053/005/)
#### Bro/Zeek 检测到的相关指标
* `smb1_write_andx_response::c$smb_state$path` 包含 `ADMIN$` 或 `C$`
* `smb2_write_request::c$smb_state$path**` 包含 `ADMIN$` 或 `C$`
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `svcctl::CreateServiceW`
* `svcctl::CreateServiceA`
* `svcctl::StartServiceW`
* `svcctl::StartServiceA`
* `IWbemServices::ExecMethod`
* `IWbemServices::ExecMethodAsync`
* `atsvc::JobAdd`
* `ITaskSchedulerService::SchRpcRegisterTask`
* `ITaskSchedulerService::SchRpcRun`
* `ITaskSchedulerService::SchRpcEnableTask`
**注意:** 更倾向于检测 smb2_write_response 事件(而不是 smb2_write_request),因为它可以确认文件确实被写入到了远程目标。遗憾的是,Bro/Zeek 尚未有针对该 SMB 消息类型的事件。
### 3.2. 用于 ATT&CK 横向移动(多次尝试)的 SumStats 分析
如果在指定的时间段内,观察到源自同一主机的多个 SMB 横向移动指标(例如,多次尝试连接到 Windows 管理文件共享:仅限 ADMIN$ 或 C$),无论是否有写入尝试,也无论任何连接是否成功——仅仅是连接尝试——则使用 SumStats 引发 Bro/Zeek Notice 事件。
#### 相关的 ATT&CK 技术
* [T1021.002 远程服务:SMB/Windows 管理共享](https://attack.mitre.org/techniques/T1021/002/)(仅限文件共享,非命名管道)
#### Bro/Zeek 检测到的指标
* `smb1_tree_connect_andx_request::c$smb_state$path` 包含 `ADMIN$` 或 `C$`
* `smb2_tree_connect_request::c$smb_state$path` 包含 `ADMIN$` 或 `C$`
### 3.3. 用于 ATT&CK 发现的 SumStats 分析
如果在指定的时间段内,观察到源自同一主机的多个 DCE-RPC 发现指标实例,则使用 SumStats 引发 Bro/Zeek Notice 事件。
#### 相关的 ATT&CK 技术
* [T1016 系统网络配置发现](https://attack.mitre.org/techniques/T1016/)
* [T1018 远程系统发现 ](https://attack.mitre.org/techniques/T1018/)
* [T1033 系统所有者/用户发现 ](https://attack.mitre.org/techniques/T1033/)
* [T1069 权限组发现 ](https://attack.mitre.org/techniques/T1069/)
* [T1082 系统信息发现](https://attack.mitre.org/techniques/T1082/)
* [T1083 文件和目录发现](https://attack.mitre.org/techniques/T1083/)
* [T1087 账户发现](https://attack.mitre.org/techniques/T1087/)
* [T1124 系统时间发现](https://attack.mitre.org/techniques/T1124/)
* [T1135 网络共享发现](https://attack.mitre.org/techniques/T1135/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `lsarpc::LsarEnumerateAccounts`
* `lsarpc::LsarEnumerateAccountRights`
* `lsarpc::LsarEnumerateAccountsWithUserRight`
* `lsarpc::LsarEnumeratePrivileges`
* `lsarpc::LsarEnumeratePrivilegesAccount`
* `lsarpc::LsarEnumerateTrustedDomainsEx`
* `lsarpc::LsarGetSystemAccessAccount`
* `lsarpc::LsarGetUserName`
* `lsarpc::LsarLookupNames`
* `lsarpc::LsarLookupNames2`
* `lsarpc::LsarLookupNames3`
* `lsarpc::LsarLookupNames4`
* `lsarpc::LsarLookupPrivilegeDisplayName`
* `lsarpc::LsarLookupPrivilegeName`
* `lsarpc::LsarLookupPrivilegeValue`
* `lsarpc::LsarLookupSids`
* `lsarpc::LsarLookupSids2`
* `lsarpc::LsarLookupSids3`
* `lsarpc::LsarQueryDomainInformationPolicy`
* `lsarpc::LsarQueryInfoTrustedDomain`
* `lsarpc::LsarQueryInformationPolicy`
* `lsarpc::LsarQueryInformationPolicy2`
* `lsarpc::LsarQueryTrustedDomainInfo`
* `lsarpc::LsarQueryTrustedDomainInfoByName`
* `samr::SamrLookupNamesInDomain`
* `samr::SamrLookupIdsInDomain`
* `samr::SamrLookupDomainInSamServer`
* `samr::SamrGetGroupsForUser`
* `samr::SamrGetAliasMembership`
* `samr::SamrGetMembersInAlias`
* `samr::SamrGetMembersInGroup`
* `samr::SamrGetUserDomainPasswordInformation`
* `samr::SamrEnumerateAliasesInDomain`
* `samr::SamrEnumerateUsersInDomain`
* `samr::SamrEnumerateGroupsInDomain`
* `samr::SamrEnumerateDomainsInSamServer`
* `samr::SamrQueryInformationAlias`
* `samr::SamrQueryInformationDomain`
* `samr::SamrQueryInformationDomain2`
* `samr::SamrQueryInformationGroup`
* `samr::SamrQueryInformationUser`
* `samr::SamrQueryInformationUser2`
* `samr::SamrQueryDisplayInformation`
* `samr::SamrQueryDisplayInformation2`
* `samr::SamrQueryDisplayInformation3`
* `srvsvc::NetrConnectionEnum`
* `srvsvc::NetrFileEnum`
* `srvsvc::NetrRemoteTOD`
* `srvsvc::NetrServerAliasEnum`
* `srvsvc::NetrServerGetInfo`
* `srvsvc::NetrServerTransportEnum`
* `srvsvc::NetrSessionEnum`
* `srvsvc::NetrShareEnum`
* `srvsvc::NetrShareGetInfo`
* `wkssvc::NetrWkstaGetInfo`
* `wkssvc::NetrWkstaTransportEnum`
* `wkssvc::NetrWkstaUserEnum`
## 4. 用于检测类似 ATT&CK 活动的简单指标
除了上述分析之外,BZAR 还使用 SMB 和 DCE-RPC 流量中的简单指标来检测类似 ATT&CK 的活动,尽管其置信度低于通过 SumStats 分析进行的检测。
BZAR 指标分为六 (6) 类,如下所述。
### 4.1. ATT&CK 横向移动指标
如果观察到 SMB 横向移动指标的单个实例(例如,仅针对 Windows 管理文件共享:ADMIN$ 或 C$ 的 SMB 文件写入),则引发 Bro/Zeek Notice 事件,这表明存在类似 ATT&CK 的活动。
#### 相关的 ATT&CK 技术
* [T1021.002 远程服务:SMB/Windows 管理共享](https://attack.mitre.org/techniques/T1021/002/)(仅限文件共享,非命名管道)
* [T1570 横向工具传输](https://attack.mitre.org/techniques/T1570/)
#### Bro/Zeek 检测到的相关指标
* `smb1_write_andx_response::c$smb_state$path` 包含 `ADMIN$` 或 `C$`
* `smb2_write_request::c$smb_state$path**` 包含 `ADMIN$` 或 `C$`
**注意:** 更倾向于检测 smb2_write_response 事件(而不是 smb2_write_request),因为它可以确认文件确实被写入到了远程目标。遗憾的是,Bro/Zeek 尚未有针对该 SMB 消息类型的事件。
### 4.2. 文件提取框架的指标
启动 Bro/Zeek 文件提取框架,以保存与类似 ATT&CK 的横向移动到远程系统相关的文件副本。针对横向移动提取文件引发 Bro Notice 事件。
#### 相关的 ATT&CK 技术
* [T1021.002 远程服务:SMB/Windows 管理共享](https://attack.mitre.org/techniques/T1021/002/)(仅限文件共享,非命名管道)
* [T1570 横向工具传输](https://attack.mitre.org/techniques/T1570/)
#### Bro/Zeek 检测到的相关指标
* `smb1_write_andx_response::c$smb_state$path` 包含 `ADMIN$` 或 `C$`
* `smb2_write_request::c$smb_state$path**` 包含 `ADMIN$` 或 `C$`
**注意:** 更倾向于检测 smb2_write_response 事件(而不是 smb2_write_request),因为它可以确认文件确实被写入到了远程目标。遗憾的是,Bro/Zeek 尚未有针对该 SMB 消息类型的事件。
### 4.3. ATT&CK 凭证访问指标
如果观察到以下任何 Windows DCE-RPC 函数(endpoint::operation)的单个实例,则引发 Bro/Zeek Notice 事件,这表明远程系统上存在类似 ATT&CK 的凭证访问技术。
#### 相关的 ATT&CK 技术
* [T1003.006 操作系统凭证转储:DCSync](https://attack.mitre.org/techniques/T1003/006/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `drsuapi::DRSReplicaSync`
* `drsuapi::DRSGetNCChanges`
### 4.4. ATT&CK 防御规避指标
如果观察到以下任何 Windows DCE-RPC 函数(endpoint::operation)的单个实例,则引发 Bro/Zeek Notice 事件,这表明远程系统上存在类似 ATT&CK 的防御规避技术。
#### 相关的 ATT&CK 技术
* [T1070.001 主机上的指标清除:清除 Windows 事件日志](https://attack.mitre.org/techniques/T1070/001/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `eventlog::ElfrClearELFW`
* `eventlog::ElfrClearELFA`
* `IEventService::EvtRpcClearLog`
### 4.5. ATT&CK 执行指标
如果观察到以下任何 Windows DCE-RPC 函数(endpoint::operation)的单个实例,则引发 Bro/ek Notice 事件,这表明远程系统上存在类似 ATT&CK 的执行技术。
#### 相关的 ATT&CK 技术
* [T1569.002 系统服务:服务执行](https://attack.mitre.org/techniques/T1569/002/)
* [T1047 Windows 管理规范](https://attack.mitre.org/techniques/T1047/)
* [T1053.002 计划任务/作业:At (Windows)](https://attack.mitre.org/techniques/T1053/002/)
* [T1053.005 计划任务/作业:计划任务](https://attack.mitre.org/techniques/T1053/005/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `svcctl::CreateServiceW`
* `svcctl::CreateServiceA`
* `svcctl::StartServiceW`
* `svcctl::StartServiceA`
* `IWbemServices::ExecMethod`
* `IWbemServices::ExecMethodAsync`
* `atsvc::JobAdd`
* `ITaskSchedulerService::SchRpcRegisterTask`
* `ITaskSchedulerService::SchRpcRun`
* `ITaskSchedulerService::SchRpcEnableTask`
### 4.6. ATT&CK 持久化指标
如果观察到以下任何 Windows DCE-RPC 函数(endpoint::operation)的单个实例,则引发 Bro/Zeek Notice 事件,这表明远程系统上存在类似 ATT&CK 的持久化技术。
#### 相关的 ATT&CK 技术:
* [T1547.004 启动或登录自动启动执行:Winlogon Helper DLL](https://attack.mitre.org/techniques/T1547/004/)
* [T1547.010 启动或登录自动启动执行:端口监视器](https://attack.mitre.org/techniques/T1547/010/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `ISecLogon::SeclCreateProcessWithLogonW`
* `ISecLogon::SeclCreateProcessWithLogonExW`
* `IRemoteWinspool::RpcAsyncAddMonitor`
* `IRemoteWinspool::RpcAsyncAddPrintProcessor`
* `spoolss::RpcAddMonitor` # 又名 winspool | spoolss
* `spoolss::RpcAddPrintProcessor` # 又名 winspool | spoolss
### 4.7. ATT&CK 影响指标
如果观察到以下任何 Windows DCE-RPC 函数(endpoint::operation)的单个实例,则引发 Bro/Zeek Notice 事件,这表明远程系统上存在类似 ATT&CK 的影响技术。
#### 相关的 ATT&CK 技术
* [T1529 系统关闭/重启](https://attack.mitre.org/techniques/T1529/)
#### Bro/Zeek 检测到的相关指标
* `dce_rpc_response::c$dce_rpc$endpoint + c$dce_rpc$operation` 包含以下任意项:
* `InitShutdown::BaseInitiateShutdown`
* `InitShutdown::BaseInitiateShutdownEx`
* `WindowsShutdown::WsdrInitiateShutdown`
* `winreg::BaseInitiateSystemShutdown`
* `winreg::BaseInitiateSystemShutdownEx`
* `winstation_rpc::RpcWinStationShutdownSystem`
* `samr::SamrShutdownSamServer` # MSDN 表示未在线上使用
## 5. 其他 DCE-RPC 接口和方法
BZAR 项目向 Bro/Zeek DCE_RPC::uuid_endpoint_map 添加了 144 个更多的 Microsoft DCE-RPC 接口 UUID(又称“端点”)。
BZAR 项目还向 Bro/Zeek DCE_RPC::operations 添加了 1,145 个 Microsoft DCE-RPC 接口方法(又称“操作”)。
有关更多信息,请参阅 Bro/Zeek 脚本 'bzar_dce-rpc_consts'。
'bzar_dce-rpc_consts' 中定义的大多数 DCE-RPC 端点和操作已合并到 Zeek 的主要产品线中,
版本 3.2.0-dev.565 | 2020-05-26 21:55:54 +0000。参考:https://github.com/zeek/zeek/blob/master/scripts/base/protocols/dce-rpc/consts.zeek#L92
## 6. 参考资料
1. Microsoft Developer Network (MSDN) Library. MSDN Library > Open Specifications > Protocols > Windows Protocols > Technical Documents. https://msdn.microsoft.com/en-us/library/jj712081.aspx
2. Marchand, "Windows Network Services Internals". 2006. http://index-of.es/Windows/win_net_srv.pdf
## 7. 贡献
欢迎贡献。本代码的许可条款与 CAR 代码库相同。请参阅代码库根目录下的 [LICENSE](LICENSE.txt) 文件和 [CONTRIBUTING](/CONTRIBUTING.md) 文件中的开发者原创证书认证。
本 README 文件中的信息截至 2020 年 10 月 9 日是最新的。
*版权所有 2018 The MITRE Corporation。保留所有权利。*
批准公开发布。分发无限。案例编号 18-2489。*
标签:AMSI绕过, Bro, BZAR, Cloudflare, DCE-RPC, DLL注入, ETW劫持, HTTP/HTTPS抓包, HTTP工具, MITRE ATT&CK, PE 加载器, Rootkit, Siem, SMB, Zeek, 内核模式, 威胁检测, 安全脚本, 态势感知, 文件提取, 日志记录, 横向移动, 流量审计, 编程规范, 网络安全, 网络流量分析, 错误配置检测, 隐私保护