忙碌了一段时间,感谢大家的支持。今天将分享一篇系统安全的基础文章,希望您喜欢。
前文详细讲解了WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。今天将结合作者的课程作业、论文和理解,以及绿盟李老师的博客和宋老师的论文,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。
在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李老师从企业恶意样本分析的角度介绍溯源工作。关于攻击溯源的博客和论文都比较少,希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位或侵权的地方,还请告知作者与海涵。很幸运,之前和老师们聊过,他们的文章非常值得我学习。且看且珍惜,加油~
该系列文章将详细整理和深入学习系统安全、逆向分析和恶意代码检测知识,系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油!总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,共勉喔~
文章目录:
一.前言
二.恶意代码攻击溯源的相关研究
1.恶意代码溯源
2.追踪溯源案例
三.学术界恶意代码溯源
1.特征提取
2.特征预处理
3.相似性计算
4.同源判定
四.产业界恶意代码溯源
1.恶意攻击流程及溯源方法
2.域名/IP
3.入侵日志
4.全流量分析
5.同源分析
6.攻击模型
五.总结
作者的github资源:
逆向分析:
https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:
https://github.com/eastmountyxz/
NetworkSecuritySelf-study
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)
一.前言
近年来,网络安全事件和恶意代码攻击层出不穷,它们给国家、社会和个人带来了严重的危害,如分布式拒绝服务攻击(DDoS)、基于僵尸网络(Botnet)的攻击、勒索病毒WannaCry、高级可持续威胁(APT)攻击、利用远程控制木马的信息窃取等。
2017年以来,恶意代码数量依然呈上升的趋势,尤其是新型恶意代码,其数量始终呈逐年递增状态,这对网络空间安全造成了极大的威胁。在这些恶意代码攻击中, 攻击者会向目标主机(受害主机),发送特定的攻击数据包或执行恶意行为。如果能追踪这些攻击数据包的来源,定位攻击者的真实位置,受害主机不但可以采用应对措施,如在合适位置过滤攻击数据包,而且可以对攻击者采取法律手段。因此在网络取证和安全防御领域,网络攻击溯源一直是一个热点问题。
下图展示了APT组织Lazarus(APT38)的重大攻击时间线。如果某次攻击发生时或发生前,我们能够追踪溯源到是某个组织发起的,那是不是就能有效避免一次安全攻击呢?强推这篇文章:
网络攻击追踪溯源旨在利用各种手段追踪网络攻击的发起者。相关技术提供了定位攻击源和攻击路径,针对性反制或抑制网络攻击,以及网络取证能力,其在网络安全领域具有非常重要的价值。当前,网络空间安全形势日益复杂,入侵者的攻击手段不断提升,其躲避追踪溯源的手段也日益先进,如匿名网络、网络跳板、暗网、网络隐蔽信道、隐写术等方法在网络攻击事件中大量使用,这些都给网络攻击行为的追踪溯源工作带来了巨大的技术挑战。
传统的恶意代码攻击溯源方法是通过单个组织的技术力量,获取局部的攻击相关信息,无法构建完整的攻击链条,一旦攻击链中断,往往会使得前期大量的溯源工作变得毫无价值。同时,面对可持续、高威胁、高复杂的大规模网络攻击,没有深入分析攻击组织之间的关系,缺乏利用深层次恶意代码的语义知识,后续学术界也提出了一些解决措施。
下图展示了Lazarus盗窃孟加拉国央行的行动流程,通过Alreay攻击组件篡改SWIFT软件,使得黑客能够操作银行账号任意进行转账,从而窃取了8100万美元。同时,在2017年最早版本的WannaCry病毒中,安全厂商发现了其中存在着Lazarus使用过的代码,从而判断该病毒是由Lazarus制作的。Lazarus确实是一支非常厉害的APT组织。
为了进一步震慑黑客组织与网络犯罪活动,目前学术界和产业界均展开了恶意代码溯源分析与研究工作。其基本思路是:
同源分析: 利用恶意样本间的同源关系发现溯源痕迹,并根据它们出现的前后关系判定变体来源。恶意代码同源性分析,其目的是判断不同的恶意代码是否源自同一套恶意代码或是否由同一个作者、团队编写,其是否具有内在关联性、相似性。从溯源目标上来看,可分为恶意代码家族溯源及作者溯源。
家族溯源: 家族变体是已有恶意代码在不断的对抗或功能进化中生成的新型恶意代码,针对变体的家族溯源是通过提取其特征数据及代码片段,分析它们与已知样本的同源关系,进而推测可疑恶意样本的家族。例如,Kinable等人提取恶意代码的系统调用图,采用图匹配的方式比较恶意代码的相似性,识别出同源样本,进行家族分类。
作者溯源: 恶意代码作者溯源即通过分析和提取恶意代码的相关特征,定位出恶意代码作者特征,揭示出样本间的同源关系,进而溯源到已知的作者或组织。例如,Gostev等通过分析Stuxnet与Duqu所用的驱动文件在编译平台、时间、代码等方面的同源关系,实现了对它们作者的溯源。2015年,针对中国的某APT攻击采用了至少4种不同的程序形态、不同编码风格和不同攻击原理的木马程序,潜伏3年之久,最终360天眼利用多维度的“大数据”分析技术进行同源性分析,进而溯源到“海莲花”黑客组织。
由此可见,发现样本间的同源关系对于恶意代码家族和作者的溯源,甚至对攻击组织的溯源以及攻击场景还原、攻击防范等均具有重要意义。
二.恶意代码攻击溯源的相关研究
1.恶意代码溯源
在与恶意样本的的对抗过程中,恶意软件分析和检测技术也在不断发展。基于静态分析的检测、基于动态分析的检测以及基于机器学习的检测等技术不断涌现。基于静态分析的检测对非混淆样本更为准确,而基于动态分析的检测在检测混淆恶意软件方面表现更为出色;基于机器学习的检测是通过对大规模恶意样本进行特征提取(如 API(application programming interface)、CFG(control flow graph)、关键字符串值等),然后采用机器学习算法(例如分类或聚类)训练样本,以构建模型判断软件的恶意特性。这为安全研究人员提供了良好的辅助功能,有效地提高了大规模恶意软件的检测速度。
恶意代码溯源: 是指通过分析恶意代码生成、传播的规律以及恶意代码之间衍生的关联性,基于目标恶意代码的特性实现对恶意代码源头的追踪。了解恶意代码的演化,有助于更好地把握恶意代码的发展趋势,为攻击追踪溯源提供相关启示。文献[5]从时间维度给出了恶意软件典型功能演变历程,并将恶意软件的演化历程分为3个阶段。
第一阶段为1971年至1999年,恶意软件主要以原始程序的形式出现,恶意软件功能单一,破坏程度小,无对抗行为。
第二阶段为2000年至2008年,恶意软件的破坏性增强,恶意软件及其工具包数量急剧增长,借助网络感染速率加快,电子邮件类蠕虫、受损网站、SQL注入攻击成为主流。
第三阶段为2000年之后,经济利益和国家利益的驱使下的恶意软件存在团队协作紧密、功能日趋复杂、可持续性强及对抗性强等特点。
PC端恶意软件的演化及影响详见下表:
追踪溯源攻击主机网络攻击追踪溯源按照追踪的深度和精准度可分为:
追踪溯源攻击控制主机
追踪溯源攻击者
追踪溯源攻击组织机构
常用方法包括域名/IP地址分析、入侵日志监测、全流量分析、同源分析、攻击模型分析等。为了进一步防御网络犯罪活动和威慑黑客组织,目前学术界和产业界均展开了恶意代码溯源分析与研究工作。
网络追踪溯源常用工具包括:磁盘和数据捕获工具、文件查看器、文件分析工具、注册表分析工具、互联网分析工具、电子邮件分析工具、移动设备分析工具、网络流量取证工具、数据库取证工具等。
推荐三篇相关工具及技术的文章:
恶意软件分析大合集
恶意代码分析相关工具&漏洞挖掘相关工具
探寻APT的化学本质与破解之术
2.追踪溯源案例
这里分享两个简单的案例,一个是铁人王进喜案例,另一个是Lazarus溯源案例。
(1) 铁人王进喜案例
中国最著名“照片泄密案”是1964年《中国画报》封面刊出的一张照片。在这张照片中,中国大庆油田的“铁人”王进喜头戴大狗皮帽,身穿厚棉袄,顶着鹅毛大雪,握着钻机手柄眺望远方。日本情报专家根据这张照片,解开了中国最大的石油基地大庆油田的秘密,分析出大庆油田及其产油量和规模,从而在同中方谈判购买设备时占得先机。
从第一张照片中分析出:大庆可能位于东北省。
根据照片上王进喜的衣着判断,只有在北纬46度至48度的区域内,冬季才有可能穿这样的衣服,因此推断大庆油田位于齐齐哈尔与哈尔滨之间。
从第二张照片中分析出:油井的直接。
从第三张照片中分析出:马家窑是大庆的中心。
从第四张照片中分析出:马家窑离火车站不远。
从第五张照片中分析出:大庆已经大量产油。从工作报告中分析出:大庆油田的产油量。同时,从王进喜所站的钻井与背后油田间的距离和井架密度,推断出油田的大致储量和产量。
有了如此多的准确情报,日本人迅速设计出适合大庆油田开采用的石油设备。当中国政府向世界各国征求开采大庆油田的设备方案时,日本人一举中标。庆幸的是,日本当时是出于经济危机,根据情报分析结果,向我国高价推销炼油设施,而不是用于其他战略意图。
看了这个案例,您会想到什么呢?其实这就是安全领域一个非常经典的社会工程学案例。
(2) Lazarus溯源案例
该部分学习深信服老师的文章,源自:
https://www.freebuf.com/articles/system/221008.html
对APT组织进行追踪需要一定的积累,只有熟悉了该组织的常用攻击手法(TTPs),才能在新型的攻击中将其辨识出来。其中,通过样本共用代码段进行关联是最高效的方式,这也突显了使用yara规则进行样本分析的好处。
首先,我们需要从已有的样本中筛选出相同的特征码,可以使用Bindiff来比较已有样本相似的代码片段,如下:找到相似度较高且不是系统API的函数。
然后优先选取Blocks数较多、匹配指令数较多的函数。
可以重点挑选一些加密算法代码作为特征码,这样比较没那么容易误报。除此之外,也可以使用一些自动化提取yara规则的工具可以使用,比如yargen:
如下,是提取出来的wannacry的特征码,可以在VT上进行关联,来追踪Lazarus的相似攻击组件。
在VT搜索框中,输入:content:”{51 53 55 8B 6C 24 10 56 57 6A 20 8B 45 00 8D 75 04 24 01 0C 01 46 89 45 00 C6 46 FF 03 C6 06 01 46 56 E8}”,就能筛选出所有具有这个代码片段的样本,直到今年7月份,都还有相关的样本活跃。
打开详细信息,发现这是Lazarus用于攻击孟加拉国的alreay攻击组件,那么也就说明,WannaCry和Alreay确实有共用的代码片段,通过这种方式,就可以关联出Lazarus所使用的攻击组件。
将yara规则添加到hunting中,一旦VT捕获到新的样本符合这条规则,就会立刻通知我们。
三.学术界恶意代码溯源
学术界旨在采用静态或动态的方式获取恶意代码的特征信息,通过对恶意代码的特征学习,建立不同类别恶意代码的特征模型,通过计算待检测恶意代码针对不同特征类别的相似性度量,指导恶意代码的同源性判定。常见的恶意代码溯源主要包括4个阶段:
各阶段间的流程关系如下图所示。
上图是将溯源对象Windows平台的PE恶意文件或Android平台的APK恶意文件输入溯源系统,经过特征提取、特征预处理、相似性计算、同源分析获取溯源结果,最终判定攻击家族或作者。
1.特征提取
特征提取是溯源分析过程的基础,具有同源性的恶意代码是通过它们的共有特征与其他代码区分开来的。所提取的特征既要反映出恶意代码的本质和具有同源性恶意代码之间的相似性,又要满足提取的有效性。
依据溯源目的,溯源特征提取包括溯源家族的特征提取和溯源作者的特征提取。Faruki等在字节码级别提取统计性强的序列特征,包括指令、操作码、字节码、API代码序列等。Perdisci R等通过n-gram提取字节码序列作为特征。Ki Y等提出了捕获运行过程中的API序列作为特征,利用生物基因序列检测工具ClustalX对API序列进行相似性分析,得到恶意代码的同源性判定。DNADroid使用PDG作为特征,DroidSim是一种基于组件的CFG来表示相似性代码特征,与早期的方法相比,该系统检测代码重用更准确。
2.特征预处理
特征提取过程中会遇到不具有代表性、不能量化的原始特征,特征预处理针对这一问题进行解决,以提取出适用于相似性计算的代表性特征。特征预处理一方面对初始特征进行预处理,另一方面为相似性计算提供基础数据。常见的特征类型包括序列特征和代码结构特征。
(1)序列特征预处理: 包括信息熵评估、正则表达式转换、N-grams序列、序列向量化、权重量化法等,序列特征预处理会将初始特征中冗余特征消除、特征语义表达式增强、特征量化等以便于进行相似性计算。L. Wu通过分析恶意软件敏感API操作以及事件等,将API序列特征转换为正则表达式,并在发生类似的正则表达式模式时检测恶意代码。IBM研究小组先将N-gram方法应用于恶意软件分析中,使用N-gram的统计属性预测给定序列中下个子序列,从而进行相似度计算。Kolosnjaji等提出对API调用序列进行N-gram处理获取子序列,采用N-gram方法将API调用序列转换为N-gram序列,实现过程下图所示。
(2)代码结构特征预处理: 在相似度比较时存在边、节点等匹配问题即子图同构算法复杂性,同时代码结构特征中存在冗余结构,因此除去冗余、保留与恶意操作相关的代码结构是预处理的主要目的。常见的方法包括API调用图预处理、CFG图预处理、PDG图预处理等。
3.相似性计算
溯源旨在通过分析样本的同源性定位到家族或作者,样本的同源性可以通过分析代码相似性来获取。相似性计算旨在衡量恶意代码间相似度,具体为采用一种相似性模型对恶意代码的特征进行运算。根据预处理特征类型的不同以及溯源需求、效率、准确性等差异,采用不同的相似性运算方法。
目前比较流行的相似性计算方法主要集中在对集合、序列、向量、图等特征表现形式的处理。Qiao等基于集合计算相似性,在不同恶意样本API集合的相似性比较中采用了Jaccard系数方法,将为A、B两个集合的交集在并集中所占的比例作为相似度,比例值越大,证明越相似,如公式所示。
Faruki等提出了采用SDhash相似性散列技术构建样本的签名序列,并采用汉明距离法对序列进行相似性计算,从而识别同源性样本。Suarez-Tangil 等用数据挖掘算法中向量空间模型展示家族的恶意代码特征形式,将同家族提取出来的具有代表性的CFG元素作为特征中维度,采用余弦算法对不同家族的向量空间模型进行相似度计算,根据余弦值来判断它们的相似性,从而识别出相似性样本,进而归属到对应的家族。用于比较向量的余弦相似度反映了恶意代码间的相似性,其具体公式如公式所示。
Cesare等提出了最小距离匹配度量法,比较不同样本的CFG图特征的相似性。Kinable等通过静态分析恶意代码的系统调用图,采用图匹配的方式计算图相似性得分,该得分近似于图的编辑距离。利用该得分比较样本的相似性,采用聚类算法将样本进行聚类,实现家族分类。
4.同源判定
学术界常见的同源判定方法主要包括基于聚类算法的同源判定、基于神经网络的同源判定等。Kim等采用DBSCAN算法对基于调用图聚类,发现类似的恶意软件。Feizollah等提出采用层聚类算法,构建家族间演化模型,进而发掘家族功能的演化。Niu等提出了层次聚类和密度聚类算法结合的快速聚类算法对操作码序列特征进行聚类,以识别恶意软件变体,该方法识别变体效率较高。
神经网络是一种多层网络的机器学习算法,可以处理多特征以及复杂特征的同源判定。基本思想为:将样本特征作为输入层数据,然后不断调整神经网络参数,直到输出的样本与该样本是一种同源关系未为止。它会将恶意代码特征送输入层,即可判断恶意代码的同源性.。赵炳麟等提出了基于神经网络的同源判定方法,其整体实现框架如下图所示。
四.产业界恶意代码溯源
产业界除了采用与学术界类似的同源判定方法之外,还会通过关联的方法对恶意代码进行溯源。产业界的溯源意图除了溯源出编写恶意代码作者、恶意代码家族之外,还要挖掘出攻击者及攻击者背后的真正意图,从而遏制攻击者的进一步行动。
产业界与学术界溯源方法的差异主要表现在特征提取和同源判定两个方面:在特征提取上,产业界更倾向于从代码结构、攻击链中提取相似性特征;在同源判定上,除了采用与已有的历史样本进行相似度聚类分析之外,产业界还会采用一些关联性分析方法。相比学术界溯源特征,产业界溯源特征更加详细全面,信息复杂度大。因此,学术界的同源判定方法并不能完全用于产业界各类特征的相似性分析中,常见产业界溯源方法分类如下表所示。
接下来补充绿盟李老师的系统分析,写得真的棒,还有幸在CSDN得到了他的赞赏,哈哈,感恩前行。
- http://blog.nsfocus.net/trace-source/
1.恶意攻击流程及溯源方法
恶意样本溯源追踪主要去了解攻击者或者团队的意图。恶意攻击的活动大概有如下7步骤(kill-chain模型):
Reconnaissance:侦查,充分的社会工程学了解目标。
Weaponization:定向攻击工具的制作。常见的工具交付形态是带有恶意代码的pdf文件或office文件。
Delivery:把攻击工具输送到目标系统上。APT攻击者最常用这三种来传送攻击工具,包括邮件附件、网站(挂马)、USB等移动存储。
Exploitation:攻击代码在目标系统触发,利用目标系统的应用或操作系统漏洞控制目标。
Installation:远程控制程序的安装。使得攻击者可以长期潜伏在目标系统中。
Command and Control (C2) :被攻破的主机一般会与互联网控制器服务器建立一个C2信道,即与C2服务器建立连接。
Actions on Objectives:经过前面六个过程,攻击者后面主要的行为包括:偷取目标系统的信息,破坏信息的完整性及可用性等。进一步以控制的机器为跳转攻击其它机器,扩大战果。
追踪溯源方法
恶意样本的追踪溯源需要以当前的恶意样本为中心,通过对静态特征和动态行为的分析,解决如下问题:
谁发动的攻击?
攻击背景是什么?
攻击的意图是什么?
谁编写的样本?
样本使用了哪些攻击技术?
攻击过程中使用了哪些攻击工具?
整个攻击过程路径是怎样的?
恶意样本追踪溯源可以采取如下方法:
2.域名/IP
这种溯源方法是最基本的方法,通过对攻击者使用的域名和IP地址进行分析,挖掘攻击源头。查询域名的whois信息,可以关联到攻击者部分信息,如注册名、注册邮箱、注册地址、电话、注册时间、服务商等。
下面是通过样本分析对域名进行溯源分析的典型案例:
案例1:
Checkpoint经过细致分析后,最终归纳出一个首要嫌疑犯,即昵称为“Nexxus Zeta”的一个犯罪分子,原因在于攻击者在注册僵尸网络的某个C&C域名(nexusiotsolutions.net)时,所使用的邮箱地址包含相关信息。
该邮件地址(nexuszeta1337@gmail.com)与C&C域名有一些交集,因此怀疑这个地址并不是一次性邮件地址,可以根据该地址来揭晓攻击者的真实身份。当搜索Nexus Zeta 1337时,在HackForums上找到了一个活跃的成员,该成员的用户昵称为“Nexus Zeta”,自2015年8月起已经是HackForums的一份子。虽然这个人在这种论坛上活跃度很低,但他发表了几篇帖子,从这些帖子中并没有发现他的专业水平有多高。不过有趣的是,他最近关注的是如何建立起类似Mirai的IoT僵尸网络。
“NexusZeta”在社交媒体上也颇为活跃,主要是在Twitter以及Github上,他在这两个平台上都公布了自己的IoT僵尸网络项目。实际上,这个人还将其Github账户关联到前面提到的某个恶意域名(nexusiotsolutions.net)。分析人员也找到了他所使用的Skype以及SoundCloud账户,使用人名为Caleb Wilson(caleb.wilson37 / Caleb Wilson 37),然而无法确定这个名字是否就是其真实姓名。
样本分析及详细的溯源分析内容可参考链接:
案例2:
样本分析过程中,通过网络抓包,获取到攻击者的控制域名信息:
域名信息关联后,如下图所示:
这里点到为止,对上述信息进行进一步分析后,最终可定位到攻击者本人,并且最终成功接管攻击控制的域名。
案例3:
通过分析获取到的样本,该样本为downloader程序,主要通过下载恶意软件之后运行,下载的IP地址如下所示:
对该IP进行渗透测试,最终获取到主机权限,通过对攻击者掌握的主机进行深入分析,最终定位到攻击者相关信息。
3.入侵日志
这种溯源分析方法偏向于主机取证分析,攻击者在入侵到主机后的行为分析。对攻击者留下的大量操作日志进行分析后,可以提取相关攻击者的信息,包括:
连接服务器使用VPS信息。
登陆主机后,一般为了维持对主机的访问权限,会尝试创建自己的账号及密码。
攻击者为了偷取数据,使用的ftp或者数据服务器信息。
通过对攻击者的登陆时间进行分析,可以基本定位所在大区域(北半球,南半球)。
登陆主机后的操作模型,不同的攻击者,入侵成功后进行的行为有差异,每个人都有自己的行为指纹特征。
简单举个例子,不少攻击者习惯使用自动化的工具,去提取主机上的敏感信息(网站,邮箱,比特币,网银等账号密码),入侵成功后(钓鱼,社工,水坑攻击等),会在受害者机器上安装间谍软件,进行主机行为监控,并且定时将截获的敏感信息上传到服务上。
大多使用三种通信方式窃取敏感信息:ftp、smtp、http。
案例1:
通过分析入侵日志,最终分析其留的监控程序,溯源分析的案例,该样本中攻击者使用加密的smtp服务器窃取敏感信息,在样本分析过程中可以获取到邮箱的用户名与密码:
利用获取到的登陆凭证可成功登陆攻击者邮箱:
在邮件内容中,发现了攻击者的真实邮箱,之后通过进一步溯源分析,定位到了攻击者。下图是攻击者真实的twitter账号:
案例2:
攻击者在入侵成功后,留下的启动脚本中包含了攻击者的个人网络id,通过对该网络ID及QQ号码进行溯源分析,最终也成功定位到攻击者。
QQ: 2228668564
ID: icnanker
shadow:
icnanker:$6$EIZwhnAX$m/IclCqhsFOBaZEgT2mVCYFy5bKH75rJ8Rlh/hwGs7De
R5AovmhrLS.V3naL6oizn6FCViwqKn6k9gqmoYNhs0:16866:0:99999:7:::
4.全流量分析
某些攻击者或者组织的反跟踪意识非常强,基本上不会留下任何痕迹,在达成入侵目的之后(窃取数据),会完全清除入侵痕迹,或者干脆销毁主机硬盘。
例如:2015年乌克兰电厂遭受攻击之后,攻击者利用killdisk组件销毁了全部数据。当然有些也不会留下在主机上的任何操作痕迹,部分勒索软件也是通过同样的手段进行痕迹擦除。这类案例也非常多,基本上在受害者机器上找不到任何痕迹,这时进行全流量分析溯源就相当有效了。
例如:以2017年Flareon 4th逆向挑战赛最后一题为例。
描述了一个APT攻击场景,需要通过分析数据包及PE文件,还原整个攻击过程。从网络下载加密的恶意代码在本地进行解密:
解密后的内容为一个远控端,其和主控端的通讯流量通过了全加密,网络传输数据格式如下:
相关的加解密及功能模块如下:
过流量分析发现攻击者入侵行为如下:
黑客入侵到168.221.91后,先获取了屏幕截图(内容包含了一个密码)。
查看c:\work\FlareOn2017\Challenge_10\TODO.txt,发现larry相关提示(根据前期信息收集结果,可以知道johnson主机名)。
通过ping命令获取到内网johnson主机IP地址(192.168.221.105)。
使用psexec在johnson的主机上安装后门srv2.exe(监听本地16452端口)。
之后通过内网代理连接该后门,通过代理插件上传加密模块到了johnson的主机上c:\staging\cf.exe。
利用加密程序(exe)对lab10的文件进行加密,之后将原始文件删除,并且通过代理传到了黑客手里。
该案例中仅通过全流量分析,最终还原整个入侵过程、黑客攻击行为以及窃取的内容,而在真实的环境中需要结合入侵日志进一步对恶意样本攻击进行追踪溯源。
5.同源分析
该方法主要为在获取到恶意样本后,很难第一时间关联到攻击者或者恶意样本提供者的信息,但是可以通过和历史恶意代码进行相似度分析,获得历史攻击事件,从而关联到相应的组织或团体。这种溯源方法多用于定位APT组织或者某些知名的黑客团体(方程式)的行动,需要投入大量的人力,时间去完成溯源跟踪分析。
APT组织或者知名黑客团队,一般都有各自的工具定制开发部门,负责各类工具的开发,以及漏洞利用工具的量产(从今年4月份泄露的方程式组织内部的工具以及CIA泄露的部分文档就可以看出端倪)。其部分划分组织架构都非常清晰,有专门负责工具开发的部门,例如:远控开发部门,硬件研究部门,漏洞挖掘部门,漏洞利用工具编写的部门等。
(1) 设计思路
每个程序员在软件实现的时候,会使用自己比较熟悉的一套代码风格和实现算法,每个团伙或者组织在攻击目标时也会有一套自己特有的攻击方法,针对恶意样本可以通过行为日志的相似度、代码混淆风格以及相关的实现算法进行同源判定。
例如:利用“破壳”漏洞投放的6个Bot具有同源性。
图片来源:安天
(2) 编码特征
程序员在开发过程中,经常会复用部分现有代码(加密算法,功能模块),以提高开发效率。样本分析人员通过跟踪分析某组织的大量攻击样本后,对其工具开发人员的编码风格(函数变量命名习惯,语种信息等),编程习惯有了深入了解。在此基础上,就能够通过编码风格准确溯源到相关组织。
下面是今年5月份爆发的wanncry蠕虫的溯源分析的案例:
Google研究者Neel Mehta在Twitter率先发布消息称,早期的WannaCry样本与Lazarus团伙使用的一款后门程序Contopee存在较高相似度。稍后卡巴斯基和赛门铁克研究者基于此发布了更多分析结果。并且给出了代码相似度对比的图,以证明其推论:
(3) 通讯协议
每个恶意样本为了和之前的版本通讯协议进行兼容,一般会复用之前的通讯协议代码,通过跟踪分析通讯数据的格式特征进行同源判定。
Billgates上线数据格式如下图所示:
Xitele上线数据包格式如下图所示:
通过对比上面两个恶意样本上线包数据格式特征可以判定其为同源样本。
(4) 数字证书
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA中心签发的证书,也可以由企业级CA系统进行签发。恶意软件为了躲避安全软件的检测,会使用数字证书对代码进行签名,而签名证书中的颁发给部分包含了软件的开发商的相关信息。
6.攻击模型
这种溯源方法主要见于某些专业化程度比较高的个人或者组织,他们有自己的攻击常规套路,并且长期专注于一个领域的攻击。
案例1:
之前的一次应急分析过程中遇到一个团伙,主要进行ssh弱口令爆破,该团队的就主要关注于ssh弱口令爆破,通过对该团队的溯源分析,了解到其攻击模型是:
扫描全网开放ssh服务端口的主机。
根据开放服务端口号,将每个端口号对应的ip保存到一个文件中。
并且定时的会对全网全端口进行扫描探测以便及时更新攻击目标数据。
对存在ssh弱口令的主机进行攻击。
利用成功入侵的主机作为节点,继续进行ssh弱口令爆破。
旨在构造一个大型的botnet系统。
除上面该实例外,还遇到不少,利用单一漏洞进行攻击的案例,如:struts2框架漏洞以及近期发现某团队利用webloglic WLS漏洞进行入侵挖矿的案例。
案例2:
下面举一个最有名的例子,2016年10月爆发的Mirai僵尸网络曾经一度使互联网产生恐慌,通过溯源分析最终定位到了该僵尸网络的作者。
Mirai僵尸网络就是一个很好的例子,攻击者主要利用物联网设备默认口令的问题,感染大量设备,之前沟通对其攻击模型的匹配,可以清楚的了解的组织的活动轨迹,并且通过对每一次活动留下的线索进行关联分析,最终定位到了攻击者团伙。
美国司法部最终披露称,三名男子就创建Mirai恶意软件并利用Mirai僵尸网络攻击多个目标的事实表示认罪。从法庭文档来看,这三名男子的名字是Paras Jha、Josiah White和Dalton Norman。
案例3:
在一次应急响应中通过取证分析,了解到攻击使用的攻击模型如下:
之后利用该攻击模型对样本库中的文件进行筛选,定位到另外3套与该模型完全匹配的案例,进一步分析匹配到的样本后,首先确认了该4套样本出于同一开发团队,经过溯源分析准确定位到了攻击者。
溯源分析旨在通过现象去发掘样本背后的故事,没有固定的套路可循,在分析过程中,要像侦探破案一样,大胆心细,不放过任何细枝末节,是一场人与人之间斗智斗勇的过程。
“天网恢恢疏而不漏“,溯源篇旨在抛砖引玉,将感兴趣的读者带入这个谜一样的世界!以上纯属笔者个人的观点角度,意在抛砖引玉,引发读者去思考作为一名合格的恶意样本分析人员应该具备那些技能?仁者见仁智者见智点到为止。
不过有一点可以确认单纯掌握样本分析技能是远远不够的。下面列举了几个方向,感兴趣的读者可以去进行深入学习:
掌握上述技能后,以守为攻,变换角色,从多个维度去进行样本分析攻击溯源,进而输出高质量的样本分析报告。
五.总结
严峻的网络安全对抗和博弈形势,使得对恶意代码的演化与溯源技术的研究价值凸显,学术界、产业界近年来分别从攻击和防护两个方面展开了深入的研究。前文基于已有的研究总结了恶意代码的生成过程和编码特征,并对来自产业界、学术界恶意代码的溯源机理和溯源对抗方法进行了详细描述。
目前,学术界和产业界在恶意代码溯源技术方面取得了较大的进步,在追踪恶意代码组织、黑客组织(攻击者)、发现未知恶意代码方面取得了部分研究成果,例如海莲花、白象、方程式组织等典型 APT 攻击计划和黑客团队的不断曝光,但依然存在不足和挑战。
写到这里,这篇基础性文章就此结束,最后希望这篇基础性文章对您有所帮助。总觉得自己的技术好浅,要学的知识好多,读博真心不容易,加油,祝福所有博士战友们。
这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。
欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。2021年继续加油!
晚安女神,爱你和小宝❤
(By:Eastmount 2021-10-22 夜于武汉)
前文回顾(下面的超链接可以点击喔):
参考文献:
[1]姜建国,王继志,孔斌,等. 网络攻击溯源追踪技术研究综述[J]. 信息安全学报, 2018,3(1):111-131.
[2]刘剑,苏璞睿,杨珉,等. 软件与网络安全研究综述[J]. 软件学报, 2018,29(1):42-68.
[3]赫尧,陈周国,蒲石,黄宸. 多源网络攻击追踪溯源技术研究[J]. 通信技术, 2013,46(12):77-81.
[4]袁得嵛,高见,叶萌熙,王小娟. 基于拓扑扩展的在线社交网络恶意信息源定位算法[J]. 计算机科学, 2019,46(5): 129-134.
[5]宋文纳老师, 等.恶意代码演化与溯源技术研究[J]. 软件学报, 2019,30(8): 2229−2267.
[6]深信服李老师.恶意样本分析手册——溯源篇.2018.http://blog.nsfocus.net/trace-source/.
[7]钱雨村,彭国军,王滢,梁玉. 恶意代码同源性分析及家族聚类[J]. 计算机工程与应用, 2015, 51(18): 76−81.
[8]Ge YW, Kang F, Peng XX. Homology analysis of malicious code based on dynamic BP neural network. Journal of Chinese Computer System, 2016,37(11):2527−2531.
[9]Faruki P, Laxmi V, Bharmal A, Gaur M, Ganmoor V. Androsimilar: Robust signature for detecting variants of android malware. Joural of Information Security and Applications, 2015,22:66−80.
[10]Perdisci R, Lanzi A, Lee W. Mcboost: Boosting scalability in malware collection and analysis using statistical classification of executables. In: Proc. of the ACSAC. 2008. 301−310.
[11]Ki Y, Kim E, Kim HK. A novel approach to detect malware based on API call sequence analysis. Int’l Journal of Distributed Sensor Networks, 2015,11(6):No.659101.
[12]Crussell J, Gibler C, Chen H. Attack of the clones: Detecting cloned applications on android markets. In: Proc. of the European Symp. on Research in Computer Security. Berlin, Heidelberg: Springer-Verlag, 2012. 37−54.
[13]Sun X, Zhongyang YB, Xin Z, Mao B, Xie L. Detecting code reuse in Android applications using component-based control flow graph. In: Proc. of the ICT. Springer-Verlag, 2014. 142−155.
[14]Wu L, Ping R, Ke L, Hai D. Behavior-Based malware analysisand detection. In: Proc. of the 2011 1st Int’l Workshop on Complexity and Data Mining (IWCDM). New York: IEEE, 2011. 39−42.
[15]A biologically inspired immune system for computers. In: Proc. of the Artificial Life IV: 4th Int’l Workshop on the Synthesis and Simulation of Living Systems. MIT Press, 2011. 130−139.
[16]Kolosnjaji B, Zarras A, Webster G, Eckert C. Deep learning for classification of malware system call sequences. In: Proc. of the Australasian Joint Conf. on Artificial Intelligence. Cham: Springer-Verlag, 2016. 137−149.
[17]Zhao BL, Meng X, Han J, Wang J, Liu FD. Homology analysis of malware based on graph. Journal on Communications, 2017, 38(Z2):86−93 (in Chinese with English abstract).
[18]Awad RA, Sayre KD. Automatic clustering of malware variants. In: Proc. of the 2016 IEEE Conf. on Intelligence and Security Informatics (ISI). IEEE, 2016. 298−303.
[19]Crussell J, Gibler C, Chen H. Andarwin: Scalable detection of semantically similar Android applications. In: Proc. of the European Symp. on Research in Computer Security. Springer, Berlin, Heidelberg, 2013. 182−199.
[20]Qiao Y, Yun X, Zhang Y. How to automatically identify the homology of different malware. In: Proc. of the 2016 IEEE Trustcom/ BigDataSE/I SPA. IEEE, 2016. 929−936.
[21]Faruki P, Laxmi V, Bharmal A, Gaur M, Ganmoor V. Androsimilar: Robust signature for detecting variants of android malware. Joural of Information Security and Applications, 2015,22:66−80.
[22]Suarez-Tangil G, Tapiador JE, Peris-Lopez P, Blasco J. Dendroid: A text mining approach to analyzing and classifying code structures in Android malware families. Expert Systems with Applications, 2014,41(4):1104−1117.
[23]Cesare S, Xiang Y, Zhou W. Control flow-based malware variant detection. IEEE Trans. on Dependable and Secure Computing, 2014,11(4):307−317.
[24]Fredrikson M, Jha S, Christodorescu M, Sailer R, Yan X. Synthesizing near-optimal malware specifications from suspicious behaviors. In: Proc. of the 2010 IEEE Symp. on Security and Privacy (Oakland 2010). 2010. 45−60.
[25]Kim J, Kim TG, Im EG. Structural information based malicious app similarity calculation and clustering. In: Proc. of the 2015 Conf. on Research in Adaptive and Convergent Systems. ACM Press, 2015. 314−318.
[26]Feizollah A, Anuar NB, Salleh R, Amalina F. Comparative study of k-means and mini batch k-means clustering algorithms in Android malware detection using network traffic analysis. In: Proc. of the 2014 Int’l Symp. on Biometrics and Security Technologies (ISBAST). IEEE, 2014. 193−197.
[27]Niu Z, Qin Z, Zhang J, Yin H. Malware variants detection using density based spatial clustering with global opcode matrix. In: Proc. of the Int’l Conf. on Security, Privacy and Anonymity in Computation, Communication and Storage. Cham: Springer-Verlag, 2017. 757−766.
[28]Zhao BL, Meng X, Han J, Wang J, Liu FD. Homology analysis of malware based on graph. Journal on Communications, 2017, 38(Z2):86−93 (in Chinese with English abstract).