作者:FA1C0N@RPO-Official
相关阅读:《ATT&CK 初探--侦察阶段》

介绍

RPO是一个信息安全爱好者成立的小组,我们致力于找到有趣且好玩,充满挑战性的东西。

前言

ATT&CK(Adversarial Tactics, Techniques, and Common Knowledge )是一个攻击行为知识库和模型,主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。从2013年MITRE首次提出这个概念,2015年ATT&CK框架正式发布。在2016年到2020年的一份Excel电子表格发展到如今的社区知识集合。简单的说ATT&CK就是一张表,红蓝双方按照表中的区块对企业设施展开对抗,从而发现安全的薄弱点。我们未来会不断更新整个框架的技术细节和利用/防御方式。

image-20210506211206510

正篇

资源开发利用阶段(Resource Development)

攻击者在试图建立可以用来支持他们进行下一步行动的资源(基础)。资源开发包括攻击者创建、购买或破坏/窃取可用于渗透目标的资源的技术。此类资源包括基础设施、帐户或功能。攻击者可以利用这些资源在整个攻击周期的其他阶段提供帮助。

由于整个资源开发阶段的实施都与攻击者自己部署的服务有关,所以防守方很难在相关的环节采取措施阻止和预防攻击。因此我们只会在有有效缓解措施的攻击方式下介绍缓解措施。

一 获取基础设施 (Acquire Infrastructure)

攻击者在渗透目标期间可以购买或租用可使用的基础设施。基础架构解决方案包括物理或云服务器、域和第三方 Web 服务。此外,僵尸网络也可供出租或购买。

域(Domains)

攻击者会购买可在定位期间使用的域。域名可以指向一个或多个 IP 地址。攻击者可以购买或者在某些情况下免费获得。攻击者可以将购买的域用于各种目的,包括网络钓鱼、入侵和命令与控制(C2)。攻击者可以选择与合法域相似的域,包括通过使用相近的字母和数字变换,相同含义的不同表述或使用不同的顶级域 (一级域名,例:com,xyz,org等)。

误植域名攻击(URL劫持)可用于借助Drive-by Compromise(例如某些XSS平台:beef-xss)的方式交付有效载荷。

使用方式

beef

攻击者还可以使用国际化域名 (IDN,某国语言+顶级域名的形式) 来创建视觉上相似的域以用于操作。

每个域名注册商都维护一个可公开查看的数据库,该数据库显示每个注册域名的相关信息。但是攻击者可能会使用域名隐私保护功能来掩盖相关信息。攻击者还可能会通过使用不同的注册信息和向不同的域注册商购买域来进一步阻断跟踪其基础设施的工作。

防守方缓解措施

相关企业可以有意注册与自己相似的域并且时刻关注域名的状态,以阻止攻击者创建相近域名或域名抢注。

DNS服务器(DNS Server)

攻击者可以设置自己的DNS服务器。在入侵成功之后的活动期间,攻击者可能会将 DNS 流量用于各种任务来降低被受害方发现的概率(DNS隧道),包括命令与控制(C2)。

攻击者可以选择配置和运行自己的 DNS 服务器来支持操作,而不是劫持现有的 DNS 服务器。使用自己的DNS服务器难度会低得多。

通过运行自己的 DNS 服务器,攻击者可以更好地控制他们管理C2流量。通过对 DNS 服务器的控制,攻击者可以配置 DNS 应用程序以提供对恶意软件的条件响应,并且通常在基于 DNS 的 C2 通道结构方面具有更大的灵活性。

使用方式

现在有很多现成的工具可以用来搭建DNS隧道,例如dnscat2等。

虚拟专用服务器(Virtual Private Server)

攻击者可以租用可在渗透目标期间使用的虚拟专用服务器 (VPS)。目前有多家云服务提供商将虚拟机/容器作为服务进行销售。使用云基础设施可以让攻击者更轻松地配置、修改、移动甚至销毁他们的基础设施。

获取 VPS 也可用于攻击的后期阶段,例如命令与控制(C2)。攻击者还可以从 VPS 服务提供商那里获取基础设施,这些服务提供商以极少的注册信息租用 VPS 而闻名,从而允许更多地匿名获取基础设施。

常见的VPS服务提供商有搬瓦工,AWS,vultr等。

服务器(Server)

攻击者在渗透目标期间可以购买、租用可使用的物理服务器。与VPS不同,攻击者可以选择配置和运行自己的物理服务器来执行攻击,这使得搭建相关基础设施时具有更高的自定义空间。高配置的物理服务器往往能表现出比VPS更好的性能。但相对而言,物理服务器的配置和移动没有VPS轻松。

僵尸网络(Botnet)

攻击者可以购买、租用可在渗透目标期间使用的已被侵入可被控制的网络。僵尸网络是受感染系统的网络,可以指示其执行协调任务。借助僵尸网络,攻击者可能会执行后续活动,例如钓鱼或DDOS。

一些僵尸网络掌握者往往通过出让僵尸网络的资源来获取收益(挖矿,DDOS等)。

WEB服务(Web Services)

攻击者可能会注册可使用的 Web 服务。存在多种流行网站供攻击者注册基于 Web 的服务,这些服务可能会在攻击者渗透周期的后期阶段被滥用,例如在命令与控制(C2)或通过web服务渗透。

使用方式

利用社交工具的动态信息、个性签名等来向已被控制的受害者机器发号施令。

相关工具

twittor:利用twitter做C2的工具

gcat:一个隐秘的基于 Python 的后门,使用 Gmail 作为命令和控制服务器

gdog:一个隐秘的基于 Python 的 Windows 后门,使用 Gmail 作为命令和控制服务器

二 盗取账户 (Compromise Accounts)

攻击者可能会盗取帐户。对于包含社会工程的操作,在线角色的利用会很重要。攻击者可能会破坏,入侵现有帐户,而不是创建帐户。如果潜在受害者与被入侵账户的角色有一定的关系,则利用该角色可能会在潜在受害者群体中产生一定程度的信任(更有利于社工的展开)。

存在多种方法来盗取帐户,例如通过网络钓鱼收集凭据、从第三方站点购买凭据或通过暴力破解凭据(重用密码)。在入侵,盗取帐户之前,攻击者可能会进行侦察,以确定要入侵哪些帐户来执行进一步操作的决策。

社交媒体账户(Social Media Accounts)

角色可能存在于单个站点或跨多个站点(例如:Facebook、LinkedIn、Twitter、Google 等)。被盗取的账户信息可能需要一定的修改,这可能包括填写或修改个人资料信息、进一步开发社交网络。

Email账户(Email Accounts)

攻击者可能会直接利用被盗用的电子邮件帐户进行社工攻击(网络钓鱼等)。

三 攻陷基础设施(Compromise Infrastructure)

与获取基础设施不同,直接攻陷基础设施并作为自己的资源进行下一步操作可以隐藏攻击者的行踪(避免直接接触,除非溯源者可以攻陷跳板),也会节省很多成本。但被攻陷的基础设施建设起来也相当费力(如果不想被溯源者攻陷)

域(Domains)

攻击者会在攻击目标期间劫持目标的域或者子域。域名劫持注册是未经原始注册人许可便更改域名注册,攻击者通过获取域所有者邮箱账号,进而发送忘记密码的邮件给域名注册商,从而更改域注册。攻击者还可以借助社会工程学域名,续订过期域名的方式实现攻击。比如因名称空间冲突造成的困扰,微软以高价买下了魔鬼域名corp.com。还存在一些比如恶意抢注别的公司到期的域名,然后高价卖回去的操作。

当组织有指向不存在或取消分配资源的 DNS 条目时,可能会发生子域名接管。在这种情况下攻击者可以控制子域进行操作,而该域名相关联的信托也受益。

DNS服务器(DNS Server)

攻击者会通过攻击第三方DNS服务器,在 post-compromise期间,攻击者会利用DNS协议作为C2协议等其他利用方式。

通过攻击DNS服务器,攻击者可以更改DNS记录这种攻击可以导致流量的重定向,攻击者可以从中收集信息和凭证。攻击者也可以将DNS解析到恶意服务器,而不是实际指向的位置。

使用方式

DNS污染和DNS劫持

虚拟专用服务器(Virtual Private Server)

攻击者可能会随机/针对性的对VPS服务器进行攻击,获取权限后将其作为基础设施,从而隐蔽自己的攻击IP,从而逃避防守方的溯源。

服务器(Server)

与上文中虚拟专用服务器的操作相似,故略过

僵尸网络(Botnet)

攻击者会破坏很多第三方系统,形成一个僵尸网络。僵尸网络是一个受破坏的网络系统,可以执行调度任务,比如16年的Mirai网络。攻击者也可能对现有的僵尸网络进行接管,例如将机器重定向到C2服务器上。除了这些,攻击者还可以利用僵尸网络实现大规模网络钓鱼或DDOS攻击。

WEB服务(Web Services)

与上文中WEB服务的操作相似,故略过。

四 开发能力(Develop Capabilities)

攻击者需要具备自行开发工具的能力,而不是购买、下载甚至窃取。这是识别开发要求和构建解决方案(例如恶意软件、漏洞和自签名证书)的过程。攻击者可能会依赖自己的开发能力在接下来的步骤中发挥一定的作用。

开发能力可能需要不同的技能组合。所需的技能可能位于内部,也可能需要外包。

恶意软件(Malware)

构建恶意软件可能包括开发负载、装载器(droppers)、后渗透工具、后门、免杀工具(packers)、C2 协议以及创建受感染的可移动媒体。攻击者可能会开发恶意软件来支持他们的操作,从而创建一种方法来持久化控制、绕过防御和后渗透的行为。

代码签名证书(Code Signing Certificates)

代码签名证书往往是具有迷惑性的东西。攻击者可能会创建自签名代码签名证书使被签名的软件具有一定的迷惑作用。代码签名是对可执行文件和脚本进行数字签名以确认软件作者并保证代码未被更改或损坏的过程。代码签名为开发人员的程序提供了一定程度的真实性,并保证程序未被篡改。用户或安全工具相对于未签名的代码会更信任签名的代码,即使他们不知道证书的颁发者或作者是谁。

在代码签名之前,攻击者可能会开发自签名证书以用于操作。

数字证书(Digital Certificates)

攻击者可以创建自签名/证书机构签发的SSL/TLS证书。如果攻击者窃取到受害者证书的密钥,那么他们可以知道用该密钥进行沟通的对话内容。攻击者也可以用证书加密C2流量。

漏洞利用程序(Exploits)

漏洞利用往往通过错误或漏洞来导致计算机硬件或软件上发生异常行为。攻击者可能会寻找并开发自己的漏洞,而不是从网上查找/修改已有漏洞或从漏洞供应商处购买漏洞。攻击者可能会使用通过漏洞获取的信息来专注于漏洞利用开发工作。作为漏洞利用开发过程的一部分,攻击者可能会通过模糊测试和补丁分析等方法发现可利用的漏洞。可以对某cms前后两个版本进行对比,发现修复的地方然后反推漏洞所在。

攻击者可能会在攻击周期的各个阶段使用漏洞利用(即利用面向公众的应用程序、利用客户端执行、利用特权升级、利用防御规避、利用凭据访问、利用远程服务以及利用应用程序或系统利用)。

五 建立账户(Establish Accounts)

攻击者在攻击过程中可以创建和培养一批账号来进行更深层次的攻击。攻击者会在社交媒体,网站或其他公开信息中伪装这批账号的简介,仪表,过往历史和工作单位,从而在之后用这批虚假账号进入目标企业/单位。

对于需要社会工程的攻击来说,在线角色的利用非常重要。这些角色可能是虚构或者冒充真实的人。该角色可能存在于单个或多个网站,比如脸书,推特,github,dorkerhub等。

建立账号还可以包括创建电子邮件提供商的账户,从而直接用于钓鱼攻击。

使用方式

这里只说一些常见的匿名邮箱和在线验证码接收平台,不涉及黑灰产会用到的工具

https://10minutemail.com/

短信验证码在线接收码平台

社交媒体账户(Social Media Accounts)

与上文中盗取社交媒体账户之后的操作相似,故略过。

Email账户(Email Accounts)

与上文中盗取Email账户之后的操作相似,故略过。

六 获取组件 (Obtain Capabilities)

攻击者会购买/窃取/下载渗透过程中会使用到的组件,而不是自己内部开发。这些组件包含恶意软件,工具及其许可证,漏洞,证书以及与漏洞相关的信息。这些组件可以在攻击周期的多个阶段提供帮助。

除了从网上下载免费恶意软件,工具和漏洞外,攻击者还可能从第三方购买这些组件。第三方包含专门开发恶意软件,漏洞或个人。

除了购买,攻击者还可能从第三方窃取这些组件,包含软件许可证,恶意软件,SSL/TLS和代码签名证书,或者查看或入侵公开/非公开的漏洞数据库。

恶意软件(Malware)

恶意软件可以包括payload,后渗透工具,后门,装载器,C2协议。攻击者可以通过这些软件获取维持权限,绕过防护和执行后渗透攻击。

这部分由于涉及的东西太多,我们会专门开一篇(挖个坑)文章介绍的。

工具(Tool)

工具可以是开源或闭源,免费或商业。一个工具只要能在攻击中起到作用,即使它的本意不是恶意的也算作恶意工具,比如PsExec。设计商业许可证的红队团队工具,比如CobaltStrike。商业软件通过购买,窃取许可证或破解许可证获得,比如Jetbrains全家桶,Visual Studio,burpsuite专业版等。

代码签名证书(Code Signing Certificates)

代码签名是数字签名可执行文件和脚本的过程,以确认软件作者并保证代码未被更改或损坏,可用于绕过需要签名代码在系统上执行的安全策略。攻击者会购买/窃取可以在攻击中使用的代码签名,从而绕过安全控制。因为用户信任被签名后的代码,而不是未签名的代码,即便这个签名是攻击者冒充/伪造的。

购买代码签名证书可以使用前组织或使用从以前受损的实体窃取的信息,使攻击者能够验证证书提供商为该实体。攻击者也可能直接从受损害的第三方窃取代码签名材料。

使用方式

windows购买合法代码证书的方式如下:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/dashboard/get-a-code-signing-certificate

数字证书(Digital Certificates)

攻击者可能会购买/窃取可用于渗透时的 SSL/TLS 证书。SSL/TLS 证书旨在确保信任关系。它们包括有关密钥的信息、有关其所有者身份的信息以及已验证证书内容的实体的数字签名是正确的。如果签名有效,并且检查证书的人信任签名者,那么他们知道他们可以使用该密钥与其所有者进行沟通。

攻击者可以购买或窃取 SSL/TLS 证书以推进其操作,例如加密 C2 流量(例如:与Web 协议的非对称加密),如果证书可信或以其他方式添加到信任根源(即安装根证书),则甚至启用中间人。购买数字证书可以使用前组织或使用从以前受损的实体窃取的信息,使攻击者能够验证证书提供商为该实体。攻击者也可能直接从受损害的第三方(包括证书当局)窃取证书材料。攻击者可能会注册或劫持域名,然后购买 SSL/TLS 证书。

漏洞利用(Exploits)

Exploits 也就是我们常说的EXP/POC。攻击者可能会购买、窃取或下载在渗透过程中可以使用的漏洞。漏洞利用错误,在计算机硬件或软件上造成意外行为。攻击者可能会从网上找到/修改漏洞,或者从漏洞利用供应商处购买,而不是开发自己的漏洞。

攻击者可以监控漏洞披露网站来了解现有漏洞以及新发现的漏洞的状态。在发现漏洞和公开漏洞之间通常存在延迟。攻击者可以渗透已知进行开发研究和开发的系统,以便获得这些知识,供后续操作使用。

使用方式

这里只推荐一些会直接给exp的漏洞网站/工具

seebug收录的漏洞一般都会给漏洞的poc链接,再结合zoomeye/fofa就能愉悦喜加一(吐槽一下fofa,zoomeye每月10000免费接口查询额度,fofa你好好学学,也吐槽一下zoomeye能不能开个夜间模式,界面太白看着难受)

Hacking8安全信息流

github-cve-monitor

漏洞信息(Vulnerabilities)

攻击者会监控漏洞披露/数据库,以了解现有漏洞以及新发现的漏洞的状态。通常在发现漏洞和公开漏洞之间会有延迟,也就是我们常说的1day。攻击者可能针对已知进行漏洞研究(包括商业供应商)的系统。对漏洞的了解可能导致攻击者搜索现有漏洞或尝试自行开发漏洞(即挖0day)。

七 筹划能力(Stage Capabilities)

攻击者在确定攻击目标时会通过上传,安装或其他方式建立自己的能力。

筹划能力可以帮助攻击者进行一些初始化访问和妥协后的行为,包括但不限于:

  • 借由不当操作的攻击(Drive-by Compromise)

  • 通过xss注入合法网站窃取cookie/OAuth/身份令牌等

  • 通过广告提供商的合法广告插入恶意脚本
  • 在内置web应用程序界面的客户端插入恶意脚本

  • 建立钓鱼网站

  • 上传软件或者工具到撕开口子的服务器,从而继续攻击内网和部署C2工具。

  • 安装之前获得的SSL/TLS证书用于加密C2流量

上传恶意软件(Upload Malware)

攻击者会将恶意软件上传到目标可以访问的第三方软件托管(如github、Pastebin、CNET、AWS 社区 AMIS、Docker Hub)或者攻击者自己的基础设施(服务器,网站等)。恶意软件包含payload,dropper,后渗透工具,后门以及其他恶意内容。比如攻击者会通过payload撕开外网的一个口子后,开始投放C2工具。

在运气爆表的时候,受害者可能自己直接下载/安装这些后门软件。将后门软件伪装成合法的软件能大大增加受害者无意间触发这种漏洞的可能。比如之前的pip库通过抢占和故意写差字母误使程序员安装恶意pip包和phpstudy从非官网下载的版本被植入后门等事件。

上传工具(Upload Tool)

这部分上传的位置与上传恶意软件部分相同,因此不详细展开。

安装数字证书(Install Digital Certificate)

攻击者可以安装 SSL/TLS 证书,这些证书可用于优化攻击,例如加密 C2 流量,或窃听受害者的通信。数字证书的安装可以针对许多服务器类型进行,包括 Web 服务器和电子邮件服务器。

Drive-by target

攻击者可能会上传或注入恶意内容,如javaScript,这可以通过多种方式实现,包括将恶意脚本直接插入网页或其他用户可控的 Web 内容(如论坛帖子)。攻击者也可能制作恶意网络广告,并通过合法广告提供商在网站上购买广告空间。除此之外,攻击者还可以编写xss脚本来收集用户的浏览器信息(如通过蓝莲花战队的xss平台编写利用脚本用来收集受害者主机信息),从而寻找受害者主机的其他供给面。

被攻击者入侵并用于进行Drive-by的网站可能是特定社区(如政府、特定行业或地区)访问过的网站,其目标是根据共同利益损害特定用户或一组用户。这种有针对性的攻击是指战略性迂回网络攻击(strategic web compromise,通过攻击目标经常访问的网站来达到入侵目的)或水坑攻击(watering hole attack)。

攻击者在获取基础架构(域)时可能会购买类似于合法域名(例如:同字形、错别字、不同顶级域名等)的域名,以帮助Drive-by target。

攻击者可以通过用户点击恶意链接从而泄露信息或者RCE。链接攻击可以用于钓鱼攻击,例如发送一封带有社会工程文字的电子邮件,诱骗用户主动点击或复制URL粘贴到浏览器中。

通常链接的目标站点是一个HTML界面,其中包含一些客户端脚本如JavaScript等。攻击者会克隆合法网站的登录界面伪装自己的钓鱼站点,从而诱导用户泄露自己的登录凭证。

攻击者也可能会上传恶意软件,并利用链接诱使用户去下载/运行。

攻击者可以在获取基础架构(域)时购买类似于合法域的域(例如:同字形、错别字、不同顶层域名等),从而更好的伪装站点,也可以使用短链接服务。

使用方式

下面两个工具都可用于网站克隆

httrack

setoolkit

Refer

https://attack.mitre.org/tactics/TA0042/

https://www.secpulse.com/archives/94973.html

https://pentestlab.blog/2017/08/03/command-and-control-gmail/

https://zhuanlan.zhihu.com/p/86538629

https://zhuanlan.zhihu.com/p/338885271

https://blog.csdn.net/weiyuanke/article/details/87256937

https://blog.csdn.net/sojrs_sec/article/details/105634010


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1628/