基于 Go 语言的网络利用与中间人(MITM)框架,适用于授权渗透测试、网络侦察、流量拦截、无线安全测试及第 2/3/7 层攻击研究。
一个用 Go 编写的本地与网络安全评估框架。它是一个研究和授权渗透测试工具,覆盖网络评估流程——主机与服务发现、枚举、凭据审计、漏洞识别和授权利用。其十个模块类别涵盖侦察、枚举、OSINT、MITM(ARP/DHCP/DNS/IPv6 投毒和在线 HTTP/HTTPS 拦截)、无线、交换机层、Web、认证、间谍活动和后渗透——全部通过交互式 REPL、引导式向导或单次命令序列驱动。
MITM 只是这一更广泛领域中的一种能力:TOHA3EE 并不仅限于中间人攻击场景。
警告:toha3ee 会主动重定向、投毒、解密和拦截 网络流量。仅在您拥有或明确获准测试的网络上使用它。 在大多数司法管辖区,针对第三方运行这些模块是违法的。 请先阅读
docs/security.md。
一行安装脚本会从最新发布版本中获取适用于您平台的预编译二进制文件,校验其 SHA-256 校验和,并将其添加到您的 PATH。如果尚无预编译二进制文件,则改为从源码构建。
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.sh | sh
Windows(PowerShell):
irm https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.ps1 | iex
或者从源码检出目录安装:
make install # installs ~/.local/bin/toha3ee and adds it to PATH
安装选项(Unix):--prefix <dir>(默认:root 为 /usr/local/bin,否则为 ~/.local/bin)、--no-path(跳过修改 shell rc)、--from-source(构建而非下载),以及 TOHA3EE_VERSION=<tag>(固定发布版本)。使用 sudo sh ... 运行可进行系统级安装。Windows 安装程序会将二进制文件放入 %LOCALAPPDATA%\Programs\toha3ee\bin 并更新用户 PATH;Windows-on-ARM64 运行 x64 构建。
在 Linux 上,安装程序还会向桌面环境注册应用:它将徽标安装到 hicolor 图标主题,并在安装前缀旁边(例如 /usr/local/share 或 ~/.local/share)放置一个 .desktop 条目,因此 toha3ee 会带着图标出现在 GNOME 的搜索中。在 Windows 上,它会复制 .ico 并创建开始菜单快捷方式。发布版 tarball/zip 自带图标,因此安装程序可以从同一个经过验证的工件中注册它。
卸载:删除二进制文件以及安装程序添加到 shell rc 中的 PATH 行(在 Windows 上为 %LOCALAPPDATA%\Programs\toha3ee)。
需要 Go 1.26+ 和 libpcap。
# Debian/Ubuntu
sudo apt install libpcap-dev
# then
go build ./cmd/toha3ee
Linux 构建需要 libpcap 头文件(安装程序的 from-source 回退会检查它们,如果缺失会打印相应的 apt/dnf 命令)。macOS 随 Xcode 命令行工具自带 libpcap。
# Interactive console (bare command drops straight in)
sudo ./toha3ee --iface eth0
# Interactive console (explicit subcommand)
sudo ./toha3ee interactive --iface eth0
# Guided wizard
sudo ./toha3ee wizard --iface eth0
# One-shot: scan the subnet, then show what was found
sudo ./toha3ee --eval "net.scan; net.show" --iface eth0
# Non-interactive caplet script
sudo ./toha3ee run --iface eth0 caplets/basic.cap
# Dry-run a .toha3ee script (validates it, prints the plan, sends no packets)
./toha3ee --no-sudo build scripts/full-pipeline.toha3ee
# Execute a .toha3ee script non-interactively
sudo ./toha3ee script --iface eth0 scripts/full-pipeline.toha3ee
大多数攻击模块需要 root 权限(原始套接字、数据包捕获和 IP 转发)。请以 root 身份运行,或在可能的情况下使用 CAP_NET_ADMIN/CAP_NET_RAW。添加 --no-color 可禁用彩色输出,-v 可启用详细日志。
该工具默认以管理员权限运行:在 Linux/macOS 上,它会通过 sudo 重新执行自身,并在每次调用时提示输入管理员(root)密码。传入 --no-sudo(或设置 TOHA3EE_NO_SUDO=1)可以非特权模式运行,例如快速执行 toha3ee --no-sudo version。
一切皆模块。模块在其包的 init() 中自行注册,并由注册表自动呈现;添加一种攻击意味着在 internal/attacks/ 下添加一个实现 attacks.Module 契约的包(参见 internal/attacks/attacks.go):
Meta() — ID、类别、风险、目标、描述、限制Preflight(ctx) — 检查运行前提条件Run(ctx, opts) — 攻击循环(必须尊重 ctx.Done)Verify(ctx) — 报告发生了什么Cleanup(ctx) — 撤销一切,恢复网络一个中心的 safety 生命周期(internal/safety)跟踪已注册的清理和心跳,因此即使在 panic 或 SIGINT 时每次攻击也会被拆除;共享的 store 维护主机清单、捕获的凭据、会话以及为报告生成器提供数据的事件日志。
运行 toha3ee modules 查看完整且最新的目录。以下为亮点:
直接运行 toha3ee(或 toha3ee interactive)会打开一个 bettercap/metasploit 风格的控制台:@@@ 横幅、带红色强调的 toha3eeλ > 提示符(支持 Tab 补全),以及提示符上方持续显示的一行状态 HUD,其中显示接口、正在运行的模块以及实时的主机/端口/凭据/事件计数。输出采用绿色/琥珀色/白色调色板进行分组和对齐——红色被刻意用于提示符强调、硬错误([x])、HUD 边缘标记和高风险模块(高风险为琥珀色)。每条命令的输出都分节(─── modules ───),表格按列对齐(计算对齐时忽略颜色),模块消息集中着色,因此每个模块都能获得一致的状态符号,无需逐模块处理。输出在管道传输时自动回退为纯文本,并且在任何模块运行时提示符保持可见和活跃,就像 bettercap 一样。
$ sudo ./toha3ee --iface eth0
@@@@@@@@
@@@@@@@@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@ @ @@@@@@@
@@@@@@@@ @@@@@@@@@ @@@@@@@
@@@@@@@@ @@@ @ @@@@@@@
@@@@@@@ @@ @@@@@@@@@@ @@@@@@@
@@@@@@ @@ @ @@@@@@@@@@@@@@@@@@ @@@@@@
@@@ @@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @ @@@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@ @@@ @@@
@@@ @@@ @@@@@@@@@@@@@ @@@@ @@@
@@@ @@ @@@@ @@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@ @@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@ @@@
@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@@@@@ @@@@@@@@
@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@ @@@@@@
@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@
@@@
local & network security assessment framework
[>] iface wlan0 (10.135.199.31, 8c:c8:4b:30:bf:91)
[>] v 0.1.0
type 'help' for commands, 'modules' for the catalogue, 'quit' to exit
[*] session ready. type 'help' for commands.
toha3eeλ> help
状态符号遵循 bettercap 的约定:
HUD 左边缘的红色块 ▮ 标记状态条;每条命令后 HUD 都会重新打印,因此无需额外输入即可保持计数最新。
示例会话:
toha3eeλ> modules recon # module catalogue filtered by category
toha3eeλ> on net.scan # run a module (preflight checks shown first)
toha3eeλ> net.show # discovered hosts
toha3eeλ> net.profile # profile + ranked attack vectors
toha3eeλ> help # grouped command reference
toha3eeλ> quit
set <module.key> <value> 存储每个模块的设置(模块 ID 使用点号分隔,因此在最后一个点处分割:set arp.spoof.targets 10.0.0.5);config 会转储目前设置的所有内容。会话会在模块运行之间保留捕获的数据;report.generate 会从内存存储中渲染一份 Markdown 评估报告。
.toha3ee 文件使用一种类似 Python、读起来像英语的语言驱动完整的侦察 → 利用 → 报告流程。可通过 toha3ee script <file> 执行,在 REPL 中用 script <file> 执行,或用 run <file> 运行任何 .toha3ee 文件。toha3ee build <file>(或 REPL 中的 build <file>)会校验文件并打印干运行计划,而不触碰网络。scripts/full-pipeline.toha3ee 是一个可用的端到端示例。
# comment (or //)
set net.scan.targets -> "192.168.8.0/24" # configure a module
on net.scan # start a module (run/start)
wait for net.scan # block until it finishes
_hosts -> [$(net.hosts)] # capture a list (or =, >>)
echo -> "found $(_hosts.size) hosts" # print (say/print)
if $(hosts.count) > 1 # conditions
on arp.spoof targets "192.168.8.0/24"
sleep -> 30
off arp.spoof
end
for each _h in $(_hosts) # loops
repeat 3 times
exec -> net.show # run any REPL command once
break
end
end
get net.scan.timeout -> _t # read a config value
report -> "assessment.md" # write the session report
语言说明:
set、get、on/start/run、off/stop、wait for <module> [max <secs>]、sleep <secs>、echo/say/print、show <module>、report <file>、exec <command>、if/else/end、、、、、,以及单独的 会停止脚本。配置默认使用 toha3ee.json(可用 --config 覆盖)。每个模块从自己的命名空间读取各自的设置,例如 report.generate.out、switch.portsteal.victim_mac、http.harvest.pcap。
隐身(stealth)始终开启,贯穿每个阶段,直至单个数据包。默认情况下,每个发送数据包的模块都带有随机化、抖动的配置文件;无需启用任何东西,而禁用隐身(set <module>.stealth false)在设计意图上明确不受支持。
stealth_shuffle),因此扫描不会以扫描器被指纹识别的可预测递增顺序遍历子网。stealth_jitter、stealth_burst、stealth_pause),因此流量既不是平坦的均匀流,也不是单一同步的洪水。stealth_pad)代替大多数扫描器发出的零填充帧;主动 net.scan 扫描由单个捕获循环收集,同时被动监听器持续接收流量。stealth_ports)、IP TTL 和标识(stealth_ttl、stealth_id)、TCP 序列号和窗口,并偶尔清除 DF 位,因此探测流不会归结为单一工具签名。可调项按模块读取,例如 set net.scan.stealth_jitter 5ms、set service.synscan.stealth_burst 128。在任何模块运行时,REPL 提示符保持可见和活跃,就像 bettercap 一样。
go test ./...
该测试套件涵盖帧构造器(DHCP、NDP、802.11、STP/CDP/LLDP)、存储和报告渲染器,以及一个锁定完整模块目录的注册表契约测试。
CI(.github/workflows/ci.yml)在 Linux 上运行 gofmt、go vet、go build 和 go test -race,并在每次推送/PR 时在 Windows 和 macOS 上运行测试;CodeQL 运行静态安全分析。依赖更新由 Dependabot 处理。
请参阅 CONTRIBUTING.md、docs/contributing.md 和 CODE_OF_CONDUCT.md。通过 SECURITY.md 报告安全问题——不要作为公开 issue 提交。
| 路径 | 用途 |
|---|
cmd/toha3ee | CLI:控制台、向导、--eval、caplet 运行器、script/build |
internal/ui | 控制台渲染:横幅、调色板、分区、表格、状态符号、HUD |
internal/script | .toha3ee 脚本语言:词法分析器、解析器、引擎 |
internal/attacks/ | 按类别划分的所有攻击模块 |
internal/netx/ | 协议原语(ARP、DHCP、DNS、NDP、802.11、SMB/NTLM、代理等) |
internal/hijack | HTTP/HTTPS MITM 代理及凭据/会话拦截 |
internal/phish | 强制门户钓鱼和登录页面克隆 |
internal/store | 共享数据存储和事件总线 |
internal/safety | 清理/心跳生命周期 |
internal/config | JSON 配置加载 |
internal/oui | MAC 厂商数据库 |
pkg/certutil | 框架 CA 和按主机 TLS 证书 |
| 类别 | 模块 |
|---|
| mitm | arp.spoof, dns.spoof, dns.rebind, dhcp.rogue, dhcp.starve, dhcp6.spoof, icmp.redirect, ipv6.ra, ipv6.ndp, llmnr.poison, wpad.poison |
| espionage | http.harvest, http.proxy, https.proxy, ssl.strip, phish.inject |
| auth | default.creds, ntlm.relay, smb.signing, smb.kerberoast, auth.spray, auth.brute, auth.userenum, auth.asrep |
| recon | net.scan, net.ping, net.traceroute, net.osdetect, service.synscan, service.tcpconnect, service.udpscan, service.finxmas, service.ack, service.protoscan, service.idle, service.fingerprint, service.tls, web.dir, cve.suggest |
| osint | osint.dns, osint.whois, osint.ct, osint.asn, osint.shodan, osint.bucket, osint.wayback, osint.github, osint.hibp, osint.metadata, osint.dork, osint.harvest |
| enum | smtp.enum, snmp.enum, ldap.enum, nfs.enum, smb.enum, net.ip6sweep |
| web | web.misconfig |
| switch | switch.flood, switch.portsteal, switch.vlanhop, switch.cdp, switch.stp |
| wireless | wlan.scan, wlan.deauth, wlan.handshake, wlan.eviltwin, wlan.pmkid, wlan.beaconflood, wlan.karma |
| post | report.generate, session.replay, pcap.export |
| 符号 | 含义 |
|---|
[*] | 信息 / 正在运行(白色) |
[+] | 成功(绿色) |
[!] | 警告(琥珀色) |
[>] | 系统(粗体白色) |
[-] | 中性(暗色) |
[x] | 硬错误(红色) |
[OK] | 已验证 / 通过(绿色) |
for each _x in <list>repeat N timeswhile <cond>breakcontinuestop_name -> value、_name = value 或 _name >> value;[...] 从属性构建列表,$(_name.size) 和 $(_list.size) 为长度。$(...) 解析实时会话状态:$(hosts.count)、$(net.hosts)、$(creds.count)、$(sessions.count)、$(running.list)、$(iface.ip)、$(iface.cidr)、$(iface.mac)、$(iface.gateway)、$(config.<module.key>);下划线前缀的路径读取脚本变量。== != < > <= >=、&&、||、!,数字按数值比较。while 循环有上限,因此错误条件永远不会挂起脚本。