观成科技:Vagent注入的内存马加密通信特征分析
-
概述
vagent是一个使用Java语言开发的内存马注入工具。攻击者在利用vagent注入内存马之后可以利用别的代理工具或是webshell工具连接内存马进行通信。vagent对部分工具的内存马做了一些简单的魔改以达到绕过部分检测设备的目的。
-
vagent注入的内存马通信特征分析
vagent工具支持注入六种内存马,分别为:冰蝎内存马、CMD马、JS代码执行马、Neo代理内存马、Suo5代理内存马、WebSocket代理内存马。
- CMD马和JS代码执行马通信特征
其中CMD马和JS代码执行马的特征较为简单,攻击者注入成功之后,只需要对执行的命令进行两次base64编码,之后发送请求,内存马对请求内存解码之后以明文的形式返回执行结果,请求路径分别为“以/faviconc结尾”和“以/faviconjs结尾”,请求方式均为POST。
图 1 CMD马使用反射机制调用Decoder对象的decodeBuffer方法对攻击者输入进行解码
图 2 利用CMD马执行命令
2.冰蝎内存马通信特征
vagent内存马注入工具支持注入冰蝎内存马,由于冰蝎4版本添加了自定义传输协议功能,可以定制加密方式,vagent内存马注入工具自定义了一套加密方法,使用这套自定义加密方法的冰蝎内存马与普通的冰蝎内存马有不同的通信特征。
图 3 自定义冰蝎加密算法
如图所示,加密方式为“对载荷(十六进制)先加1,然后使用GZIP压缩,之后再加1得到加密数据”。解密算法就是将加密步骤逆序执行一遍。由于GZIP压缩算法有固定的数据头特征,所以其流量特征较为明显,每一个请求体前四字节完全相同。
图 4 载荷数据特征
对流量进行解密,请求体中传输的class文件内容。
图 5 冰蝎内存马请求体解密
3.Neo代理内存马通信特征
vagent注入的Neo代理内存马,使用Neo-reGeorg工具进行连接,连接默认密钥为“page”,请求路径以“/faviconneo”结尾。第一次请求方法为GET,响应页面使用了自定义的404页面。
而如果用neo-regeorg工具同样使用密钥”page”生成的木马,第一次请求连接时生成的响应页面是空白页面,没有404响应,在开发者模式可以看到响应的内容为“<!-- AXvdwuCDGABaIc6U+GOKPtkgBa974rkKKS853hnMveM02hXK/HMgADBC6LffJCFfd9k4+YKwwwAiQ3Q -->”。
图 6 第一次请求Neo代理内存马(响应体为自定义的404页面)
之后正常的通信使用的请求方法均为POST,请求路径不变,响应码均为404,请求体和响应体均使用经过顺序变换的Base64编码字符集进行编码进行编码,使用正常的Base64编码无法解码。替换的Base64编码字符集为“eVU7Z6kD135qN0wfCYSxbF+RP/vjaiOylt82JndKAhTgu9B4zWmEMpoIXcQrsGHL”,在Base64编码里边使用BLV格式传输数据。部分流量及解密内容如下所示:
图 7 Neo代理内存马通信流量
图 8 Neo内存马通信内容解密
Neo-regeorg工具使用BLV(Byte-LengthOffset-Value)数据格式传输数据。BLV数据格式如下:
图 9 BLV数据格式图
B长度为一个字节,其值及其代表的含义为:
1: 'DATA',
2: 'CMD',
3: 'MARK',
4: 'STATUS',
5: 'ERROR',
6: 'IP',
7: 'PORT',
8: 'REDIRECTURL',
9: 'FORCEREDIRECT'
L的长度为四字节,L的值=B的值代表的字段的数据长度+根据密钥生成的伪随机数(密钥不变则随机数固定)。即,当B数值为2时,对应字段为“CMD”,L=0x(3+伪随机数)。
V为B对应字段的值。
Neo-reGeorg在传输的数据头部和尾部还进行了数据填充,同样采用BLV数据格式,但是头部数据B固定取值为0,无意义,L和V分别按照BLV的数据特征填充数据;尾部数据中B固定取值为39,也无意义。、
图 10 按照BLV格式对数据进行编码
由于头部填充的值相对比较固定,经过Base64编码之后,观察流量可以看到除第一次会话外,其余会话的请求体的前五字节完全一致。
图 11 Neo代理内存马流行为特征
4.Websocket代理内存马通信特征
vagent工具注入的Websocket代理内存马,可以使用gost进行连接,其请求路径为以“/faviconws”结尾,连接成功和连接失败时会反别返回“HTTP/1.1 200 Connection Established”,“HTTP/1.1 503 Service Unavailable”。
图 12 连接成功或失败返回特征
图 13 WebSocket代理内存马连接成功时的通信流量
图 14 WebSocket代理内存马连接失败时的通信流量
5.Suo5代理内存马通信特征
vagent工具注入的Suo5代理内存马通信流量特征主要表现为请求路径以“/faviconsuo”结尾,其他与正常的Suo5代理通信一样,具体流量特征可见往期Suo5加密流量分析的相关文章,此处不再赘述。
-
产品检测
观成瞰云(ENS)-加密威胁智能检测系统能够对vagent注入的内存马通信流量进行检测。
-
总结
通过对vagent内存马注入工具代码及原始流量分析,可以看到越来越多的黑客工具开始使用自定义加密方式对攻击载荷进行加密;由于内存马相比于传统的webshell而言更难被发现,越来越多的攻击队及恶意攻击开始使用内存马进行攻击,根据近两年的HW情况分析,内存马攻击已逐渐成为攻击队使用较高的攻击方式。观成科技安全研究团队将持续跟踪内存马的相关技术动态,并积极研究更新检测手段,防范网络攻击。