ICMP隐蔽隧道工具--pingtunnel流量特征检测分析

工具介绍

项目地址
https://github.com/esrrhs/pingtunnel
说明
通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/UDP流量。
特点
在这里插入图片描述

流量&逻辑分析

环境&测试准备

环境配置
服务端 Ubantu192.168.2.129
客户端 Kali 192.168.2.139
测试方式

  1. Ubantu运行命令

./pingtunnel -type server

image.png

  1. Kali运行命令

./pingtunnel -type client -l :4455 -s 192.168.2.129 -sock5 1

image.png

检测特征

image.png

Client逻辑分析

image.png
DATA用于数据传输,PING用于联通新测试,KICK用于退出,MAGIC用于校验
client入口主要在cmd#main.go#244#pingtunnel.NewClient,前边的逻辑基本都是参数判断,初始化赋值等
image.png
继续跟踪client.go#23#NewClient方法,此方法为初始化和赋值Client对象:
image.png
继续跟踪发现主要入口函数cmd#main.go#244#c.Run,继续跟踪client.go#185#Run方法:
image.png
其中最主要的几个方法为recvICMP、ping、processPacket、AcceptTcpConn、AcceptSock5Conn等等,之前通过方法调用或者chan信道来进行
image.png
先看client.go#673#ping方法(最开始的调用在client.go#228)
image.png
继续跟踪pingtunnel.go#15#sendICMP方法:
image.png
其中主要调用了proto.Marshal来对m进行序列化操作,m的值如下,其中非定值为Data,关于具体的序列化结构数据可参考链接,个人感觉例子讲解的和通透
image.pngimage.pngimage.png
这里直接给结论,前面的Id、Type、Target、Data(部分)组成定值,
\x10-01(Type) 220f-010000000e(Data)
后边Magic组成定值(MyMsg_MAGIC=57005)
\x30dafa06
总体满足以下格式:

\x10\x01(Type) + \x22\x0f\x01\x00\x00\x00\x0e.{10}(Data) + \x30\xda\xfa\x06(Magic)

另外一个重要方法为client.go#564#processPacket,重点部分跟踪分析一下(其调用在recvICMP–> recv <- &Packet --> p.processPacket®):
解析以Frame形式发送的数据
image.png
client.go#312#AcceptTcpConn方法用于处理TCP连接,并发送数据,由AcceptTcp进行循环调用:
image.png

Server逻辑分析

Server端和Client逻辑类似,server,go#89#recvICMP持续监听是否有ICMP入保,如果有并且解析无误后,通过信道将Packet传输给processPacket进行处理
image.png
image.png
server.go#132#processPacket方法针对不同类型的数据做不同的处理,这里我们只关注PING类型image.png
这里主要分析一下数据特征:
image.pngimage.png

这里直接给结论,前面的Id、Type、Target、Data(部分)组成定值:
\x10-01(Type) 220f-010000000e(Data)
后面Rprote组成定值:
\x28-01(ZigZag优化负数存储逻辑,存储其绝对值的2倍减1)
后边Magic组成定值(MyMsg_MAGIC=57005)
\x30-dafa06
总体满足以下格式:

\x10\x01(Type) + \x22\x0f\x01\x00\x00\x00\x0e.{10}(Data) + \x28\x01(Rprote) + \x30\xda\xfa\x06(Magic)
  • 20
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值