1.概述
2020年1月25日安天安全研究与应急处理中心(安天CERT)发布报告《折纸行动:针对南亚多国军政机构的网络攻击》[1]其中披露了2017年以来针对南亚国家政府、军事、国防等实体的规模性定向网络攻击,由于其攻击资源和手段的相对独立,可以猜测是一个独立运行的攻击团队,安天CERT给与了一个新的高级威胁组织命名——“幼象”。
幼象组织疑似来源于印度,其自被曝光揭露以来,攻击投放行为、和攻陷目标数量依然快速增长。相比于早期未成章法的探索尝试,如今该组织已形成了几套较固定的工具组合模式,可供在新攻击节点中部署使用,且攻击目标也从初期仅为南亚地区开始指向我国境内。这与2013年后“白象”组织攻击目标重点逐渐从南亚地区迁移至中国有类似之处。
总结幼象组织长久以来攻击向量的首次出现时间和累计样本数量如下图,其中除了自解压诱饵鲜有再现以外,大多手法如今依然保持活跃更新。
图1-1 幼象组织不同攻击技术首次被发现的时间轴和对应攻击的目标国家
近5年以来,该组织典型的历史攻击活动有如:
2017年中开始,向巴基斯坦、斯里兰卡等国家的军队、政府机构投递针对性的自解压攻击文件。
2017年底开始,向巴基斯坦、尼泊尔等国家的教育、政府机构投递Office文档攻击文件。
2018年底开始,向巴基斯坦等国家的军队投递针对性的隔离网渗透木马。
2019年中开始,向南亚众多国家发起针对性的大规模钓鱼网站攻击。
2019年底开始,向巴基斯坦、斯里兰卡等国家的军队投递LNK类攻击文件。
2020年底开始,向尼泊尔等国家政治相关目标投递恶意的安卓木马。
2021年中旬,向中国的相关机构进行情报窃取的定向攻击活动。
本报告对2020年至今发现的幼象组织攻击活动、手法和工具做一定程度的总结,整体活动的特征可简要总结如下表:
表1-1 整体攻击活动特征总结
2. 攻击活动分析
自2020年1月安天发布折纸行动报告[1]曝光该组织以来,幼象组织的新旧攻击节点和样本依然能被不断监测到,其中包括多起仿冒尼泊尔军队、警察、政府官方邮件系统的钓鱼网站攻击,和后续出现的利用盗取邮箱发送邮件投递HTA下载器、恶意宏文档、后门木马以及窃密组件的攻击活动。
通过安天赛博超脑威胁情报分析子系统、样本分析子系统扩线分析,我们对相关攻击载荷的进行了全面的关联,幼象组织在2020年年初利用指向恶意HTA脚本URL的快捷方式文件对斯里兰卡、马尔代夫进行攻击。安天发现幼象组织不止入侵攻击传统主机节点,同样入侵攻击智能终端节点,在2020年8月份,其将恶意程序、伪装成印度-尼泊尔领土争端问题的民意调查安卓应用程序对尼泊尔进行攻击。
活动中攻击者使用的域名既有自行注册的也有免费动态的,仿造域名命名皆仿冒尼泊尔、马尔代夫、阿富汗以及巴基斯坦的政府机构、国企官方域名:
表 2-1 部分域名及其仿冒对象
2.1 钓鱼网站攻击
表 2-2钓鱼活动特征
攻击者主要将搭建的钓鱼网站仿冒成尼泊尔军队、警察、政府等部门(如尼泊尔外交部、内政部、国防部、国家信息技术中心、总理办公室和部长理事会)的邮件系统,针对性地向目标人群进行钓鱼攻击,其主要目的是获取目标人群邮箱账号信息,以便为后续的攻击活动做储备。
经过统计整理,这些钓鱼网站可分为两大主要的类型:
1. 直接展示型:受害者通过钓鱼链接访问钓鱼网站后,仿冒的邮件系统登陆页面会直接展示给受害者,当受害者输入账号密码进行登录后,钓鱼网站便会将账号密码信息回传至钓鱼后台,随后钓鱼后台便会将网页跳转至仿冒对象的官方邮件系统网站。
图 2-1仿冒尼泊尔军队邮件系统
图 2-2仿冒尼泊尔武装警察部队邮件系统
图 2-3仿冒尼泊尔海关邮件系统
图 2-4仿冒尼泊尔选举委员会邮件系统
2.诱饵展示型:受害者通过钓鱼链接访问钓鱼网站后,钓鱼网站首先会给受害者展示嵌入与仿冒对象相关的PDF、图片文件的诱饵网页,数秒后钓鱼网站便会跳转至仿冒的邮件系统登录页面。当受害者输入账号密码进行登录后,钓鱼网站便会将账号密码信息回传至钓鱼后台,同时钓鱼后台便会将网页跳转回之前所展示的诱饵网页。
图 2-5诱饵展示型钓鱼网站跳转流程
其中网页所嵌入的PDF、图片等资源文件大都存放在钓鱼页面的同级目录下:
图 2-6嵌入的本地PDF文件
图 2-7Journal of Security Affairs.pdf
图 2-8 Note to Embassy of Pakistan.pdf
但也有少量案例是嵌入来自官方网站的新闻页面、文档文件等:
图 2-9嵌入的官方新闻链接
图 2-10 嵌入的官方PDF文件链接
2.2 恶意LNK攻击
幼象组织基于社会工程技巧构造LNK文件名,通过恶意链接的方式进行攻击。
表 2-3关联出的LNK类型样本
图 2-11 包含info.pdf.lnk的压缩包info.zip
图 2-12 Flag_of_Sri_Lanka..png
通过安天样本关联分析平台对Command Centre.png.lnk样本进行关联,可得到MNDF.jpg(MNDF全称为Maldives National Defence Force,即马尔代夫国防军)、MNDF Male Area Command Centre.pdf这两个同源文件,通过对其内容进行分析后,可以确定上述文件是与Command Centre.png.lnk在同一压缩包中的诱饵文件:
图 2-13 MNDF.jpg图 2-14 MNDF Male Area Command Centre.pdf
2.3 恶意安卓应用
幼象组织在2020年8月等时间段利用恶意安卓应用程序针对尼泊尔进行的攻击活动。
表 2-4恶意安卓应用程序
恶意安卓应用程序伪装成印度-尼泊尔领土争端问题的民意调查App,当受害者安装并打开恶意安卓应用程序后,恶意安卓应用程序便会要求受害者授予其系统权限,成功获得权限后,其便通过AccessibilityService(无障碍辅助服务,AccessibilityService是Google专门为残障人士设计的一个服务,可以让他们更方便的来操作手机)来监控受害者手机。当受害者在手机上输入文本、点击控件以及点击按钮时,其便会将手机IP地址、当前时间以及对应事件类型等数据回传至C2服务器。根据同C2的大多安卓样本皆绑定Metasploit子包的情况,不排除该民意调查App在实际投放前也会绑定Metasploit远控木马的可能。
图 2-15 OpinionPoll_V2.0应用程序
图 2-16要求受害者给予权限
图 2-17 OpinionPoll_V2.0包结构
图 2-18获取手机IP地址以及当前时间戳
图 2-19根据事件类型回传指定数据
图 2-20回传数据
C2服务器除开放多个安卓木马的控制端口外,攻击者还搭建了似乎供自身使用的聊天工具服务:
图 2-21安卓C2的服务端口开放
2.4 恶意宏文档投放
幼象组织基于构造带有宏病毒的OFFICE文档,通过文件名社工欺骗的方式进行攻击。
表 2-5恶意宏文档样例
恶意文档文件名为“List of Nomination of the Candidates1.xltm”,中文译为“候选人提名名单1.xltm”,最后编辑时间为2021年7月28日。文档正文为空白,未进行社工内容构造,但根据样本投放地为尼泊尔,猜测攻击者可能通过文件名暗示与同期尼泊尔议会选举的新闻信息相关。
文档的宏代码被受害者启用后,会首先在宿主机%appdata%目录下创建WindowsSecurity.zip,并将UserForm1窗体中嵌入的数据提取出来,写入至WindowsSecurity.zip。
图 2-22释放WindowsSecurity.zip的宏代码
图 2-23嵌入UserForm1中的数据
图 2-24 WindowsSecurity.zip
然后宏代码会释放invisible.vbs至宿主机自启动目录下,invisible.vbs的作用是启动宏代码后续释放的a.bat与invisible1.vbs。
图 2-25释放invisible.vbs的宏代码
图 2-26 invisible.vbs
接着,宏代码会继续释放a.bat与invisible1.vbs,invisible1.vbs的作用是从WindowsSecurity.zip中提取WindowsSecurity.exe至当前目录,而a.bat的作用则是删除invisible.vba以及创建每两分钟运行WindowsSecurity.exe的计划任务。
图 2-27释放a.bat与invisible2.vbs的宏代码
图 2-28 invisible2.vbs
图 2-29 a.bat
最后,宏代码会弹出“Microsoft Office Excel: This Version isn't Compatible with This file.", vbCritical, "Microsoft Error”的弹窗,伪装成office软件错误以便迷惑受害者。
图 2-30伪装成office错误弹窗
2.5 使用下载器组件
幼象组织主要利用恶意快捷方式执行远程HTA脚本文件。HTA脚本文件的功能主要是下载诱饵文件以及后续的恶意载荷,然后通过创建计划任务对恶意载荷进行持久化操作。
表 2-6HTA下载器样例1
幼象组织主要利用恶意快捷方式执行远程HTA脚本文件。HTA脚本文件的功能主要是下载诱饵文件以及后续的恶意载荷,然后通过创建计划任务对恶意载荷进行持久化操作。
图 2-31下载后续载荷
图 2-32创建计划任务启动下载的载荷
表 2-7 HTA下载器样例2
同时,攻击者还将脚本字符转化成ASCII码以达到逃避杀毒软件检测的目的。
图 2-33 被混淆的HTA源码
图 2-34解混淆后的HTA代码
2.6 使用综合窃密组件
幼象组织使用Python编写的木马窃取各种文档文件、浏览器缓存密码和其他一些主机系统环境信息。
表 2-8 Python窃密木马早期版本样例
早期的窃密木马功能比较简单,其主要利用第三方Python库PyPDF2、PDFMiner、Docx对宿主机中的Docx、PDF文件进行解析,提取其中关键数据,最后将经过Base64编码的数据发送至攻击者的Gmail邮箱中。
图 2-35预定义的变量
图 2-36窃密木马整体流程
图 2-37解析文件功能
图 2-38解析Docx类型文件
图 2-39解析PDF类型文件
同时,通过在代码中还有未使用的功能函数,可以看出当时该窃密木马正处于开发完善之中。
图 2-40获取文件元组信息
后期,窃密木马经过攻击者完善后,在代码结构、功能方面相较之前有所改变。如,可以窃取宿主机Chrome浏览器所保存的网站账户密码信息以及Desktop、Downloads、Documents目录下txt、docx、pdf、xlsx、pptx、snt、jpg、png类型的文件。
表 2-9 Python窃密木马完善版本样例
图 2-41获取桌面文件列表
图 2-42获取Chrome浏览器所保存的网站账号密码信息
图 2-43获取主机名、内网IP、外网IP
图 2-44将上述的信息发送至攻击者的Gmail邮箱
图 2-45攻击者所要窃取文件的类型
图 2-46收集指定目录中指定类型文件的完整路径
图 2-47 攻击者C2服务器IP
图 2-48将窃取的文件回传至C2服务器
2.7 使用键盘记录组件
幼象组织使用相关木马组件获取被攻击主机的按键序列。
表 2-10 Python键盘记录器木马样例
该木马是攻击者在Github上开源Keylogger脚本[2]的基础上进行修改而来,其主要是通过第三方Python库pynput来实现对宿主机进行键盘记录功能。木马运行后,每30秒会将记录的宿主机键盘日志发送至攻击者的Gmail邮箱,同时将自身拷贝至自启动目录下并重命名为“Windows system.exe”进行持久化。
图 2-49整体流程
图 2-50键盘记录功能
图 2-51记录键盘按键
图 2-52将键盘记录日志发送至攻击者Gmail邮箱
图 2-53获取当前用户名
图 2-54将自身拷贝至自启动目录下并重命名为“Windows system.exe”进行持久化
2.8 SHELL后门组件
幼象组织使用C++编写的SHELL木马,实现远程控制连接。早期的C++木马功能十分单一,只有执行CMD命令、下载后续攻击载荷功能。在后续完善版本中,攻击者增加了检测虚拟机沙箱、回传窃取数据、下载文件以及休眠指定时间等功能,同时攻击者还利用ICMP协议实现反弹Shell,以及利用第三方合法服务Telegram Bot将窃取的信息回传至自建的Telegram Chat。
接下来对不同版本的C++木马进行具体分析:
2.8.1早期版本
早期版本的木马功能十分简单只有执行CMD命令以及下载后续攻击载荷,同时攻击者对C2域名、URL以及CMD命令等字符串进行Base64编码,以逃避杀毒软件的检测。
表 2-11 C++木马早期版本样例
木马运行后,会循环地向C2服务器发送请求获取命令,当接收到C2服务器下发的命令,则会通过CMD执行,反之,则跳出本次循环,重新发送请求获取命令。同时,当从C2服务器接收的命令为“exit”,木马就结束自身进程。
图 2-55 Base64编码的C2域名
图 2-56获取C2服务器下发命令
图 2-57创建CMD管道执行命令
图 2-58判断是否退出程序
在循环次数为20次后,木马通过硬编码的URL下载后续攻击载荷,将攻击载荷命名为filename.txt保存至Temp目录。
图 2-59解密下载URL
图 2-60下载后续攻击载荷
下载完成后,通过CMD执行解密后的命令,该命令功能为利用系统工具certutil将filename.txt进行解密为WindowsUpdate.exe,并且创建每天11点运行计划任务对WindowsUpdate.exe进行持久化操作。
图 2-61解密CMD命令
图 2-62执行CMD命令
2.8.2 Telegram版本
表 2-12 C++木马Telegram版本样例
虚拟机、沙箱对抗技术,通过宿主机逻辑处理器数量、运行内存大小、鼠标指针移动距离以及系统启动时间来判断自身是否处于虚拟机、沙箱。
图 2-63通过宿主机逻辑处理器数量、运行内存大小判断自身是否处于沙箱
图 2-64获取鼠标移动距离图 2-65获取系统启动时间
利用合法服务回传数据,攻击者利用自建的Telegram Bot将数据回传至Telegram Chat,回传数据通过Base64进行编码。同时,当回传数据字符长度超过4096,则会将回传数据进行分段回传。最后,回传“END_OF_FILE”字符来与后续的数据做区分。
使用的URL形式为https[:]//api.telegram.org/<bot id>/sendMessage?chat_id=-<chat id>&text=< Base64编码的数据>OR< END_OF_FILE >。
图 2-66判断回传字符长度是否大于4096
图 2-67对回传信息Base64编码以及对URL进行解密
图 2-68发送数据
图 2-69回传字符“END_OF_FILE”
图 2-70攻击者创建的Telegram Bot
图 2-71攻击者创建的Telegram Chat
持久化手段,通过将自身拷贝至当前目录并命名为“WindowsSecurity.exe”,同时创建每天11点运行“WindowsSecurity.exe”的计划任务来实现持久化。
图 2-72将自身拷贝至当前运行目录并命名为“WindowsSecurity.exe”
图 2-73创建计划任务进行持久化操作
采用文本文件传递命令,攻击者提前将命令写入C2服务器的tele.txt文本文件中,而木马只需通过获取tele.txt的内容,便可以执行相应功能。可执行的命令如下:
图 2-74可执行的命令
图 2-75获取命令以及执行命令
下载功能,木马可以获取攻击者在tele.txt文本文件中写入的URL链接,下载对应文件至宿主机Temp目录。
图 2-76通过URL链接下载文件
图 2-77存放至Temp目录
执行CMD命令功能,木马可以执行攻击者在tele.txt文本文件中写入的CMD命令,且在命令执行完毕后关闭CMD窗口,并将执行结果通过Telegram Bot回传至Telegram Chat。
图 2-78执行下发的CMD命令
图 2-79执行CMD命令,且在运行完成后关闭CMD窗口
休眠功能,攻击者在tele.txt文本文件中写入所需的休眠时间,时间单位为3600000毫秒(1小时),木马成功获取命令后便会执行休眠操作。
图 2-80休眠功能
2.8.3ICMP版本
安天在7月份发现一例ICMP版本C++反弹Shell木马,其主要通过利用ICMP协议实现反弹Shell,以便逃避防火墙检测。
表 2-13 C++木马ICMP版本样例
与Telegram版本一样都是通过宿主机逻辑处理器数量、运行内存、鼠标指针移动距离以及系统启动时间来判断自身是否处于虚拟机、沙箱。当确认所处环境不是虚拟机以及沙箱,便会利用ICMP协议实现反弹Shell。
图 2-81判断自身是否处于沙箱
图 2-82 Base64编码的C2域名
图 2-83获取域名解析的IP地址
图 2-84建立CMD匿名通道
图 2-85执行失败
图 2-86回传CMD命令执行结果
2.8.4最新版本
在最新版本中,其功能基本没有太大变化,只是攻击者摒弃了采用Telegram Bot回传数据,而是采用通过URL参数传递加密后的数据,回传的数据存储在C2服务器Apache访问日志access.log中。攻击者可以利用与之配套的后台Python脚本可以实现对访问日志进行读取、过滤以及解密,同时还可以实现下发命令操作。
表 2-14 C++木马最新版本样例
相较于之前的版本,在最新版本中攻击者采用了多个C2域名进行备用,来保证木马的通讯正常运行。当需要连接C2服务器时,木马则会随机选择一个C2域名,若该C2域名失效,则重新选择C2域名。
图 2-87随机选择C2
采用URL参数形式回传数据,木马会将所有回传数据通过两层Base64以及“NPA”字符密钥进行加密,同时会将宿主机主机名以上述形式进行加密形成唯一标识符。回传数据的URL形式为http[:]//<c2>/id=<两层Base64以及密钥加密的主机名>/session=0?/value=<两层Base64以及密钥加密的数据>/return=True。
图 2-88“NPA”字符密钥加密
图 2-89拼接完整URL
在C2服务器后台,攻击者会利用后台Python脚本根据标识符在C2服务器创建对应目录,并且在相应目录下创建d.txt文本文件,d.txt文本文件的作用是传递攻击者命令。木马只需读取对应目录下d.txt文本文件中命令,执行相应操作。
图 2-90获取对应文件夹d.txt文本文件中的命令
图 2-91下发的命令
当获取不到对应目录中的命令时,木马则会采用备用方案,即获取C2服务器“@/@/h31l0”目录下的d.txt文本文件中命令。
图 2-92执行备用方案
图 2-93 @/@/h31l0目录下的d.txt
攻击者利用与之配套的后台Python脚本可以实现对访问日志进行读取、过滤以及解密,从而获取受害者机器回传的信息。
图 2-94 后台Python脚本可执行的操作
图 2-95对access.log进行过滤、解密
图 2-96对access.log中的信息进行解密
同时,攻击者还可以通过唯一标识符对特定主机进行下发命令,下发命令的方式为在相应目录下的d.txt文本文件中写入需要下发的命令。在最新版本后台Python脚本中,下发的命令是通过Base64以及“APN”字符密钥进行加密。
图 2-97唯一标识符
图 2-98经过加密的命令
图 2-99对特定主机进行操作
图 2-100对sessionsid进行解密
图 2-101将命令写入对应文件夹下的d.txt
图 2-102将命令写入@/@/h31l0/d.txt
3. 关联归因
安天CERT对攻击者的载荷、使用的C2等攻击基础设施等进行关联拓线,其部分资源的关联关系如图:
图3-1幼象攻击组织载荷与C2等攻击基础设施关联图(部分)
幼象攻击者通过向国际公开的安全资源上传自己编写的木马,来测试木马逃逸杀毒软件的能力,但也因此暴露了其所在位置。通过资源检索,至少一名样本的上传者来自印度德里,其在2020-11-23至2020-11-24期间一共上传了8个测试性的恶意文件,而这些测试文件与已知的幼象样本在代码内容上也存在高度同源。
表 3-1 ID为106481a3 - web(IN)所上传的测试样本
图 3-2 内网C2的测试样本
图 3-3 内网C2的测试样本
图 3-4上传者大致地理位置
安天CERT通过对该起攻击活动的分析研判,发现其在攻击目标、技战术、诱饵类型以及武器装备等方面与幼象组织有许多相似之处,具体相似之处如下:
1)两者的攻击目标高度重叠,如尼泊尔、斯里兰卡、马尔代夫、巴基斯坦、阿富汗等印度周边国家。
2)使用的技战术、诱饵类型以及武器装备与安天在《“折纸”行动:针对南亚多国军政机构的网络攻击》[1]报告中所披露的十分吻合,如恶意的快捷方式、恶意宏文档、恶意HTA脚本、go语言木马、自研的Python木马以及自研的C++木马。同时两者的Python窃密木马都会将窃取的数据回传至自建的Gmail邮箱账号。
3)两者的域名命名方式十分相似,都是模仿巴基斯坦、尼泊尔、斯里兰卡、马尔代夫等国家的政府机构、国企单位官方域名,同时两者都还喜欢使用美国网络服务提供商No-IP旗下的动态域名,如hopto.org、myftp.org、servehttp.com、sytes.net等
表 3-2使用部分域名对比
综合以上几点,我们判断这些攻击活动归属于幼象组织。
4. 幼象组织相关攻击活动的威胁框架图谱
本次系列攻击活动共涉及ATT&CK框架中12个阶段的23个技术点,具体行为描述如下表:
表 4-1近期幼象攻击活动的技术行为描述表
幼象组织相关攻击活动的行为技术点的ATT&CK框架图谱下图所示:
图 4-1幼象组织攻击活动对应ATT&CK威胁框架映射图
5. 结束语
“幼象”组织自安天在2020年初披露以来,其攻击活动的规模数量按年度呈倍数增长,攻击手法和攻击资源逐渐丰富,且攻击目标也从初期仅为南亚地区开始覆盖更多的地区。相比于早期我们定义的未成熟的“幼象”,如今该组织已成长为南亚地区最为活跃和成熟的攻击组织,已经成为了南亚乃至整个亚太重要的网络安全威胁,从攻击活跃的频度来看,目前已有替代同源的白象、苦象组织的趋势,未来很有可能成为南亚的主要攻击组织,需要对其进行重点跟踪和关注。
当然从目前看到的攻击装备图谱上看,其攻击载荷工具体系性不强,技术栈相对庞杂混乱,高度依赖社会工程学技巧,尚未看到具备0DAY漏洞的挖掘和利用能力,甚至很少看到对已知漏洞的使用。但这并不表明,幼象带来的攻击就是低成功率的。这种攻击能力一定真实反应了被攻击方真实的低水平防护和较弱的人员安全意识。这也和我们一致以来保持的观点一致,即APT(高级持续性威胁)的关键要素是P(持续性),因为P体现了攻击方的意图和意志,是判定APT攻击中决定性要素。而A是一种相对性要素,攻击方并不需要绝对“高级”的攻击技术,只要能构建出相对于防御水平包括意识短板的“位势差”或与攻击方脆弱性敞口碰撞,就能形成有效的攻击。这种攻击能频繁奏效,实际上真实体现了南亚国家、包括更多发展中国家真实的面临的网络安全风险挑战。
南亚是世界四大文明的发源地之一,在历史上,农业、手工业和文化艺术均曾达到较高水平。但受到长期殖民主义入侵影响,较长时间中断了悠久的文明历史、经济停滞,导致南亚一度成为世界上最贫穷落后的地区。而二战后,南亚民族解放运动的兴起。西方殖民者采用分而治之的方式,制造民族、宗教矛盾,造成了南亚国家从独立之日起,就存在错综复杂的地缘政治问题的恶果。我们今天看到的南亚次大陆的传统地缘到网络空间的诸多问题,都是这些恶果沿袭叠加在复杂的种族、民族、教派等问题上的综合体现。遭遇幼象攻击组织的南亚相关国家,其经济相对不发达,信息化和网络安全能力较弱,给了攻击组织可乘之机,但他们和其他国家一样,有在捍卫本国主 权、安全和发展利益的权力,无论在物理空间还是网络空间,同样都是如此。
附录:参考资料
[1] “折纸”行动:针对南亚多国军政机构的网络攻击
https://www.antiy.cn/research/notice&report/research_report/20200115.html
[2] Github:CyberKnight00
https://github.com/CyberKnight00/Py_scripts/blob/master/keylogger.py
[3]“苦象”组织上半年针对我国的攻击活动分析
https://www.antiy.cn/research/notice&report/research_report/20210705.html
[4]白象的舞步——来自南亚次大陆的网络攻击
https://www.antiy.cn/research/notice&report/research_report/304.html