从防御者视角来看APT攻击

news2024/11/16 7:53:37

前言

APT防御的重要性毋庸讳言,为了帮助各位师傅在防御方面建立一个总体认识,本文会将APT防御方法分为三类,分别是:监控、检测和缓解技术,并分别进行梳理,介绍分析代表性技术。这一篇分析现有的监控技术。

APT

这里不谈APT概念,就是分享两张最近看到的觉得描述APT非常契合的图。

如果我们把APT分成6个攻击阶段的话,一种经典的划分方式如下

image-20220313215222268.png

或者也可以画成金字塔。

image-20220313215257501.png

这里我们假设攻击目标位于金字塔的顶端,侧面表示攻击进化的环境(如物理平面、用户平面、网络平面、应用平面等)。金字塔平面依赖于每个组织的细节,并根据记录事件的环境定义。假设APT组织能够全面了解目标的所有设施以确定达到目标G的可行平面。那么为了达到目标G,攻击者可以探索漏洞并通过从一个或多个平面“爬行”接近目标。因此,最终检测到的APT就像一棵跨越多个平面的攻击树。

这么说不形象,我们可以上面这个金字塔展开。

image-20220313215447803.png

这个图就很直观了,图中小点代表平面中记录的事件,而彩色连接的事件代表相关事件,其表示可能的攻击。path1表示物理平面的相关事件,path2和path3表示涉及多个平面的相关事件。

监控

硬盘监控

这主要针对落地文件而言。

每个终端都需要通过反病毒、防火墙或必要的内容过滤来监控任何恶意行为。对系统上运行的软件进行必要的修补程序,可以消除已知的漏洞,从而减少攻击者的入侵点,否则这些漏洞可能会将恶意软件传播到网络中容易受到攻击的地方。这方面的技术其实比较成熟了,而且并不适用于APT攻击,这里就不展开说明了。

内存监控

现在更加流行的方法是内存监控,这主要针对现在流行无文件、不落地攻击手段而言的,这种攻击手段一般通过使用一个已经在内存中运行的进行来执行恶意功能,由于没有单独的进程在后台运行,所以不会留下任何轨迹。比如卡巴斯基发现的Duqu,就是运行在一个已经运行的进程的内存中。

这个领域有很多优秀的工作,这里简单介绍几个。

1、通过分析Stuxnet、Duqu、Flame和Red October使用恶意软件进行APT攻击的活动进行检测,其特点比较如下。

image-20220312223305579.png

他们介绍了APT攻击者所使用的规避技术,如rootkit功能、负载变化的端点扫描、网络流量加密和混淆、隐写术、内存中恶意软件的执行和假数字证书等。针对这些攻击技术,作者建议通过补丁管理、强大的网络访问控制和监控、严格的互联网政策、协议感知的安全解决方案、监控DNS查询、监控异常域的访问、监控网络连接、蜜罐和蜜网,以及标准的基于主机的入侵防御系统作为APT的防御对策。

2、提取出了不同类型的恶意软件的特征,并提出了一个通用的解决方案用于检测不同类型的恶意软件。他们收集恶意软件和良性样本作为训练数据,并从中提取污点图(taint
graph)。然后污点图转换成一个特征向量,在这个特征向量上应用标准分类算法来训练模型。这个模型训练完成后被用来识别系统上的恶意行为。他们使用了不同恶意软件(键盘记录、密码窃取、后门等)的共同特征。这些恶意软件通常表现出的特征是异常的信息访问和处理行为。例如,键盘记录和密码窃取会拦截击键输入。在比如说,为了不被发现,后门要么使用不常见的协议(如ICMP),要么创建一个原始套接字,要么拦截网络堆栈来与远程攻击者通信。基于ICMP的后门访问ICMP流量,基于原始套接字的后门访问所有具有相同协议号的报文。例如,TCP原始套接字可以接收到所有的TCP报文,这种后门拦截网络栈的行为类似于网络嗅探器,对网络流量进行窃听以获取有价值的信息。这些特征都被作者利用来进行检测。整个系统结构设计如下:

image-20220312214532830.png

下图是一个污点图的例子,反映了Windows用户身份验证的过程。当一个密码窃取器在后台运行时,它捕捉到密码并将其保存到它的日志文件“c: ginallog
.log”中。

image-20220312214635738.png

再来看一个用污点图表示Google Desktop处理传入的web页面的例子。

image-20220312214806997.png

该方案检测结果如下:

image-20220312214650652.png

3、提出了利用硬件辅助进行恶意软件检测的方案。作者发现,与运行的正常软件相比,受感染的应用程序运行时会修改控制流/数据结构,而这种行为会反映在它的内存访问模式中。所以可以通过处理器内监视内存访问来检测,其内存访问会查看虚拟地址以获得更一致的签名。他们使用系统调用、函数调用和完整的程序运行来检测受感染程序的恶意行为。研究表明,不论是对用户级还是和内核级威胁都是可用的,并且针对内核级rootkit实现高精度的检测。其设计的框架如下所示:

image-20220312222923011.png

上半部分是训练,下半部分是运行检测。当使用system call检测rootkit时,结果如下:

image-20220312223053449.png

可以看到,准确率非常的高,而且误报率很低。

4、通过虚拟内存消耗来识别应用程序进程的异常行为,实现对恶意软件的检测。因为作者认为相比于网络操作或CPU利用率,内存使用的波动性较小,不易受到影响,而且使用的是虚拟内存而不是物理内存,因为后者不包含交换到硬盘的内存量。首先使用进程和psutil收集目标机器的内存指纹。然后通过机器学习算法,基于指纹、阈值和阈值因子为每个应用计算一个模型来检测异常行为。下面用图的方式可以帮助大家更好的理解其方案。

下图是三个进程的虚拟内存的时间序列。

image-20220312215302732.png

从时间序列中捕获的滑动窗口如下所示:

image-20220312215355034.png

当窗口大小为25时,6个进程的特征分布,图中不同颜色代表不同应用。

image-20220312215506826.png

下图展示了训练阶段的前三个步骤,可视化阈值。初始阈值为零(左);对于第二个数据点,它扩展到a(中间);在第三个点上,它扩展到b(右)

image-20220312215551514.png

流量监控

APT攻击最关键的部分就是C&C通信行为,而且通信并不只发生一次,通常是在系统第一次被攻破后为了数据传输而反复进行。在终端层面监视任何带有新目的IP的网络数据包、异常payload的数据包以及发送到同一IP的大量数据包等特征有助于识别来自终端的任何可疑行为。

从流量中可以看到很多关键信息。

先看最简单的,从http请求中就可以看出GhosNet发往C2服务器的请求。

这是php版本的。

image-20220312221207278.png

这是asp版本的。

image-20220312221157826.png

还可以从流量中看到challenge信息,如下所示就是RSA Poisonlvy样本的256字节的challenge请求。

image-20220312221411165.png

这在一次成功的TCP握手之后,由poisivy生成的网络流量,它从256字节的看似随机的数据开始。这些字节组成一个challenge请求,以查看“客户端”(即RAT控制端)是否配置了嵌入在“服务器”(即受害者)中的密码。

同样一个样本,还能看到keep-alive请求。

image-20220312221521651.png

接下来我们看看这方面一些经典的工作。

5、提出的方案可以从数千个终端中检测出少数表现出可疑活动的主机。他们通过观察多个主机间APT的关键阶段,并将每个主机的分析结果与它们的过去以及所观察到的网络中的其他主机进行比较,从而生成一个排名前k个的可疑主机列表。由于他们的方案不需要检测载荷,所以针对加密信道进行检测也是可行的。其方案的示意图如下:

image-20220312220007322.png

6、重点关注跟踪各种网络对象(如主机、主机组和网络),并确定它们是否存在威胁。他们将网络流量活动从网络流量采集到威胁分析分为五层,从多个不同的网络传感器(如网络流、NIDS、蜜罐)中收集数据,然后在多个时间段提取和聚合特征,以创建一个样本空间。然后使用有监督模型进行识别。分层示意如下所示,大多数技术都是在第一层运行,处理来自传感器的原始数据和事件。而作者的方法首先转换数据,即第2层,然后在第3层及以上应用分类模型。

image-20220312220325246.png

这篇工作的可视化做得很棒,如下所示:

image-20220312220447172.png

有三种不同的可视化显示了UDP行为(右上),TCP行为(左上)和所有协议(底部)。每个点代表一个行为特征空间中的一个主机,这些图显示了主机从“源到sink行为”,接收数据的主机在左边,向系统发送数据的主机在右边。

还对训练完成的SVM进行了可视化如下所示:

image-20220312220722379.png

beacon通信在超平面的右下角,表明其检测效果很不错。

7、是安全产商TrendMicro发布的APT报告,里面分析了不同的APT活动,如Taidoor、IXESHE、Enfal和Sykipot,这些恶意软件使用已知的协议(如HTTP)与C&C服务器建立通信,通常通过三个端口80、443、8080配置。攻击者通常使用这些端口,因为他们知道通常只有这些端口在防火墙级别是开放的。但是,这里的关键在于,攻击者可能会使用这些端口来传递不匹配的流量类型,例如在80端口发送任何非http流量或在443端口发送任何非https流量。可以通过检测这一特点实现预警。此外,作者认为,监视网络流量的时间和大小是另一个需要考虑的方面,因为恶意软件通常会在给定的时间间隔向C&C服务器发送beacon,因此使用DNS请求或url监视时间间隔可以对此进行检测。另外,在多数情况下,尽管设计好的恶意软件是使用HTTP进行C2活动的,但它们通常使用API发送请求,所以可以通过分析HTTP头信息将API调用与典型的浏览器活动区分开来以实现检测。

8、利用基于流量的分析来检测APT,而不是基于网络,基于流量的分析将网络流量聚合在一起,从而减少了需要分析的数据量,之后对APT通信进行统计建模,成功设计出确定性的检测特征。其设计的框架如下所示:image-20220312222609427.png

9、则将APT攻击与内部威胁的结合起来进行分析,将其表述为一个双层博弈问题,并进一步确定了博弈双方(防御者与APT攻击者)的最佳对策,并证明存在纳什均衡。防御者、APT攻击者和内部威胁人员的相互作用表示如下:

image-20220312222103146.png

文中给了很多数学公式推导,这里不再重复了,直接看结果吧。

image-20220312222314253.png

图3表示攻击者和防御者在每个时间点的动作。我们可以看到攻击者的稳定状态下的动作,即α是0.2,而防御者的稳定状态下的动作,即β是1。图4为系统状态向稳定状态的演化过程。稳定状态为0.1667。

表明最后确实达到了纳什均衡。

代码监控

源代码中可能存在的漏洞可以通过静态分析技术(如污点分析和数据流分析等技术)来识别。此外,可以在执行期间监视代码的性能,并确保代码在其范围内运行,不会访问未经授权的内存区域与其他资源,这样可以更早地识别出威胁。这一块是一个非常大的领域,我们实验室有其他小伙伴在研究,这里也不展开了,后续有机会的话单独发文与各位师傅一起学习。

日志监控

有很多日志都有助于检测,比如内存使用日志、CPU使用日志、应用程序执行日志、系统日志等。

日志种类、数量都很多,不同日志之间记录的格式又是不同的,怎么将其联系起来进行分析是非常重要的一个问题。

10、结合了网络日志和主机日志来检测恶意活动。他们从这些日志中提取了4类特征,身份特征,基于网络流量的特征,基于服务的特征和基于认证的特征,然后使用皮尔逊相关系数来减少冗余,然后删除那些对聚类没有贡献的特征,接着通过聚类以识别恶意活动。

下图是据源IP地址聚合的防火墙数据中所选特征的经验累积分布函数。

image-20220313200410545.png

下图是由源IP地址聚合的系统日志数据中所选特征的经验累积分布函数。

image-20220313200435022.png

在原始的10维空间中进行聚类,使用DBSCAN聚类算法,对于参数值ε = 0.15和minPts =
21的防火墙数据,投影到前三个主成分用于可视化,效果如下:

image-20220313200536662.png

在指定参数后,DBSCAN识别出6个集群和一小组离群点。虽然从图中看不出来,但在进行聚类的高维空间中,聚类之间的距离实际上相当远。

在原始的28维空间中进行聚类。结合防火墙和系统日志数据的DBSCAN聚类,参数值设ε = 0.25和minPts =
20,投影到前三个主成分(PC)进行可视化。

image-20220313200637740.png

从上图中可以看到有四个簇和一组离群点。虽然聚类在图中看起来不是可分离的,但在进行聚类的高维空间中,它们是相当遥远的。其中簇1代表正常行为,而簇2、3和4被分类为异常行为。为了分析攻击的异常簇,我们计算每个簇的归一化平均特征向量,如下所示:

image-20220313201232976.png

每一个小表的横轴是特征,特征1 -18对应于从系统日志数据中提取的特性,而特征19 -
28对应于从防火墙日志中提取的特性。当根据异常簇的正常值对其排序时,我们可以认为簇2最有可能是恶意的,其次是簇4和簇3。由于簇群3只有唯一的IP地址,所以我们认为它只包含良性主机。

11、分析DNS日志来识别受感染的内部主机与外部恶意域名之间的的“beacon”活动,他们认为这种行为会在网络流和DNS日志中留下自己的记录。作者提出了一种DNS日志分析和事件关联的方法,通过考虑低延迟间隔时间,他们假设受感染的主机每天会与C&C服务器通信几次。通过识别受感染的主机,它们将与相同可疑域通信的其他主机连接起来。首先对DNS日志进行预处理,过滤不需要的数据,仅从DNS日志中获取IPv4地址。然后以图的方式表示元数据,图的顶点表示主机IP地址和域名,而每条边对应于从内部主机到外部机器的一个查询。

在Cobalt Strike中的Beacon大概就是如下所示:

image-20220313201526084.png

它可以使用SMB协议创建一个beacon,当然也可以使用HTTP或DNS等协议。初始任务是启动一个beacon侦听器来使用恶意payload并指定用于传输流量的端口号,payload提供两个通信通道。以上图为例,当域列表被提供之后,恶意软件会检查任务并通过HTTP或DNS下载它们。之后每次都要通过这些域,必须使用beacon向C2发送信号。如果一个域失败或被阻塞,恶意软件将进入休眠状态,直到下一个域可用。

该作者提出的基于DNS A记录进行迭代检测的方案流程如下:

image-20220313201822435.png

12、同样通过DNS日志分析来检测APT恶意软件和C&C通信活动。他们使用移动设备的DNS日志,他们的方法简单来说就是给C2域名和普通域名打分。为了区分正常和异常(C&C)域,他们根据内部设备发起的DNS请求的数量,选择正常域,提取15个特征,分为4大类:基于DNS请求和应答的特征,基于域的特征,基于时间的特征,以及基于whois的特征,然后通过分数进行识别。流程如下所示:

image-20220313202148363.png

所选的基于域名的特征总结如下表:

image-20220313202214514.png

下图是验证时,绘制的C&C域与普通域之间的距离差。

image-20220313202320306.png

上图中x-轴代表不同的测试示例,前60个是C&C域名,后170个是普通域名。我们注意到,几乎所有C&C域的平均距离都大于0.2。

下图则展示了不同阈值的恶意软件C&C域的检测性能。检测性能表明,当参数设置为 0.2时,异常检测算法的误报率和误报率最低。

image-20220313202436454.png

而针对日志中冗余数据、脏数据过多的问题,13、提出了从脏日志中提取信息和知识的方法。首先通过网络配置对日志数据进行过滤和规范化,然后将这些标准化数据处理成不同的特征,最后对这些提取的特征进行聚类,以确定任何可疑活动。他们使用了web代理日志、DHCP服务器日志、VPN服务器远程连接日志、认证尝试日志、防病毒扫描日志等不同来源的日志,然后根据目标、主机、策略和流量提取特征,通过适应性k-
means聚类算法对特征进行聚类,最后成功找出行为与正常主机有显著差异的主机,这些主机就是被攻陷的机器。

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/359174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多重继承的虚函数表

同一个类,不同对象使用同一张虚函数表 不同类使用不同的虚函数表 子类自己添加的虚函数(非重写),在VS中是将此放在第一个继承类的虚函数表里. #include <iostream> using namespace std;class Father { public:virtual void func1() { cout << "Father::f…

3款强大到离谱电脑软件,都是效率神器,从此远离加班

闲话少说&#xff0c;直接上狠货。 1、ImageGlass ImageGlass是一款值得吹爆的电脑图片浏览工具&#xff0c;使用极其方便&#xff0c;体积50M左右&#xff0c;非常小巧&#xff0c;功能却强大到离谱&#xff0c;ImageGlass打开图片的速度极快&#xff0c;实现快速不同图像间切…

Flink-状态编程(Keyed State、Operator State、Broadcast State、状态持久化和状态后端)

文章目录状态编程Flink 中的状态有状态算子状态的分类按键分区状态&#xff08;Keyed State&#xff09;基本概念支持的结构类型使用基本代码实例-值状态&#xff08;ValueState&#xff09;实例-列表状态&#xff08;ListState&#xff09;实例-映射状态&#xff08;MapState&…

2023年湖北中级职称(工程类建筑类)报名条件和要求是什么?

2023年湖北中级职称&#xff08;工程类建筑类&#xff09;报名条件和要求是什么&#xff1f; 中级职称分为计算机类、医药类、卫生类、教师类、工程类、经济类等各大类&#xff0c;今天主要就是跟大家说一下工程类中级职称评审的一个条件和要求&#xff0c;这也是评职称人员应该…

ASEMI低压MOS管50N06S,50N06S图片,50N06S尺寸

编辑-Z ASEMI低压MOS管50N06S参数&#xff1a; 型号&#xff1a;50N06S 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;60V 栅源电压&#xff08;VGS&#xff09;&#xff1a;25V 漏极电流&#xff08;ID&#xff09;&#xff1a;50A 功耗&#xff08;PD&#xf…

面试一位软件测试6年工作者:一年经验掰成六年来用....

在众多面试中&#xff0c;对于那个工作了6年的面试者&#xff0c;我印象很深刻&#xff0c;因为最开始拿到简历的时候&#xff0c;我一摸:"这简历&#xff0c;好厚啊&#xff01;"再一看&#xff0c;工作6年。 于是我去找了我的领导&#xff0c;我说:“这人我应该没…

linux-rockchip-音频相关

一、查看当前配置声卡状态 cat /proc/asound/cards二、查看当前声卡工作状态 声卡分两种通道&#xff0c;一种是Capture、一种是Playback。Capture是输入通道&#xff0c;Playback是输出通道。例如pcm0p属于声卡输出通道&#xff0c;pcm0c属于声卡输入通道。 ls /proc/asoun…

分析现货黄金价格一般有什么方法

分析现货黄金价格一般有什么方法呢&#xff1f;我相信很多投资者都会说&#xff0c;是技术分析。很多人并不知道技术分析是什么&#xff0c;并且技术分析是如何去分析现货黄金价格的&#xff0c;那么本文就介绍一下技术分析的主要分类。可以说&#xff0c;小编的其他文章都是以…

ASE20N60-ASEMI的MOS管ASE20N60

编辑-Z ASE20N60在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为0.4Ω&#xff0c;是一款N沟道高压MOS管。ASE20N60的最大脉冲正向电流ISM为80A&#xff0c;零栅极电压漏极电流(IDSS)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE20N60功耗…

Linux知识之主机状态

1、查看系统资源占用 •可以通过top命令查看CPU、内存使用情况&#xff0c;类似Windows的任务管理器默认每5秒刷新一次&#xff0c;语法&#xff1a;直接输入top即可&#xff0c;按q或ctrl c退出 2、 top命令内容详解 •第一行&#xff1a;top&#xff1a;命令名称&#xff0…

群晖-第2章-设置HTTPS访问

群晖-第2章-设置HTTPS访问 本章介绍如何通过HTTPS访问群晖&#xff0c;前置要求是完成群晖-第1章-IPV6的DDNS中的内容&#xff0c;可以是IPV4也可以是IPV6&#xff0c;或者你有公网IP&#xff0c;直接添加DNS解析也可以。只要能通过域名访问到nas就行。 本文参考自群晖添加SS…

【汽车电子】A核与M核异构通信过程解析

一、 硬件层通信实现原理二、驱动层Virtio下RPMsg通信实现三、应用层双核通信实现方式 现在越来越多的产品具有M core和A core的异构架构&#xff0c;既能达到M核的实时要求&#xff0c;又能满足A核的生态和算力。比如NXP的i.MX8系列、瑞萨的RZ/G2L系列以及TI的AM62x系列等等。…

CSS基础教程

目录 css背景 1.background-color 2.透明度和不透明度 3.使用RGBA的透明度 css背景图片 css背景重复 ​编辑 1.background-repeat 2. background-repeat:no-repeat 3.background-position css背景附着 css边框 1.border-style 边框样式 2.border-width 边框宽度 4…

生物识别技术—景联文科技提供课堂行为采集、reID行为采集、驾驶员行为采集等全类型采集服务!

“随着生物识别技术逐步成熟&#xff0c;其识别准确率大幅提高&#xff0c;应用场景趋向复杂化、多样化&#xff0c;市场规模保持高速增长。据报道&#xff0c;市场研究机构Emergen Research最新发布的一份报告预测&#xff0c;到2027年&#xff0c;全球生物识别市场规模将接近…

MyBatis-Plus——代码生成器(3.5.1+版本)

文章目录配置数据源配置&#xff08;DataSource&#xff09;全局配置&#xff08;GlobalConfig&#xff09;包配置&#xff08;PackageConfig&#xff09;策略配置&#xff08;StrategyConfig&#xff09;模板引擎配置&#xff08;TemplateEngine&#xff09;代码生成器测试样例…

动手学深度学习(第二版)学习笔记 第二章

官网&#xff1a;http://zh.d2l.ai/ 视频可以去b站找 记录的是个人觉得不太熟的知识 第二章 预备知识 代码地址&#xff1a;d2l-zh/pytorch/chapter_preliminaries 2.1 数据操作 2.1. 数据操作 — 动手学深度学习 2.0.0 documentation 如果只想知道张量中元素的总数&#…

jenkins下载与简单使用

1.jenkins下载 因为我仍然使用的是jdk1.8进行开发&#xff0c;所以我下载的是jenkins2.332.1版本&#xff08;jenkins2.346.1版本在2022年末不再支持java8&#xff0c;如果项目使用的是jdk11可以继续使用该jenkins版本&#xff09;&#xff0c;更多版本下载请点击jenkins下载 …

企业级信息系统开发学习笔记1.3 初探Spring——利用注解配置类取代Spring配置文件

文章目录零、本讲学习目标一、课程引入二、利用注解配置类取代Spring配置文件&#xff08;一&#xff09;打开项目&#xff08;二&#xff09;创建新包&#xff08;三&#xff09;拷贝类与接口&#xff08;四&#xff09;创建注解配置类&#xff08;五&#xff09;创建测试类&a…

kubeadmd的部署+Dashboard+私有仓库

目录 一、kubeadm部署 1.1、环境准备 ​编辑 1.2、修改主机名 1.3、所有节点修改hosts文件 ​编辑 1.4、调整内核参数 1.5、参数生效 二、所有节点安装docker 三、所有节点安装kubeadm、kubelet和kubectl 四、 部署K8S集群 4.1、查看初始化需要的镜像 4.2、在 mas…

高压放大器在HIFU换能器和声场测量研究中的应用

实验名称&#xff1a;高压放大器在HIFU换能器和声场测量研究中的应用研究方向&#xff1a;医学超声测试目的&#xff1a;HIFU声场具有特殊的声场特性&#xff0c;要求用于声场检测的方法能够避免对声场造成干扰&#xff0c;同时避免高温高压和空化响应带来的冲击。目前报道的一…