概述
"SideWinder(响尾蛇)"APT组织被认为是一个活跃于南亚地区的APT攻击组织,该组织的主要攻击目标是军事,国防等行业。针对的国家包括巴基斯坦、阿富汗、中国、孟加拉、尼泊尔等国家。该组织最早在卡巴斯基在2018年的第一季度报告中被提及,卡巴斯基声称该组织从2012年就开始活跃,但是关于该组织的技术细节没有公开。值得一提的是,卡巴斯基此后再也没有涉及该组织的相关报告。一些安全厂商根据卡巴斯基的季度报告提到的内容将一些类似的攻击归因于"SideWinder(响尾蛇)"APT组织。
从2019年开始,多家安全厂商发布了多篇关于"SideWinder(响尾蛇)"APT组织的报告。这些报告中提到的攻击行为都有明显的相似之处,使用的恶意软件特征都是相同的。"SideWinder(响尾蛇)"APT组织的攻击一直到现在都是活跃的,它的攻击工具也是不断的改进。我们在分析一些列的针对印度的攻击时,发现了和"SideWinder(响尾蛇)"APT组织的技术有相同之处。我们对“"SideWinder(响尾蛇)"APT组织做了深入的分析,于是就有了这篇文章。
"SideWinder(响尾蛇)"APT组织相关报告
2018年4月,卡巴斯基发布了一篇名为“APT Trends report Q1 2018“的季度报告。在报告中提到了一个名为“Sidewinder”的APT组织,该组织主要针对的目标是巴基斯坦的军事部门,从2012年就开始活跃。该组织使用了自己独有的知名漏洞的利用方法(例如CVE-2017-11882),在漏洞利用执行成功后释放一个powershell的payload。卡巴斯基声称拥有较少的证据证明这些恶意软件属于一个印度的公司。卡巴斯基没有披露该组织的详细细节。
2018年5月23日,腾讯御见威胁情报中心发布了一篇名为“SideWinder“响尾蛇”APT组织(T-APT-04):针对南亚的定向攻击威胁"的报告。这篇报告描述“Sidewinder”的APT组织攻击的细节:(1)使用CVE-2017-11882漏洞,(2)下载Final.hta文件并执行powershell命令。(3)释放RAT文件并执行。
2019年2月15日,巴基斯坦政府发布了一篇名为:Advisory - Prevention Against Cyber Espionage (Advisory No.3)的公告。在公告里提到新发现一个恶意软件,该恶意软件主要是通过邮件传播。邮件中包含看起来正常的新闻内容同时包含了一个可以下载一个ZIP文件的链接。ZIP文件中包含一个LNK文件,点击运行后会下载HTA文件,然后释放credwiz.exe,duser.dll,bd.hta文件。公告中并没有提及该恶意软件的名字以及攻击者。
2019年2月20日,巴基斯坦政府发布了一篇名为“Advisory - Prevention Against Cyber Espionage (Advisory No.4)"的公告。该公告中提到恶意软件和2月15日的公告中的攻击手法一样,C2有变化。
2019年02月26日,腾讯御见威胁情报中心发布报告:“响尾蛇(SideWinder)APT组织针对南亚的攻击活动披露”。这个报告中提到的恶意软件和巴基斯坦政府的公告中的一样。
2019年03月1日,巴基斯坦政府部门发布公告Advisory - Prevention against Cyber Espionage (Advisory No. 8)。在该公告中提到了一个利用CVE-2017-11882漏洞的攻击,后续的流程和腾讯提到的“Sidewinder”的APT组织一样。
2019年05月08日,安天发布一篇名为“响尾蛇APT组织针对巴基斯坦的定向攻击事件分析”。在报告中安天详细的披露了攻击的细节。
2019年8月30日,安恒发布了“响尾蛇(SIDEWINDER)APT组织针对驻华大使馆的攻击披露"的报告。该报告提到了“Sidewinder”APT组织使用了新的攻击技术。
2019年09月06日,瑞星发布了名为“境外APT 组织“响尾蛇”对我国发起攻击事件报告” 的报告。
2019年10月18日,瑞星发布了名为“ 境外APT组织“响尾蛇”再次 对我国发起攻击事件报告"的报告。
2019年10月29日,瑞星发布了名为“APT组织“响尾蛇”对巴基斯坦攻击事件报告"报告。
2019年11月11日,巴基斯坦政府发布了Prevention Against Indian APT Group Sidewinder (Advisory No. 22)的公告。在这个公告中首次称“a suspected APT group from India“从2019年2月份就开始攻击巴基斯坦的军事,政府部门。
2020年01月01日,Gcow安全团队发布了报告"游荡于中巴两国的魅影——响尾蛇(SideWinder)”报告。
2020年04月14日,腾讯安全威胁情报中心发布了一篇名为“响尾蛇(SideWinder)APT组织使用新冠疫情为诱饵的攻击活动分析”报告。
2020年04月14日,巴基斯坦的政府部门发布了公告:“Prevention Against Indian APT Group- RattleSnake (Advisory No.5)” 。公告中提到的样本和腾讯在同日发布的报告一样。
2020年05月28日,奇安信威胁情报中心发布报告:“近期响尾蛇APT组织针对周边国家和地区的攻击活动分析”。
2020年07月13日,Gcow安全团队发布报告"蛇从暗黑中袭来——响尾蛇(SideWinder) APT组织2020年上半年活动总结报告"
2020年12月09日,趋势科技发布了报告“SideWinder Uses South Asian Issues for Spear Phishing, Mobile Attacks",这篇报告中提到SideWinder APT 组织针对尼泊尔政府发起攻击。
2021年6月8日,奇安信情报中心发布了报告“SideWinder武器库更新:利用外交政策针对巴基斯坦的攻击活动分析”。在这篇报告中,“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
"SideWinder(响尾蛇)"APT组织在初始化攻击时时,会向目标发送一个钓鱼邮件。邮件中包含一个可以下载ZIP文件的链接。下载下来的ZIP文件通常包含一个LNK文件或者DOC文档。点击这些文件后会下载一个HTA文件,HTA文件会在特定目录释放一个Duser.dll文件。接着将系统文件credwiz.exe拷贝到该目录,为credwiz.exe添加一个自启动项。然后运行credwiz.exe,credwiz.exe会加载Duser.dll。Duser.dll通常是不包含恶意代码,它会进一步的加载执行其他恶意代码。目前我们观察到"SideWinder(响尾蛇)"APT组织使用的攻击方法大致分为三种:
var ec = 'preBotHta' 声明了要调用的的类。so字符串解码后是一个经过序列化的DOTNET模块,它的内部定义了一个preBotHta类。调用过程如下:
将DOTNET模块拖到dnSpy中可以看到preBotHta的定义如下:
preBotHta类主要功能在函数work中实现,这个函数的定义如下:
work函数首先使用WMI查询当前系统安全中心注册的杀毒软件的名字,如果杀软的名字不是"360"、"avast"、"avg",就会将杀软的名字提交给avUrl指向的链接。后续的代码是在一个异常处理块中运行,当代码执行失败时,异常处理过程也会向avUrl指向的链接提交当前系统中杀毒软件的名字。接下来执行如下操作:
在注册表HKEYCURRENTUSERSoftwareMicrosoftWindowsCurrentVersionRun 下添加一个项,以便实现开机启动。文件路径是%ProgramData%drvrsrvc2credwiz.exe。
将系统目录下的credwiz.exe拷贝到%ProgramData%drvrsrvc2credwiz.exe。
解码dllBase64并且使用gzip解压缩解码后的数据,搜索解压后的数据中特殊标志并使用传进来的参数“url”进行替换。然后将修改的数据写入到%ProgramData%drvrsrvc2Duser.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
这一种攻击方法是在邮件附带一个压缩过的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
这种类型攻击方法通常是向受害者发送一个包含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文件中的函数和变量名字进行混淆。一个典型的例子如下:
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为例,混淆前和混淆后对比如下:
前后对比可以发现,代码基本逻辑没有变化,但是一些函数名和变量的名字被替换了。这样一来,代码反编译后的可读性就很差了。
一些有意思的发现
"SideWinder(响尾蛇)"APT组织使用的C&C server 的域名通常包含"CDN",比如:s3-cdn[.]net、cdn-load[.]net、cdn-dl[.]cn、cdn-dl[.]cn。
我们对SideWinder(响尾蛇)"APT组织使用的域名的子域做了统计,发现了很多有意思的地方:
域名 |
子域 |
d-dns[.]co |
nadra[.]gov.pk.d-dns.co |
s3-cdn[.]net |
visa[.]s3-cdn.net www-coas-pk[.]s3-cdn.net coas-pk[.]s3-cdn.net |
cdn-load[.]net |
pmo[.]cdn-load.net |
cdn-dl[.]cn |
nadra-moi[.]cdn-dl.cn moi-nadra[.]cdn-dl.cn ministry-interior-gov-pk[.]cdn-dl.cn mopa-bdgov[.]cdn-dl.cn |
cdn-in[.]net |
www[.]punjabpolice.gov.pk .standingoperatingprocedureforemergencythreat .cdn-in.net punjabpolice[.]gov.pk .standingoperatingprocedureforemergencythreat .cdn-in.net |
ap1-port[.]net |
www[.]paknavy.gov.pk.ap1-port.net |
asp-bin[.]net |
paknavy[.]gov.pk.asp-bin.net |
d01fa[.]net |
hsrc-gov-pk[.]d01fa.net |
nrots[.]net |
csd-gov-pk[.]nrots.net |
sd1-bin[.]net |
www-csc-gov[.]sd1-bin.net |
chrom3[.]net |
pakbj[.]chrom3.net |
cdn-edu[.]net |
myanmarembassy[.]cdn-edu.net pk[.]cdn-edu.net |
Filesrvr[.]net |
nepalarmy[.]filesrvr.net mfa[.]filesrvr.net mfa[.]filesrvr.net mfa].]filesrvr.net mfa[.]filesrvr.net |
gov-pok[.]net |
mfada-gov-af-islamabad[.]gov-pok.net mofa-wireless-pk[.]gov-pok.net mofa[.]gov-pok.net theguardian-pk-protest-against-imran-khan[.]gov-pok.net moma[.]gov-pok.net |
cdn-pak[.]net |
mofa[.]cdn-pak.net embassy[.]cdn-pak.net mail-mofa-gov[.]cdn-pak.net fmprc[.]cdn-pak.net netmailmofagovpk[.]cdn-pak.net pakbj[.]cdn-pak.net |
有的子域被用作了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",当然也有一些例外。其主要是针对政府、国防和军工行业感兴趣,涉及的国家大多是在南亚。虽然很多安全厂商通常是根据地缘政治来判断该组织来自印度,但是目前没有公开的报告提供确凿证据。