FinSpy
FinSpy称FinFisher,属于后门与窃密的间谍软件类型,是一种政府级商业监视间谍软件,据报道专门出售给政府机构,用于有针对性和合法的刑事调查,在BlackOasis与SandCat 组织曾经被使用。
FinSpy使用复杂的混淆技术与多种反分析技术使得分析与检测变得异常困难,在卡巴斯基最新披露的报告中,FinSpy对TeamViewer, VLC Media Player, WinRAR等软件进行了感染后定向传播,笔者通过分析技术原理,觉得这三种被作为目标的软件仅是冰山一角,任何合法的软件均可被用作dropper使用。
分析
在感染WinRAR安装包的例子中,FinSpy将大部分病毒体增加至了PE文件的最后区段,并篡改了两处用作于指向恶意代码执行的入口,其过程均是经过混淆的,当被执行的代码执行后再次将其复原,这种方式最初的是由DOS时代的onehalf病毒发明的,同时也篡改了ntdll!ZwTerminateProcess与ntdll!RtlExitUserProcess两个与进程退出相关的代码,跳入恶意代码相关入口,用于反一些自动化的分析工具,同时,恶意代码多次申请内存写入shellcode,并且shellcode也均为被混淆后的代码,使得分析过程变得极为困难。包含UEFI Bootkit、MacOS、linux平台的FinSpy完整分析文章请参阅卡巴斯基报告FinSpy: unseen findings
【建瓯最坏】
以后同源样本可以通过fc命令对比文件不同处:
图1 代码段两处被patch的代码
图2 winrar安装包被patch的代码
图3 还原被patch的代码
图4 申请内存解密shellcode
图5 修改ZwTerminateProcess内容
测试
考虑到FinSpy的难以检测性,对VT上杀毒软件进行检测能力测试,下述测试不具备倾向性,仅供参考,过程与结论如下:
- 对收集到的一个被植入恶意代码的WInRAR安装程序进行VT查询,46个杀毒软件报毒
- 对相对同版本的正常的WinRAR安装程序进行VT查询,数字签名正常,仅有一个误报
- 对被植入恶意代码的WInRAR安装程序版本信息修改一个字节(大小写转换),VT报毒变为17家,意味着至少有29家hash入库
- 对被植入恶意代码的WInRAR安装程序最后区段中被加密的病毒体中相隔一定区间共修改6字节,VT报毒率降至10家,意味着其中至少7家使用分片hash入库
- 对正常的WinRAR安装程序版本信息修改一个字节(大小写转换)使其数字签名失效,出现3家误报,并且测试过程2误报的厂家不再误报(可证实为hash误报)
结论
根据过程2至过程4数据分析,至少有36家杀毒软件应对应用程序被植入恶意代码进行定向攻击的高级威胁程序存在不足之处。
在代码混淆方面,分片hash与直接hash检测能力无任何区别;根据过程4至过程5数据分析,至少有三家杀毒软件机器/深度学习或特征自动提取算法存在质量问题,提取的点位欠缺前期预判逻辑。
混淆虽然难以检测,但深入分析还是具备很多可检测的点,考虑FinSpy一直在进行攻击活动,本文同卡巴斯基意见,不对可用于检测的Yara规则进行公开。
图6 Yara结果
图7 测试过程1
图8 测试过程2
图9 测试过程3
图10 测试过程4
图11 测试过程5