iwa-tools README

The project's README from github.com/CICADA8-Research/iwa-tools. As one markdown file: README.md.

iwa-tools

TL;DR

Check out the demo on this site!

изображение

Description

Chrome has an experimental API called Direct Sockets that gives raw TCP/UDP to "Isolated Web Apps" — signed, installed web apps that live under isolated-app://<key>/. It exists so people can build things like SSH clients and databases inside the browser without a native shim. It also happens to be perfect for offensive AD tooling.

This is a bunch of pentesting utilities on top of that. Everything runs inside a signed .swbn that Chrome installs, and speaks SMB / LDAP / DCE-RPC / WinRM / Kerberos / MSSQL / ADWS from a browser tab.

Written for OFFZONE 2026 — talk "Living off the Browser".

Use only against systems you own or have explicit written permission to test.

Screenshots

The main console — one prompt, all tools. Here it's running portscan → adidns (Kerberos + LDAPS + channel binding) → certify find:

iwa-tools console

Or install each tool as its own IWA if you'd rather have a GUI than a console:

Standalone apps

What's in it

Tool What it does
nxc (netexec) The netexec port. SMB · LDAP · WinRM · MSSQL · SSH · FTP · RDP · VNC
adidnsdump Dumps AD-integrated DNS zones over LDAP
sharphound BloodHound collector — LDAP + SMB flavour
soaphound BloodHound collector — ADWS flavour (port 9389, quieter than LDAP)
certipy AD CS: ESC1-15 discovery, cert requests, PKINIT → TGT + UnPAC-the-hash
ldap-shell Interactive LDAP — DACL, RBCD, Shadow Creds, gMSA, password reset, all the fun stuff
evil-winrm Remote PowerShell over WinRM (HTTP/HTTPS)
portscan Plain TCP connect scanner

The protocol stacks are hand-written JS. NTLMv2 with signing and sealing, Kerberos AES256, pass-the-hash, pass-the-ticket, PKINIT, and channel binding (tls-server-end-point) for LDAPS / WinRM EPA on locked-down DCs.

TLS goes through rustls compiled to WASM (tls-wasm/) — that was way easier than writing a from-scratch TLS 1.3 stack in JavaScript.

Building

You need Node.js. Chrome ≥ 128 for install.

Enable these three flags at chrome://flags/#... and relaunch Chrome afterwards (otherwise nothing works):

Then:

git clone https://github.com/CICADA8-Research/iwa-tools && cd iwa-tools
make                       # build every tool
# or:  make iwa-tools      # just the combined console

Open chrome://web-app-internals, find Install IWA from Signed Web Bundle, paste the full path to iwa-tools/dist/iwa-tools.swbn, hit Install. It shows up in chrome://apps and the system launcher.

Rebuilds don't auto-update — you have to hit Perform update now on the same page. That's a Chrome quirk.

Using it

The console has a help command. help <tool> for a specific one. If you've used netexec / crackmapexec, most of this will feel familiar:

nxc smb 10.0.0.0/24 -u admin -d corp.local -p PASSWORD --shares
nxc smb dc01 -u admin -d corp.local -p PASSWORD --dcsync             # everyone
nxc smb dc01 -u admin -d corp.local -p PASSWORD --atexec whoami
nxc ldap dc01 -u admin -d corp.local -p PASSWORD --kerberoast
nxc winrm dc01 -u admin -d corp.local -p PASSWORD -x hostname
nxc mssql db01 -u sa -p PASSWORD --query 'SELECT @@version'
certipy find -H dc01 -u admin -d corp.local -p PASSWORD --tls
certipy req  -H dc01 -u lowpriv -d corp.local -p PASSWORD \
             --cahost ca01 -ca corp-CA -t VulnerableTemplate -upn [email protected]
certipy auth -k dc01 -pfx loot/certipy/…pfx
sharphound -H dc01 -u admin -d corp.local --collection Default --tls
ldap-shell -H dc01 -u admin -d corp.local --tls

Files (ccache/kirbi, wordlists, results) live in an in-memory store — there's a Files tab in the UI for upload/download. Then any command that takes --ticket <path> or @path for arg interpolation picks them up.

What doesn't work (yet)

Development

make test             # per-tool unit tests
make clean            # drop dist/
make distclean        # also drop node_modules/
make keygen-<tool>    # regenerate signing key — CHANGES the app origin

The signing key is Ed25519 per tool, generated on first build. The public key becomes the app's isolated-app://<key>/ origin, so regenerating a key means the app installs fresh — Chrome treats it as a different app entirely.

License

MIT. See LICENSE.

iwa-tools (CICADA8-Research/iwa-tools)

Searching Database…

Что это?iwa-tools — набор инструментов наступательной безопасности, который работает внутри Chrome как установленное Isolated Web App и позволяет разговаривать по SMB, LDAP, DCE-RPC, WinRM, Kerberos, MSSQL и ADWS прямо из вкладки браузера — для пентеста Active Directory.
Это браузерное расширение?Нет — это Isolated Web App, подписанный бандл .swbn, который Chrome устанавливает как нативное приложение через свой экспериментальный API Direct Sockets для сырых TCP/UDP, а не обычное расширение.
Что нужно, чтобы собрать и запустить это?Лишь Node.js для сборки, а для установки и использования — Chrome 128 или новее с тремя включёнными экспериментальными флагами.
Что пока не работает?nxc smb --wmi не реализовано, потому что не готов маршалинг DCOM NDR (вместо этого используйте nxc winrm --wmi), а полный разбор ntds.dit не поддерживается — инструмент лишь скачивает сырые файлы кустов и отсылает к локальному secretsdump.py.
Работает ли он на любой ОС, где есть Chrome?Да — поскольку это Isolated Web App, а не нативный код, он работает везде, где запускается Chrome 128 и новее: на Windows, macOS или Linux.
Что внутри набора?Сюда входят мультипротокольный клиент в стиле netexec (SMB/LDAP/WinRM/MSSQL/SSH/FTP/RDP/VNC), сборщики BloodHound adidnsdump, sharphound и soaphound, certipy для атак на AD CS, интерактивный ldap-shell, evil-winrm и простой TCP-сканер портов — и всё это написанные вручную реимплементации на JS.
Как сетевые протоколы реализованы на JavaScript?Автор вручную написал стеки протоколов на JS, включая подпись и шифрование NTLMv2, Kerberos AES256, pass-the-hash и pass-the-ticket, PKINIT и привязку TLS-канала; сам TLS обрабатывает rustls, скомпилированный в WASM.
Зачем это создано?Инструмент написан для доклада OFFZONE 2026 «Living off the Browser»: он показывает, что инструментарий атак на AD может целиком работать из подписанной установленной вкладки браузера вместо нативного импланта.
Что будет, если пересобрать приложение?Каждая сборка генерирует свежий ключ подписи Ed25519 для инструмента; так как публичный ключ становится origin приложения вида isolated-app://, Chrome считает пересобранное приложение совершенно новым, отдельным приложением.
Size
1.4 MB
Stars
146
Updated
CommitAug 27
Age
1mo
Commits · 90 Days