快捷搜索:  网络  渗透  后门  CVE  扫描  木马  黑客  as

海莲花APT构造使用最新MacOS后门程序发动攻击

海莲花APT构造(又名APT 32,APT-C-00,SeaLotus以及Cobalt Kitty)是一个高度构造化的、专业化的境外黑客构造,该APT构造首要针对人权构造,媒体,研究机构以及海事建筑公司等进行高级持续性攻击。亚信安全多年来始终持续追踪海莲花构造,近日,我们发现该构造使用最新的MacOS后门程序,对装有Perl程序的Mac体系进行攻击,亚信安全截获了该后门程序,并将其命名为OSX_OCEANLOTUS.D。

OSX_OCEANLOTUS.D手艺阐发

MacOS后门程序通过带有恶意word文档的电子邮件传播,Word文档原始文件名为“2018-PHIẾU  GHI DANH  THAM  DỰ TĨNH  HỘI HMDC 2018.doc”, 翻译成中文就是“2018年HMDC大会登记表”, 而HMDC是一个在越南宣扬民族自力以及民主的构造。

image002.png

恶意文档运行时的截图

当收件人关上该文档时,该后门程序会建议收件人启用宏。而这个恶意宏则采用了十进制ASCII代码逐一字符地进行混淆,以逃避种种杀毒软件的检测。

image003.png

文档混淆后的代码片段

去除混淆后,我们可以看到有用负载是用Perl编程说话编写的。它会从Word文档中提取theme0.xml文件。theme0.xml是一个带有0xFEEDFACE署名的Mach-O32位可执行文件,其也是该后门程序终极有用载荷。theme0.xml在执行之前会先解压到/ tmp / system / word / theme / syslogd目录。

image004.jpg

去除混淆后的Perl有用载荷

Dropper阐发

Dropper用于将后门装置到受感染体系中并确立其持久性攻击机制。

image005.png

Dropper的首要功能

 Dropper的所有字符串和后门均使用硬编码的RSA256密钥进行加密。其中,有两种情势的加密字符串:RSA256加密的字符串,和自定义的base64编码以及RSA256加密的字符串。

image006.png

硬编码的RSA256密钥会显示前20个字符

 Dropper会使用setStartup()要领来判定其是否以root身份运行。并以此做为依据,使用GET_PROCESSPATH以及GET_PROCESSNAME要领对后门装置的路径以及文件名进行解密:

root用户

路径:/Library/CoreMediaIO/Plug-Ins/FCP-DAL/iOSScreenCapture.plugin/Contents/Resources/

进程名:screenassistantd

普通用户

路径:〜/ Library /Spelling /

进程名:spellagentd

随后,它使用Loader ::installLoader要领,读取硬编码的64位Mach-O可执行文件(magic value 0xFEEDFACF),并写入先前确定的路径以及文件。

image007.png

Dropper装置后门,将其属性配置为“hidden”,并配置随机文件的日期以及时间

当Dropper装置后门时,其会将属性配置为“hidden”,并使用touch命令将文件日期以及时间配置为随机值:touch -t YYMMDDMM“/path / filename”> / dev / null。与此同时,走访权限被更改成0x1ed = 755,至关于u= rwx,go = rx。

image008.png

Mach-O 可执行文件(64位)的magic value 0xFEEDFACF

 用GET_LAUNCHNAME以及GET_LABELNAME要领为root用户(com.apple.screen.assistantd.plist)以及普通用户(com.apple.spell.agent.plist)返归属性列表“ .plist ” 的硬编码名称。以后,其会在/Library / LaunchDaemons /或〜/ Library /LaunchAgents /  文件夹中创建持久性文件。当操作体系启动时,RunAtLoad用来运行守护进程,而KeepAlive使进程无期限地运行。该持久性文件被配置为掩躲属性,文件的时间以及日期也是随机生成的。

image009.jpg

具有持久性配置的属性列表

launchctlload /Library/LaunchDaemons/filename.plist> / dev / nul或launchctl load〜/ Library /LaunchAgents / filename.plist> / dev / nul命令使得操作体系在登录时启动生成的后门文件,随后Dropper将会删除自身。

后门阐发

后门包含两个首要函数infoClient以及runHandle。infoClient负责将网络到的操作体系信息发送给C&C服务器(服务器本身是恶意的),并接收来自C&C服务器的返归信息,而runHandle负责后门功能。

image010.png

后门的首要功能

 infoClient在HandlePP类中加添的变量:

image011.png

HandlePP类的变量列表

 clientID是从环境变量衍生的MD5哈希,而strClientID是clientID的十六进制表示。下列所有字符串均通过AES256以及base64编码加密。HandlePP :: getClientID要领使用的是下面的环境变量:

image012.jpg

序列号

image013.jpg

硬件UUID

image014.png

MAC地址

image015.png

随机生成的UUID

 

对于初始信息包,后门还网络下列信息:

image016.png

操作体系版本

运行getpwuid -> pw_name,scutil –get ComputerName以及uname -m将分别提供下列返归值:

Mac OSX 10.12.

System Administrator

<owner’s name>’s iMac

x86_64

所有这些数据在发送到C&C服务器之前都被加密。具体过程以下所述: 

1. 扰码 

类解析器的要领有多种,每一个变量类型的解析要领各不同,譬如Parser::inBytes, Parser::inByte, Parser::inString和Parser::inInt.。

image017.png

Parser:: inByte要领

要是clientID等于下列字节序列B4 B1 47 BC 52 28 2873 1F 1A 01 6B FA 72 C0 73,那么这个扰码的版本就是使用第三个参数(0×10)计算的,其被当做一个DWORD来处理,每一4个字节都与它进行异或,以下例所示。   

image018.png

image019.png

Parser :: inByte要领

当扰码一个字节时,扰码器起首确定字节值是奇数照样偶数。要是该值为奇数,则将该字节以及一个随机生成的字节一块儿添加到数组中。在偶数值的情形下,起首添加随机生成的字节,然后添加该字节。在上面的例子中,第三个参数是’1′= 0×31,这是一个奇数。这象征着它将字节’1′以及一个随机生成的字节添加到终极的扰码阵列。

image020.jpg

Parser:: inString要领

扰码一个字符串时,扰码器产生一个5字节长的序列。起首,黑客工具,它产生一个随机字节,随后是三个零字节,一个随机字节,最后是字符串长度的字节。假设我们想要混淆字符串’Mac OSX 10.12′。它的长度是13 = 0x0d,两个随机字节是0xf3以及0×92。最后的5字节序列看起来像F300 00 00 92 0D,然后原始字符串与5字节序列异或。

image021.png

扰码Mac OSX 10.12

1.  加密

加密的字节序列被传递到Packet ::Packet类的组织函数中,该类创建随机AES256密钥并使用此密钥加密缓冲区。

2. 编码加密密钥

为了使C&C服务器解密以及加密数据,随机生成的AES256密钥必须与加密数据一块儿包含在数据包中。然而,这个密钥也是通过异或操作XOR 0×13进行扰码的,随后对每一个字节应用ROL 6操作。

image022.png

在输出数据包中扰码AES256密钥的函数

 扰码以及加密过程中的一些屏幕截图:


image023.png

灰色部分的字节表示已加密的计算机信息
image024.png

随机生成AES256密钥

image025.png

扰码的AES256密钥(0xC1异或0×13 = 0xD2,0xD2ROL 6 = 0xB4)等)

image026.jpg

使用AES256密钥加密的计算机信息

image027.jpg

发送到C&C服务器的终极有用载荷的屏幕截图,扰码的AES256密钥标记为绿色,而加密的计算机信息标记为红色,其他是随机生成的字节

当后门收到来自C&C服务器的响应时,终极有用载荷需要通过解密以及扰码类似的方式进行解码。 Packet:: getData解密接收到的有用载荷,而Converter::outString负责对效果进行解扰。

从C&C服务器收到的数据包含下列信息:

HandlePP :: urlRequest(/appleauth/static/cssj/N252394295/widget/auth/app.css)

HandlePP :: keyDecrypt

STRINGDATA :: BROWSER_SESSION_ID(m_pixel_ratio)

StringData是::RESOURCE_ID

这些数据稍后将在C&C通讯中使用,以下面的Wireshark屏幕截图所示:

image028.jpg

交换体系数据包信息后与C&C服务器的通讯

同时,该后门程序的runHandle要领将使用下列后门命令(每一个命令有一个字节长的代码并由Packet:: getCo妹妹and提取)调用requestServer要领:

image029.png

getCo妹妹and 要领

以下两个示例都创建了一个线程,每一个线程负责下载以及执行文件或在终端中运行命令行程序:

image030.jpg

用于下载以及执行和在终端中运行命令的命令

image031.jpg

用于上传以及下载文件的命令

image032.jpg

支持的命令及其各自的代码

*

您可能还会对下面的文章感兴趣: