编者按
《互联网基础设施与软件安全年度发展研究报告(2020)》第四章《恶意样本分析报告》,共九个小节,分别为:恶意文件样本集简介、样本分析过程、恶意样本分析概况、PE样本分析、ELF样本分析、APK样本分析、文档样本分析、典型案例分析、恶意代码的发展趋势与分析挑战。我们已经发布了第四章的第一、二小节内容,本文为第四章第三小节《恶意样本分析概况》。
本文共6239字。文末有惊喜!
(注:本文数据均为截至2020年7月的数据)
01
样本文件类型
对样本文件内容进行分析发现,样本集中总共包含400多种文件格式。我们将样本集划分为如下几个大类。
△PE类,Windows操作系统下的可执行二进制程序、动态链接库、设备驱动程序等,包含exe、dll、sys等。
△Script类,主要是各种脚本语言和应用软件下的文本类型的文件,包含html、js、vbs等。
△ELF类,Linux环境下可执行的二进制程序,包含各个不同硬件架构和操作系统平台下的ELF格式文件。
△Mach-O类,macOS和iOS下的可执行程序,包含Mach-O、dmg、pkg、ipa等。
△APK类,Android环境下的可执行文件,包含apk、dex。
△Java类,Java平台的可执行文件,包含jar、class。
△Document类,各种文档类型的文件,doc、xls、rtf等。
△Bin类,各种图片、压缩包等非直接可执行代码类型的二进制文件,包含png、swf、zip等。
△Unknown类,包含无法识别格式和类型的文件。
不同类型的样本数量占比如图4-4所示,其中Windows平台的PE格式可执行程序占82.28%。
图4-4 不同类型样本数量占比
具体到各个样本类型的占比,如图4-5所示,第一名是占71.86%的32位exe;其次是占6.99%的64位exe;第三是占6.68%的html。这与Windows平台的市场占有率相符合,同时也表明随着浏览器的应用增多,包含恶意代码的网页攻击也较为普遍。
图4-5 样本类型占比Top 10
为了识别不同操作系统平台上恶意代码的架构分布,我们对Windows、Linux、macOS上的可执行代码架构类型进行了统计,如图4-6所示,在PE样本中,32位样本占91.30%,64位样本占8.70%;在ELF样本中,32位样本占91.72%,64位样本占8.28%;在Mach-O样本中,32位样本占72.63%,64位样本占32.74%,其中合计超过100%是因为Mach-O支持Fat格式的多架构二进制代码,一个样本文件同时包含32位和64位代码。
图4-6 不同可执行代码的架构分布
02
样本文件大小
由于很多安全工具的检测和分析性能与样本文件的大小密切相关,因此我们对样本集中文件大小的分布情况进行了统计分析,如图4-7所示,其中100KB~1MB的样本占52.87%,1MB~10MB的样本占24.13%。大部分样本在10MB以下出现校验和错误该文件已损坏,数量占总样本量的98.64%。有少量样本很小,小于1KB的样本数量只占总样本量的1.45%,主要是一些脚本和文本文件。同时,也有极少数样本文件很大,50MB以上的样本数量占总样本量的0.02%。
图4-7 样本文件大小分布区间
如某个样本(SHA1:a187d8be61b7ad6c328f3ee9ac66f3d2f4b48c6b)文件大小为189MB,而其中的实际文件内容只有21KB,其余都是文件尾部填充的垃圾数据,如图4-8所示。恶意样本试图通过增大文件体积,利用某些安全软件不会对大文件进行检测的特点绕过安全防护。由于尾部填充的数据都是空格,该文件压缩后只有245KB,因此,该样本很可能是以压缩文件的形式投递/传递,避免文件过大导致的传输问题。
图4-8 样本文件尾部填充截图
03
样本相似性分析
众所周知,恶意软件作者会用各种自动化生成、变形的方式不断地改变恶意软件的形态,从而试图绕过各种安全防御和检测机制。目前,业界采用MD5/SHA1/SHA256等全文哈希的方式对样本进行唯一性标识,并通过Import Hash、SSDeep等特征哈希、感知哈希等算法辅助识别相似样本,而如何准确判定两个全文哈希不同的样本属于同一个恶意软件,并没有很好的自动化方式,尤其是在海量样本的情况下,更难快速完成分析评估。
Import Hash根据PE文件导入表(Imports)计算Imphash值。导入表包含了一个PE依赖的动态链接库及调用函数,编译器根据源码中每个函数出现的顺序来生成IAT(Import Address Table),源代码中导入函数的出现顺序,以及编译时的源码文件顺序都会影响IAT,从而影响产生的Imphash值。当一个PE样本依赖的动态链接库较多,调用的函数也较多时,产生的Imphash将具有较高的区分度。然而,加壳等程序外层封装工具会对导入表产生影响,从而改变样本原有的Imphash值。另外,像.NET程序只有一个导入函数,Go语言编写的程序会嵌入底层运行时等,也会导致样本的Imphash没有区分度。
为此,我们采用了基于代码结构计算的哈希值Thash。与Imphash相比,Thash的不同样本区分度更好,同类样本相似性识别的置信度也更高,如我们的样本集中一个Imphash(67533f79a87f4ce08c671dedbb7cb801)对应了60多万个SHA1不同的样本,利用Thash可进一步分为3个簇,分别占比为89.46%、6.21%、4.33%。
为了进一步对比Imphash和Thash的效果,我们抽取了两个哈希识别的相似样本数量排名前1,000的簇。对每个簇的内含样本量进行统计,Thash最大的簇占同类样本总量的4.93%,排名1,000的簇占同类样本总量的0.0022%,排名前1,000的簇所含样本数量占同类样本总量的58.89%;Imphash最大的簇占同类样本总量的11.88%,排名1,000的簇占同类样本总量的0.0025%,排名前1,000的簇所含样本数量占同类样本总量的74.74%。结果表明,通过简单地修改文件内容来改变MD5/SHA1等全文哈希的情况十分普遍,识别并过滤这类样本是提高分析效率的关键。
图4-9显示了2020年6月根据Thash识别的包含样本数量排名前100的簇的每日样本数,从图中可以看出,每日新增样本中的每个簇都有数十到数万不等的相似样本,由于这些Thash相同的相似样本的代码完全一样,因此如果能在分析之前识别并过滤掉这些样本,可以大大降低分析开销,提高检测效率。
图4-9 Thash Top 100簇的每日样本数
04
样本压缩与内嵌
很多样本文件以压缩包等形态出现,压缩和打包格式多种多样,包括gz、zip、rar、dmg、iso、bz2、7z、xar、cab、ace、tar、img、cpio、lzh、xz、szdd、arj、z等。
如图4-10所示,在所有压缩打包形态的样本中,gz格式占61.85%;其次是zip格式,占19.66%;然后是rar格式,占7.69%。其中gz格式占比明显偏高,原因很可能与样本交换等不同样本来源采用的样本文件传递格式有关。
图4-10 不同打包格式样本的占比分布
此外,我们发现样本集中有一些PNG、JPG、BMP等图片格式的恶意样本,其主要原因是图片中内嵌恶意代码。分析发现图片格式恶意样本中,内嵌脚本的样本占93.40%,内嵌PE的样本占3.54%,内嵌压缩包的样本占3.06%,如图4-11所示。
图4-11图片格式恶意样本类型
05
样本破损率
沙箱分析等动态分析方式需要实际执行样本文件,因此,样本文件是否完整对于分析结果的准确性和正确性至关重要。样本文件在捕获、上传、下载等各个环节都可能出现问题,在网络传输过程中还可能被中间链路上的各种安全设备操作,从而导致样本文件破损。另外,攻击者也可能故意制作一些不符合格式规范的样本,以便绕过安全检测。
我们根据PE格式规范和Windows系统对PE文件各个字段的解析要求,对exe可执行程序样本是否破损进行了分析,同时,结合zip和rar格式规范,对zip、apk和rar这3种类型的样本进行了文件破损分析。
如图4-12所示,0.37%的32位exe和0.15%的64位exe样本文件有破损,这些样本用杀毒引擎等静态检测工具可以命中恶意特征,但由于文件本身已经损坏,无法被操作系统加载执行,因此,这类破损样本的动态分析结果是不准确的。
图4-12 格式校验错误的样本数量占比
并且,约有1.40%的apk样本格式校验异常,这些样本无法正常安装和执行,因此,对于这些样本,动态分析过程是可以省略的。
此外,有4.96%的zip和13.17%的rar样本格式校验异常,这类样本通常是校验和错误、标志位异常等,由于不同的解压缩工具和解压选项对校验和等字段的要求不同,其中的一些样本可以通过忽略错误信息提取到其中包含的全部文件或部分文件,因此,安全分析工具如果不能很好地处理这类格式异常的压缩包,就容易被攻击者绕过,这也是此类样本占比明显较高的原因。
06
动态行为分析
由于样本的类型不同、运行的分析环境各异,因此很难对样本的动态行为做出统一的分析。为此,我们将各种样本的动态行为进行了抽象,并以行为的目的进行归类,以便屏蔽具体行为实现方式的差异,更好地对不同样本的不同行为进行对比分析。
分析发现,超过45%的样本会设置自启动,具体方式多种多样,包括在开始菜单路径下放置文件和快捷方式、设置系统登录注册表项、设置计划任务、设置系统服务、设置Office等特定应用的加载项、修改系统初始化脚本、添加定时任务等,如图4-13所示。
图4-13 样本的设置自启动行为
超过40%的样本会有各种环境检测和分析对抗行为,包括检测调试器、检测调试标志、探测系统硬件信息、探测系统磁盘、探测系统安全组件、探测进程信息、探测文件模块信息、探测窗口信息、探测账号信息、拖延执行时间等。图4-14展示了我们通过天穹沙箱捕获到的恶意样本环境检测和分析对抗行为。
图4-14 样本的环境检测和分析对抗行为
在样本的文件读写操作方面,37.48%的样本会释放可执行程序,10.49%的样本在执行之后有自删除行为,4.35%的样本有自我复制行为。4.53%的样本会复制系统程序文件到非系统目录,再进行调用,疑似逃避安全工具的检测,如图4-15所示。
图4-15 样本的复制系统程序行为
在样本文件隐藏和伪装方面,29.94%的样本会修改文件属性,将其更改为隐藏或只读;14.62%的样本会修改系统的文件夹隐藏选项,不显示隐藏文件;14.58%的样本会修改系统扩展名隐藏属性,不显示扩展名;3.65%的样本会修改资源管理器设置以隐藏文件;约有0.18%的样本会将文件释放到回收站。另外,12.03%会给释放的文件添加类似.doc.exe这样的多重后缀名,对恶意代码进行伪装。
在数据窃取与加密方面,约1.40%的样本会窃取分析系统上的秘密文件,包括读取浏览器隐私、读取邮件登录凭据、读取FTP工具凭据、读取远程桌面等管理工具凭据、读取数字货币钱包、读取电子邮件、读取密码管理工具数据、读取即时通信软件登录凭据等。约0.01%的样本会加密和破坏用户数据,删除系统卷影备份,表现出典型的勒索软件行为。此外,0.002%的样本会对引导扇区进行操作,感染引导扇区、锁死引导程序,如图4-16所示。
图4-16 样本的数据窃取行为
最后,约13%的样本在动态分析过程中会出现自身或相关系统进程崩溃的现象,有0.10%的样本会导致沙箱分析系统崩溃,其原因有多种出现校验和错误该文件已损坏,包括样本实现缺陷、样本的漏洞攻击导致、样本所需的分析环境与实际分析环境不一致、样本故意的分析对抗等。图4-17展示了我们通过天穹沙箱捕获到的恶意样本导致分析系统崩溃的现象。
图4-17 样本导致分析系统崩溃
07
网络行为分析
基于天穹沙箱分析结果,我们发现在所有样本中,产生网络流量的样本占全量样本的37.45%。恶意样本在沙箱动态分析过程中产生了大量的网络流量,我们对这些网络流量涉及的协议和端口进行了统计分析,以9080端口的访问量为1,对所有端口的访问量计算相对值,流量中端口访问量Top 30相对值如图4-18所示。其中80端口的HTTP访问次数最多,其次是23端口的Telnet访问,这与IoT样本的大量23端口扫描行为有关,第三是443端口的HTTPS加密流量。
图4-18 恶意样本端口访问量Top30相对值
以网络行为关联的样本统计,在所有产生网络流量的样本中,有86.88%的样本会产生53端口的DNS协议流量,56.43%的样本会产生80端口的HTTP流量,5.00%的样本会产生443端口的HTTPS加密流量。这些行为统计数据说明,网络流量分析,尤其是DNS数据分析仍然是恶意软件检测的重要手段,也说明越来越多的恶意样本采用加密流量的进行通信,如图4-19所示。
我们对产生加密流量的PE样本进一步分析,发现只有27.8%的样本相关流量中出现了TLS Server Hello数据包,表明大多数样本在沙箱分析时,加密通信的对端已经失效。这部分原因在于样本从出现到被捕获再到被沙箱分析之间有一定的时延(数天到数月不等),导致服务端存活率较低,同时也表明,恶意样本的通信对端并不稳定,经常调整变换。
1.域名访问分析
由于域名是恶意软件联系控制者的主要通道之一,因此我们对恶意样本相关流量涉及的域名访问行为进行了深入分析。
在所有产生DNS请求的样本中,99.88%的样本采用的是系统默认的DNS服务器,0.15%的样本会向外部DNS服务器请求域名解析,其中包含0.03%的样本会同时采用上述两种DNS服务器。
根据DNS查询请求次数统计,96.06%的DNS查询请求针对的是系统默认的DNS服务器;其次是针对8.8.4.4的DNS查询请求,其次数占2.52%,总共观察到了1,600多个外部DNS服务器的IP。
图4-19 典型网络协议类型相关样本数量占比
我们对所有样本动态分析过程中产生的域名解析请求和响应进行了深入分析,发现在恶意样本访问的所有域名中,已知的DGA域名占7.36%,动态域名占41.12%,表明动态域名仍然是多数恶意软件的主要回连渠道。
在样本请求的域名中,98.08%的域名的解析请求会失败。导致域名解析请求失败率高的原因有多种,例如样本被归为恶意之后,其采用的动态域名会被删除,导致解析失败;有些样本会请求大量的DGA域名,而这些域名大部分没有注册,导致解析失败;另外,还有些样本请求的域名已经过期等。这表明部署DNS安全产品可以有效地提高企业等组织机构的恶意软件发现能力和网络安全防御水平。
我们可以进一步看到平均单个域名的解析请求次数为102次,平均每个样本请求解析的域名个数为0.03个,平均每个样本的域名解析请求次数为3.25次。平均单个域名的解析请求次数较高,推测与部分样本采用DGA域名、样本在域名解析失败后不断重试,以及部分样本采用DNS隧道进行通信相关。
由于DNS相关流量通常不会被阻断,因此DNS协议除实现域名解析之外,也被攻击者用于构建DNS隐蔽隧道,传递控制命令等信息,如黑客组织OilRig使用的很多工具就依赖DNS隧道,实现在受感染主机与C&C服务器之间的通信。OilRig使用了A、AAAA和TXT查询类型进行DNS隧道传输,使用DNS隧道是其重要的通信方式。近期,有研究发现该组织还在攻击中加入了DNS-over-HTTPS(DoH)协议。由于DOH是较新的协议,因此很多安全产品还无法进行监测解析,同时DoH是默认加密的,在数据传输时很难被检测到。因此,尽管DoH技术的推广是为了增强DNS的安全性,但可以预见,很快会有更多的攻击者使用DoH来隐藏恶意活动,这是网络安全业界需要关注和重视的问题。
2.国际化域名
IDN(Internationalized Domain Name,国际化域名)也叫多语种域名,是指非英语国家推广本国语言的域名系统的一个总称,例如含有中文的域名为中文域名。现在能够使用350多种语言注册和使用域名,国际化域名不允许有除“-”以外的标点符号,包括空格,可以将不同的字符、数字或符号进行组合,可以夹杂中文和英文。
早期的DNS只支持英文域名解析,在国际化域名推出以后,为了保证兼容性,对国际化域名进行了Punycode转码,转码后的Punycode由26个字母外加10个数字,以及“-”组成。Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用于DNS系统的编码。
分析发现,在有网络连接行为的样本中,有0.04%的样本采用了国际化域名,国际化域名的解析请求次数占所有DNS解析请求次数的0.11%。与国内现网流量占国际化域名请求的0.0024%相比,恶意样本采用国际化域名的比例更高,这可能与恶意样本的来源更国际化,以及利用国际化域名绕过现有网络安全检测手段有关。
根据国际化域名涉及的恶意样本数量统计,排名前20位的国际化域名如表4-1所示。
表4-1 国际化域名Top 20
(未完待续……)
版权声明:本研究报告由清华大学(网络研究院)-奇安信集团网络安全联合研究中心撰写完成,版权属于双方共有,并受法律保护。转载、摘编或利用其它方式使用本研究报告文字或者观点的,应注明来源。
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99
2.本站所有项目来源于投稿或购买自其他第三方,若本站侵犯了您的权益请 联系站长 进行删除处理。