概述
在今年的WWDC 2020召开后,是时候让我们来关注一下macOS恶意软件的发展情况了。就在本次开发者大会之前,Intego的研究人员发表了关于新型macOS恶意软件的研究报告,他们发现恶意软件正在利用Google搜索传递给不知情的受害者。根据研究人员提供的详细信息,我们认为这些与此前发现的基于脚本的恶意软件极为相似。但是,在这些新的样本之中带有一些值得关注的特征,而Intego没有在他们的文章中详细说明,我们将重点研究这部分特征。
我们此次分析的恶意软件看上去像是VindInstaller.B广告恶意软件的Dropper,它采用了一种渐趋常见的技术,使用Shell脚本来安装已知恶意软件,从而逃避传统的反病毒软件以及基于签名的安全解决方案的检测。
使用特殊威胁指标的恶意Shell脚本
根据此前的研究表明,这一恶意软件时通过包含Shell脚本的DMG磁盘映像实现传播的,该脚本中包含压缩后的应用程序捆绑包。
在检查磁盘映像后,发现它不包含应用程序捆绑包,取而代之的是使用Adobe Flash图标的Shell脚本。
在文本编辑器中打开flashinstaller文件,并查看其中的内容。
在这里,可以重点关注其中的Shell脚本命令,就可以了解该安装程序的工作原理。
正如我们所指出的那样,mktemp正被广泛用于基于脚本的macOS恶意软件中,以创建随机命名的路径,从而帮助恶意软件逃避简单的检测方式。请注意,在这个示例中使用了-t参数,后接字符x。
这样就为防御者和检测算法提供了一个很好的线索,因为这意味着恶意软件始终会在Darwin_User_Temp_Dir中创建一个带有前缀x和随机字符串后缀的临时文件夹。其中,Darwin_User_Temp_Dir文件夹也可以通过$TMPDIR环境变量来访问。
第5行使用了nohup实用程序,这是另一个对于macOS恶意软件作者很有帮助的工具,可以用于保证调试进程不会受到挂起的影响。但是,在从DMG这样的不可写磁盘调用nohup时,还会产生一个副作用,即会将日志文件保留在用户的HOME目录下,文件名为nohup.out。
尽管nohup.out文件的存在是完全正常的,但是对于防御者来说,如果发现该文件突然出现或意外出现,就可以将其作为恶意软件的一种潜在指标。接下来,就可以进而检查$TMPDIR/x.
解压缩嵌入的Installer.app
脚本的第3行可能是最有趣的。这已经不是我们第一次看到在此类安装程序脚本中使用POSIX内置的LINENO变量,但在这里我们第一次接触到了funzip实用程序的使用。
LINENO+4的代码仅仅是将引用移动到脚本的第7行(当前行+4),即嵌入式和压缩ZIP文件的开头,并将该嵌入式代码通过管道传递到funzip实用程序中。
在funzip的官方手册中还指出,funzip在与辅助压缩程序(例如tar(1))结合使用时比较有效。
而这也正是恶意软件使用的方法:
tail +$((LINENO+4)) $0 | funzip -9D956F55-1964-48A9-8DDE-7F7618E1D3D1 | tar -C $TEMP_DIR -p -xf –
生成的解压缩ZIP文件会在前面描述过的临时目录中生成一个应用程序捆绑包,并将其描述性地命名为“Installer.app”。
解压缩后的应用程序:InstallVibes捆绑包安装程序
我们可以看到,这个恶意软件使用了如此之多的安装程序,但其作用是什么呢?此前的研究人员认为,该恶意软件实际上与Shlayer和Bundlore有关,并分析说其中隐藏的应用程序是Mac恶意软件或广告软件的下载工具。通过查看隐藏的应用程序plist,可以发现它实际上是著名的PPI(按安装次数付费)厂商InstallVibes的安装程序。
com.installvibes.Installer
InstallVibes在其网站(使用了不安全的HTTP)上声称,提供定制化安装程序服务,以优化下载和按安装次数付费软件。
在撰写本文时,我们可以在VirusTotal上找到两种Flashinstaller变种:
我们的安全产品客户端将这些磁盘映像识别为恶意,并会在写入时阻止或告警(取决于站点管理员设置的策略)。
扫描解压缩后的InstallVibes Installer.app捆绑包中的Mach-O可执行文件,我们确认它时一个已知的广告恶意软件安装程序,我们将其标记为VindInstaller.B。
变种1:VindInstaller分析
VindInstaller结合了广告恶意软件和按安装次数付费捆绑这二者的特征,通常会造成用户Mac上出现不需要的程序或应用(PUP或PUA)。恶意软件往往会通过欺骗性的市场营销手段,诱导用户接受或安装PUP或PUA,例如它们可能会伪装成一些受欢迎或者免费的程序。
但是,在安装步骤中,将会包含不进行通知或默认加入选项的步骤,这将导致在安装原本的应用程序时,也同时安装了其他不需要的应用程序。在某些情况下,甚至不需要用户的允许或默认,这些不需要的软件就会在后台静默下载。
在这种情况下,有许多安装程序都属于木马程序,它们提供(或假装提供)Flash Player播放器或更新,但其中包含一些与用户认为正在下载的应用程序截然不同的内容。
在安装恶意软件后,可能会出现影响正常使用的广告,从而为恶意软件开发者带来收入。实际安装的应用程序有可能是仿冒的劣质软件,也有可能是精简后的开源软件,通常会对用户的正常使用带来不良影响,并降低用户的生产力。
旧瓶装新酒:Vindinstaller演变史
实际上,VindInstaller并不是新的macOS恶意软件,它已经存在了几年之久。但本次我们分析的新版本,引入了一个新的Shell脚本,该脚本最初被Shlayer恶意软件使用,后来被Bundlore使用。最终,利用Shell脚本,将提高旧版本恶意软件成功安装的概率,并有效逃避一些反病毒软件和基于签名的安全解决方案。
从2013年开始,研究人员就陆续发现了至少三个VindInstaller的已知版本。其中的一个版本是针对Chrome、Firefox和Safari浏览器的注入/劫持程序,其中还包含一些其他功能,共同形成Genieo捆绑包安装程序。在攻击技术相对薄弱的时代,广告恶意软件的开发者还很少会加入例如混淆字符串或反分析技术之类的功能。
该恶意软件是在2013年的OSX 10.8 Mountain Lion操作系统上构建的。
令人惊讶的是,在这个已有7年历史之久的广告恶意软件样本中,InstallGenieo.dmg的嵌入式URL仍然有效,并且仍在提供两种Genieo恶意软件变种(其中一个潜伏在Genieo卸载程序中),我们分别将其命名为OSX.Genieo.A和OSX.Genieo.E。
变种2:VindInstaller.B分析
另一方面,由恶意软件脚本投放的恶意软件VindInstaller.B将会收集受害者操作系统版本的详细信息,然后访问以下URL来检索恶意开发者需要下载并运行的内容(广告恶意软件或潜在有害软件):
hxxp://installer[.]installerapi[.]com/offers
172.67.197.161
目前,已经有多个VT引擎将上述URL标记为恶意。
二进制文件中,还包含其他威胁指标,用于恶意软件的更新和跟踪:
hxxp://installer[.]yougotupdated[.]com/updates/%@?offer=%@&vid=%@&cid=%@
hxxp://tracking[.]uzasignals[.]com/signals/%@/?element=%@&vid=%@
hxxp://tracker[.]installerapi[.]com/visit/meta?mid=%@
hxxp://tracker[.]installerapi[.]com/visit/meta?response=pipe
hxxp://installer[.]installerapi[.]com/offers/detections?vid=%@&response=json
hxxp://installer[.]installerapi[.]com/offers?response=json&os=Mac%%20OS%%20X&osv=%@&vid=%@%@
hxxp://installer[.]installerapi.com/offers/%@/%@
hxxp://tracker[.]installerapi[.]com/statistics/event?origin=installer&name=%@&attname=%@&attval=%@&vid=%@&mid=%@
尽管VindInstaller的Payload都不会进行混淆,但VindInstaller.B背后的恶意软件作者倾向于依靠其新的Shell脚本交付机制来对抗基于签名的检测和诸如VirusTotal的沙箱引擎。
变种3:VindInstaller.Gen分析
第三个变种VindInstaller.Gen在VirusTotal会被单独标记为“mdm.macLauncher”或“osxdl.Downloader”,这个变种会通过使用NSAppleScript类来实现各种功能,所以与变种1和变种2有所不同。恶意软件作者可以使用NSAppleScript类来获得AppleScript功能,而无需通过osascript实用程序对其进行调用,这样就可以逃避许多常见的检测方法。
尽管“mdm.macLauncher”和“osxdl.Downloader”都使用了NSAppleScript,但后者通过DandIThread类实现了更为广泛的使用。
例如,在在DandIThread类的runProcessAsAdministrator方法中,代码调用NSAppleScript的executeAndReturnError方法来运行do shell script调用,以尝试提升特权。
总结
诸如Shlayer和Bundlore这样的基于脚本的恶意软件安装程序已经在成熟的捆绑恶意软件和广告恶意软件发行者之间流行,因为它们易于调整,可以逃避基于签名的检测,包括Apple的Yara规则检测引擎XProtect。但幸运的是,基于行为的引擎在无需更新的情况下就可以识别这些脚本的恶意行为。实际上,此前研究中发现的所有样本,都可以被SentinelOne的macOS客户端立即检测到。
威胁指标
VindInstaller.A
58490b58afbb533bbcb28cb756e5f91fe0eeb765ca571ac97e9f7104a317562e
VindInstaller.B
flashInstaller.dmg
97ef25ad5ffaf69a74f8678665179b917007c51b5b69d968ffd9edbfdf986ba0
d49ee2850277170d6dc7ef5f218b0697683ffd7cc66bd1a55867c4d4de2ab2fb
嵌入到Installer.app的Mach-O
907c31b2da15aa14d06c6e828eef6ca627bd1af88655314548f747e5ed2f5697
05b9383b6af36e6bf232248bf9ff44e9120afcf76e50ac8aa28f09b3307f4186
VindInstaller.Gen
mdm.macLauncher
4f47a06190cbdaac457d86f77baa22313ce6b1d3939e0ff4fa3cadf5a680b6c9
709f633b12a335911ce213419c72062d05f538abdc412b659cdb10d4db9006ce
3af1c03214cd194b94c6fe0891de6c5201cc8d13d009c04ef383d67e1a750b2b
osxdl.Downloader
ee7db16ca9eac460b748957cd0a33548ef015e12f9f6fadcea30671204c3c4ba
URL/IP
hxxp://installer[.]yougotupdated.com
104.18.51.67
hxxp://tracker[.]installerapi.com
104.31.89.115
hxxp://tracker[.]installerapi.com/statistics/
104.31.88.115
hxxp://tracking[.]uzasignals.com
172.67.186.96
本文翻译自:https://www.sentinelone.com/blog/how-a-new-macos-malware-dropper-delivers-vindinstaller-adware/如若转载,请注明原文地址: