您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~
前文分享了远控木马及防御措施、APT攻击中的远控,包括木马的基本概念和分类、木马的植入方式、远控木马的通信方式、APT攻击与远控木马等。这篇这篇文章将带大家学习安天科技集团首席架构师肖新光老师(Seak)的分享,介绍恶意代码与APT攻击中的武器,包括A2PT的攻击武器、普通APT组织的自研恶意代码、商用恶意代码、无恶意代码作业、开源和免费工具等。希望这些基础原理能更好地帮助大家做好防御和保护,基础性文章,希望对您有所帮助~
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
作者的github资源:
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~
- 推荐前文:网络安全自学篇系列-100篇
前文分析:
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
首先,我们从恶意代码的发展看APT攻击。
在上世纪80~90年代,安全工作者对抗的威胁
在上世纪80~90年代,我们面对的是一些DOS下比较简单的计算机病毒,这些病毒有一些是恶意的,也有一些是编写者以炫技为目的所编写的病毒。在PC尚未承载关键资产、以磁盘为主要信息交换方式时,以制造者心理满足作为主要动力编写的感染病毒。
在屏幕上,可以看到的是一些恶意代码发作的形式,尽管DOS时代的恶意代码比较简单,但随着DOS病毒的膨胀逐渐催生了反病毒引擎的诞生。在DOS时代,反病毒引擎的整个体系结构已经趋于成熟,反病毒引擎的更新维护成为安全对抗的工作主线。
在本世纪初,安全工作者对抗的威胁
信息高速公路建设,大规模蠕虫传播与之俱来。我们可以看到本世纪初的前五年,出现了大量的大规模流行的相关的病毒情况。从安天当时研发的检测软件和数据排行中,可以看到当时的蠕虫流程程序。换句话说,大量的蠕虫传播,也推动了协议解析、流量监测技术的成熟,产生了如UTM、NG-FW、NTA等产品。
反病毒工作者一直面对的压力
随着信息社会的不断发展,信息资产价值日趋增加,趋利成为了网络黑客组织的主要动力。我们可以看到,大约在2006年左右,恶意代码数量快速膨胀,其中数量膨胀的主体是各种类型的特洛伊木马,在这种背景下,靠人工分析来形成全面的恶意代码对抗已经不可行。必须依赖于大规模的自动分析体系,这种分析压力促成了反病毒企业和安全公司在后台逐渐建立和完善了反病毒体系。
“方程式”(Equation)组织入侵中东SWIFT服务提供商EastNets可视化复现
在反病毒引擎、端点防护、流量监测、后端自动化分析技术基本成熟的基础上,安全工作者也日趋看到更为严峻的安全威胁。下图是著名的APT攻击组织“方程式”(Equation)对中东最大的金融服务机构EastNets的攻击。
在该攻击过程中,攻击者先后从互联网四个跳板发起攻击,先后击穿了两层防火墙(VPN防火墙、ASA防火墙),并且在防火墙上预制了Rootkit。
之后又通过多个0day漏洞穿梭进内网体系,获取多台业务服务器的控制权。
最后通过相关的SQL语句,从Orcale服务器上获得了攻击方感兴趣的账户名和密码、交易轨迹等相关信息,这就是一次典型的APT攻击。
这里可以看到相关APT攻击的整个推进过程和资产场景。下图展示了“方程式组织”入侵EastNets行动中受到入侵过程。
在这一过程中,攻击方使用了大量的恶意代码攻击装备,包括:
这就是一个典型的APT攻击。APT攻击概念最早是在2006年,由美国空军信息中心业务组指挥官Greg Rattray上校提出,APT即高级持续性威胁(Advanced Persistent Threat),用以概括网络空间中的战略性对手行动。
Persistent所呈现的意图,才是我们判断APT攻击的核心因素。在APT攻击中,未必所有的都是高级技巧。
下面给出不同层级的威胁,包括最低0级业余攻击者发动的攻击,也有发达国家发动的以国家利益驱动的网络情报作业。我们整个网络信息体系每天都是处在不同动机、不同来源、复杂的攻击任务中,各种攻击有掩蔽在互联网各种应用当中,需要深度的分析和辨识。
在整个网络信息技术发展、安全威胁和对抗技术发展中,有越来越多的APT攻击组织浮出水面,下面可以看到全球APT攻击行动、组织归属地理位置分布图。
接着我们看一下高级恶意代码的工程体系,A2PT的攻击武器。它是安天所提出的术语,是在各种APT组织中来评价一些有超高能力行为体所发动的攻击,这种攻击水平往往高于其他的APT组织,因为成为高级恶意代码工程体系。
首先回顾2010年发起的震网事件Stuxnet。该事件是一起针对YL铀离心设施的攻击事件,它几乎击穿了整个YL的自主的JUN工业生产体系。
Stuxnet事件包括两个版本来实现不同的攻击机理。
安天公司针对震网多版本技术细节全面对比,可以看到所使用的复杂高级恶意代码,同时也存在很多的关联和差异。
我们可以看到,它实际上是用一个巨大的Loader来承载相关主DLL文件,这些文件是用于实施非常复杂、破坏、传播机理过程的一个个攻击载荷。由于震网是实现在隔离网络中,难以实现远程控制的作业,所以在震网中预制了非常复杂的配置和逻辑,使其能在内网目标中推进并达成相应的效果。
同时我们可以看到,这种大规模的恶意代码工程体系本身会有一定的继承性和延续性,因为研发这样复杂的恶意代码工程体系,也需要非常高的人力成本。下图展示了震网前后出现的毒曲、火焰、高斯、Fanny、Flowershop的关系图,它们是在两个比较大的恶意代码工程框架基础上扩展起来的。
这种依托复杂的恶意代码框架,然后在攻击行动中,承载一些专属定制模块的特点,体现出来A2PT组织的强大能力,这也为我们追踪A2PT组织带来了条件。下图梳理了相关的恶意代码行动与使用恶意代码框架的关系,以及后续的恶意攻击事件的关联,这些关联为我们有效追踪相关的攻击组织提供线索。
同时,震网整个攻击过程是基于一个隔离网络,我们可以看成是一种无后方作业,它很可能不能和后方的远程人员建立实时的远程控制关系,更多依赖于一个独立的Loader承载更多的可拆卸模块和复杂逻辑实现攻击。
在后续的关于“方程式”组织分析中,我们看到另外一类通过精细化模块实现前后场控制、按需投递恶意代码的方式,下图展示了“方程式”组织主机作业模块积木图。可以看到这一类恶意代码往往是由一个内存Loader,大量小型DLL作为原子化攻击模块,通过加密信道传输至前场,由Loader进行加载,该情况使得防御方很难获得整个恶意代码的所有模块,从而实现隐蔽性和可重用性的保证。
此外,在A2PT所使用的恶意代码中,基本上它是为所有操作系统的针对性研制,只是在Windows安全对抗前度较高的场景下更新较快,而在类似Solaris等系统更新较慢。
通过分析斯诺登揭秘的NSA ANT攻击装备谱系、维基解密曝光的CIA攻击装备谱系,可以发现,A2PT等攻击组织的攻击活动中,恶意代码并不是唯一的J火武器,实际上它们把大量相关的外设、中继、电池、声像传统的JD设备与网络恶意代码结合,从而形成覆盖人力、网络的全频谱的作业能力。
第二部分看了复杂庞大的A2PT武器,实际上也有一些APT组织使用自研的恶意代码,但其攻击能力要远远低于A2PT组织。
首先,我们来看一下白象的武器。白象是来自南亚次大陆某国,长期对我国和巴基斯坦发起APT攻击,至今仍然活跃。下图展示了白象捕获监控来自南亚次大陆某国的持续多年的APT攻击,依托深度分析和公开线索,进行了攻击小组画像,并映射到自然人。
白象从攻击伊始,就使用了大量自研的恶意代码,这些恶意代码本身使用了多种不同的开发工具,其编写水平也参差不齐,有的用VC编写、有的用VB编写,还有一些脚本语言。整个恶意代码的工程能力并不是很强,但是对于一些防范意识缺失的被攻击者也同样有效。
“白象一代”相关载荷组合作业方式如下图所示,可以看到,这种恶意代码也会呈现多个模块进行功能组合、配合、协同的特点。相比于震网多模块体系,这个攻击显得相对简陋。
下图对比了白象一代和白象二代。白象组织从2012年开始到2015年,能力有所提升,从最开始不适用漏洞,到使用一定的1DAY或陈旧漏洞,在这个工程中,虽然没有使用高级恶意代码和0DAY漏洞的情况,但也给被攻击国家带来了很大的威胁。
在整个APT攻击中,还有一种情况,它们使用的恶意代码是一种商品,即购买来的商用武器。下图展示了安天在2015年5月27日所发布报告,指出的相关攻击组织使用商用攻击平台Cobalt Strike,攻击我国ZF机构的过程。
我们可以看到,攻击者使用相关的攻击平台,以在欧洲的远程控制跳板发起攻击,试图窃取信息。
攻击工程和CS攻击瓶体,整个流程包括:
在攻击过程中,可以看到攻击者利用商用攻击平台,使用不落地的木马,然后通过相关的前挡模块,不断获取载荷的方式,将相应编码过的数据发送到远端。下图右侧展示了Cobalt Strike功能解析,其可以构造多种格式的攻击载荷,进行多种方式的远程攻击和样本持久化的过程。
Cobalt Strike作者是Raphael Mudge,他是原美国安全人员,参与过美国红队项目,创业之后开发了该商用开源的攻击平台。这也导致了很多缺乏防御的目标非常容易遭受攻击。
该系列100篇写完之后,下一个“安全提高班”系列作者会深入学习该工具,分享相关的博客及案例,敬请期待。
“商业攻击平台+恶意代码”为核心的军火扩散影响地区平衡
在过去,我们可以看到类似于白象等组织,需要花一定成本和精力去研发相关的自用恶意代码,但其恶意代码本身的水平不是很高。但是,类似于海莲花这样的组织,在使用了商用攻击平台之后,在缺少特别专业攻击手、漏洞挖掘和利用人员、高级恶意代码编写人员的情况下,就能够发动水准非常高的攻击,因此这种以“商业攻击平台+恶意代码”为核心的军火扩散,在一定程度上影响了地区平衡。
同时,我们在过去的若干年内,也看到了多起APT攻击武器,包括商用JH泄露带来的灾难。最严重的是NSA下属的方程式攻击组织的一些列漏洞利用工具泄露,包括永恒之蓝漏洞,导致了Wannacry勒索蠕虫的爆发。另一家非常非常注明的商业JH提供商,Heaking Team也发生了被攻击导致相关攻击工具曝光在网上,从而被大量黑产利用的情况。
下面我们看看其他情况,攻击者使用其他的开源免费工具,以及在攻击中不使用恶意代码作业的情况。
(1) 使用开源或公开的恶意代码——绿斑
首先,我们来看一下在2018年被曝光的绿斑攻击组织。在他们的攻击活动中,所使用的远程控制工具,多数都是开源或商业可以买卖、公开的工具。当然,这也为相应的攻击溯源带来了难度,也降低了攻击方的攻击成本。
(2) 无恶意代码作业
值得一提的是,我们在2009年前后,比较早的发现一例疑似绿斑组织的早起攻击活动,就看到了一例“无恶意代码作业”的情况。实际上,攻击者在攻击某个关键服务器过程中,在攻击得手后,实际上是通过一组开源、免费或商业的工具搭建的整个攻击作业环境,使之能够有效地获取数据。
利用无恶意功能的工具进行攻击,对应的工具如下表所示。
这里的部分工具是网络管理人员也会使用的,因此当时的各种反病毒软件不会对这些文件进行报警。但可以说,当时绿斑使用这些工具并不是为了逃逸,而更大可能是当时它们没有足够成本和能力去编写相关的恶意代码,而且他们本身是从Unix攻防上获得了启示,因此就采用了当时的这些工具构建了攻击。
值得注意的是,在整个恶意代码对抗、分析能力、防御不断关注和增强的情况,当前确实出现了一部分APT活动中,不使用恶意代码,而是获取相应合法身份,尽可能使用商用工具,使用攻击场景中已经存在的工具,来逃避检测的方法。
(3) 不使用恶意代码的攻击会成为主流化?
因此,美国的某个新兴安全厂商,甚至认为在APT攻击中,不使用恶意代码的攻击会成为主流化。那么,这一观点是否正确呢?这一观点显然有失偏颇。首先,我们可以看到恶意代码本身数量还在快速膨胀。其次,它所谓的不使用恶意代码包括两种情况,一种情况是虽然使用了相关恶意载荷,但恶意载荷并不以文件形态落地,事实上,无论是内存形态、扇区形态,还是文件形态,它都是恶意程序这一本质没有改变,这并不取决于它是否有文件载体;第二种情况是使用正常的工具软件在其中,凭借其获取合法身份,这确实值得关注。
同时,无恶意代码作业难以支撑超级复杂的攻击逻辑,正常工具软件很难实现相应功能,必须去编写相关的恶意程序或脚本、配置逻辑。
比如震网事件,感染震网的计算机会监控接入的设备,一旦发现U盘插入并且满足条件即开始写入U盘摆渡文件,具体条件如下:
对整个APT进行总结。
(1) 恶意代码传统分类定义不足以支撑APT分析
最开始我们把恶意代码作为一种威胁类型来进行对抗,在对抗过程中,我们逐渐积累出发病毒引擎、端点防护、流量监测、后端分析等技术,用于对抗恶意代码的病毒感染属性、蠕虫传播属性、木马侵害属性。但实际上,这种传统的分类定义不足以支撑APT分析。
(2) 传统恶意代码的特点和APT的差异
追随主流 vs 装备覆盖
传统恶意代码往往是一个编写者、利用者追溯产业发展主流,试读利益最大化的过程。因此可以看到主流恶意代码往往随着当前最为广泛存在的系统来完成它的恶意攻击。而APT攻击追求的是装备覆盖,尽可能覆盖所有可能的活跃系统,一方面存在着对一些新出现系统的超前性布局,另一方面始终保持对旧的仍活着的系统覆盖。
最大化感染 vs 高度定向\慎重持久化
传统的蠕虫传播、僵尸网络、C&C控制,攻击者往往追求获取最大化的感染量,以实现最大利益。而APT攻击的恶意代码往往是高度定向的,甚至高水平的攻击者在持久化环境,都非常慎重。比如方程式组织在进行攻击时,对其所关注的节点进行硬盘持久化率只有千分之二左右,谨慎实施移动和持久化避免暴露。
慢羊理论(成本最低) vs 高价值目标
传统的恶意代码攻击是基于慢羊理论,就是羊通常跑得最慢的被咬死,这种恶意代码攻击多数是感染比较脆弱的节点,获益更容易的方法实施安全威胁。对于APT攻击来说,它针对的就是高价值目标,它是否发送攻击与本身的强度无关,仅与目标的价值相关。
(3) 攻击者的变化
传统的恶意代码攻击和APT攻击的攻击者也发生变化。下图左侧是CIH、震荡波等相关著名恶意代码攻击事件的病毒作者,可以看出他们很多都是个体攻击者或犯罪团伙的头目。但APT攻击大部分的攻击者都是相关的,带有国家政治、经济集团为背景的攻击者。
(4) 以隐蔽和定向支撑持续作业对比
同时,我们可以对比传播范围背后的定向性。上图是基于SQL Server传播的Slammer蠕虫,它在2003年发作30分钟内就几乎感染了全球所有的国家。而震网攻击在被认为出现传播失控的问题上,数月之内也只是形成了一条从中东到东南亚的感染带。当然,所谓的传播失控,也有人猜测是攻击方试读去追中YL的整个工业链。
下面对比恶意代码平台的复杂度增长情况。从DOS样本到早起木马、再到APT样本。
(5) 从攻击全过程的视角更全面的看APT
这里可以看到基于刚才的分析,很难简单的从传统恶意代码视角看到APT组织,需要从一种攻击过程的完整视角看APT。这里就有了2011年洛马所提出的沙箱链模型,把APT攻击看成一系列过程。
沙箱链为我们提供了一个非常好的观察视角,但没有形成清晰的标准,其用于评价APT攻击依然显得不足。此时,出现了更完整的相关威胁框架。
安天产品包括:
尽管它们都能对一部分攻击进行相应的安全防御,但都不可能单独的解决安全问题。如果需要应对安全问题,就需要一个动态综合的网络安全解决方案。下图展示了安天动态综合防御体系,以应对高级威胁。涉及四个层面:
只有形成这样一个综合体系,才能有效对抗高级威胁。同时,面对如此强大的对手,还需要开展威胁猎杀。
由于课程时间有限,不能一一展开,这里给出参考资料,推荐大家去学习。真心感谢安天的肖新光老师,真正的安全大佬,要向这些前辈学习,加油~
最后希望这篇文章对您有所帮助,文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。
欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。
(By:Eastmount 2021-11-14 夜于武汉 http://blog.csdn.net/eastmount/ )
参考资料:
[1] https://mooc.study.163.com/learn/1000003014?share=2&shareId=1000001005
[2] 《软件安全之恶意代码机理与防护》WHU