【网络攻击】"SideWinder(响尾蛇)"APT组织演变与技术细节

750 阅读8分钟

概述

"SideWinder(响尾蛇)"APT组织被认为是一个活跃于南亚地区的APT攻击组织,该组织的主要攻击目标是军事,国防等行业。针对的国家包括巴基斯坦,阿富汗,中国,孟加拉,尼泊尔等国家。该组织最早在卡巴斯基在2018年的第一季度报告中被提及,卡巴斯基声称该组织从2012年就开始活跃,但是关于该组织的技术细节没有公开。值得一提的是,卡巴斯基此后再也没有涉及该组织的相关报告。一些安全厂商根据卡巴斯基的季度报告提到的内容将一些类似的攻击归因于"SideWinder(响尾蛇)"APT组织。

“Sidewinder”APT组织的TTPs

"SideWinder(响尾蛇)"APT组织在初始化攻击时时,会向目标发送一个钓鱼邮件。邮件中包含一个可以下载ZIP文件的链接。下载下来的ZIP文件通常包含一个LNK文件或者DOC文档。点击这些文件后会下载一个HTA文件,HTA文件会在特定目录释放一个Duser.dll文件。接着将系统文件credwiz.exe拷贝到该目录,为credwiz.exe添加一个自启动项。然后运行credwiz.exe,credwiz.exe会加载Duser.dll。Duser.dll通常是不包含恶意代码,它会进一步的加载执行其他恶意代码。目前我们观察到"SideWinder(响尾蛇)"APT组织使用的攻击方法大致分为三种:

(1) 类型1

这种类型通常是通过邮件投递一个包含漏洞利用的文档。有的文档是DOCX文件,它利用CVE-2017-0199漏洞(其实是模版注入)下载一个RTF文件,RTF文件包含一个CVE-2017-11882的利用,漏洞触发后释放一个名字为fina.hta文件。有的是一个仅仅利用了CVE-2017-11882漏洞的RTF文件。

释放的HTA文件包含两个经过base64编码的字符串:

var ec = 'preBotHta' 声明了要调用的的类。so字符串解码后是一个经过序列化的DOTNET模块,它的内部定义了一个preBotHta类。调用过程如下:

将DOTNET模块拖到dnSpy中可以看到preBotHta的定义如下:

preBotHta类主要功能在函数work中实现,这个函数的定义如下:

work函数首先使用WMI查询当前系统安全中心注册的杀毒软件的名字,如果杀软的名字不是"360","avast","avg",就会将杀软的名字提交给avUrl指向的链接。后续的代码是在一个异常处理块中运行,当代码执行失败时,异常处理过程也会向avUrl指向的链接提交当前系统中杀毒软件的名字。接下来执行如下操作:

  • 在注册表HKEYCURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Run 下添加一个项,以便实现开机启动。文件路径是%ProgramData%\drvr\srvc2\credwiz.exe。
  • 将系统目录下的credwiz.exe拷贝到%ProgramData%\drvr\srvc2\credwiz.exe。
  • 解码dllBase64并且使用gzip解压缩解码后的数据,搜索解压后的数据中特殊标志并使用传进来的参数“url”进行替换。然后将修改的数据写入到%ProgramData%\drvr\srvc2\Duser.dll文件中。
  • credwiz.exe是一个系统文件,它会加载Duser.dll。这里使用的是 DLL Side-loading 方法来执行恶意代码。preBotHta类和Program类中的成员变量copyexe,hijackdllname,instfolder,instpath,program保存了配置信息。
  • Duser.dll 是一个C++开发的模块,它导出多个函数,但是都指向同一个函数。Duser.dll 执行后会定时的从preBotHta.work的第五个参数指定的URL下载javascript脚本,然后调用javascript的COM组件执行。javascript脚本主要是收集系统的信息,然后上传。

(2) 类型2

这一种攻击方法是在邮件附带一个压缩过的lnk文件,lnk文件伪装成文档。一个典型的lnk如下:

点击lnk文件后,会执行mshta.exe 从https[:]//pmad-fbr.cdn-top.net/images/5512EBB0/4611/1296/20f96e/7044cf2 下载一个HTA文件。这个HTA文件包含两个经过base64编码的字符串:

da通常是经过gzip压缩和base64编码的文档或者图片。so是一个经过序列化的DOTNOT模块,代码如下:

这个文件的原始名是LinkZip.dll,它只是一个简单的downloader。函数hta.pink的定义如下:

public void pink(string finalUrl, string avUrl, string doc, string documentName)

 一个对这个函数调用的例子如下:

  •  首先解码并解压doc字符串,然后写入到一个文件中,文件的名字取决于documentName。然后打开生成的文档,用来欺骗受害者。
  • 打开诱饵文档后,会向服务器提交当前系统中安装的杀软。
  • 接着从finalUrl中下载文件并保存在%temp%\bd.hta中,如果下载失败次数超过10次,会通过avUrl向C2服务器提交一个"File-not-Written"错误。如果下载成功会调用mshta.exe执行bd.hta。
  • bd.hta是一个HTA文件,它会调用preBotHta的work函数,然后拷贝credwiz.exe,释放Duser.dll。hta类的成员变量finalName,location保存了配置信息。Duser.dll 执行流程和类型1一样。

(3) 类型3

这种类型攻击方法通常是向受害者发送一个包含CVE-2017-11882漏洞利用的文档或者LNK文件,它们执行后释放或者下载执行逻辑相同的HTA文件。这些文件大多是经过混淆和简单的加密的,一个典型的例子如下

解密后的文件如下:

反序列化后并调用的模块代码定义如下:

StInstaller.Program.work函数定义如下:

public void Work(string dll22, string dll, string url = "")

 这个函数和preBotHta.work函数的执行流程有些相似,但是有些变化。目前我们观察到有两种类型:

  • 将write.exe拷贝到指定目录,然后在该目录释放propsys.dll,随机名字的临时文件、ite.exe.config。
  • 将rekeywiz.exe拷贝到指定目录,然后在该目录释放Duser.dll,随机名字的临时文件、ekeywiz.exe.config。

preBotHta.work使用base64算法解码相关字符串并使用gzip解压,修改数据中配置信息,然后生成propsys.dll或者Duser.dll。配置信息包括和C2通讯的地址和临时文件的名。propsys.dll或Duser.dll把这个临时文件加载到内并解密然后调用临时文件的start函数:

 

释放出来的临时文件原始名是SystemApp.dll,这个DLL的中的SystemApp.program.start函数会创建两个定时器,一个用于从C2服务器上获取配置更新信息,另一个用于定时上传收集到的信息。更新配置信息的部分代码如下:

 上传收集的信息的代码如下:

 

"SideWinder(响尾蛇)"APT组织新的变化

2020年以后,"SideWinder(响尾蛇)"APT组织主要是使用型3的攻击方法。类型1和类型2很少出现于公开的报告。类型3使用HTA大多经过简单的混淆和简单的加密,但是使用C#开发的DLL文件都没有混淆。将这些DLL文件解码后,使用dnSpy工具可以很轻松的分析它们。到了2021年有了变化,"SideWinder(响尾蛇)"APT组织开始对这些DLL文件中的函数和变量名字进行混淆。一个典型的例子如下:

image

App.dll相当于类型3中的hta.dll文件,但是如果看这个文件中的函数的名字就会发现差别很大。不少函数原始的名字已经被替换成一些随意组合的字符串。

work函数的定义如下:

public void Work(string EncapsulatedObjectNotifyIterator, string GetDynamicInterpreterObject, string RequestMutatorProgramData, string ProgramRestoreClassShare)

这个函数原本的定义如下:

public void pink(string finalUrl, string avUrl, string doc, string documentName)

以Decompress为例,混淆前和混淆后对比如下:

image

一些有意思的发现

"SideWinder(响尾蛇)"APT组织使用的C&C server 的域名通常包含"CDN",比如:s3-cdn[.]net、cdn-load[.]net、cdn-dl[.]cn、cdn-dl[.]cn。

我们对SideWinder(响尾蛇)"APT组织使用的域名的子域做了统计,发现了很多有意思的地方:

 

有的子域被用作了C&C server,有些则没有。多数情况下,子域会显示可能的攻击目标。几个比较典型的例子如下:

  • nadra[.]gov.pk.d-dns.co,巴基斯坦国家数据库和注册管理局 (NADRA)的官网是:nadra[.]gov.pk。
  • pakbj[.]chrom3.net,巴基斯坦驻北京大使馆的官网是:www[.]pakbj.org。
  • myanmarembassy[.]cdn-edu.net,"myanmarembassy"拆开是"myanmar embassy"意即缅甸大使馆。
  • nepalarmy[.]filesrvr.net,尼泊尔陆军的官网是:www[.]nepalarmy.mil.np。
  • myanmarembassy[.]cdn-edu.net,阿富汗外交部的网站是:www[.]mfa.gov.af。
  • fmprc[.]cdn-pak.net,中国外交部的官网是:www[.]fmprc.gov.cn

www[.]punjabpolice.gov.pk.standingoperatingprocedureforemergencythreat.cdn-in.net中有一个字符串,这个字符串拆开后是"standing operating procedure for emergency threat"。直译过来就是"紧急威胁的标准处理流程",就是通常说的"安全应急响应"。

theguardian-pk-protest-against-imran-khan.gov-pok.net也很有意思,在卫报的官网上可以找到一个标题为"Pakistan's united opposition protests against Imran Khan's rule"的新闻。

总结

从2018年到如今,"SideWinder(响尾蛇)"APT组织活跃了3年的时间。这三年的时间里,该组织不断地改进其攻击工具。该组织的C2一个典型的特点是使用的域名中通常包含“CDN”或者"gov.pk",当然也有一些例外。其主要是针对政府、国防和军工行业感兴趣,涉及的国家大多是在南亚。虽然很多安全厂商通常是根据地缘政治来判断该组织来自印度,但是目前没有公开的报告提供确凿证据。

 

最后

我整理了网络安全相关的学习资料,有需要的可以call me

领取