近期披露的APT组织攻击活动中,我们发现部分组织频繁使用一项历史悠久的信息隐藏技术——隐写术。这些隐写术的实现或复杂或简单,但都有效地增加了攻击的隐匿性与强度。
前言
作为有高度攻击能力的团伙代表,APT组织有时会使用一些非常规的攻击技术。近期披露的APT组织攻击活动中,我们发现部分组织频繁使用一项历史悠久的信息隐藏技术——隐写术。这些隐写术的实现或复杂或简单,但都有效地增加了攻击的隐匿性与强度。
关于隐写术
隐写术(Steganography)一词来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为“隐秘书写”。
计算机领域涉及的隐写术载体十分广泛,文本信息、图像信息、音频和视频信息都可以成为隐藏信息的载体,我们只需要将需隐藏的信息拆散并用固定的格式覆写至信息载体中,就可以实现在欺骗人类感官的同时传递信息。这些隐写术配合一定复杂度的加密技术,即可在相当程度上保证端到端信息传递的隐蔽性,因此该技术经常出现在灰色、黑色领域以及网络攻防对抗当中。
APT组织使用的隐写术
海莲花(OceanLutus)与图像隐写
我们先来看一下大名鼎鼎的海莲花组织在2018年10月的一次攻击中使用的隐写术技术。
该次攻击的原始载荷是一个名为mcvsocfg.dll的动态链接库文件,该文件模仿McAfee旗下同名文件的导出表,使用白利用的方式将自身加载运行。当受害者打开同目录下的安全程序mcods.exe时,该dll中的恶意代码被调用执行。
Dll文件包含以下导出表:
导出表中所有函数都执行同样的恶意代码,读取system.ini文件并以此解密隐写术图像中的信息:
隐写术图像在dll同目录下,名为x5j3trra.Png:
阅读关键代码可发现,该程序将png图像每个像素RGB值的低位拼合成一个字节,再将所有字节组合为加密字节串:
此处dwARGB值在内存中遵循BGRA的字节排列,因此每个像素的隐藏信息提取过程如下(以图片头部像素0xFF4586E2为例):
以上提取结果为0xB5,即图像的此像素中隐藏了值为0xB5的单字节信息。
通过以上方式,程序将隐藏在png图像中的加密字节串提取出来,之后使用AES-CBC和异或解密出最终载荷:
该最终载荷为多层shellcode加载器形式的DenesRAT木马,详细分析可参见由伏影实验室发布的《海莲花(APT32)组织 DenesRAT木马与相关攻击链分析》。
在这次攻击中,海莲花组织使用了最常见的隐写术手法——图片像素低位隐写,这样的手段生成的图像足以欺骗人类的视觉;再通过有一定难度的加密方式,使得安全人员即使获取到了包含隐写信息的图像也无法还原出攻击载荷,大大增加了攻击流程的隐匿性。
Dukes(APT29)与图像隐写
同样的手段出现在APT组织Dukes的攻击流程中。在最近由ESET披露的攻击活动中,Dukes使用的攻击载荷PolyglotDuke与RegDuke在C&C通信阶段使用了图像隐写术作为隐匿手段。这些载荷使用的隐写方式与上文所述海莲花隐写术基本相同,在png图像每个像素RGB值的低位中存放了1字节的信息,且完整信息同样是使用AES加密的密文,唯一不同点在于取用的RGB像素位与最终拼接顺序。该隐写方式取用的RGB通道位置、位数及组合方式示例如下:
同时,ESET的报告中展示了以下隐写图像:
由此可以看出,该类隐写技术几乎不会对图像的可视性带来影响。
使用图像隐写,Dukes的C&C服务器可以向种植了PolyglotDuke或RegDuke后门的主机发送可执行文件载荷。
ScarCruft(APT37)与图像隐写
无独有偶,韩国APT组织ScarCruft在今年的攻击活动中也利用了隐写术图像。
该攻击事件在19年5月被发现,整个攻击过程包括多个阶段与载荷,其中使用隐写术的攻击载荷名为fastuserswitchingcompatibility.dll,伪装成Fast User Switching Compatibility服务安装至系统服务中。该伪造服务在启动时会执行ServiceMain函数,装载主要恶意代码:
图中所示线程主要功能为从下载服务器下载下一阶段载荷,之后解密载荷并注入至winlogon.exe中执行。值得注意的是,该下载载荷和解密载荷的过程使用了图片隐写,图像名为images.Png:
该png图像在常规数据块IHDR、PLTE、IDAT、IEND以外,末尾还加入了一个自定义的数据块SIGN,与前4字节组成标志位SELFSIGN:
通过该标志位定位加密字符串位置后,程序使用xor逻辑进行解密,异或键为0x49:
解密后的攻击载荷为ROKRAT后门,其主要功能为窃取用户主机信息并上传至指定云服务中(Box, Dropbox, Pcloud, Yandex)。该后门会被植入到winlogon.exe进程中。
该次攻击事件中,ScarCruft组织使用了图片隐写更直接的手法,即直接将加密数据植入图像数据末尾。该手法优点在于可以在同等大小的图像中塞入更多隐藏信息,而缺点在于数据整体暴露在合法文件结构以外,容易被静态检测手段检测。
白金(Platinum)与文本隐写
卡巴斯基在今年5月的报告中提到, APT组织Platinum也在使用隐写术传递载荷。
与海莲花和ScarCruft不同,Platinum使用了文本隐写术。卡巴斯基报告中提到了两种文本隐写术手法:关键词隐写和空白隐写。这两种文本隐写方式的思路截然相反,关键词隐写将内容隐藏在可见字符中,空白隐写则将之隐藏至不可见部分。
报告中提到的关键词隐写部分如下:
该html文件的28行到37行语句中包含四个属性:bgcolor、align、colspan、rowspan。由于html对属性的顺序不敏感,这些属性的位置可以随意调换,Platinum正是利用了这一点来传递信息。简单计算可知,这四个属性组成的四进制数据有24种不同的排列,可指代0至0x17的十六进制数据,因此一行携带的隐藏信息量超过了4bit。
空白隐写则如下所示:
位于文件943~947行的隐写内容由空格键(0x20)和制表键(0x9)组成,因此对阅读者不可见。由关键词隐写我们可以联想到,该部分的隐写内容是二进制数据,事实也正是如此。然而,由于二进制数据能够装载的信息很有限,常规数据一般需要经过压缩来获得更小的二进制空间。卡巴斯基报告指出,该处的二进制数据是由ICE算法压缩的(http://www.darkside.com.au/snow/)。
从Platinum组织使用的隐写术中可以发现,隐写术的本质是将二进制数据转为其他进制数据并放入合适的载体中。因此,隐写术的载体可以是现代计算机网络中任何信息载体形式,攻击者是否使用隐写术更多取决于载体是否易于传播以及转换后信息是否足够隐蔽。
参考链接
https://www.welivesecurity.com/2019/10/17/operation-ghost-dukes-never-left/
https://securelist.com/scarcruft-continues-to-evolve-introduces-bluetooth-harvester/90729/
https://securelist.com/platinum-is-back/91135/
http://www.darkside.com.au/snow/
关于伏影实验室
伏影实验室专注于安全威胁研究与监测技术,包括但不限于威胁识别技术,威胁跟踪技术,威胁捕获技术,威胁主体识别技术。研究目标包括:僵尸网络威胁,DDOS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁 及 新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。
关于绿盟威胁情报中心
绿盟威胁情报中心(NSFOCUS Threat Intelligence center, NTI)是绿盟科技为落实智慧安全2.0战略,促进网络空间安全生态建设和威胁情报应用,增强客户攻防对抗能力而组建的专业性安全研究组织。其依托公司专业的安全团队和强大的安全研究能力,对全球网络安全威胁和态势进行持续观察和分析,以威胁情报的生产、运营、应用等能力及关键技术作为核心研究内容,推出了绿盟威胁情报平台以及一系列集成威胁情报的新一代安全产品,为用户提供可操作的情报数据、专业的情报服务和高效的威胁防护能力,帮助用户更好地了解和应对各类网络威胁。