
Сетевой фреймворк на Go для эксплуатации уязвимостей и MITM-атак, предназначенный для авторизованного тестирования на проникновение, разведки сети, перехвата трафика, тестирования безопасности беспроводных сетей и исследования атак на уровнях 2/3/7.
Локальный и сетевой фреймворк для оценки безопасности, написанный на Go. Это исследовательский инструмент для авторизованного тестирования на проникновение, который охватывает весь конвейер оценки сети — обнаружение хостов и сервисов, сбор информации, аудит учётных данных, выявление уязвимостей и авторизованную эксплуатацию. Его десять категорий модулей охватывают разведку, перечисление (enumeration), OSINT, MITM (отравление ARP/DHCP/DNS/IPv6 и встроенный перехват HTTP/HTTPS), беспроводные сети, коммутационный уровень, веб, аутентификацию, шпионаж и пост-эксплуатацию — всё управляется из интерактивного 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> (по умолчанию /usr/local/bin от
root, иначе ~/.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 и размещает запись .desktop
рядом с префиксом установки (например, /usr/local/share или ~/.local/share),
поэтому toha3ee отображается в поиске GNOME со своей иконкой. В Windows он
копирует .ico и создаёт ярлык в меню «Пуск». Архивы релиза (tarball/zip)
содержат иконку, чтобы установщик мог зарегистрировать её из того же
проверенного артефакта.
Удаление: удалите бинарный файл и строку PATH, которую установщик добавил в ваш
shell rc (или %LOCALAPPDATA%\Programs\toha3ee в Windows).
Требуются Go 1.26+ и libpcap.
# Debian/Ubuntu
sudo apt install libpcap-dev
# then
go build ./cmd/toha3ee
Сборки Linux требуют заголовочные файлы libpcap (резервный вариант установщика «из исходников» проверяет их наличие и выводит правильную команду apt/dnf, если они отсутствуют). macOS поставляется с libpcap в составе Xcode Command Line Tools.
# 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 (raw-сокеты, захват пакетов и
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) отслеживает
зарегистрированные процедуры очистки и heartbeat-сигналы, поэтому любая атака
корректно завершается даже при панике или 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>, или
выполните любой файл .toha3ee через run <file>. toha3ee build <file> (или
build <file> в REPL) проверяет файл и выводит план пробного запуска без
воздействия на сеть. 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) для каждого push/PR запускает gofmt, go vet,
go build и go test -race в Linux, а также тесты в Windows и macOS;
CodeQL выполняет статический анализ безопасности.
Обновлением зависимостей занимается Dependabot.
Смотрите CONTRIBUTING.md, docs/contributing.md и CODE_OF_CONDUCT.md. Сообщайте о проблемах безопасности через SECURITY.md, а не как публичные issues.
| Путь | Назначение |
|---|
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 | фишинг через captive-портал и клоны страниц входа |
internal/store | общее хранилище данных и шина событий |
internal/safety | жизненный цикл очистки/heartbeat |
internal/config | загрузка JSON-конфигурации |
internal/oui | база MAC-вендоров |
pkg/certutil | центр сертификации фреймворка и 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 ограничены, поэтому некорректное условие никогда не
сможет «подвесить» сценарий.