常见HackNetTools流量分析
本文的所有工具都采用未加密模式,以此来进行流量分析
Protocol
tcp
udp
区别
形象的说
Tool 1 EarthWorm
最大的特征就是 没有特征 ,灯下黑,下面加密的流量是我访问百度的流量。
Tool 2 Frp
tcp 模式
由于是tcp模式,所以所有的包都在同一个tcp流当中
通过分析该流,发现存在一些特征
特征 握手包
在程序刚运行的时候,客户端会向服务器端发送一个json格式的握手包,用来验证双方的版本、架构的信息
发现这些信息了,就说明frp已经上线了。
kcp 模式
Frp作者在描述中这么写道
1 | kcp协议可以在恶劣的网络环境中提供更优的隧道连接 |
开始分析
首先,kcp协议基于udp协议,在百科上有这样的描述
1 | KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果。 |
由于使用的是udp协议进行传输,那么作者所说的kcp可以在恶劣环境中提供更优的隧道服务也不难理解,毕竟服务态度决定了服务速度。
特征 握手包
跟tcp协议一样,udp协议在第一步的时候也会发出一个验证握手包
根据这个特点可以狙击frp的流量。
websocket 模式
首先看一下websocket的握手过程
websocket在建立连接之前,是必须用一个HTTP的请求来握手的,这个HTTP请求作为一个申请,在服务端响应了101以后,切换到websocket进行通信,由于协议自身的限制,这个HTTP明文握手的阶段是无法消除的。
报文呈上
由于websocket是基于tcp的应用层协议,大体结构跟tcp相似,可以轻易找到http握手的那个包,在握手之后,协议集体变成了websocket
特征1 HTTP握手包
由于开启了ws通讯,http明文的握手包当中会请求 /~frp 来转换协议,这个特点是websocket的第一个特征
特征 2 验证版本的响应包
继续追踪这个流,发现在切换成websocket之后,还是会有一个和tcp、udp模式都一样的点,那就是验证版本的包,但是和tcp、udp协议不同的是,这个包不是请求包,而是服务器端发回来的响应包。
Tool 3 nps
tcp模式
包是这样的
找特征咯
特征 1 验证版本
在第一个数据包当中,会存在
1 | TST.....0.26.0...0.26.10 |
这么一段数据,这个数据会进行版本校验,这个特征是nps连接的特征之一
特征 2 连接成功的返回
在服务端给客户端返回的第二个包会有 sucs字样,这个字样也是nps的特征之一
udp模式
不好意思 ,它通讯协议好像没有 udp,客户端可以向外发udp的包,但是服务端没有配置写udp的端口,这个功能需要对源码进行一下分析
Tool 4 pingtunnel
pingtunnel据说是鹅厂的一位大牛写的icmp隧道工具,实际生活中,不妨会有网管会犯迷糊,禁用了tcp协议以后开始沾沾自喜,殊不知这icmp也是可以穿透,话不多说,上报文结构。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Optional Data … |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
可以看到,Icmp包当中是有数据字段的,真不错
我们再看下windows环境下ping所产生的包
request
在请求包当中,数据字段是abcdefg…
response
)
响应包字段当中也是abcdefg
我们再看下tracert所产生的包
可以发现,tracert包当中数据字段都是0。
最后看下pingtunnel所产生的包
数据字段当中会有ip存在的,如图,这个47.97.218.141:8000就是我通过icmp隧道进行转发的目的地址,而在ping与tracert功能当中是不会存在这种包的,通过这点可以在流量上来判断是icmp隧道。