本文主要结合作者的《系统安全前沿》作业,师姐的论文及绿盟李东宏老师的博客,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。关于攻击溯源的博客和论文都比较少,希望这篇文章对您有所帮助,如果文章中存在错误或理解不到位的地方,还请告知作者与海涵~
这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力。
下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study
资源下载地址:
前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)]
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差异备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
近年来,网络安全事件和恶意代码攻击层出不穷,它们给国家、社会和个人带来了严重的危害,如分布式拒绝服务攻击(DDoS)、基于僵尸网络(Botnet)的攻击、勒索病毒WannaCry、高级可持续威胁(APT)攻击、利用远程控制木马的信息窃取等。
2017年以来,恶意代码数量依然呈上升的趋势,尤其是新型恶意代码,其数量始终呈逐年递增状态,这对网络空间安全造成了极大的威胁。在这些恶意代码攻击中, 攻击者会向目标主机(受害主机),发送特定的攻击数据包或执行恶意行为。如果能追踪这些攻击数据包的来源,定位攻击者的真实位置,受害主机不但可以采用应对措施,如在合适位置过滤攻击数据包,而且可以对攻击者采取法律手段。因此在网络取证和安全防御领域,网络攻击溯源一直是一个热点问题。
下图展示了APT组织Lazarus(APT38)的重大攻击时间线。如果某次攻击发生时或发生前,我们能够追踪溯源到是某个组织发起的,那是不是就能有效避免一次安全攻击呢?
强推这篇文章:APT组织Lazarus的攻击历程 - Freebuf深信服团队
网络攻击追踪溯源旨在利用各种手段追踪网络攻击的发起者。相关技术提供了定位攻击源和攻击路径,针对性反制或抑制网络攻击,以及网络取证能力,其在网络安全领域具有非常重要的价值。当前,网络空间安全形势日益复杂,入侵者的攻击手段不断提升,其躲避追踪溯源的手段也日益先进,如匿名网络、网络跳板、暗网、网络隐蔽信道、隐写术等方法在网络攻击事件中大量使用,这些都给网络攻击行为的追踪溯源工作带来了巨大的技术挑战。
传统的恶意代码攻击溯源方法是通过单个组织的技术力量,获取局部的攻击相关信息,无法构建完整的攻击链条,一旦攻击链中断,往往会使得前期大量的溯源工作变得毫无价值。同时,面对可持续、高威胁、高复杂的大规模网络攻击,没有深入分析攻击组织之间的关系,缺乏利用深层次恶意代码的语义知识,后续学术界也提出了一些解决措施。
下图展示了Lazarus盗窃孟加拉国央行的行动流程,通过Alreay攻击组件篡改SWIFT软件,使得黑客能够操作银行账号任意进行转账,从而窃取了8100万美元。同时,在2017年最早版本的WannaCry病毒中,安全厂商发现了其中存在着Lazarus使用过的代码,从而判断该病毒是由Lazarus制作的。Lazarus确实是一支非常厉害的APT组织。
为了进一步震慑黑客组织与网络犯罪活动,目前学术界和产业界均展开了恶意代码溯源分析与研究工作。其基本思路是:
由此可见,发现样本间的同源关系对于恶意代码家族和作者的溯源,甚至对攻击组织的溯源以及攻击场景还原、攻击防范等均具有重要意义。
在与恶意样本的的对抗过程中,恶意软件分析和检测技术也在不断发展。基于静态分析的检测、基于动态分析的检测以及基于机器学习的检测等技术不断涌现。基于静态分析的检测对非混淆样本更为准确,而基于动态分析的检测在检测混淆恶意软件方面表现更为出色;基于机器学习的检测是通过对大规模恶意样本进行特征提取(如 API(application programming interface)、CFG(control flow graph)、关键字符串值等),然后采用机器学习算法(例如分类或聚类)训练样本,以构建模型判断软件的恶意特性。这为安全研究人员提供了良好的辅助功能,有效地提高了大规模恶意软件的检测速度。
恶意代码溯源: 是指通过分析恶意代码生成、传播的规律以及恶意代码之间衍生的关联性,基于目标恶意代码的特性实现对恶意代码源头的追踪。了解恶意代码的演化,有助于更好地把握恶意代码的发展趋势,为攻击追踪溯源提供相关启示。宋文纳等从时间维度给出了恶意软件典型功能演变历程,并将恶意软件的演化历程分为3个阶段。
PC端恶意软件的演化及影响详见下表:
时间段 | 代表样本 | 软件类型 | 目的或影响 | 样本功能技术特征 |
---|---|---|---|---|
1971 | Creeper | 一般程序 | 实验 | 能够在计算机之间移动 |
1974 | Wabbit | 一般程序 | 致使系统奔溃 | 具有自我复制功能 |
1982 | Elk cloner | 病毒 | 克隆 | 具有传播、自我复制功能 |
1986 | PC-Write trojan | 病毒 | 测试公司软件漏洞 | 可以感染MS-DOS计算机 |
1991 | Michelangelo virus | 病毒 | 在3月6日擦除硬盘中信息 | 感染,擦除硬盘信息 |
1999 | Melissa virus | 病毒 | 群发邮件 | 感染计算机,获取其outlook地址薄,群发邮件 |
2000 | ILOVEYOU worm | 蠕虫 | 损害大型企业和政府机构 | 以良性主题发送电子邮件传播,感染5000万台计算机,蔓延至全球. |
2001 | Annna Kournikova virus | 病毒 | 传播恶意软件,进行破坏 | 将恶意软件隐藏在吸引人的照片中,通过电子邮件发送进行传播 |
2003 | SQL slammer worm | 蠕虫 | 感染计算机实施破坏 | 利用漏洞,传播速度快,感染范围广 |
2005 | Koobface virus | 病毒 | 针对社交网络进行攻击 | 感染PC然后传播到社交网站 |
2008 | ConFicker worm | 蠕虫 | 造成自Slammer出现以来最严重破坏 | 感染并实施破坏 |
2010 | Stuxnet worm | 蠕虫 | 攻击伊朗的核电站,包括其硬件与软件功能 | 具有APT团队开发的复杂性和先进性,具有密集资源信息 |
2011 | Zeus trojan | 木马 | 窃取银行信息 | 影响范围广,通过浏览器按键记录和 表单抓取来窃取银行信息. |
2014 | Backoff | 后门 | 盗取信用卡数据 | 破坏POS系统以窃取信用卡数据 |
2017 | Wannacry ransomware | 勒索软件 | 获取支付赎金 | 利用漏洞,将用户数据锁定,致使感染150多个 国家超过23万台Windows系统瘫痪 |
网络攻击追踪溯源按照追踪的深度和精准度可分为:
常用方法包括域名/IP地址分析、入侵日志监测、全流量分析、同源分析、攻击模型分析等。为了进一步防御网络犯罪活动和威慑黑客组织,目前学术界和产业界均展开了恶意代码溯源分析与研究工作。
下图展示了网络追踪溯源体系结构:
网络追踪溯源常用工具包括:磁盘和数据捕获工具、文件查看器、文件分析工具、注册表分析工具、互联网分析工具、电子邮件分析工具、移动设备分析工具、网络流量取证工具、数据库取证工具等。
推荐三篇相关工具及技术的文章:
这里分享两个简单的案例,一个是铁人王进喜案例,另一个是Lazarus溯源案例。
(1) 铁人王进喜案例
中国最著名“照片泄密案”是1964年《中国画报》封面刊出的一张照片。在这张照片中,中国大庆油田的“铁人”王进喜头戴大狗皮帽,身穿厚棉袄,顶着鹅毛大雪,握着钻机手柄眺望远方。日本情报专家根据这张照片,解开了中国最大的石油基地大庆油田的秘密,分析出大庆油田及其产油量和规模,从而在同中方谈判购买设备时占得先机。
从第一张照片中分析出:大庆可能位于东北省。
根据照片上王进喜的衣着判断,只有在北纬46度至48度的区域内,冬季才有可能穿这样的衣服,因此推断大庆油田位于齐齐哈尔与哈尔滨之间。
从第二张照片中分析出:油井的直接。
从第三张照片中分析出:马家窑是大庆的中心。
从第四张照片中分析出:马家窑离火车站不远。
从第五张照片中分析出:大庆已经大量产油。
从工作报告中分析出:大庆油田的产油量。同时,从王进喜所站的钻井与背后油田间的距离和井架密度,推断出油田的大致储量和产量。
有了如此多的准确情报,日本人迅速设计出适合大庆油田开采用的石油设备。当中国政府向世界各国征求开采大庆油田的设备方案时,日本人一举中标。庆幸的是,日本当时是出于经济危机,根据情报分析结果,向我国高价推销炼油设施,而不是用于其他战略意图。看了这个案例,您会想到什么呢?其实这就是安全领域一个非常经典的社会工程学案例。
(2) Lazarus溯源案例
该部分源自:https://www.freebuf.com/articles/system/221008.html
对APT组织进行追踪需要一定的积累,只有熟悉了该组织的常用攻击手法(TTPs),才能在新型的攻击中将其辨识出来。其中,通过样本共用代码段进行关联是最高效的方式,这也突显了使用yara规则进行样本分析的好处。
首先,我们需要从已有的样本中筛选出相同的特征码,可以使用Bindiff来比较已有样本相似的代码片段,如下:找到相似度较高且不是系统API的函数。
然后优先选取Blocks数较多、匹配指令数较多的函数。
可以重点挑选一些加密算法代码作为特征码,这样比较没那么容易误报。除此之外,也可以使用一些自动化提取yara规则的工具可以使用,比如yargen:https://github.com/Neo23x0/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恶意文件输入溯源系统,经过特征提取、特征预处理、相似性计算、同源分析获取溯源结果,最终判定攻击家族或作者。
特征提取是溯源分析过程的基础,具有同源性的恶意代码是通过它们的共有特征与其他代码区分开来的。所提取的特征既要反映出恶意代码的本质和具有同源性恶意代码之间的相似性,又要满足提取的有效性。
依据溯源目的,溯源特征提取包括溯源家族的特征提取和溯源作者的特征提取。Faruki等在字节码级别提取统计性强的序列特征,包括指令、操作码、字节码、API代码序列等。Perdisci R等通过n-gram提取字节码序列作为特征。Ki Y等提出了捕获运行过程中的API序列作为特征,利用生物基因序列检测工具ClustalX对API序列进行相似性分析,得到恶意代码的同源性判定。DNADroid使用PDG作为特征,DroidSim是一种基于组件的CFG来表示相似性代码特征,与早期的方法相比,该系统检测代码重用更准确。
特征提取过程中会遇到不具有代表性、不能量化的原始特征,特征预处理针对这一问题进行解决,以提取出适用于相似性计算的代表性特征。特征预处理一方面对初始特征进行预处理,另一方面为相似性计算提供基础数据。常见的特征类型包括序列特征和代码结构特征。
序列特征预处理: 包括信息熵评估、正则表达式转换、N-grams序列、序列向量化、权重量化法等,序列特征预处理会将初始特征中冗余特征消除、特征语义表达式增强、特征量化等以便于进行相似性计算。L. Wu通过分析恶意软件敏感API操作以及事件等,将API序列特征转换为正则表达式,并在发生类似的正则表达式模式时检测恶意代码。IBM研究小组先将N-gram方法应用于恶意软件分析中,使用N-gram的统计属性预测给定序列中下个子序列,从而进行相似度计算。Kolosnjaji等提出对API调用序列进行N-gram处理获取子序列,采用N-gram方法将API调用序列转换为N-gram序列,实现过程下图所示。
代码结构特征预处理: 在相似度比较时存在边、节点等匹配问题即子图同构算法复杂性,同时代码结构特征中存在冗余结构,因此除去冗余、保留与恶意操作相关的代码结构是预处理的主要目的。常见的方法包括API调用图预处理、CFG图预处理、PDG图预处理等。
溯源旨在通过分析样本的同源性定位到家族或作者,样本的同源性可以通过分析代码相似性来获取。相似性计算旨在衡量恶意代码间相似度,具体为采用一种相似性模型对恶意代码的特征进行运算。根据预处理特征类型的不同以及溯源需求、效率、准确性等差异,采用不同的相似性运算方法。
目前比较流行的相似性计算方法主要集中在对集合、序列、向量、图等特征表现形式的处理。Qiao等基于集合计算相似性,在不同恶意样本API集合的相似性比较中采用了Jaccard系数方法,将为A、B两个集合的交集在并集中所占的比例作为相似度,比例值越大,证明越相似,如公式所示。
Faruki等提出了采用SDhash相似性散列技术构建样本的签名序列,并采用汉明距离法对序列进行相似性计算,从而识别同源性样本。Suarez-Tangil 等用数据挖掘算法中向量空间模型展示家族的恶意代码特征形式,将同家族提取出来的具有代表性的CFG元素作为特征中维度,采用余弦算法对不同家族的向量空间模型进行相似度计算,根据余弦值来判断它们的相似性,从而识别出相似性样本,进而归属到对应的家族。用于比较向量的余弦相似度反映了恶意代码间的相似性,其具体公式如公式所示。
Cesare等提出了最小距离匹配度量法,比较不同样本的CFG图特征的相似性。Kinable等通过静态分析恶意代码的系统调用图,采用图匹配的方式计算图相似性得分,该得分近似于图的编辑距离。利用该得分比较样本的相似性,采用聚类算法将样本进行聚类,实现家族分类。
学术界常见的同源判定方法主要包括基于聚类算法的同源判定、基于神经网络的同源判定等。Kim等采用DBSCAN算法对基于调用图聚类,发现类似的恶意软件。Feizollah等提出采用层聚类算法,构建家族间演化模型,进而发掘家族功能的演化。Niu等提出了层次聚类和密度聚类算法结合的快速聚类算法对操作码序列特征进行聚类,以识别恶意软件变体,该方法识别变体效率较高。
神经网络是一种多层网络的机器学习算法,可以处理多特征以及复杂特征的同源判定。基本思想为:将样本特征作为输入层数据,然后不断调整神经网络参数,直到输出的样本与该样本是一种同源关系未为止。它会将恶意代码特征送输入层,即可判断恶意代码的同源性.。赵炳麟等提出了基于神经网络的同源判定方法,其整体实现框架如下图所示。
产业界除了采用与学术界类似的同源判定方法之外,还会通过关联的方法对恶意代码进行溯源。产业界的溯源意图除了溯源出编写恶意代码作者、恶意代码家族之外,还要挖掘出攻击者及攻击者背后的真正意图,从而遏制攻击者的进一步行动。
产业界与学术界溯源方法的差异主要表现在特征提取和同源判定两个方面:在特征提取上,产业界更倾向于从代码结构、攻击链中提取相似性特征;在同源判定上,除了采用与已有的历史样本进行相似度聚类分析之外,产业界还会采用一些关联性分析方法。相比学术界溯源特征,产业界溯源特征更加详细全面,信息复杂度大。因此,学术界的同源判定方法并不能完全用于产业界各类特征的相似性分析中,常见产业界溯源方法分类如下表所示。
接下来补充绿盟李东宏老师的系统分析:http://blog.nsfocus.net/trace-source/
恶意样本溯源追踪主要去了解攻击者或者团队的意图。恶意攻击的活动大概有如下7步骤:
追踪溯源方法
恶意样本的追踪溯源需要以当前的恶意样本为中心,通过对静态特征和动态行为的分析,解决如下问题:
恶意样本追踪溯源可以采取如下方法:
这种溯源方法是最基本的方法,通过对攻击者使用的域名和IP地址进行分析,挖掘攻击源头。查询域名的whois信息,可以关联到攻击者部分信息,如注册名、注册邮箱、注册地址、电话、注册时间、服务商等。
下面是通过样本分析对域名进行溯源分析的典型案例:
案例1:
Checkpoint经过细致分析后,最终归纳出一个首要嫌疑犯,即昵称为“Nexxus Zeta”的一个犯罪分子,原因在于攻击者在注册僵尸网络的某个C&C域名(nexusiotsolutions.net)时,所使用的邮箱地址包含相关信息。
该邮件地址([email protected])与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),然而无法确定这个名字是否就是其真实姓名。
样本分析及详细的溯源分析内容可参考链接:https://research.checkpoint.com/good-zero-day-skiddie/ 。
案例2:
样本分析过程中,通过网络抓包,获取到攻击者的控制域名信息:
域名信息关联后,如下图所示:
这里点到为止,对上述信息进行进一步分析后,最终可定位到攻击者本人,并且最终成功接管攻击控制的域名。
案例3:
通过分析获取到的样本,该样本为downloader程序,主要通过下载恶意软件之后运行,下载的IP地址如下所示:
对该IP进行渗透测试,最终获取到主机权限,通过对攻击者掌握的主机进行深入分析,最终定位到攻击者相关信息。
这种溯源分析方法偏向于主机取证分析,攻击者在入侵到主机后的行为分析。对攻击者留下的大量操作日志进行分析后,可以提取相关攻击者的信息,包括:
简单举个例子,不少攻击者习惯使用自动化的工具,去提取主机上的敏感信息(网站,邮箱,比特币,网银等账号密码),入侵成功后(钓鱼,社工,水坑攻击等),会在受害者机器上安装间谍软件,进行主机行为监控,并且定时将截获的敏感信息上传到服务上。
大多使用三种通信方式窃取敏感信息: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:::
某些攻击者或者组织的反跟踪意识非常强,基本上不会留下任何痕迹,在达成入侵目的之后(窃取数据),会完全清除入侵痕迹,或者干脆销毁主机硬盘。
例如:2015年乌克兰电厂遭受攻击之后,攻击者利用killdisk组件销毁了全部数据。当然有些也不会留下在主机上的任何操作痕迹,部分勒索软件也是通过同样的手段进行痕迹擦除。这类案例也非常多,基本上在受害者机器上找不到任何痕迹,这时进行全流量分析溯源就相当有效了。
例如:以2017年Flareon 4th逆向挑战赛最后一题为例。
描述了一个APT攻击场景,需要通过分析数据包及PE文件,还原整个攻击过程。从网络下载加密的恶意代码在本地进行解密:
解密后的内容为一个远控端,其和主控端的通讯流量通过了全加密,网络传输数据格式如下:
相关的加解密及功能模块如下:
过流量分析发现攻击者入侵行为如下:
该案例中仅通过全流量分析,最终还原整个入侵过程、黑客攻击行为以及窃取的内容,而在真实的环境中需要结合入侵日志进一步对恶意样本攻击进行追踪溯源。
该方法主要为在获取到恶意样本后,很难第一时间关联到攻击者或者恶意样本提供者的信息,但是可以通过和历史恶意代码进行相似度分析,获得历史攻击事件,从而关联到相应的组织或团体。这种溯源方法多用于定位APT组织或者某些知名的黑客团体(方程式)的行动,需要投入大量的人力,时间去完成溯源跟踪分析。
APT组织或者知名黑客团队,一般都有各自的工具定制开发部门,负责各类工具的开发,以及漏洞利用工具的量产(从今年4月份泄露的方程式组织内部的工具以及CIA泄露的部分文档就可以看出端倪)。其部分划分组织架构都非常清晰,有专门负责工具开发的部门,例如:远控开发部门,硬件研究部门,漏洞挖掘部门,漏洞利用工具编写的部门等。
(1) 设计思路
每个程序员在软件实现的时候,会使用自己比较熟悉的一套代码风格和实现算法,每个团伙或者组织在攻击目标时也会有一套自己特有的攻击方法,针对恶意样本可以通过行为日志的相似度、代码混淆风格以及相关的实现算法进行同源判定。
例如:利用“破壳”漏洞投放的6个Bot具有同源性。
图片来源:安天
(2) 编码特征
程序员在开发过程中,经常会复用部分现有代码(加密算法,功能模块),以提高开发效率。样本分析人员通过跟踪分析某组织的大量攻击样本后,对其工具开发人员的编码风格(函数变量命名习惯,语种信息等),编程习惯有了深入了解。在此基础上,就能够通过编码风格准确溯源到相关组织。
下面是今年5月份爆发的wanncry蠕虫的溯源分析的案例:
https://blog.comae.io/wannacry-links-to-lazarus-group-dcea72c99d2d
Google研究者Neel Mehta在Twitter率先发布消息称,早期的WannaCry样本与Lazarus团伙使用的一款后门程序Contopee存在较高相似度。稍后卡巴斯基和赛门铁克研究者基于此发布了更多分析结果。并且给出了代码相似度对比的图,以证明其推论:
(3) 通讯协议
每个恶意样本为了和之前的版本通讯协议进行兼容,一般会复用之前的通讯协议代码,通过跟踪分析通讯数据的格式特征进行同源判定。
Xitele上线数据包格式如下图所示:
通过对比上面两个恶意样本上线包数据格式特征可以判定其为同源样本。
(4) 数字证书
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA中心签发的证书,也可以由企业级CA系统进行签发。恶意软件为了躲避安全软件的检测,会使用数字证书对代码进行签名,而签名证书中的颁发给部分包含了软件的开发商的相关信息。
这种溯源方法主要见于某些专业化程度比较高的个人或者组织,他们有自己的攻击常规套路,并且长期专注于一个领域的攻击。
案例1:
之前的一次应急分析过程中遇到一个团伙,主要进行ssh弱口令爆破,该团队的就主要关注于ssh弱口令爆破,通过对该团队的溯源分析,了解到其攻击模型是:
除上面该实例外,还遇到不少,利用单一漏洞进行攻击的案例,如:struts2框架漏洞以及近期发现某团队利用webloglic WLS漏洞进行入侵挖矿的案例。
案例2:
下面举一个最有名的例子,2016年10月爆发的Mirai僵尸网络曾经一度使互联网产生恐慌,通过溯源分析最终定位到了该僵尸网络的作者。
Mirai僵尸网络就是一个很好的例子,攻击者主要利用物联网设备默认口令的问题,感染大量设备,之前沟通对其攻击模型的匹配,可以清楚的了解的组织的活动轨迹,并且通过对每一次活动留下的线索进行关联分析,最终定位到了攻击者团伙。
美国司法部最终披露称,三名男子就创建Mirai恶意软件并利用Mirai僵尸网络攻击多个目标的事实表示认罪。从法庭文档来看,这三名男子的名字是Paras Jha、Josiah White和Dalton Norman。
案例3:
在一次应急响应中通过取证分析,了解到攻击使用的攻击模型如下:
之后利用该攻击模型对样本库中的文件进行筛选,定位到另外3套与该模型完全匹配的案例,进一步分析匹配到的样本后,首先确认了该4套样本出于同一开发团队,经过溯源分析准确定位到了攻击者。
溯源分析旨在通过现象去发掘样本背后的故事,没有固定的套路可循,在分析过程中,要像侦探破案一样,大胆心细,不放过任何细枝末节,是一场人与人之间斗智斗勇的过程。
“天网恢恢疏而不漏“,溯源篇旨在抛砖引玉,将感兴趣的读者带入这个谜一样的世界!以上纯属笔者个人的观点角度,意在抛砖引玉,引发读者去思考作为一名合格的恶意样本分析人员应该具备那些技能?仁者见仁智者见智点到为止。
不过有一点可以确认单纯掌握样本分析技能是远远不够的。下面列举了几个方向,感兴趣的读者可以去进行深入学习:
掌握上述技能后,以守为攻,变换角色,从多个维度去进行样本分析攻击溯源,进而输出高质量的样本分析报告。
严峻的网络安全对抗和博弈形势,使得对恶意代码的演化与溯源技术的研究价值凸显,学术界、产业界近年来分别从攻击和防护两个方面展开了深入的研究。前文基于已有的研究总结了恶意代码的生成过程和编码特征,并对来自产业界、学术界恶意代码的溯源机理和溯源对抗方法进行了详细描述。
目前,学术界和产业界在恶意代码溯源技术方面取得了较大的进步,在追踪恶意代码组织、黑客组织(攻击者)、发现未知恶意代码方面取得了部分研究成果,例如海莲花、白象、方程式组织等典型 APT 攻击计划和黑客团队的不断曝光,但依然存在不足和挑战。
写到这里,这篇基础性文章就此结束,最后希望这篇基础性文章对您有所帮助。突然发现,作者已经写了400多篇文章了,非常值得纪念,今后也希望帮到更多的读者。也觉得自己的技术好浅,要学的知识好多,读博真心不容易,之前很少遇到睡不着觉,这学期很多次惊醒,希望自己这四年能不断成长,身体和心理都健康!一定要好好的,有时候只是看着开心阳光,其背后的苦和痛都要去炼化,祝福所有博士战友们。
(By:Eastmount 2019-12-26 晚上11点写于武汉 http://blog.csdn.net/eastmount/ )
参考文献:
[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 analysis and 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).