过去十年该组织展开了多次鱼叉式网络钓鱼活动窃取信息,为了配合这些行动,攻击者使用了各种编程语言(如C++、C#、Go、Python和 VBScript)开发载荷,并且也使用了各种母体文件(如漏洞文档、宏文件、LNK文件)来释放载荷。近期,我们捕获到了SideWinder针对不丹、缅甸、尼泊尔的攻击样本,这类样本主要是通过宏文档释放Nim语言编译的攻击载荷,这类载荷在响尾蛇历史攻击者中很少见。鉴于此情况,本文重点披露响尾蛇组织使用的这类组件。
近期我们获取多个响尾蛇攻击文件,但是功能都大同小异,现以其中一个母体文件分析,该文件的基本信息如下:
MD5 |
7bea8ea83d5b4fe5985172dbb4fa1468 |
文件名称 |
GlobalLeadershipProgram1.docm |
文件大小 |
526.39 KB (539026字节) |
文件类型 |
docx |
样本由不丹地区上传,打开时以“不丹王国政府皇家公务员委员会”为主题展现诱饵。
样本实际为携带宏的恶意文档,诱导受害者启用宏,并且宏被加密,受害者查看不到宏信息。
宏一旦执行,便在系统启动目录Startup下创建OCu3HBg7gyI9aUaB.vbs,该脚本执行时首先会sleep很久,并且判断主机能否连接google.com,只有在成功连通时才会执行%AppData%Local8lGghf8kIPIuu3cM.bat(该文件后续会释放)。
接着读取UserForm1.TextBox1.Text中的数据并在%LocalAppData%Microsoft下释放svchost.zip。
最后在%AppData%Loca下释放8lGghf8kIPIuu3cM.bat,该批处理将svchost.zip中svchost.exe解压到当前目录,随后删除相关文件并创建计划任务执行svchost.exe。值得一提的是,样本在启用宏时仅是释放相关文件,并没有立即执行后续恶意行为,只有在下次自启时才会触发后续的解压执行等操作。
解压后的svchost.exe样本基本信息如下:
MD5 |
92612dc223e8f0656512cd882d66f78b |
文件名称 |
svchost.exe |
文件大小 |
554 KB (568021 字节) |
文件类型 |
exe |
编译时间 |
2023-10-26 13:20:38 UTC |
svchost.exe是一个由Nim编译的远控工具,这也是我们在日常狩猎中首次披露Sidewinder使用Nim编译的载荷。由于Nim语言具有高效性能和简洁的语法,同时提供了丰富的标准库和工具,此外还有一个独到之处在于它可以编译成其他编程语言代码(主要是C语言和JavaScript),因此该类型编译语言也逐渐被APT组织使用,后续此类载荷可能会将越来越多。
下图展示的是svchost.exe样本使用的Nim库和编译器。
目前该样本主要功能是执行shell命令,并将结果进行上传。样本运行后首先会初始化一个进程名列表,该列表收集了几十款常见的安全工具名。
然后在临时目录下创建名为“03184UY98KSJOIKLNHFOSFSDCSD.txt”的文件,并休息30秒,在休息的时候每10毫秒往文件中写入“HKHHKJHK98y9bg987GIJHIUGI989kjljY09HSmk”字符串。这一步主要目的是延迟沙箱分析。
接着通过“cmd /c tasklist”命令获取进程列表与之前初始化的安全工具列表进行对比,若存在相关工具,则退出进程。
然后再进行CPU时间差检测,在获取两次CPU时间中间进行一次10秒休眠,然后判断时间差是否小于10秒,如果小于10秒说明处在沙箱环境,则退出进程,因为部分沙箱产品会对Sleep进行劫持,让程序休眠失效,从而对抗程序设定的延迟沙箱检测的能力。
并根据指令执行相关命令,程序硬编码了4个C2域名。
通过上述环境检测之后,与C2进行通讯,首先通过“cmd /c hostname”命令获取主机名,并对主机名进行加密,然后依次拼接C2,加密之后的hostname,和字符串“.php”,发送http请求。最后通过接收response报文获取下发的命令并进行执行。
本次载荷使用的加密算法过程如下,首先将获取到的hostname进行一次base64编码,然后在依次和“B”、“T”、“A”三个字符进行异或运算,最后将得到的数据再次进行Base64编码。
最后将关键信息按照如下格式进行拼接,[C2]/id=[encode(hostname)]/session=[session number]?/value=[encode(data)]/return=True,并发送http请求将结果返回给C2服务器。
在对样本的C2梳理分析中我们关联到该组织针对缅甸地区的攻击活动,样本于2022年11月16从缅甸地区上传,可见此类攻击行动至少从去年11月就已经开始,由于该文档样本被密码加密,无法打开,也导致至今VT上的各家引擎检测都未报毒,样本信息如下。
MD5 |
04e9ce276b3cd75fc2b20b9b33080f7e |
文件名称 |
Seniority_List.docm |
文件大小 |
346.50 KB (354816字节) |
文件类型 |
docx |
利用密码“20221114PROM”进行解密打开,启用宏后会弹出错误框,让用户误以为文档错误,以此来迷惑受害者。但实际的恶意宏代码已得到执行,执行流程和前面分析如出一辙,并且释放的Nim语言恶意组件也基本一致,不再详细叙述。
通过对样本整体分析,我们从多个维度发现本次攻击行动与响尾蛇组织之前使用的攻击手段相符合。
-
样本侧
1.本次捕获的样本和今年Group-IB公司发布的分析报告[1]中的部分样本攻击流程很相似,重点体现在宏利用流程以及变量命令方式上,文件释放都是采用在窗体中插入以“-”符分割的数据并保存为zip文件的方法,写文件时所用的文件号也相同,而且也都是采用com组件进行解压。
此外之前有些样本也采用了加密的方式进行投递,解密打开后也是利用宏弹出错误框来迷惑受害者,并且错误框内容也相似,该利用方式和本次发现的部分样本一致。
2.本次样本释放的vbs和bat脚本及利用链和响尾蛇组织以前的攻击方式十分类似,都是在StartUp启动目录下释放vbs,等待开启自启,该vbs执行时首先延迟300秒接着加载“%LOCALAPPDATA%下的bat,该bat再启动同目录下的其他批处理文件从而完成整个攻击链。涉及的部分脚本如下所示。
-
通信侧
1.本次释放的远控程序和之前响尾蛇样本采用了相同的通信格式,具体格式如下,都包含id,session,value,return=True等关键字段。
|
2.本次远控工具的数据加密方式与之前样本也采用了相同的加密流程,先base64,接着依次与数字进行3次异或加密,最后再base64,具体流程:
-
C2侧
根据响尾蛇组织过去使用的C2,存在一些典型特点,该C2 server通常使用攻击目标相关的机构官方域名的关键字符串来构造域名,域名中通常包含“[mod/mof]*gov*”,“mail*[navy/mod/mof]*”字符串,用来伪造政府相关单位域名。本次攻击者中发现部分域名也具备上述特点,部分域名如下表所示:
C2域名 |
官方域名 |
dns-mofgovbt.ddns.net |
www.mof.gov.bt(不丹财政部) |
mail-mofgovbt.hopto.org |
www.mof.gov.bt(不丹财政部) |
dof-govmm.sytes.net |
www.dof.gov.mm(缅甸渔业部) |
除上述特点外,响尾蛇组织还善于使用藏字符、动态域名等方式构造C2,本次攻击者发现的部分C2也存在此特点,如microsoftupdte.redirectme.net域名中updte少了一个字符,mail-mohs.servehttp.com域名中带有攻击者之前多次使用的servehttp.com动态域名。直接访问此次攻击者使用的C2地址,部分会直接返回404 Not Found,这个跟以前的C2网络特征也有相同之处。另外,本次掌握的部分C2被外部情报也归为了响尾蛇组织。
最后结合样本上传地址为不丹、缅甸等国以及历史上响尾蛇组织多次针对这些国家进行攻击,符合攻击者目标。因此完全有理由将其这类攻击归属于响尾蛇组织。
APT-C-24响尾蛇组织近年来攻击活动频繁,主要是针对政府机构、国防单位以及能源行业感兴趣,涉及的国家众多,以窃取信息为主,本次发现的样本主要是针对不丹、缅甸等国,攻击者使用恶意宏文档释放Nim语言编译的攻击载荷,这类手法在之前响尾蛇攻击活动中并不常见,这也说明该组织其攻击武器一直在更新迭代,针对目标不遗余力。此外,该组织擅长使用Office漏洞、宏样本、LNK文件、HTA脚本、白加黑、.Net木马等文件来实施攻击,因此提醒用户针对各类未知文件都不要轻易运行,要保持足够的警惕。
360高级威胁研究院
原文始发于微信公众号(360威胁情报中心):APT-C-24(SideWinder)组织新威胁:基于Nim的载荷浮出水面