
Go 기반 네트워크 공격 및 MITM 프레임워크로, 승인된 침투 테스트, 네트워크 정찰, 트래픽 가로채기, 무선 보안 테스트, 레이어 2/3/7 공격 연구를 위한 도구입니다.
Go로 작성된 로컬 및 네트워크 보안 평가 프레임워크입니다. 네트워크 평가 파이프라인(호스트·서비스 발견, 열거, 자격 증명 감사, 취약점 식별, 승인된 익스플로잇)을 다루는 연구 및 승인된 침투 테스트 도구입니다. 열 개 모듈 카테고리는 정찰, 열거, OSINT, MITM(ARP/DHCP/DNS/IPv6 포이즈닝 및 인라인 HTTP/HTTPS 인터셉션), 무선, 스위치 계층, 웹, 인증, 스파이 활동, 사후 익스플로잇을 아우르며, 모두 대화형 REPL, 안내형 위저드 또는 일회성 명령 시퀀스로 구동됩니다.
MITM은 이 더 넓은 영역 안의 한 기능입니다. TOHA3EE는 중간자 공격 시나리오에만 국한되지 않습니다.
경고: toha3ee는 네트워크 트래픽을 적극적으로 리다이렉트하고, 포이즈닝하며, 복호화하고, 인터셉트합니다. 소유한 네트워크 또는 명시적으로 테스트가 승인된 네트워크에서만 사용하십시오. 제3자를 대상으로 이 모듈을 실행하는 것은 대부분의 국가에서 불법입니다. 먼저
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
Or from a checkout:
make install # installs ~/.local/bin/toha3ee and adds it to PATH
설치 옵션(Unix): --prefix <dir>(기본값: root이면 /usr/local/bin, 그 외에는 ~/.local/bin), --no-path는 셸 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에는 아이콘이 포함되어 있어 설치 프로그램이 동일한 검증된 아티팩트에서 아이콘을 등록할 수 있습니다.
제거: 바이너리와 설치 프로그램이 셸 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 Command Line Tools와 함께 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 권한(로우(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)는 등록된 정리 작업과 하트비트를 추적하여 panic 또는 SIGINT가 발생해도 모든 공격이 종료되도록 합니다. 공유 store는 호스트 인벤토리, 캡처된 자격 증명, 세션, 보고서 생성기에 공급되는 이벤트 로그를 유지합니다.
전체 최신 카탈로그는 toha3ee modules를 실행하십시오. 주요 모듈:
기본 toha3ee(또는 toha3ee interactive)는 bettercap/metasploit 스타일의 콘솔을 엽니다. @@@ 배너, 탭 완성을 지원하는 빨간색 강조 toha3eeλ > 프롬프트, 그리고 프롬프트 위에 인터페이스, 실행 중인 모듈, 실시간 호스트/포트/자격 증명/이벤트 수를 표시하는 지속적인 한 줄 상태 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).
스텔스는 각 패킷에 이르기까지 모든 단계에서 항상 켜져 있습니다. 모든 패킷 전송 모듈에는 기본적으로 무작위화되고 지터가 적용된 프로필이 포함됩니다. 활성화할 것이 없으며, 비활성화(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). bettercap과 마찬가지로 모듈이 실행되는 동안 REPL 프롬프트는 계속 표시되고 활성 상태를 유지합니다.
go test ./...
이 테스트 스위트는 프레임 크래프터(DHCP, NDP, 802.11, STP/CDP/LLDP), 저장소 및 보고서 렌더러, 그리고 전체 모듈 카탈로그를 고정하는 레지스트리 계약 테스트를 다룹니다.
CI(.github/workflows/ci.yml)는 모든 push/PR에 대해 Linux에서 gofmt, go vet, go build, go test -race를 실행하고 Windows와 macOS에서도 테스트를 실행합니다. CodeQL은 정적 보안 분석을 실행합니다. 의존성 업데이트는 Dependabot이 처리합니다.
CONTRIBUTING.md, docs/contributing.md 및 CODE_OF_CONDUCT.md를 참조하십시오. 보안 문제는 공개 이슈가 아닌 SECURITY.md를 통해 신고하십시오.
| 경로 | 용도 |
|---|
cmd/toha3ee | CLI: 콘솔, 위저드, --eval, 캡릿 실행기, 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 루프에는 상한이 있어 잘못된 조건이 스크립트를
절대 멈추게 하지 않습니다.