skills/corploc/skills/exegol-pentest

exegol-pentest

SKILL.md

Exegol for Offensive Security

Overview

Exegol is a Docker-based pentest environment with 100+ pre-installed offensive tools, managed via a Python CLI wrapper. It replaces traditional Kali VMs with fast, reproducible, disposable containers.

Core concept: exegol start <name> <image> creates a ready-to-hack container in seconds. All tools, resources, and configurations are pre-loaded.

For the complete CLI reference, images list, and resource catalog, see exegol-reference.md in this skill directory.

When to Use

  • User needs to set up a pentest/red team environment
  • User wants to launch tools available in Exegol (BloodHound, Burp, Responder, CrackMapExec, etc.)
  • User is doing HTB, CTF, or lab work and needs a quick environment
  • User asks about container-based offensive security setups
  • User needs to manage multiple engagement environments simultaneously

When NOT to use: For defensive/blue team tooling, forensics-only workflows, or general Docker questions unrelated to security testing.

Quick Reference

Task Command
Start interactive container exegol start mypentest full
Start with workspace exegol start client1 full -w ./engagement/
Start with current dir exegol start client1 full -cwd
Start with VPN exegol start htb full --vpn ~/vpn/lab.ovpn
Start with logging exegol start client1 full -l -w ./engagement/
Run single command exegol exec mypentest 'nmap -sV 10.10.10.1'
Run GUI tool in background exegol exec -b mypentest burpsuite
Temp container for one-off exegol exec --tmp full 'whatweb http://target'
List containers/images exegol info
Stop container exegol stop mypentest
Remove container exegol remove mypentest
Install an image exegol install full
Update everything exegol update

Engagement Setup Workflow

1. Choose the Right Image

Image Use Case
full General pentest, full toolkit (50GB+)
ad Active Directory / internal pentest
web Web application testing
light Quick recon, limited disk space
osint OSINT / reconnaissance only
free Same as full but community edition (delayed releases)

2. Create the Engagement Container

# Standard engagement setup with workspace and logging
exegol start <engagement-name> <image> -w /path/to/engagement/ -l

# Example: Internal AD pentest
exegol start acme-internal ad -w ./acme-corp/ -l

# Example: Web app pentest
exegol start webapp-audit web -w ./webapp-audit/ -l

# Example: HTB lab with VPN
exegol start htb full --vpn ~/vpn/htb-lab.ovpn -w ./htb/

3. Network Configuration

Scenario Config
Host network (default) No flag needed, shares host interfaces
VPN to target network --vpn ~/path/to/config.ovpn
VPN with credentials --vpn config.ovpn --vpn-auth creds.txt
Isolated container --network disable
Container-to-container --network docker
Port forwarding -p 8080:8080 -p 4444:4444

4. Privilege Options for Specific Attacks

# WiFi / network sniffing (needs NET_ADMIN)
exegol start wifi full --cap NET_ADMIN -d /dev/bus/usb/

# USB device access (Proxmark, Rubber Ducky, etc.)
exegol start hw full -d /dev/ttyACM0

# Full privilege (use sparingly)
exegol start lab full --privileged

Pentest Workflow Patterns

AD / Internal Pentest

# Create container with AD image
exegol start internal ad -w ./client-engagement/ -l --vpn client-vpn.ovpn

# Inside container:
neo4j start                              # Start Neo4j for BloodHound
bloodhound-ce                            # Launch BloodHound CE (port 1030)
crackmapexec smb 10.0.0.0/24             # Network discovery
responder -I eth0                        # LLMNR/NBT-NS poisoning
bloodhound-python -d domain.local -u user -p pass -c All  # Collect AD data

Default credentials inside container:

Service User Password
Neo4j neo4j exegol4thewin
BloodHound CE via web UI exegol4thewin
Empire empireadmin exegol4thewin

Web Application Pentest

# Create container with web image
exegol start webapp web -w ./webapp-audit/ -l

# Inside container:
burpsuite                                # Launch Burp Suite (proxy on 8080)
nuclei -u https://target.com             # Automated vuln scanning
sqlmap -u "http://target/page?id=1"      # SQL injection testing
ffuf -u http://target/FUZZ -w /opt/resources/...  # Directory fuzzing

Recon / OSINT

exegol start recon osint -w ./recon/

# Inside container:
subfinder -d target.com                  # Subdomain enumeration
httpx -l subdomains.txt                  # HTTP probing
theHarvester -d target.com -b all        # Email/domain harvesting

Privilege Escalation (Using Built-in Resources)

Resources are available at /opt/resources inside every container:

Resource Path Purpose
LinPEAS /opt/resources/linux/linPEAS/ Linux privesc enumeration
WinPEAS /opt/resources/windows/winPEAS/ Windows privesc enumeration
Mimikatz /opt/resources/windows/mimikatz/ Windows credential extraction
Chisel /opt/resources/linux/chisel/ TCP/UDP tunneling
ligolo-ng /opt/resources/linux/ligolo-ng/ Network pivoting
SharpHound /opt/resources/windows/SharpHound/ AD collection
PrintSpoofer /opt/resources/windows/PrintSpoofer/ Windows privesc
GodPotato /opt/resources/windows/GodPotato/ Windows privesc
netcat (static) /opt/resources/linux/nc Reverse shells
# Serve resources to target via HTTP
cd /opt/resources && python3 -m http.server 8888

# Or transfer specific tool
python3 -m http.server -d /opt/resources/linux/linPEAS/ 8888

Multi-Container Engagements

Run parallel containers for different phases or targets:

# Recon container
exegol start recon-phase osint -w ./engagement/recon/

# Attack container with VPN
exegol start attack full --vpn client.ovpn -w ./engagement/attack/ -l

# C2 container
exegol start c2 full -p 443:443 -p 80:80 -w ./engagement/c2/ -l

Switch between containers by spawning new shells:

exegol start attack      # Opens new shell in existing "attack" container

Credential Management (exegol-history)

# Add credentials found during engagement
exh add creds -u 'admin' -p 'P@ssw0rd!' -d 'ACME.LOCAL'
exh add creds -u 'svc_sql' -H 'aad3b435b51404eeaad3b435b51404ee:...' -d 'ACME.LOCAL'

# Set active credentials as environment variables
exh set creds

# Add discovered hosts
exh add hosts --ip 10.10.10.1 -n dc01 -r "Domain Controller"
exh add hosts --ip 10.10.10.5 -n web01 -r "IIS Web Server"

# View current context
exh show

# Bulk import
exh import creds --file found_creds.csv --format CSV

Logging & Evidence

# Enable logging at container creation
exegol start engagement full -l -w ./engagement/

# Logs are stored in /workspace/logs/ (asciinema format by default)
# Replay a session:
asciinema play /workspace/logs/session.cast

Logging methods:

  • asciinema (default) — records terminal sessions, replayable
  • script — raw terminal recording

Customization (my-resources)

Personal configs persist across all containers via ~/.exegol/my-resources/:

Path Purpose
bin/ Custom tools (auto-added to $PATH)
setup/zsh/aliases Custom shell aliases
setup/zsh/history Custom command history
setup/python3/requirements.txt Python packages to auto-install
setup/apt/packages.list APT packages to auto-install
setup/bloodhound/customqueries_merge/ BloodHound custom queries
setup/firefox/policies.json Firefox extensions, bookmarks
setup/load_user_setup.sh Custom setup script (runs on first start)

Common Mistakes

Mistake Fix
Trying to modify container config after creation Container options are set at creation only. Remove and recreate.
Forgetting -l for logging Always use -l on real engagements for evidence
Using --privileged everywhere Use specific --cap flags instead (e.g., --cap NET_ADMIN)
Not setting workspace Always use -w to persist data outside the container
Running out of disk space full image is 50GB+. Use light or ad/web for focused work
VPN not working VPN auto-switches to docker network mode. Check with exegol info <container>
GUI apps not displaying Ensure X11 is not disabled. On macOS, install XQuartz.
Weekly Installs
1
Repository
corploc/skills
First Seen
6 days ago
Installed on
zencoder1
amp1
cline1
openclaw1
opencode1
cursor1