本篇是样本分析手册的最终篇章,前面的几大篇章主要侧重于基础调试技巧和样本分析方法,而溯源篇是在掌握之前技能的基础上,进行能力进一步提升,可以说掌握了常规的溯源方法,才算是一名合格的恶意样本分析人员
单就从“恶意样本分析人员”这个职位名称来看,可以拆分为:
“恶意” + “样本” +“分析” + “人员”
其中:样本是我们关注的重点,也是最初的原材料(巧妇难为无米之炊),有了样本才能够进行下一步分析。
分析是通过掌握的知识技能去了解样本的功能(做饭的技法)以及样本制造者的创造性思维。
人员当然意指分析人员(一千个读者就有一千个哈姆雷特),一份样本分析报告的质量,视分析人员的能力水平而定。
恶意样本溯源追踪主要去了解攻击者或者团队的意图;(有因才有果,这里主要是通过分析结果,去了解攻击者的意图,比如:政治,私怨,业务,经济等)。
了解攻击链
恶意攻击的活动大概有如下7步骤:
- Reconnaissance:侦查,充分的社会工程学了解目标。
- Weaponization:定向的攻击工具的制作。常见的工具交付形态是带有恶意代码的pdf文件或office文件。
- Delivery:把攻击工具输送到目标系统上。APT攻击者最常用这三种来传送攻击工具,包括邮件的附件、网站(挂马)、USB等移动存储。
- Exploitation:攻击代码在目标系统触发,利用目标系统的应用或操作系统漏洞控制目标。
- Installation:远程控制程序的安装。使得攻击者可以长期潜伏在目标系统中。
- Command and Control (C2) :被攻破的主机一般会与互联网控制器服务器建立一个C2信道,即与C2服务器建立连接。
- Actions on Objectives:经过前面六个过程,攻击者后面主要的行为包括:
- 偷取目标系统的信息,破坏信息的完整性及可用性等。
- 进一步以控制的机器为跳转攻击其它机器,扩大战果。
追踪溯源方法
恶意样本的追踪溯源需要以当前的恶意样本为中心,通过对静态特征和动态行为的分析,解决如下问题:
- 谁发动的攻击?攻击背景是什么?
- 攻击的意图是什么?
- 谁编写的样本?
- 样本使用了哪些攻击技术?
- 攻击过程中使用了那些攻击工具?
- 整个攻击过程路径是怎样的?
恶意样本追踪溯源可以采取如下方法:
域名/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),然而无法确定这个名字是否就是其真实姓名。
样本分析及详细的溯源分析内容可参考链接:https://research.checkpoint.com/good-zero-day-skiddie/ 。
案例2:
样本分析过程中,通过网络抓包,获取到攻击者的控制域名信息:
域名信息关联后,如下图所示:
这里点到为止,对上述信息进行进一步分析后,最终可定位到攻击者本人,并且最终成功接管攻击控制的域名。
案例3:
通过分析获取到的样本,该样本为downloader程序,主要通过下载恶意软件之后运行,下载的IP地址如下所示:
对该IP进行渗透测试,最终获取到主机权限,通过对攻击者掌握的主机进行深入分析,最终定位到攻击者相关信息。
入侵日志
这种溯源分析方法偏向于主机取证分析,攻击者在入侵到主机后的行为分析。
对攻击者留下的大量操作日志进行分析后,可以提取相关攻击者的信息。
- 连接服务器使用VPS信息。
- 登陆主机后,一般为了维持对主机的访问权限,会尝试创建自己的账号及密码。
- 攻击者为了偷取数据,使用的ftp或者数据服务器信息。
- 通过对攻击者的登陆时间进行分析,可以基本定位所在大区域(北半球,南半球)。
- 登陆主机后的操作模型,不同的攻击者,入侵成功后进行的行为有差异,每个人都有自己的行为指纹特征。
简单举个例子,不少攻击者习惯使用自动化的工具,去提取主机上的敏感信息(网站,邮箱,比特币,网银等账号密码),入侵成功后(钓鱼,社工,水坑攻击等),会在受害者机器上安装间谍软件,进行主机行为监控,并且定时将截获的敏感信息上传到服务上。
大多使用三种通信方式窃取敏感信息:ftp,smtp,http。
案例1:
通过分析入侵日志,最终分析其留的监控程序,溯源分析的案例,该样本中攻击者使用加密的smtp服务器窃取敏感信息,在样本分析过程中可以获取到邮箱的用户名与密码:
利用获取到的登陆凭证可成功登陆攻击者邮箱:
在邮件内容中,发现了攻击者的真实邮箱,之后通过进一步溯源分析,定位到了攻击者。
下图是攻击者真实的twitter账号:
案例2:
攻击者在入侵成功后,留下的启动脚本中包含了攻击者的个人网络id,通过对该网络ID及QQ号码进行溯源分析,最终也成功定位到攻击者。
QQ: 2228668564 | ID: icnanker |
shadow: icnanker:$6$EIZwhnAX$m/IclCqhsFOBaZEgT2mVCYFy5bKH75rJ8Rlh/hwGs7DeR5AovmhrLS.V3naL6oizn6FCViwqKn6k9gqmoYNhs0:16866:0:99999:7::: |
全流量分析
某些攻击者或者组织的反跟踪意识非常强,基本上不会留下任何痕迹,在达成入侵目的之后(窃取数据),会完全清除入侵痕迹,或者干脆销毁主机硬盘。
例如: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的文件进行加密,之后将原始文件删除,并且通过代理传到了黑客手里。
该案例中仅通过全流量分析,最终还原整个入侵过程、黑客攻击行为以及窃取的内容,而在真实的环境中需要结合入侵日志进一步对恶意样本攻击进行追踪溯源。
同源分析
该方法主要为在获取到恶意样本后,很难第一时间关联到攻击者或者恶意样本提供者的信息,但是可以通过和历史恶意代码进行相似度分析,获得历史攻击事件,从而关联到相应的组织或团体。
这种溯源方法多用于定位APT组织或者某些知名的黑客团体(方程式)的行动,需要投入大量的人力,时间去完成溯源跟踪分析。
APT组织或者知名黑客团队,一般都有各自的工具定制开发部门,负责各类工具的开发,以及漏洞利用工具的量产(从今年4月份泄露的方程式组织内部的工具以及CIA泄露的部分文档就可以看出端倪)。其部分划分组织架构都非常清晰,有专门负责工具开发的部门,例如:远控开发部门,硬件研究部门,漏洞挖掘部门,漏洞利用工具编写的部门等。
设计思路
每个程序员在软件实现的时候,会使用自己比较熟悉的一套代码风格和实现算法,每个团伙或者组织在攻击目标时也会有一套自己特有的攻击方法,针对恶意样本可以通过行为日志的相似度、代码混淆风格以及相关的实现算法进行同源判定。
例如:利用“破壳”漏洞投放的6个Bot具有同源性。
图片来源:
http://www.antiy.com/response/Analysis_Report_on_Sample_Set_of_Bash_Shellshock.html
编码特征
程序员在开发过程中,经常会复用部分现有代码(加密算法,功能模块),以提高开发效率。
样本分析人员通过跟踪分析某组织的大量攻击样本后,对其工具开发人员的编码风格(函数变量命名习惯,语种信息等),编程习惯有了深入了解。在此基础上,就能够通过编码风格准确溯源到相关组织。
下面是今年5月份爆发的wanncry蠕虫的溯源分析的案例:
https://blog.comae.io/wannacry-links-to-lazarus-group-dcea72c99d2d
Google研究者Neel Mehta在Twitter率先发布消息称,早期的WannaCry样本与Lazarus团伙使用的一款后门程序Contopee存在较高相似度。稍后卡巴斯基和赛门铁克研究者基于此发布了更多分析结果。
并且给出了代码相似度对比的图,以证明其推论:
通讯协议
每个恶意样本为了和之前的版本通讯协议进行兼容,一般会复用之前的通讯协议代码,通过跟踪分析通讯数据的格式特征进行同源判定。
Billgates上线数据格式
Xitele上线数据包格式
通过对比上面两个恶意样本上线包数据格式特征可以判定其为同源样本。
数字证书
数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA中心签发的证书,也可以由企业级CA系统进行签发。
恶意软件为了躲避安全软件的检测,会使用数字证书对代码进行签名,而签名证书中的颁发给部分包含了软件的开发商的相关信息。
攻击模型
这种溯源方法主要见于某些专业化程度比较高的个人或者组织,他们有自己的攻击常规套路,并且长期专注于一个领域的攻击。
案例1:
之前的一次应急分析过程中遇到一个团伙,主要进行ssh弱口令爆破,该团队的就主要关注于ssh弱口令爆破,通过对该团队的溯源分析,了解到其攻击模型是:
- 扫描全网开放ssh服务端口的主机。
- 根据开放服务端口号,将每个端口号对应的ip保存到一个文件中。
- 并且定时的会对全网全端口进行扫描探测以便及时更新攻击目标数据。
- 对存在ssh弱口令的主机进行攻击。
- 利用成功入侵的主机作为节点,继续进行ssh弱口令爆破。
- 旨在构造一个大型的botnet系统。
除上面该实例外,还遇到不少,利用单一漏洞进行攻击的案例,如:struts2框架漏洞以及近期发现某团队利用webloglic WLS漏洞进行入侵挖矿的案例。
案例2:
下面举一个最有名的例子,2016年10月爆发的Mirai僵尸网络曾经一度使互联网产生恐慌,通过溯源分析最终定位到了该僵尸网络的作者。
Mirai僵尸网络就是一个很好的例子,攻击者主要利用物联网设备默认口令的问题,感染大量设备,之前沟通对其攻击模型的匹配,可以清楚的了解的组织的活动轨迹,并且通过对每一次活动留下的线索进行关联分析,最终定位到了攻击者团伙。
美国司法部最终披露称,三名男子就创建Mirai恶意软件并利用Mirai僵尸网络攻击多个目标的事实表示认罪。从法庭文档来看,这三名男子的名字是Paras Jha、Josiah White和Dalton Norman。
https://www.bleepingcomputer.com/news/security/us-charges-three-men-with-creating-and-running-first-ever-mirai-botnet/
案例3:
在一次应急响应中通过取证分析,了解到攻击使用的攻击模型如下:
- 注册域名,根据攻击目标选择有意义的域名。
- 在GitHub上注册一个新账户和创建一个开源项目。
- 编译源码后捆绑恶意软件,一般选择advanced installer作为捆绑打包器(还有AutoIt,NSIS)。
- 发布到搭建的网站上。
- 在互联网上发布推广其软件。
- 窃取用户敏感数据(账号密码)。
- 进行数据直接套现,或者通过信息倒卖平台间接变现。
之后利用该攻击模型对样本库中的文件进行筛选,定位到另外3套与该模型完全匹配的案例,进一步分析匹配到的样本后,首先确认了该4套样本出于同一开发团队,经过溯源分析准确定位到了攻击者。
结语
溯源分析旨在通过现象去发掘样本背后的故事,没有固定的套路可循,在分析过程中,要像侦探破案一样,大胆心细,不放过任何细枝末节,是一场人与人之间斗智斗勇的过程。
“天网恢恢疏而不漏“,溯源篇旨在抛砖引玉,将感兴趣的读者带入这个谜一样的世界!
以上纯属笔者个人的观点角度,意在抛砖引玉,引发读者去思考作为一名合格的恶意样本分析人员应该具备那些技能?仁者见仁智者见智点到为止。
不过有一点可以确认单纯掌握样本分析技能是远远不够的。下面列举了几个方向,感兴趣的读者可以去进行深入学习:
A)渗透测试
B)应急响应
C)取证分析
D)数据分析
E)漏洞分析
掌握上述技能后,以守为攻,变换角色,从多个维度去进行样本分析攻击溯源,进而输出高质量的样本分析报告。