1.序言
很荣幸收到安全村科技创新企业专刊的邀约,希望本篇拙作对读者有所助益。言归正传,网络安全说到底的还是攻防能力的比拼。想有效抵御攻击,首先就要具备感知网络攻击即入侵检测能力。但在建设自己的入侵检测能力的时候,却常因对网络攻击缺乏足够的了解而感到迷茫。因此笔者想浅谈一下利用渗透框架来评估、提升、验证企业的入侵检测能力。
2.了解ATT&CK
谈到完整、全面地了解和认识网络攻击(下文称之为渗透),就离不开一系列渗透技战术与框架,其中比较知名的有洛克希德马丁公司的杀伤链(Kill Chain)和MITRE出品的ATT&CK框架。其中,ATT&CK框架不仅给出了渗透的主要战术,还给出了战术中常用的各种技术、子技术。因此说,ATT&CK框架是目前非常全面、完整的渗透技战术矩阵之一,也是我们了解渗透技战术好帮手之一。
截至笔者撰写这篇拙作之时,针对企业组织的ATT&CK框架ATT&CK Enterprise Matrix更新到版本13.1,其中的技战术矩阵内容覆盖了包含Windows、macOS、Linux、多种云平台、Office 365、网络、容器等在内的多种平台的渗透技战术。我们可以在MITRE ATT&CK官网上获取Enterprise矩阵的详细信息,以及针对各类平台各自的渗透技战术矩阵。
这次,笔者选择Enterprise 13.1版本来看一下渗透技战术,矩阵共划分了14类渗透战术及其技术和子技术,请注意这14类渗透战术并不存在线性关系,在一次具体的渗透行动中,可以使用一种或多种渗透战术及其部分或全部技术、子技术,达成目的即可。这14类渗透战术简单列举描述如下:
编号
英文名称
中文名称
描述
01
Reconnaissance
侦查
渗透前的信息收集
02
Resource Development
资源开发
渗透所需的资源准备
03
Initial Access
初始访问
渗透获取初始访问权限,俗称打点
04
Execution
执行
执行命令或程序
05
Persistence
权限维持
维持已获取的权限
06
Privilege Escalation
权限提升
提升已经获取的权限
07
Defense Evasion
防御逃逸
躲避检测或逃逸防御的技术手段
08
Credential Access
凭据获取
寻找和获取受害者的身份凭据
09
Discovery
探索
渗透中的信息收集,包含内网信息收集
10
Lateral Movement
横向移动
从已经获取权限出发获取其他信息资源权限
11
Collection
搜集
收集各类数据
12
Command and Control
命令与控制
构建CC通道的相关技术
13
Exfiltration
渗出
从受害者处获取数据的相关技术
14
Impact
影响
攻击可能造成的后果
有了这个矩阵,我们就可以加以改造用来评估、提升和验证企业入侵检测能力。
3.团队组建
工作的第一步就是需要有人,一支由攻击队员和检测规则工程师组成的团队。此时会有一系列问题:现在安全哪里还能要到HC?攻击队员和检测规则工程师到底是什么要求?到哪里去招聘这样的人?攻击队员太贵了怎么办?等等。
首先来谈攻击队员,攻击队员不需要太多人,初期大约2—3人就够了。如果没有那么多HC,那么可以选择只招聘一名在渗透领域有丰富经验的工程师带着我们原有的渗透岗位的工程师、校招生、实习生先做起来,等慢慢有了一些成绩再汇报来争取更多的资源。而检测规则工程师只需要1—2人,主要职责就是与攻击队员配合完成入侵检测规则的编写和上线。
那这些人需要具备什么技能呢?在起步阶段,我们通常需要1名对常规渗透具有丰富经验的工程师,通常要熟悉WEB、内网、Linux/Windows、域等常见领域的渗透技术,如果具备一定的社会工程学经验就更好了。至于移动端、IoT等则可以等后续慢慢补充或由现有人员学习来掌握这方面的能力。当然具体需要哪方面技能是根据企业的业务需求来定,例如智能网联汽车的企业要在主营业务上做入侵检测,那么移动端和IoT(尤其是车机)方向的渗透人才则必不可少。同理检测规则工程师也要熟悉以上领域的渗透基础知识,对安全产品和各类日志要深入地了解和掌握。
招聘这样的人通常可以选择在安全公司、互联网企业、头部甲方企业中参与攻防演练的红蓝军成员、安全实验室人员等,以及部分在此领域有着浓厚积淀的高校或实验室的学生。得益于近些年国家、部委、地市各级攻防演练活动的举行,培养了一大批有着出色技术和丰富经验的渗透技术人员,也让招聘市场的价格相比前几年渐渐回归了理性,企业的成本也没有那么高。
4.基础设施
我们距离正式开启评估、提升、验证企业入侵检测能力的工作还需要一套可以进行实战渗透的仿真环境,这套仿真环境通常由操作系统、漏洞靶场、安全产品及其网络环境构成,常见的企业内网络环境模拟环境(不包含攻击队成员个人办公电脑)需求的资产清单简单地进行列举,如下表:
资产需求
操作系统
数量
用途
攻击主机
Kali/Ubuntu
1~2
承担跳板机,C2 Server等角色
靶机
Linux
2
模拟业务,版本参考企业情况
Windows Server
2~3
模拟业务,AD、Exchange等资产,版本参考企业情况
Windows 7/10/11
2~3
模拟员工办公主机
对于操作系统的具体版本,应用的选型和版本应结合企业自身实际情况决定,尽可能仿真模拟企业生产环境,例如企业全部使用Linux服务器,使用SaaS化办公服务,没有Windows环境和AD域,那么则无需相关环境,毕竟这项工作是为了增强企业的入侵检测能力,不是做安全研究。
下图是一个典型的靶场环境组网,靶场环境需要连接互联网且一般情况下应该与企业生产和大部分办公网络隔离,仅允许安全团队所在的办公网络访问即可。
对于建设在云环境的模拟主要是构建云原生的基于k8s的仿真,可以在隔离靶场网络内部署真实的k8s环境。
有了基础设施环境之后,我们还需要构建攻击模拟环境,因此对靶场靶机应该进行如下配置:
不要给靶场环境打补丁;
尽可能多地收集日志并转发到日志分析引擎(例如SOC);
靶场中安装的安全产品应该与企业实际使用的一致。
为了可以快速构建攻击模拟环境,我们可以使用一些开源项目进行,例如vulhub项目可以快速构建漏洞环境,而云原生环境可以考虑使用Kubernetes-Goat进行模拟,这些资源都可以很方便在Github上面获取。
如果要评估、提升和验证企业的攻防对抗能力,那么本质是对安全产品及安全人员能力的评估、提升和验证,而人员水平最终还是落实到安全产品去实施和体现。再说详细一点,提升检测能力的根本就是增加和优化检测规则。
企业自身的安全产品一般分为三类,第一类是纯自研的安全产品,在需求阶段都会提出检测规则功能等类似的规则。第二类是开源或免费组件,大多也会留有类似的功能或接口。第三类则是商业采购的产品,这类产品有可能并不开放规则添加或编辑接口,毕竟规则库可以算得上安全产品的核心竞争力之一了,就算其开放了相关功能,大多数也是只开放规则添加功能,且编写新规则的字段颗粒度、维度也难以满足实际需求。
那么遇到这类规则编写困境的情况,有没有什么办法呢?有的那就是检测能力不能依赖安全单品自身规则库的能力,我们可以收集各类安全产品及所在主机上的操作系统、应用、操作记录等各类日志,归到日志分析引擎,进行日志解析,然后在引擎配置相应的关联分析规则。即便安全产品的能力不够,我们还可以借助众多的日志收集工具。而日志分析引擎这类产品无论是自研、开源还是商业采购都得具备日志解析和管理分析的功能。
5.攻击项列表
具备了团队和基础设施环境,下一步就是梳理攻击项列表,一般来说使用完整的Enterprise矩阵是没有必要的,其技战术过于全面,而企业的信息资产并不需要对矩阵的所有技战术都进行检测和防御。结合自身的信息资产对不需要的技战术进行删减可以有效降低工作量,减少工作成本。
要做具体的模拟工作,还需要对每一项战术、技术、子技术所对应具体渗透方法进行列举,我们可以形成一个Excel表,第一列是战术,第二列是技术,第三列是子技术,第四列则是子技术对应的具体渗透方法。笔者团队曾经根据V11版本的MITRE ATT&CK Enterprise技战术矩阵梳理过攻击项列表,我们以权限维持战术中的AD域部分技术来介绍如何编写一份攻击项列表:
战术
技术
子技术
攻击项
Persistence
Modify Authentication Process
Domain Controller Authentication
Skeleton Key
…
Password Filter DLL
HOOK PasswordChangeNotify
Pluggable Authentication Modules
PAM Backdoor
…
…
在上面的Excel表中,攻击项一列是需要攻击队成员自行补充的,这一过程最考验知识面。此外,还可以借助团队头脑风暴,公开的优秀渗透博客、参与行业内部交流分享等方式解决。最后,还应该根据攻击项涉及信息资产的价值、重要程度、网络位置、手法利用难度等因素合理确定攻击项模拟的优先级别。
6.评估、提升、验证
有了攻击项列表就可以开展具体的入侵检测能力评估工作了,我们可以让攻击队员模拟攻击项列表中的攻击,并确认安全产品是否进行了告警、阻断、拦截,进而根据下列公式计算出现有的入侵检测能力—入侵技战术感知率:
其中可感知攻击项是指可以被检测、阻断、拦截的攻击,需要说明的是入侵技战术感知率并不能完全反映实际入侵检测能力因为总有新的入侵技战术被发明出来,我们的攻击项列表本身也不是包含了所有的攻击技战术。但这一指标能够在一定程度上体现对主流常规攻击手法的入侵检测能力。
在模拟攻击的时候,快速地完成众多攻击项的模拟是非常考验攻击队员的日常积累的,很多攻击都有现成的工具或渗透框架可以用来快速模拟。另外,一些业内渗透专家的博客和Github也会更新相关的工具、脚本甚至攻击技术的原理,这些都可以大幅提升效率,减少工时。
初次的指标或许比较低,一般在5%—30%,这是很正常的情况,这意味着我们有比较大的提升空间。攻击队员应该将不能被感知的攻击项按照优先级排列,逐一进行分析研究,提出检测建议。检测规则工程师根据实际日志情况结合检测建议编写检测规则,配置到相应的安全产品或者日志分析引擎上,并由攻击队成员配合进行验证。
对于规则试运营转正式运营的标准则需要根据运营团队具体情况来确定,一般至少具备如下几条:
单条规则或模型每天告警总数量不超过N,N由具体资产数量和运营团队处理能力决定;
规则误报率一般不高于10%,如果针对重点资产、告警数量少的规则,可适当放宽误报率;
规则漏报率一般要求不高于5%。
经过一段时间的模拟和规则编写工作,我们会逐渐把攻击项列表中的攻击都做到能检测,入侵技战术感知率逐步提升到90%以上,此时可以将攻击队员工作重点转移到对新攻击、新漏洞的跟踪、分析、模拟以及对原有规则的绕过优化对抗上,这也标志着入侵检测能力建设从专项提升转入日常运营。
在构建安全有效性验证(BAS)能力的时候,我们根据ATT&CK框架梳理的攻击项列表依然可以发挥作用,无论是采购的还是自研的BAS引擎,我们都可以根据攻击项列表来对比BAS引擎当中的EXP或我们自身的攻击项列表是否存在缺失,并进行相互的查漏补缺。
然后我们可以定义两个指标,第一个是BAS引擎对我们攻击项的覆盖率,这个指标我们当然是争取要动态保持在100%的,该指标的计算公式如下:
另一个指标当然就是规则有效率,这个指标我们也要追求动态100%,这个指标意味着我们整个的检测体系,从日志收集到关联分析到告警的路径是正常运转的。该指标的计算方法如下:
7.后记
以上,就是笔者此前团队利用ATT&CK框架提升企业入侵检测能力的一点点实践和感想,望能对读者有所助益。由于笔者水平有限,时间仓促,难免存在谬误,还望业内前辈、同仁不吝指正。
作者介绍
关于 安全村
安全村始终致力于为安全人服务,通过博客、文集、专刊、沙龙等形态,交流最新的技术和资讯,增强互动与合作,与行业人员共同建设协同生态。
投稿邮箱:info@sec-un.org