利用WebSocket隧道的新型攻击活动披露
最后更新于
最后更新于
相关攻击第一阶段的恶意荷载主要利用DotNetToJScript技术,以JavaScript恶意脚本为载体,在内存中执行.NET Assembly形式的恶意功能组件,以无文件攻击的方式躲避安全软件的查杀。
第二阶段的后门程序会通过C&C下载各类攻击组件,其中核心的攻击动作是在失陷机器上利用WebSocket隧道建立反向的Socks5代理,操作各种后门和攻击组件进行渗透攻击。由于WebSocket隧道属于加密流量,部分流量安全设备很难识别异常情况。
第一阶段的核心加载程序是DLL形式的恶意荷载,按功能特点我们将其命名为JsLoader。其主要功能是从C&C服务器下载加密的JS脚本文件在内存中执行。
名称 | MD5 | 类型 |
JsLoader | 7680ea7601c90078f07f7b9be1944b3b | PE32(DLL) |
JsLoader是由Delphi语言编写,在其主要功能函数中,是通过与密钥“MF8Ya”进行异或运算解密全局数据来获取配置信息。配置信息为首次需要访问的URL和注册表路径等信息,主要信息如下:
a)URL:
b)注册表:
紧接着该程序会尝试加载amsi.dll,对AmsiScanBuffer函数进行inline hook处理,躲避反病毒软件的检测。
然后枚举获取HKCU\Software\Gallery2.0下的键值保存起来,使用事先保存在TLS中的回调函数中创建线程对数据进行解密,针对解密后的数据后使用jscript组件对其进行加载执行。其解密算法为跳过数据的前12个字节后,与密钥“MF8Ya”进行异或运算
在此之后,JsLoader会通过访问bing.com、baidu.com、google.com进行网络连通性测试,然后与最开始解密出的URL建立HTTP会话,并获取服务器响应数据,此段数据为服务器下发的JS恶意脚本,程序会对数据进行异或解密操作,并调用jscript组件对其进行加载执行。
相关的JS脚本是通过DotNetToJScript技术加载base64编码的.NET Assembly数据,将恶意组件反射加载到内存中执行。
JsLoader程序在与C&C服务器进行HTTP通信的过程中,还会有如下网络行为特点:
1.如果响应请求为HTTP 505,则该样本会创建另一个自身进程,并退出。
2.HTTP请求为GET请求,需要有9轮HTTP 200的会话响应,每一轮的请求参数有如下规律:
a)第一轮:URL/true?x=5
b)第二轮:URL/true?x=4,5
c)第三轮:URL/true?x=3,4,5
d)…
3.当响应状态不是HTTP 200时,则会将请求中的“true”替换为”false”,并再次向服务器发送请求,直到返回HTTP 200。
4.当9轮的HTTP 200会话完成后,则会将”true”替换为”mt10”,持续与服务器进行通信
在C&C下发的JavaScript脚本中,我们捕获到了三个不同功能的恶意组件,按功能特点我们分别将其命名为TunnelCore、FileRAT和ShellRAT,如下表所示:
名称 | 文件名 | 功能说明 |
TunnelCore | ProxyModule.dll | 利用WebSocket隧道建立Socks5代理进行,为其他组件提供内网穿透通道 |
FileRat | LiveFileManagerModule.dll | 本地HTTP服务器,监听本地12380端口,提供多种文件操作功能 |
ShellRat | LiveConsoleModule.dll | 本地TCP服务器,监听本地12323端口,提供远程Shell功能 |
TunnelCore属于核心的代理隧道组件,通过传入指定的URL参数发起WebSocket连接。
利用WebSocket协议伪装成正常的Web请求,建立通信隧道。
紧接着利用WebSocket隧道建立Socks5代理实现内网穿透
FileRat样本会建立本地HTTP服务器,监听本地的12380端口,同时利用TunnelCore组件实现的内网端口转发,黑客可以远程访问该HTTP服务器以达到控制目标主机的目的。
其主要提供了如下功能:
访问路径 | 说明 |
/ | 发送404响应 |
/api/ | 执行后续操作所需访问的父路径 |
/api/getZipBundle | 将指定文件进行ZIP压缩 |
/api/sendFile | 发送指定文件 |
/api/getDriveInfo | 枚举获取驱动器信息 |
/api/getDirectoryInfo | 获取指定目录文件信息 |
/api/closeModule | 无 |
/api/delete | 删除指定文件 |
/api/getFileListing | 枚举驱动器,获取所有文件信息 |
ShellRAT属于远程Shell组件,会在本地监听TCP 12323端口,同时利用TunnelCore组件实现的内网端口转发,黑客可以远程Shell命令
在与cmd交互的过程中,其输入缓冲区的第一个字节为特殊功能号,具体如下:
特殊功能号 | 说明 |
‘\u0003’ | 结束远程Shell |
‘\u0004’ | 暂停远程Shell |
‘\u0010’ | 与远程Shell的交互,执行命令 |
其中与cmd进行交互中,会额外将命令缓存在@string所标识的文件流中。
采取的格式如下:
1byte | 62bytes | 4bytes | Buffer |
'\u0010'功能号 | @string代表文件名 | 长度 | 命令 |
核心加载程序JsLoader 的dll导出函数与duser.dll一致,是常用于DLL劫持类攻击的荷载。
响尾蛇组织历史上的多次攻击活动惯用credwiz.exe+duser.dll组合的白利用攻击手法,通过360安全大脑根据相关攻击模式对JsLoader的分析显示,相关样本与响尾蛇(SideWinder)组织的多次攻击活动存在关联。