BAS那点事儿
笔者之前的工作有涉及到BAS相关的工作内容,借此机会也收集和了解了很多BAS相关的内容,了解到国内很多人不了解BAS,以及对于BAS涉及较少,逐写出此篇文章来普及BAS相关知识。如文中有错误或描述不准确的地方,还望大家指正。
什么是BAS
前言
在近些年来,得益于国家大力推进安全领域的一些法律法规和各种规定条款,不少企业的整体安全能力有很大提升,包括但不限于采购了很多安全控制设备,或花重金招兵买马,但是在很多情况下,有不少企业采购了安全设备,没有进行过升级,或者部署的位置有问题,导致了很多类似这样的问题:
- “我买了安全控制设备了啊,怎么他们渗透测试还能攻击进来?”
- “安全部门怎么感觉天天啥事没有,就知道找开发的麻烦?”
- “听领导说安全最近没什么产出啊,会不会他们要被裁掉?”
- “安全看的很简单啊,天天就看看日志,然后划划水就领工资了!”
- “这垃圾安全控制设备为什么黑客都攻击进来了连个告警也没有?”
- “又要向领导汇报安全工作进度了,这些指标数据不太好弄啊……”
- ………………
尤其是在某些企业,遭到了APT攻击、勒索病毒、挖矿病毒的侵入,安全团队只能在事后去进行分析清理,但是很多APT组织或者勒索病毒、挖矿病毒,很可能已经国内外一些安全厂商将其分析完毕并向社区推送了相关的威胁情报信息,又比如某个APT组织被某个厂商爆出来后,那么在第一时间,只有该厂商的安全控制设备规则已经准备就绪,其他厂商也会及时跟进,然后推送给商业用户进行升级,升级完成后,虽然厂商说已经支持检测或防御,但是安全团队很难去验证这一点逻辑,或许只能通过扫描器进行部分验证,这时候就可以了解下最近几年国外大范围流行BAS技术,它可以根据用户实际情况,模拟相关的所有攻击流程,或者根据一些最新的可靠的威胁情报,自动化在当前网络环境中模拟攻击,以此来印证安全控制设备是否已经支持防御或监测该类型的攻击,在国外很多大型公司,都已经中常态化的使用BAS技术来辅佐安全团队,这可以可以从侧面印证了BAS技术确实可以实实在在的解决一些在安全行业的痛点,而不是新瓶装旧酒。
简介
BAS,全称为Breach and Attack Simulation
,中文直译过来是入侵和攻击模拟,该技术主打的是可以发现当前网络中的攻击路径或者漏洞,类似于连续的自动化渗透测试,但是区别于自动化渗透测试的单一性,该技术能在进行测试漏洞的同时,还可以验证相关安全控制设备的策略有效性。在大部分情况下,BAS可以理解为“对当前网络所部署的安全控制设备进行有效性验证”,该有效性验证包括但不限于以下几点:
- 针对最新的一些漏洞,验证所部署的安全控制设备是否能防御或检测到。
- 针对最新的攻击手法,验证所部署的安全控制设备是否能防御或检测到。
- 针对安全控制设备升级后,验证其安全控制设备是否能真实防御或检测到相关攻击。
- 针对一些精准的威胁情报,如针对新爆出有关APT组织的TTPs或者IoCs,所部署的安全控制设备是否能防御或检测到。
- 针对APT组织或黑客组织的攻击手法进行链路模拟,验证所部署的安全控制设备是否能防御、检测、识别到。
- ……
BAS平台在除了可以对当前网络所部署的安全控制设备进行有效性验证外,另一个特性应该是可持续的有效性验证,所谓的可持续有效性验证,可以理解为在部署好或者规划好预期的模拟路径后,还要支持周期性的进行有效性验证,BAS平台输出的验证结果应可作为定期安全评估报告中的一部分,且带有相关的修复建议,其目的应为辅助运营人员、管理层、决策层快速简单的识别到当前网络中的安全短板。也可以在不同控制类型安全设备升级后,对于某些攻击是否能进行防御或检测的有效性验证。
BAS跑道上的一些国际同行
AttackIQ
简介
AttackIQ1是一家总部位于美国的公司,也是市场上BAS首批解决方案之一,成立于2013年,AttackIQ截止目前平台具有115个评估方案以及3271个剧本,这些剧本和评估方案从模拟APT组织攻击到勒索病毒挖矿都有覆盖,其技术路径是围绕ATT&CK框架的战术进行覆盖的,也有来自于US-Alert等其他情报来源的剧本覆盖,基本上可以满足国外政府或企业的大部分安全需求。AttackIQ平台使用者也支持根据教程开发适用于自己的剧本,并且可以直接上传后就可以直接下发任务进行测试。AttackIQ也有很多免费的资源,包括但不限于AttackIQ学院、公开演讲、论坛等资源,有兴趣的可以深入进行下了解。
技术栈
AttackIQ使用的技术栈为golang+python3,其剧本使用Python3编写,Agent控制端使用Golang编写。
相关截图
Safebreach
简介
Safebreach2是一家以色列的公司,是市场上BAS首批解决方案之一,成立与2014年,到目前(2022/06/12)已经有长达将近8年的BAS相关经验,在这么长的时间里,Safebreach平台也积累了若干模拟剧本,根据其官方说明,其已经覆盖了超过24000种不同的攻击方法,且可利用他们获得专利的Hacker's Playbook™对已知的攻击方法编写或更新。一般是Safebreach官方会根据新的攻击方法进行编排,然后更新到平台里,用户可以在"Known Attack Series"相关选项中进行模拟测试。
该公司的相关安全团队,也在github或者公司上公开了一些先进的安全技术研究成果,例如pinjectra,是一个类似C/C++OOP的库,它实现了进程注入技术。
技术栈
Safebreach使用的技术栈为Python。
相关截图
由于笔者并没有权限获取到Safebreach平台的试用,所以只能从现有的一些有限资源里面截取相关的一些图片,当然,如果有相关资源者愿意提供试用平台,可以联系我([email protected])。
Cymulate
简介
Cymulate是一家成立于2016年的以色列公司,Cymulate提供免费试用,用户可以自己在其官方网站上申请免费试用,但是免费试用的相关权限非常小,基本上只能看,不能下任务,很多功能无法运行,但是也可以略看一二。在平台上我们可以看到,Cymulate将模拟测试分为了以下几种类型进行评估:
- IMMEDIATE THREATS INTELLIGENCE (即时威胁情报)
- EMAIL GATEWAY (邮件网关)
- WEB GATEWAY (web网关)
- WEB APPLICATION FIREWALL (web应用防火墙)
- ENDPOINT SECURITY (终端安全)
- DATA EXFILTRATION (数据渗出)
下面简单介绍下前两种类型,其他类型感兴趣的可以自己申请账号试试看。
IMMEDIATE THREATS INTELLIGENCE
Cymulate平台上有关即使威胁情报的相关剧本(模板),总计966个。且支持用户根据URL、IP、Domain或者是pcap包自定义添加新的相关评估模板。
EMAIL GATEWAY
邮件网关相关的安全评估项内置数10个模板,列表如下:
- free assessment (针对不同类型的威胁测试电子邮件安全控制设备。)
- cymulate best practice (分3个阶段测试你的电子邮件安全。1、发送所有文件类型(非恶意行为)以测试当前的文件类型策略。2、根据阶段1中被渗透的文件类型,发送含有潜在代码执行的文件。3、发送模拟的恶意文件--基于阶段1和阶段2中被渗透的文件。)
- cymulate best practice - high risk (分3个阶段测试你的电子邮件安全:1、发送所有文件类型(非恶意行为),以测试当前的文件类型策略。2、根据第一阶段渗透的文件类型,发送含有潜在代码执行的文件。3、发送模拟的恶意文件--基于第一阶段和第二阶段渗透的文件。)
- exploits (近期浏览器端的漏洞和Windows的PoC。)
- malwares (1、通过电子邮件与C2进行通信。2、通过强制提示认证来收集证书。3、通过强制提示UAC来提升权限。)
- ransomwares (精心制作的Payload,模仿勒索软件的行为:1、扫描要加密的敏感文件。2、使用非对称加密算法(SHA256)加密文件)
- links (已知的或最近被CERTS、安全供应商和其他威胁情报引擎认定为恶意的网站样本。.)
- executables payloads (常见和不太常见的可执行文件,包含由脚本、嵌入对象和已知漏洞触发的模拟恶意行为。涵盖的文件类型:exe,com,scr,pif,vbs,vbe,js,jse,wsf,hta,bat,cmd,lnk,cpl,msi)
- worms (特点:1、扫描本地网络中易受攻击的机器。2、尝试使用用户令牌将自己复制到每台检测到的机器上。)
- office payloads (包含由脚本、嵌入对象和已知漏洞触发的模拟恶意行为的Office文件。文件类型包括:doc、docx、ppt、pptx、xlsx等。)
- Embedded Code (将嵌入代码注入到电子邮件的正文中。)
可以看到cymulate在测试邮件网关部分就使用了数十个模板,这些模板获取在运行中会生成n份相关的模拟攻击剧本来进行评估邮件网关配置的有效性以及能力。
技术栈
Cymulate使用的技术栈为.net core。
相关截图
alphasoc/flightsim
简介
flightsim是由alphasoc开源的一款软件,用于根据配置生成恶意网络流量,该工具可以模拟DNS隧道、DGA流量、对已知活动的C2请求以及其他恶意流量。详细的内容可以查看源码alphasoc/flightsim。对于仅限于流量层面的恶意流量模拟,可以参考下该项目。
技术栈
flightsim是使用技术栈为Golang。
相关截图
其他厂商
还有很多其他的厂商,因为篇幅原因就不在这里进行过多的讨论了,大致列表如下:
- XMCyber(https://www.xmcyber.com/)
- SCYTHE(https://www.scythe.io/)
- Foreseeti(https://foreseeti.com/)
- Infection Monkey - Akamai (https://github.com/guardicore/monkey)
- Randori(https://www.randori.com/)
- Caldera(https://github.com/mitre/caldera)
- WhiteHaX(https://www.ironsdn.com/)
- keysight(https://www.keysight.com/)
- mandiant(https://www.mandiant.com/)
- Validato(https://validato.io/)
- Pentera(https://pentera.io/)
- fourcore(https://fourcore.io/)
- nopsec(https://www.nopsec.com/)
- atomicredteam(https://github.com/redcanaryco/atomic-red-team)
- bt3.no(https://www.encripto.no/en/downloads-2/tools/)
BAS跑道上的一些国内同行
国内BAS相关的研究起步对于国外来说较晚,据目前公开资料查找到与BAS相关的公司产品如下:
- 墨云科技(https://www.vackbot.com/)
- 知其安(https://www.zhiqiansec.com/)
- 塞讯(https://www.secvision.cn/)
- 奇虎360(https://360.net/)
- 深信服(https://www.sangfor.com.cn/)
- 螣龙安科(https://talentsec.cn/)
- …………
结语
国内BAS大部分还处于早期发展中,相对于国外百花齐放的状态还需要一定的时间让国内市场去接受。
简单做出一个模拟功能的demo并不难,难的应该是从整体去考虑其如何支持链式的模拟,如一个APT组织从攻击web到获取到ad权限,在这个过程中,如何部署少量的Agent(模拟器)去完成整条链路的模拟,且可以在界面中控制如果安全设备拦截后是否继续进行攻击,还是会自动化模拟攻击其他可控范围内的目标?这些都需要
进一步的思考和解决。
笔者也算了解了不少国内外的BAS平台,但是发现一个很尴尬的点,就是大部分不同厂家的BAS平台,都有一个对于BAS不同层度的解读和实现,且最终解决的问题大类是检查安全设备有效性,但是细分之下的小类就有很多了,有的更侧重于链式攻击、有的更侧重于流量重放模拟攻击,还有的侧重于恶意样本的多少,可谓是各有千秋,具体到实际的需求,还需要需求方仔细斟酌。
Refer
- https://www.slideshare.net/bdnog/breach-and-attack-simulation-tools
- https://cloudcape.de/what-is-breach-and-attack-simulation/
- https://en.wikipedia.org/wiki/SafeBreach
- https://github.com/SafeBreach-Labs/pinjectra
- *
- attackiq_info ↩
- Safebreach Wiki ↩