本文翻译自:https://securelist.com/calisto-trojan-for-macos/86543/
研究人员近期发现一个macOS后门Calisto,Calisto木马可能是Proto恶意软件家族的第一个成员。本文将对Calisto进行深入分析。
该恶意软件2016年就被上传到VirusTotal了,而2016年应该正是该恶意软件被开发出的时间。但直到2018年5月,两年过去了,反病毒软件一直没有检测到Calisto。
MacOS上的恶意软件并不常见,发现的样本中也含有一些非常常见的特征。
其实研究人员还没有该后门传播方式的可信证据。但Calisto安装文件是一个未签名的DMG镜像,伪装成Intego的安全软件(mac版本)。有趣的是,Calisto开发者选择的是该程序的第9版本。
下面比较一下恶意软件和官网下载的Mac Internet Security X9:
从上图可以看出,这两个应用是非常相似的,如果之前没有用过该应用的话,应该是很难看出来区别。
应用安装时间会呈现给用户一个虚假的许可协议,协议中的文本与Intego的协议内容是不同的,可能开发者使用的之前版本的许可协议。
然后,恶意软件会要求用户输入用户名和密码,这与在macOS上安装其他软件是一样的。
在收到用户输入的凭证时,程序会挂起并出现错误,建议用户从官网下载新的安装包(是不是平时也遇到过这样的情况?所以一切看起来都很正常)。
该技术其实很简单,但是也很有效。而官网下载的程序在安装过程中不会出现什么问题,而恶意软件会在后台默默地工作。
SIP,SystemIntegrityProtection(系统完整性保护),是为了保护系统进程、文件、文档不被其它进程修改,不管是否为root user,SIP技术主要分为文件系统保护,运行时保护,内核扩展签名,文件系统保护主要是通过沙盒机制限制root权限,运行时保护,主要就是保护关键进程无法被进程代码注入,挂调试器以及内核调试等,内核扩展签名,所有的第三方kext必须被安装到/Library/Extensions,并强制使用签名。
Calisto的活动在SIP开启时是非常受限的,因为SIP是2015年发布的,而Calisto是2016年或之前开发的,所以开发者好像并没有考虑到SIP的限制作用。但是许多用户在很多情况下都会关闭SIP,这也就给了Calisto很大的活动空间。所以,研究人员建议尽量不要关闭SIP。
通过子进程日志和反编译的代码可以分析出Calisto的活动:
图 Trojan执行的命令日志
图 Calisto样本中硬编码的命令
可以看到木马使用了一个名为.calisto的隐藏目录来存储:
Keychain存储用户保存的密码和token,包括Safari中保存的。存储的加密密钥就是用户的密码。
如果SIP开启,木马在修改系统文件时就会发生错误,这回违反木马的运作逻辑,导致木马停止运行。
错误信息
SIP关闭后,Calisto可以运行的功能就变多了。首先,会执行上面的步骤,但木马不会给SIP阻断;然后,执行下面的步骤:
下面看一下恶意软件执行的相关机制:
加入到开始菜单是macOS的经典技术,是通过在/Library/LaunchAgents/文件夹下创建一个.plist文件:
通过下面的命令卸载DMG镜像:
为了扩展能力,Calisto会直接修改TCC.db文件来将自己加入到无障碍服务中,反病毒软件对这类行为是非常敏感的。但该方法的另一个优点是不需要用户交互就可以完成。
Calisto的一个重要特征就是获取用户系统的远程访问权限,为了获取权限,需要:
使用的命令如下:
虽然macOS中存在root用户,但是默认情况下是不开启的。系统重启后,Calisto会请求用户数据,但这需要输入真是root用户密码,而真是的root用户密码被Calisto修改了(root: aGNOStIC7890!!!
)。这也说明了木马的原始性。
最后,Calisto会尝试将所有的数据从.calisto文件夹上传到犯罪分子的服务器上。研究人员发现,该服务器已经下线了:
恶意软件连接的C2服务器
通过对Calisto静态分析发现了一些尚未使用的功能:
加载kernel扩展
处理用户目录
自毁
从概念上讲,Calisto后门聚合了一系列的Backdoor.OSX.Proton家族成员:
Proton恶意软件家族所有已知成员都在2017年被发现。而Calisto木马是2016年检测到的,因此可以假设这两个木马是同一作者,Calisto也可能是Backdoor.OSX.Proton的第一版本甚至原型系统。
为了防止Calisto、Proton和类似软件,应该:
DMG image: d7ac1b8113c94567be4a26d214964119
Mach-O executable: 2f38b201f6b368d587323a1bec516e5d