入侵与攻击模拟——安全有效性验证工具(开源篇)
首发于货拉拉安全应急响应中心公众号
雨九九、DMKXY
前言
在进行内部安全验证之前,收集并测试了一些开源的安全验证类工具,共17个工具及2个对手知识库,范围涵盖了BAS、云、端点、 WAF、流量检测和对手模拟; 在收集、测试各类安全验证工具时,我们主要关注工具的以下三部分:
- 测试用例库
- 执行、控制
- 数据采集、分析
最后得出此文,对工具的信息、特点、使用、优劣做个小结
BAS
Breach and Attack Simulation (BAS) 入侵和攻击模拟
简单理解:对现有防御体系的各项能力的验证
Breach and Attack Simulation(BAS)是一种模拟攻击的安全测试方法,通过对网络系统进行模拟攻击,检测系统的安全性和抵抗能力。BAS通过使用模拟攻击工具模拟真实的攻击手段,对网络系统进行攻击测试,以检测系统的安全性和抵抗能力。BAS可以帮助企业了解自己的系统是否具有足够的安全性,并提供改进建议,以防止真实的攻击造成的损失。
CALDERA[非常成熟]
https://github.com/mitre/caldera
CALDERA™ 是一个网络安全平台,旨在轻松实现对手仿真的自动化、协助手动红队和自动化事件响应。它建立在MITRE ATT&CK™ 框架之上,是 MITRE的一个活跃研究项目。
小结:更新频繁,完成度高,提供api可融合进自研平台,大部分TTPs用例基于Atomic Red Team。基于插件提供灵活的功能。不局限于模拟红队入侵,蓝队也可使用该平台模拟自动化事件响应
基本信息
持续更新中
官网:https://caldera.mitre.org/
文档:https://caldera.readthedocs.io/en/latest/
支持python源码/docker安装
-
Agent-Server架构,Agent按照Server端配置执行行动。通过插件为框架提供了能力编辑/配置文件模拟指定对手/混淆执行命令等诸多功能,可自行创建插件
-
CALDERA由两个组件组成:
核心框架。其中包括一个带有 REST API 和 Web 界面的异步命令和控制 (C2) 服务器。
插件。插件扩展了核心框架功能并提供了附加功能,包括agent、报告、TTP 集合等
-
功能/插件简要介绍
CAMPAIGNS:
- Agents:Agents是在特定时间间隔连接回 CALDERA 以获取指令的软件程序。目前有以下三种agent
Sandcat:一个 GoLang Agent,可以通过各种 C2 通道进行通信,例如 HTTP、Github GIST 或 DNS 隧道。
Manx:一个 GoLang Agent,通过 TCP 联系进行通信并充当反向 shell
Ragdoll:通过 HTML 进行通信的 Python Agent
- 用例库Abilities:Ability是一种特定的 ATT&CK 策略/技术实现,可以在运行的Agent上执行。Ability包括要运行的命令、适应的平台/执行器(Windows/PowerShell)、要包含的有效负载以及对模块的引用以解析 CALDERA 服务器上的输出。可以自建Ability。内置的Ability来自多个源,包括Atomic Red Team等。
- Adversaries:Adversaries对手配置文件是一组Abilities,代表威胁参与者可用的战术、技术和程序 (TTP)。在运行操作时使用对手配置文件来确定将执行哪些能力。可以理解为模拟特定目标的剧本,内置了多个场景的剧本。
- Operations:控制在Agent上运行Adversaries。Adversaries用于确定将运行哪些能力,Agent组用于确定将在哪些Agent上运行这些能力。
PLUGINS:
Access (红队获取初始权限工具与技巧)
Atomic (Atomic Red Team 项目的 TTPs)
Compass (ATT&CK 可视化)
Debrief (活动分析,针对Operations生成分析报告)
Fieldmanual (文档)
Manx (shell 功能和反向 shell 负载)
Sandcat (默认 agent)
Stockpile (技术资料库)
Training (引导用户了解 CALDERA 的大部分功能)
CONFIGURATION:
Fact Sources:Facts是可识别的数据片段,由agents收集或在服务器启动时加载。source是事实的集合。Rules是确保不能使用特定特征的界限。
Objectives:Objectives是adversary要完成的一组目标
Planners:Planners是一个模块,它包含一个运行中的operation应该如何决定使用哪些abilities和以什么顺序进行的逻辑。具体来说,一个Planner的逻辑包含了执行一个operation的单一阶段的决策。
Contacts:Contacts是agents的接触点。Contacts是服务器上的一个连接点,agents可以通过它进行交流。agents可以根据一个(或多个)Contacts自定义编写。每个Contacts都会记录所有agents的连接 - 以及它发出的所有命令。可以下载任何Contacts的报告。
Obfuscators:混淆器是为规避而设计的。当运行一个操作时,你可以选择一个混淆器。默认情况下,选择纯文本。在操作过程中,在agents收集指令之前,服务器将用所选择的混淆技术包装它--包括在执行前如何解包的说明。
Configuration:一些基础配置的修改
Exfilled Files:Exfilled文件在操作过程中从主机上的agents上传到服务器上,默认存储在服务器上的/tmp/caldera。
如果一个操作有exfilled文件,你可以在这里查看和下载这些文件。
典型用例
CALDERA 作为网络安全框架,可以通过多种方式使用。对于大多数用户,它将用于运行进攻(红色)或防御(蓝色)操作。
- 自主红队参与
这是最基础的 CALDERA 用例。可以使用该框架来构建特定的威胁(对手)配置文件并在网络中启动它以查看您可能在哪里受到影响。这有利于测试防御和培训蓝队如何检测威胁。
步骤包含登录、部署agent、选择对手adversary和执行operation:
- 以配置文件中red用户组的用户身份登录平台,默认red/admin或者admin/admin
- 部署agent
跳到CAMPAIGNS-Agents页面,点击Deploy an agent,选择符合目标环境的agent
检查 app.contact.http 的值是否与 CALDERA 服务正在侦听的主机和端口相匹配。然后在受害机器上运行生成的命令。注意,某些功能需要高权限,这将需要将agent部署在高权限的 shell 中。确保新agent出现在Agents页面的表格中
- 选择模拟的对手adversary
跳到CAMPAIGNS-Adversaries页面,从下拉列表中选择一个对手并查看能力,以Discovery为例,会列出模拟该对手会执行的行为
- 执行operation
跳到CAMPAIGNS-Operations页面,点击Create Operation,设置该次operation名字和要模拟的对手adversary后点击start
- 检查执行的operation
当执行operation时,能力abilities将在部署的agent上执行。可以查看执行的命令和输出
- 导出operation结果
operation执行完后,可以通过单击Operations页面的"Download"按钮以 JSON 格式导出报告或事件日志。operation完成后,事件日志也会自动写入磁盘。有关各种导出格式和自动/手动事件日志生成的更多信息,可以参阅Operation结果页面。
- 后续扩展
使用不同的adversary配置文件运行operation
创建自定义的abilities和adversary
使用不同的Planners运行operation(例如batch)
根据Debrief报告和operation结果评估、调整蓝队的现有安全能力
- 自主事件响应[蓝队]
CALDERA 可用于通过部署的agent执行自动化事件响应。这有助于识别其他安全工具可能看不到或无法阻止的 TTP。
步骤包含登录 CALDERA blue、部署blue agent、选择defender和运行operation:
- 以配置文件中blue用户组的用户身份登录平台,默认blue/admin
- 部署blue agent
与部署red agent操作一样
- 选择defender配置文件
跳到CAMPAIGNS-defenders页面,从下拉列表中选择一个profile并查看能力,以事件响应者Incident responder为例
- 选择一个事实来源Fact Sources。 Defender 配置文件利用事实来源来确定给定主机上的好与坏。
跳到CONFIGURATION-Fact Sources页面,选择一个事实来源,以response为例
- 执行operation
跳到CAMPAIGNS-Operations页面,点击Create Operation,选择之前选择的Defender配置文件和Fact Sources后点击Start
- 检查执行的operation
当执行operation时,能力abilities将在部署的agent上循环执行。可以查看执行的命令和输出
考虑手动运行命令(或使用red automated adversary),将触发事件响应操作(例如在未经授权的端口上启动服务)
以Incident responder和response配置的operation为例,agent会模拟事件响应者循环执行一系列应急响应操作,包括检查7011端口的进程并终止。如下为执行operation后,我们手动在7011端口起一个http服务,被agent发现并终止
- 导出operation结果
与red operation导出操作一样
- 手动红队参与
CALDERA 可使用 Manx agent执行手动红队评估。有利于在手动评估中替换或附加现有的攻击性工具集,因为该框架可以使用您可能拥有的任何自定义工具进行扩展。
步骤包含登录、部署 Manx agent和手动运行命令:
- red/admin登录
- 部署 Manx agent
- 手动运行命令
跳到PLUGINS-Manx页面,在终端窗口有内手动运行命令
Infection Monkey1.13[勒索模拟]
https://github.com/guardicore/monkey
Infection Monkey是一种开源安全工具,用于测试数据中心对外围入侵和内部服务器感染的弹性。Monkey 用各种方法在数据中心自我传播并向 Monkey Island 命令和控制服务器报告。
小结:更新速度一般,完成度高,安装简易,可快速进行一次勒索软件行为模拟测试,可输出报告,提供api。但日志记录和内置的ttp用例有限
注意:2023.2发布的v2.0版本与本文所述v1.13版本存在差异,可对比体验,新版将重点从漏洞扫描和入侵与攻击模拟转向了对手仿真
基本信息
持续更新中
官网:https://www.akamai.com/zh/infectionmonkey
文档:https://techdocs.akamai.com/infection-monkey/docs
- 下载安装,支持容器、公共云和私有云,win/docker/lin/aws/azure
https://github.com/guardicore/monkey/releases
https://techdocs.akamai.com/infection-monkey/docs/setting-up-infection-monkey - agent执行的测试用例脚本库:https://github.com/guardicore/monkey/tree/develop/monkey/infection_monkey
- 架构:Agent+Server
Monkey Agent(简称Monkey)——一种安全的、类似蠕虫的二进制程序,可以在本地网络上扫描、传播和模拟攻击技术。
Monkey Island Server(简称Island)——一个为用户提供GUI并与Monkey Agents交互的C&C web服务器。
用户可以在 Island 服务器机器上运行 Monkey Agent 或在网络上手动分发 Monkey Agent 二进制文件。Monkey Agents 根据配置参数在本地网络上扫描、传播和模拟攻击者的行为。所有有关网络的信息都汇总在 Island Server 中,并在所有 Monkey Agent 完成后显示。
快速使用
在Configuration设置好agent的执行设置,如果仅本机测试不扫描利用网段内其他主机,可以在Network中关闭Local network scan
在Run Monkey选择部署agent方式,以Manual为例,会提供一键复制执行上线agent的命令。在测试机执行上线命令
在Infection Map观察agent的活动情况
在Security Reports查看该次活动结果
- 运行 Monkey Agent 的结果:
- Infection Map:显示攻击者可以看到多少网络、可以访问哪些服务以及潜在的传播路径。
- Security Report:显示 Monkey Agents 发现和利用的安全问题的安全报告。
- Zero Trust Report:显示 Monkey Agent 发现的违反零信任原则的报告。
- ATT&CK Report:MITRE ATT&CK 报告,显示有关 Monkey Agent 尝试使用的 ATT&CK 技术的信息。点开ttp方块可以查看ttp执行详情
- Ransomware Report:该处显示agent模拟勒索软件执行的突破/横向/加密行为情况
- Configuration
ATT&CK:决定agent执行哪些TTPs
Exploits:决定agent在横向对其他主机利用漏洞时执行哪些exp、密码枚举使用的字典等
Network:决定agent在网络中的活动范围
Ransomware:决定agent在主机上模拟勒索软件加密的文件路径
Monkey:决定agent在主机上具体执行的后渗透行为,包括执行指定命令、上传文件、信息收集、持续扫描等
Internal:其他设置,包括决定agent扫描的端口、限制扫描/利用的最大主机数量等 - 日志
server端提供了主日志,同时agent端会在机器上存储一份agent日志,可在Configuration中指定路径
- 优缺点
有生成好的报告
模拟勒索软件行为较真实
可根据文档自行添加测试用例
完成度较高,安装方便,配置简单,能快速进行一次测试
部分测试没有写明执行的详细操作,只说了做了什么
日志记录还不够详细
存在执行了部分行为但没有显示在ttp中的情况,如执行mimikatz收集信息,日志中却有记录
虽然官方强调所使用exp为安全的,但考虑到exp的可能影响,不适合线上生产环境测试
Atomic Red Team[用例库]
https://github.com/redcanaryco/atomic-red-team
Atomic Red Team™ 是一个映射到 MITRE ATT&CK®框架的测试用例库。安全团队可以使用 Atomic Red Team 快速、可移植且可重复地测试他们的环境。
小结:依靠社区,更新频繁,可作为测试用例库融合进自研平台
基本信息
持续更新中
文档:https://github.com/redcanaryco/atomic-red-team/wiki/
- 测试用例索引:https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/Indexes/Indexes-Markdown/index.md;https://atomicredteam.io/atomics/ ;https://atomicredteam.io/tags/
- 测试用例库yaml:https://github.com/redcanaryco/atomic-red-team/tree/master/atomics
快速使用
- 可以直接从命令行执行测试用例,参考https://github.com/redcanaryco/atomic-red-team/wiki/Getting-Started,每个ttp提供了安装依赖/执行测试/清理还原的命令行用例
以T1087.001 - Account Discovery: Local Account为例:
- 也可以使用Invoke-AtomicRedTeam、ARTi-c2这类基于Atomic Red Team的执行框架执行测试用例
Invoke-AtomicRedTeam[基于Atomic Red Team的ps1模块]
https://github.com/redcanaryco/invoke-atomicredteam
Invoke-AtomicRedTeam 是一个 PowerShell 模块,用于执行Red Canary 的 Atomic Red Team 项目的atomics 文件夹中定义的测试用例。建议为atomics测试执行设置一台测试机器,该测试机器与您的环境中的构建类似。确保您已准备好收集/EDR 解决方案,并且端点正在签入并处于活动状态。
基本信息
- 文档:https://github.com/redcanaryco/invoke-atomicredteam/wiki
- 使用条件:需要 PowerShell Core,Install PowerShell on Linux - PowerShell
- 安装执行框架和atomic文件夹并导入模块:
pwsh
IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing);
Install-AtomicRedTeam -getAtomics
Import-Module "/root/AtomicRedTeam/invoke-atomicredteam/Invoke-AtomicRedTeam.psd1" -Force
Get-Module
快速使用
列出用例:https://github.com/redcanaryco/invoke-atomicredteam/wiki/List-Atomic-Tests
执行测试:可本地或远程
https://github.com/redcanaryco/invoke-atomicredteam/wiki/Execute-Atomic-Tests-(Local)
https://github.com/redcanaryco/invoke-atomicredteam/wiki/Execute-Atomic-Tests-(Remote)
清理还原:https://github.com/redcanaryco/invoke-atomicredteam/wiki/Cleanup-After-Executing-Atomic-Tests
操作日志:https://github.com/redcanaryco/invoke-atomicredteam/wiki/Execution-Logging
ARTi-c2[基于Atomic Red Team的c2]
https://github.com/blackbotsecurity/Atomic-Red-Team-Intelligence-C2
- 安装失败,但看issue有人能跑起来,建议自行体验
Purple Team ATT&CK™ Automation[msf实现ttp]
https://github.com/praetorian-inc/purple-team-attack-automation
以msf的模块形式实现ttp
基于msf实现ttp测试,模块可直接导入msf使用但是需要msf5,win环境的模块较多,总体数量较少
基本信息
已停止更新,最后更新时间2020
文档:Home · praetorian-inc/purple-team-attack-automation Wiki
模块对应ttp索引:Available Modules
模块索引:Modules
Metta[老]
https://github.com/uber-common/metta
Uber出品。Metta 是一种信息安全准备工具。该项目使用 Redis/Celery、python 和 vagrant 以及 virtualbox 来进行对抗模拟。这允许您测试(大部分)基于主机的仪器,但也可以允许您测试任何基于网络的检测和控制,具体取决于您如何设置vagrants。该项目解析带有动作的 yaml 文件,并使用 celery 将这些动作排队,一次运行一个,无需交互。
已停止更新,最后更新2018年,安装失败
yml格式测试用例:https://github.com/uber-common/metta/tree/master/MITRE
RTA[老]
https://github.com/endgameinc/RTA
RTA提供了一套脚本框架,旨在让蓝队针对恶意行为测试其检测能力,该框架是基于MITRE ATT&CK模型设计的。RTA由Python脚本组成,可以生成50多种不同的ATT&CK战术证据,以及一个编译的二进制应用程序,根据需要执行文件时间停止、进程注入和信标模拟等活动。在可能的情况下,RTA 尝试执行所描述的实际恶意活动。在其他情况下,RTAs 将模拟所有或部分活动。例如,某些横向移动默认会针对本地主机(尽管参数通常允许进行多主机测试)。在其他情况下,可执行文件(如 cmd.exe 或 python.exe)将被重命名,使其看起来像是 Windows 二进制文件正在执行非标准活动。
基本信息
已停止更新,最后更新时间2018
仅支持python2;一个ttp对应一个python脚本;win环境为主
ttp列表:https://github.com/endgameinc/RTA/tree/master/red_ttp
快速使用
以https://github.com/endgameinc/RTA/blob/master/red_ttp/net_user_add.py为例,部分脚本有清理还原操作,且需要下载依赖至/bin
https://github.com/endgameinc/RTA/blob/master/red_ttp/smb_connection.py,部分脚本需要提供参数
云
验证组织对云环境的安全能力
Stratus Red Team[aws]
https://github.com/DataDog/stratus-red-team
在云环境中模拟映射ATT&CK的攻击技术
基本信息
更新频繁
文档:https://stratus-red-team.cloud
ttp列表:https://stratus-red-team.cloud/attack-techniques/list/,部分ttp提供了sigma检测规则
测试用例库:https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/、https://github.com/DataDog/stratus-red-team/tree/main/v2/internal/attacktechniques
条件:需要aws keyID/secrect
本质是基于aws keyID+keysecrect+region调用aws的api执行相关行为
快速使用
类似Atomic Red Team,提供了 安装依赖->执行测试->清理还原->清理依赖
以Download EC2 Instance User Data - Stratus Red Team为例
Associated Sigma rule:https://github.com/SigmaHQ/sigma/blob/master/rules/cloud/aws/aws_ec2_download_userdata.yml
AWS-Attack
https://github.com/blackbotsecurity/AWS-Attack
AWSATT&CK 是 Rhino 安全实验室的开源 AWS 利用框架 Pacu 的修改版本,它将 MITRE ATT&CK 上下文添加到 Pacu 策略和额外的日志记录功能。SOC、AWS 安全工程师、DevSecOps、团队需要评估针对有针对性的 AWS 攻击的 AWS 工作负载保护并将结果映射到 MITRE ATT&CK
文档:https://github.com/RhinoSecurityLabs/pacu/wiki
端点检测和响应
Chain Reactor[无用例库]
https://github.com/redcanaryco/chain-reactor
Chain Reactor是一款用于测试Linux机器上检测和响应覆盖范围的开源工具,用于组合可执行文件,在Linux端点上模拟对手的行为和技术。该工具生成可执行文件,模拟诸如进程创建和网络连接等操作序列。Chain Reactor不需要先前的工程经验;该工具使用JSON,因此定制其行为就像编辑文件一样简单。
基本信息
文档:Home · redcanaryco/chain-reactor Wiki
按照规则编写剧本,工具按照剧本生成可执行文件,生成的可执行文件会按照剧本执行动作
项目未提供写好的剧本,需要自己按需求写
快速使用
以https://github.com/redcanaryco/chain-reactor/wiki/Getting-started为例
编写好Reaction/files-Atom/files-quake三个文件
检查终结点安全产品是否为所有四个夸克生成了遥测数据。您的安全产品是否检测到隐藏二进制文件的执行?使用此信息来评估和改进检测。
WAF
验证WAF的安全能力
Gotestwaf
https://github.com/wallarm/gotestwaf
GoTestWAF是一款API和OWASP攻击模拟工具,支持广泛的API协议,包括REST、GraphQL、gRPC、WebSockets、SOAP、XMLRPC等。旨在评估Web应用程序安全解决方案,如API安全代理、Web应用程序防火墙、IPS、API网关等。
基本信息
持续更新
自带测试用例:https://github.com/wallarm/gotestwaf/tree/master/testcases
Go写的工具,提供docker安装
工具提供测试数据统计报告
快速使用
使用前关闭WAF的ban模式
docker pull wallarm/gotestwaf
docker run --network="host" --rm -it -v ${PWD}/reports:/app/reports \
wallarm/gotestwaf --url=http://127.0.0.1:8080 --skipWAFBlockCheck
docker run --rm -it -v ${PWD}/reports:/app/reports \
wallarm/gotestwaf --url=http://testphp.vulnweb.com --skipWAFBlockCheck
waf-bypass
https://github.com/nemesida-waf/waf-bypass
Nemesida WAF 团队的 WAF Bypass (nemesida-waf.com) 是一个开源工具 (Python3),用于使用预定义的有效负载(如果需要,可以更改有效负载集)检查任何 WAF 的误报/漏报数
基本信息
持续更新
自带测试用例:waf-bypass/payload at master · nemesida-waf/waf-bypass · GitHub
工具提供测试数据统计
快速使用
使用前关闭WAF的ban模式
docker pull nemesida/waf-bypass
docker run nemesida/waf-bypass --host='example.com'
docker run nemesida/waf-bypass --host='example.com' --proxy='http://proxy.example.com:3128'
go-ftw
https://github.com/coreruleset/go-ftw
WAF测试框架ftw的go版本。该项目由ModSecurity和Fastly的研究人员创建,旨在为WAF规则提供严格的测试。它使用OWASP Core Ruleset V3作为基线来测试WAF上的规则。从规则集中加载每个规则到一个YAML文件中,该文件发出HTTP请求以触发这些规则。用户可以在测试后验证规则的执行情况,以确保攻击得到了预期响应。
基本信息
持续更新
go-ftw有两种测试模式:default或者cloud。default模式,需要读取解析nginx或apache日志,判断测试结果;cloud模式,仅根据返回包状态码判断测试结果
使用CRS规则集作为测试用例:https://github.com/coreruleset/coreruleset/tree/v4.0/dev/tests/regression/tests
快速使用
以cloud模式为例
go install github.com/coreruleset/go-ftw@latest
git clone https://github.com/coreruleset/coreruleset.git
cd coreruleset/
touch .ftw.yaml
go-ftw run --cloud -d test/
.ftw.yaml
logfile:
logmarkerheadername:
mode: "cloud"
testoverride:
input:
dest_addr: "testphp.vulnweb.com"
port: 80
protocol: "http"
Wafbench
https://github.com/microsoft/wafbench
WAF Bench一个类似ab的工具,可以在一次调用中发送多个完全自定义的数据包,接受基于 YAML 的输入,可以自定义数据包并轻松复制多个不同的数据包。
基本信息
通过 Dockerfile(推荐)、本机安装
提供4个组件(运行方式),彼此相互独立
- WAF Bench (wb) 是用于进行性能测试的类似 ab 的工具。
文档:WAFBench/wb at master · microsoft/WAFBench
使用:
# 进行正常的 ab 样测试
docker run -ti --rm wafbench wb -t 10 testphp.vulnweb.com
# WAF 性能测试
docker run -ti --rm wafbench wb -t 10 -c 20 -f ../example/WB-GET.sh testphp.vulnweb.com
- Python WAF Bench (pywb) 是 wb 的增强工具。使用更友好,开发更容易。
增强选项(相比于wb)
-F 支持 *.yaml 和 *.pkt 以及包含这些类型文件的目录。同时,可以多次设置-F,一次发送多个保存在不同文件中的数据包。
-u 和 -p 会自动识别其ext要发送的文件类型,并修改Content-Type。这些选项几乎支持 MIME 提到的所有类型。 - FTW-Compatible Tool (FTW 兼容工具)是WAFBench的一个组件,它支持FTW格式的YAML用于WAF正确性测试。作为FTW,它使用 OWASP 核心规则集V3作为基准。
文档:WAFBench/ftw_compatible_tool at master · microsoft/WAFBench
用例库:WAFBench/util/regression-test at master · microsoft/WAFBench
# crs-v3.1的黑盒回归测试
docker run -ti --rm -v `pwd`:/data --rm wafbench ftw_compatible_tool -d /data/regression.db -x "load util/regression-test/crs-v3.1/black-box/ | gen | start hostname:port| report | exit"
FTW-compatible-tool包括7个步骤。
1. 在SecRule的头部添加此规则(可选,用于白盒测试)。
2. 导入测试用例,如果数据库已经导入了一些测试用例,旧的测试用例不会被覆盖。
3. 生成.pkt文件,你可以通过SQL脚本指定你要测试的测试案例(默认为 "SELECT traffic_id, request FROM Traffic ORDER BY test_title;")。
4. 开始测试,向服务器发送请求
5. 导入服务器日志,复制或挂载服务器日志到本地。(可选,用于白盒测试)
6. 报告测试结果
7. 退出程序
- Auto-Test Generator是一个自动测试生成器,通过 ModSecurity 规则集自动生成请求以测试 WAF 的覆盖率,如从真实流量日志或WAF 规则集中生成 YAML 文件。目前仍在开发中。
流量检测
生成可疑流量,验证IDS等网络层面的安全能力
flightsim
https://github.com/alphasoc/flightsim
flightsim 是一种轻量级实用程序,用于生成恶意网络流量并帮助安全团队评估安全控制和网络可见性。该工具执行测试以模拟 DNS 隧道、DGA 流量、对已知活动 C2 目的地的请求以及其他可疑流量模式。
基本信息
持续更新
生成流量类型按模块分类,已有模块如下。部分模块使用AlphaSOC API 收集目标地址,因此需要访问互联网
快速使用
go install -v github.com/alphasoc/flightsim@latest
测试所有模块:flightsim run
列出可用模块:flightsim run -h
测试指定模块:flightsim run <module>
以c2-dns模块为例:flightsim run c2-dns
,从AlphaSOC获取C2域名并随机做dns解析
Egress-Assess
https://github.com/FortyNorthSecurity/Egress-Assess
Egress-Assess是一个用来测试数据渗漏行为检测能力的工具。典型用例是在两个位置复制此工具。一个位置充当服务器,另一个充当客户端。 Egress-Assess会通过多种协议尝试将数据从客户端发送到服务端,传递的数据可选虚假的信用卡、身份信息、保险号码、ssn码
基本信息
持续更新
目前支持FTP/SMTP/SMTP_Outlook/ICMP/HTTP(S)/SMB/DNS_TXT/DNS_Resolved
快速使用
git clone https://github.com/FortyNorthSecurity/Egress-Assess.git
python3 -m pip install -r requirements.txt
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
#以FTP为例
Server:python3 Egress-Assess.py --server ftp --username test --password 123 --server-port 64451
Client:python3 Egress-Assess.py --client ftp --username test --password 123 --ip {ip} --client-port 64451 --datatype identity
对手模拟库
根据仿真库,通过CALDERA的Adversaries配置可以模拟特定对手的攻击行为
community-threats
https://github.com/scythe-io/community-threats
对手威胁模拟平台SCYTHE管理的社区项目
一个与整个社区共享用于测试人员、流程和技术的攻击链的地方。最大的对手模拟和对手模拟计划公共图书馆!支持在 markdown 、SCYTHE JSON 和 MITRE ATT&CK Navigator JSON 中共享威胁。
持续更新
adversary_emulation_library
https://github.com/center-for-threat-informed-defense/adversary_emulation_library
一个开放的对手模拟计划库,旨在使组织能够根据真实世界的 TTP 测试他们的防御。
该库包含两种类型的对手仿真计划:完全仿真和微仿真。
完整的模拟计划是模拟特定对手的综合方法,例如FIN6,从初始访问到渗出。这些计划模拟了广泛的 ATT&CK 战术和技术,旨在模拟来自指定对手的真正突破。
微仿真计划是一种集中的方法,用于模拟在多个对手中看到的复合行为,例如webshell。这些计划模拟了少量 ATT&CK 技术,这些技术通常作为一次敌方行动的一部分执行。
持续更新