网络安全攻防中,不同的攻击工具各有其独特的流量特征。本文将深入浅出地介绍哥斯拉、冰蝎和蚁剑的流量特征,并详细分析菜刀的流量特征,帮助基础小白更好地理解这些工具在网络流量中的表现。
哥斯拉流量特征
User-Agent 特征(弱特征)
默认情况下,哥斯拉客户端使用 Java 语言 编写,如果不修改 User-Agent,User-Agent 会显示类似于 Java/1.8.0_121
(具体版本取决于 JDK 环境版本)。不过,哥斯拉支持自定义 HTTP 头部,可以很容易去除这一特征。
Accept 特征(弱特征)
默认的 Accept 头部 为 text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
。这一特征同样可以通过自定义头部去除。
Cookie 特征(强特征)
哥斯拉请求包的 Cookie 中有一个致命的特征:末尾带有分号 ;
。标准的 HTTP 请求 中最后一个 Cookie 的值不应该包含分号,这一特征可以作为辅助识别哥斯拉流量的重要标志。
请求体特征(较强特征)
哥斯拉支持对加密的数据进行 Base64 编码 和原始加密(raw)两种形式的通信数据。对于 Base64 编码 的数据包,可以通过识别流量中的 Base64 编码特征进行检测。
另外,哥斯拉在进行初始化时会产生一个 比较大的数据包,后面进行命令执行等操作时产生的 Base64 数据包 会相对较小。通过数据包长度进行匹配在一定程度上也可以降低误报率。
响应体特征(强特征)
如果请求体采用 Base64 编码,响应体返回的也是 Base64 编码的数据。响应体的特征为:一个 32 位的 MD5 字符串 按照一半拆分,分别放在 Base64 编码 的数据的前后两部分。整个响应包的结构体征为:md5前十六位 + base64 + md5后十六位
。
需要注意的是,在匹配这些特征时,还需要考虑到不同版本的哥斯拉可能会有不同的特征表现。例如,在一些版本中,响应体的数据可能还会有其他混淆方式。
补充
哥斯拉使用的是 ICMP 协议数据报文,而 ICMP 流量本身就不高,所以较难在大流量中检测。ICMP 数据报文的载荷部分 Length 值固定为 92 字节,这是它的重要特征。
Payload 特征
在默认脚本编码的情况下,JSP 会出现 xc
、pass
字符和 Java 反射(ClassLoader
,getClass().getClassLoader()
),Base64 加解码等特征。而 PHP 和 ASP 则为普通的一句话木马,数据报文的 Payload 内容以 "godzilla" 开头,这也是检测的特征标志。
冰蝎流量特征
冰蝎 2.0
使用 AES 加密 + Base64 编码,AES 使用动态密钥对通信进行加密。请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。因此,当发现一个 IP 的请求头中的 User-Agent 在频繁变换,就可能是冰蝎。
冰蝎 3.0
冰蝎 3.0 取消了 2.0 的动态获取密钥,使用 固定的连接密钥。AES 加密的密钥为 webshell 连接密码的 MD5 的前 16 位,默认连接密码是 rebeyond
。请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。3.0 连接 JSP 的 webshell 的请求数据包中的 Content-Type 字段常见为 application/octet-stream
。
冰蝎 4.0
提供了传输协议自定义功能,让用户对流量的加密和解密进行自定义,实现流量加解密协议的去中心化。v4.0 版本 不再有连接密码的概念,自定义传输协议的算法就是连接密码。与冰蝎的前述版本相似,进行请求时内置了十几个 User-Agent 头,每次请求时会随机选择其中的一个。
冰蝎 5.0
冰蝎 5.0 引入了更多的加密方式,包括 XOR、XOR_Base64、AES、JSON 和 Image 等五种加密方式,并且每种加密方式都支持自定义加解密代码。这使得冰蝎的流量特征更加复杂和多样化,检测难度也更大。
固定请求头和响应头
冰蝎的固定请求头特征为:dFAXQV1LORcHRQtLRlwMAhwFTAg/M
,固定的响应头特征为:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
。
长连接特征
冰蝎通讯默认使用长连接,默认情况下,请求头和响应头里会带有 Connection: Keep-Alive
,这可以作为辅助流量特征。
GET 请求特征
在每一次连接时都能看到一个 GET 请求 ?pass=[XXX]
的数据(XXX 均为数字),且均会产生一个 16 位的随机数密钥(第二个为密钥)。Content-Length 通常为 16。
请求体特征
JSP 类型 的 webshell,POST 请求体数据均为 Base64 编码,Content-Type 为 application/octet-stream
,响应体数据均为二进制文件。执行 JSP webshell,一般较短的命令 Content-Length 都是 9068。
Pragma 和 Cache-Control
请求头中有 Pragma: no-cache,Cache-Control: no-cache。这些头部字段可以作为进一步识别冰蝎流量的特征。
蚁剑流量特征
静态特征
蚁剑中 PHP 使用 assert
、eval
执行;ASP 只有 eval
执行;在 JSP 中使用的是 Java 类加载(ClassLoader
),同时会带有 Base64 编码解码 等字符特征。
动态特征
我们使用一句话木马上传 webshell,抓包后会发现每个请求体都存在以 @ini_set("display_errors","0");@set_time_limit(0)
开头。并且响应体的返回结果是 Base64 编码发混淆字符,格式为:随机数 + 结果 + 随机数。
参数特征
蚁剑混淆加密后还有一个比较明显的特征,即参数名大多以 _0x.....=
这种形式(下划线可替换为其他)。以 _0x
开头的参数名,后面为加密数据的数据包也可识别为蚁剑的流量特征。
User-Agent 特征
默认的 USER-Agent 请求头是 antsword xxx
,但是可以通过修改 /modules/request.js
文件中的请求 UA 绕过这一特征。
最明显的特征
蚁剑的一个显著特征是在请求体中包含 @ini_set("display_errors","0");
这段代码,这段代码基本是所有 webshell 客户端 链接 PHP 类 webshell 都有的一种代码。
菜刀流量特征
静态特征
菜刀使用的webshell为一句话木马,特征十分明显。常见一句话(Eval):
- PHP:
<?php @eval($_POST['caidao']);?>
- ASP:
<%eval request("caidao")%>
- ASP.NET:
<%@ Page Language="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>
动态特征
请求包中:
- UA 头 为百度爬虫或火狐
- 请求体 中存在
eval
,base64
等特征字符 - 请求体 中传递的 payload 为 Base64 编码,并且存在固定的
QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
- 请求体 中执行结果响应为明文,格式为
X@Y 结果 X@Y
之中
Payload 特征
菜刀的 payload 特征主要表现在:
- PHP:
<?php @eval($_POST['caidao']);?>
- ASP:
<%eval request(“caidao”)%>
- ASP.NET:
<%@ Page Language=“Jscript”%><%eval(Request.Item[“caidao”],“unsafe”);%>
结论
通过对哥斯拉、冰蝎、蚁剑和菜刀的流量特征进行分析,可以帮助基础小白更好地理解这些工具在网络流量中的表现,从而提高检测和防御能力。在实际操作中,通过识别这些特征,可以有效发现并阻止恶意行为,保护网络安全。
在网络安全的攻防过程中,掌握这些工具的流量特征是至关重要的。虽然攻击者可能会不断改进工具以规避检测,但通过不断更新和完善检测规则,我们依然可以在防御中占据主动地位。
希望这篇文章能帮助你更好地理解哥斯拉、冰蝎、蚁剑和菜刀的流量特征。如果你有任何问题或需要进一步的解释,请随时留言。