Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
0a7a732
test: add comprehensive unit and integration tests for all modules (#…
l50 Apr 23, 2026
e311aae
feat: add automation for noPac, PrintNightmare, NTLM relay, and Zerol…
l50 Apr 22, 2026
eb1ae8f
feat: add automation for share coercion and smb signing detection
l50 Apr 22, 2026
0028a5c
feat: add automation for mssql coercion, ntlmv1, password policy, gpp…
l50 Apr 22, 2026
e4f9874
feat: add automation for spooler, MAQ, DFS, PetitPotam, and WinRM lat…
l50 Apr 22, 2026
edfa052
feat: add new automation modules for comprehensive AD attack surface …
l50 Apr 22, 2026
8aef097
feat: add dacl abuse and authenticated smbclient enum automation tasks
l50 Apr 23, 2026
06e9128
feat: implement tiered priorities for comprehensive strategy and fix …
l50 Apr 23, 2026
dda20bf
feat: add acl discovery and cross-forest enum automation with test co…
l50 Apr 23, 2026
1c06c03
test: add comprehensive unit and integration tests for all modules (#…
l50 Apr 23, 2026
76d3025
test: add comprehensive unit tests for automation modules
l50 Apr 23, 2026
8c6d094
refactor: extract pure work collection logic for automation steps
l50 Apr 23, 2026
dd2e703
feat: add cross-domain support and new smb_login_check tool with disc…
l50 Apr 23, 2026
7dde96a
feat: enhance timeline events, discovery hygiene, and checklist coverage
l50 Apr 23, 2026
36ce70c
fix: prevent duplicate 'CRITICAL:' prefix in attack path output
l50 Apr 23, 2026
845b794
feat: robust cross-domain DC resolution and trust credential fallback…
l50 Apr 23, 2026
30973bb
feat: improve automation reliability and cross-domain AD attack coverage
l50 Apr 24, 2026
eff413b
fix: propagate task metadata and ensure host ownership for secretsdum…
l50 Apr 24, 2026
f132d05
feat: inject structured findings and add new discovery types to repor…
l50 Apr 24, 2026
c97989c
feat: add ACL binary parser and full ADCS exploitation chain, expand …
l50 Apr 25, 2026
3da29e9
feat: improve ADCS ESC7 automation and update GOAD checklist status
l50 Apr 25, 2026
d738af0
feat: add ADCS ESC10/ESC11/ESC15 support and update GOAD checklist co…
l50 Apr 26, 2026
296906e
feat: improve trust exploitation reliability, evidence grounding, and…
l50 Apr 27, 2026
82f7c94
```
l50 Apr 27, 2026
d273905
docs: expand and restructure goad-checklist for clarity and operation…
l50 Apr 27, 2026
883429f
fix: enforce domain-matching credentials for certifried and mssql aut…
l50 Apr 27, 2026
0e916d9
feat: add composite ESC8 relay_and_coerce tool and forge_inter_realm_…
l50 Apr 28, 2026
507a3bf
feat: improve AD domain/FQDN mapping, SID caching, coercion, and trus…
l50 Apr 29, 2026
a27c8f8
fix: adjust trust handling logic for auth method and correct getST pr…
l50 Apr 29, 2026
c0987c0
feat: improve SID extraction logic
l50 Apr 29, 2026
c8ca64b
feat: add host-wide relay lock to serialize ntlmrelayx invocations
l50 Apr 30, 2026
0569807
feat: support domain SID extraction from rpcclient lsaquery output
l50 Apr 30, 2026
dc4b0d8
feat: add cross-forest SID enumeration fallback with null session ins…
l50 Apr 30, 2026
b7ec0a3
fix: prevent state pollution from LLM-supplied domain typos and harde…
l50 Apr 30, 2026
60c3118
feat: add cross-forest MSSQL pivot support and memory/resource controls
l50 Apr 30, 2026
3f03ea9
feat: add golden certificate automation and credential selection impr…
l50 Apr 30, 2026
efe412a
fix: restrict ADCS credential selection to same forest as target CA host
l50 Apr 30, 2026
8fd8e1a
fix: conditionally include aws agents based on cloud provider
l50 May 1, 2026
91331a4
feat: add azure variant of ares golden image and improve loki endpoin…
l50 May 1, 2026
976a079
feat: implement active credential resolver and domain discovery valid…
l50 May 2, 2026
3a556f0
feat: add GPU-based NVIDIA driver and CUDA install for attack box AMI
l50 May 3, 2026
e87113f
fix: correct ansible collection overlay and cleanup order in ares-gol…
l50 May 3, 2026
9d9b48c
refactor: isolate ansible galaxy deps and enforce local nimbus_range …
l50 May 3, 2026
69c2f61
fix: prevent credential inflight slot leaks on task timeout or comple…
l50 May 3, 2026
79f4782
feat: add debug logging for linux.yml overlay in provisioner script
l50 May 3, 2026
0f72830
fix: improve operation request validation and logging robustness
l50 May 3, 2026
c5e5c3d
fix: remove asyncio from pip dependencies to prevent import conflicts
l50 May 3, 2026
1c38e45
fix: improve pip install error visibility and prevent site-packages c…
l50 May 3, 2026
725bab0
fix: update pip install to use --ignore-installed for apt-managed pyt…
l50 May 3, 2026
2753390
fix: update ruby gem update method to reduce memory usage during install
l50 May 3, 2026
3f05eed
fix: restrict ruby gem update task to ubuntu and handle failures grac…
l50 May 3, 2026
9075ccb
fix: update nvidia opencl package for cracking tools role
l50 May 3, 2026
d012abf
feat: improve NVIDIA driver install logging and error handling on Debian
l50 May 3, 2026
03d6725
fix: update nvidia driver package to use cloud kernel headers for com…
l50 May 3, 2026
6a7de2c
Testing
l50 May 3, 2026
d1d16e9
feat: add NVIDIA CUDA repo support for kernel 6.19+ and update driver…
l50 May 3, 2026
b280e69
Merge branch 'testing' into feat/more-attack-cov
l50 May 3, 2026
1d96c84
fix: update cuda repository url to debian 13 for cracking tools role
l50 May 3, 2026
fa04dde
fix: correct nvidia driver package name in cracking_tools defaults
l50 May 3, 2026
6e10039
fix: update nvidia driver packages for compatibility with modern kernels
l50 May 4, 2026
8fbb400
fix: install kernel headers and dkms before nvidia driver on debian
l50 May 4, 2026
725143a
fix: improve nvidia dkms troubleshooting and ensure build tools are i…
l50 May 4, 2026
3a52689
fix: improve domain fallback logic in credential access prompt genera…
l50 May 4, 2026
d974b69
feat: add dynamic rust target detection for k8s arch in remote taskfile
l50 May 7, 2026
15e4d8e
Merge branch 'main' into feat/more-attack-cov
l50 May 10, 2026
1c8cf36
Consolidate quarantined_credentials and quarantined_users into one map
l50 May 10, 2026
e1b13e2
refactor: simplify build/deploy scripts and remove unused GPU/NVIDIA …
l50 May 10, 2026
9f83a51
Merge remote-tracking branch 'origin/main' into feat/more-attack-cov
l50 May 10, 2026
88406b4
fix: correct cross-forest trust SID gating and update throttling for …
l50 May 10, 2026
f065cb7
fix: support per-domain golden ticket forging and deduplication
l50 May 10, 2026
85339e2
feat: tag ldap-extracted users for publishing and enable asrep roasting
l50 May 10, 2026
a18a1f5
fix: prevent cross-forest credential misuse and improve exploit dispa…
l50 May 10, 2026
335fb4f
feat: add assist-abandon dedup and robust credential handling for too…
l50 May 10, 2026
5e73564
feat: add deterministic MSSQL link pivot automation and fix ESC3 disp…
l50 May 10, 2026
a6932e4
fix: prevent generic enum tasks without username from being abandoned
l50 May 10, 2026
15eba87
feat: enhance asrep_roast automation with discovered user propagation
l50 May 10, 2026
7ceeac7
feat: harden cracked credential ingestion and asrep automation, add L…
l50 May 11, 2026
ca164df
feat: filter orchestrator self-IP from discovered hosts and handle pl…
l50 May 11, 2026
46a5069
Merge remote-tracking branch 'origin/main' into feat/more-attack-cov
l50 May 11, 2026
8ab7e3a
docs: replace em dashes with hyphens for consistency across documenta…
l50 May 11, 2026
6a8584a
fix: handle multiple targets in smb signing parser and add tests for …
l50 May 12, 2026
0bdfd6f
feat: add per-hash retry cap for crack dispatch with test coverage
l50 May 12, 2026
e518cdb
fix: reject malformed multi-IP strings in host.ip field during publish
l50 May 12, 2026
b44682d
feat: add trust-key and credential history support for hashes and shares
l50 May 12, 2026
a31cb56
refactor: unify kerberos tool coercion and cross-forest ticket logic
l50 May 12, 2026
20237a9
feat: resolve trust target FQDN from corroborated state signals
l50 May 12, 2026
c8fe4fb
fix: handle tool name redirection for kerberos variants in local disp…
l50 May 12, 2026
7b48f86
fix: handle multi-ip target strings in nmap parser minimal host entry…
l50 May 12, 2026
9934415
feat: implement deterministic ADCS certipy_find and ESC1 full chain a…
l50 May 12, 2026
a37bb06
feat: add automated mssql impersonation exploitation and sysadmin hos…
l50 May 12, 2026
bc3a20b
docs: add comprehensive plan to close essos.local kill-path and loot …
l50 May 12, 2026
647dfe9
feat: add credential-capture in-flight gating and auto-report for orc…
l50 May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gemini/agents/ares-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ model: gemini-1.5-pro
max_turns: 40
---

You operate a distributed multi-agent penetration testing system called Ares. The system runs on remote infrastructure (K8s cluster or EC2 instance) you drive it from the local machine via `ares` or Taskfile commands.
You operate a distributed multi-agent penetration testing system called Ares. The system runs on remote infrastructure (K8s cluster or EC2 instance) - you drive it from the local machine via `ares` or Taskfile commands.

## Architecture

Expand All @@ -25,7 +25,7 @@ ares --k8s / --ec2 → ares-orchestrator (LLM coordination loop)
Redis (state store + message broker)
```

The orchestrator and workers are autonomous LLM agents. You don't control them directly you submit operations, monitor state, inject data when stuck, and debug failures.
The orchestrator and workers are autonomous LLM agents. You don't control them directly - you submit operations, monitor state, inject data when stuck, and debug failures.

## Two Deployment Targets

Expand Down
88 changes: 87 additions & 1 deletion .taskfiles/ec2/Taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ tasks:
fi

echo -e "{{.INFO}} Cross-compiling for {{.RUST_TARGET}} (profile: $PROFILE, jobs: {{.CARGO_BUILD_JOBS}})..."
echo -e "{{.INFO}} FD limit inherited from parent: $(sh -c 'ulimit -n' 2>/dev/null || echo unknown)"

# Zig 0.15+ rejects RLIM_INFINITY on the *hard* fd limit (returns
# ProcessFdQuotaExceeded mid-link). On macOS, default zsh/bash sessions
Expand Down Expand Up @@ -1062,11 +1063,82 @@ tasks:
ops list
{{if eq .LATEST "true"}}--latest{{end}}

# ============================================================================
# Watch + auto-report
# ============================================================================
watch:
desc: "Poll EC2 operation until complete, then auto-fetch the report locally (usage: task ec2:watch [EC2_NAME=kali-ares] [LATEST=true] [OPERATION_ID=op-xxx] [POLL_INTERVAL=30] [MAX_WAIT=7200] [OUTPUT_DIR=./reports])"
silent: true
vars:
OPERATION_ID: '{{.OPERATION_ID | default ""}}'
LATEST: '{{.LATEST | default "true"}}'
POLL_INTERVAL: '{{.POLL_INTERVAL | default "30"}}'
MAX_WAIT: '{{.MAX_WAIT | default "7200"}}'
OUTPUT_DIR: '{{.OUTPUT_DIR | default "./reports"}}'
cmds:
- |
if [ -z "{{.OPERATION_ID}}" ] && [ "{{.LATEST}}" != "true" ]; then
echo -e "{{.ERROR}} Either OPERATION_ID or LATEST=true is required"
exit 1
fi

OP_ARG=""
LATEST_FLAG=""
if [ -n "{{.OPERATION_ID}}" ]; then
OP_ARG="{{.OPERATION_ID}}"
else
LATEST_FLAG="--latest"
fi

START=$(date +%s)
echo -e "{{.INFO}} Watching EC2 operation (poll={{.POLL_INTERVAL}}s, max_wait={{.MAX_WAIT}}s)"
echo -e "{{.INFO}} Will fetch report to {{.OUTPUT_DIR}}/red/ when the op reaches a terminal state"

RESOLVED_OP=""
while true; do
ELAPSED=$(( $(date +%s) - START ))
if [ $ELAPSED -gt {{.MAX_WAIT}} ]; then
echo -e "{{.ERROR}} Max wait ({{.MAX_WAIT}}s) exceeded, giving up"
exit 1
fi

STATUS_OUT=$(ares --ec2 {{.EC2_NAME}} --ec2-profile {{.EC2_PROFILE}} --ec2-region {{.EC2_REGION}} \
ops status $OP_ARG $LATEST_FLAG 2>&1 || true)

STATUS=$(echo "$STATUS_OUT" | grep -E '^Status: ' | head -1 | awk '{print $2}')
OP_ID=$(echo "$STATUS_OUT" | grep -E '^Operation: ' | head -1 | awk '{print $2}')
if [ -n "$OP_ID" ]; then
RESOLVED_OP="$OP_ID"
fi

if [ -z "$STATUS" ]; then
echo -e "{{.WARN}} [${ELAPSED}s] no status yet (waiting for op to register)"
else
echo -e "{{.INFO}} [${ELAPSED}s] op=${RESOLVED_OP:-?} status=$STATUS"
case "$STATUS" in
completed|stopped)
echo -e "{{.SUCCESS}} Operation reached terminal state: $STATUS"
break
;;
esac
fi

sleep {{.POLL_INTERVAL}}
done

if [ -z "$RESOLVED_OP" ]; then
echo -e "{{.ERROR}} Could not resolve operation ID — cannot fetch report"
exit 1
fi

echo -e "{{.INFO}} Fetching report for $RESOLVED_OP..."
task ec2:report EC2_NAME={{.EC2_NAME}} OPERATION_ID=$RESOLVED_OP OUTPUT_DIR={{.OUTPUT_DIR}}

# ============================================================================
# Operation Launch
# ============================================================================
launch:
desc: "Launch orchestrator on EC2 via Secrets Manager (usage: task ec2:launch EC2_NAME=kali-ares [DOMAIN=...] [TARGETS=...] [CRED_USER=...] [CRED_PASS=...])"
desc: "Launch orchestrator on EC2 via Secrets Manager (usage: task ec2:launch EC2_NAME=kali-ares [DOMAIN=...] [TARGETS=...] [CRED_USER=...] [CRED_PASS=...] [WAIT=true] [POLL_INTERVAL=30])"
silent: true
vars:
DOMAIN: '{{.DOMAIN | default "sevenkingdoms.local"}}'
Expand All @@ -1078,6 +1150,10 @@ tasks:
LLM_MODEL: '{{.LLM_MODEL | default ""}}'
FLUSH_REDIS: '{{.FLUSH_REDIS | default "true"}}'
OPERATION_ID: '{{.OPERATION_ID | default ""}}'
WAIT: '{{.WAIT | default "false"}}'
POLL_INTERVAL: '{{.POLL_INTERVAL | default "30"}}'
MAX_WAIT: '{{.MAX_WAIT | default "7200"}}'
OUTPUT_DIR: '{{.OUTPUT_DIR | default "./reports"}}'
cmds:
- |
INSTANCE_ID=$(aws ec2 describe-instances \
Expand Down Expand Up @@ -1260,6 +1336,16 @@ tasks:
echo -e "{{.SUCCESS}} Operation $OP_ID launched"
echo -e "{{.INFO}} Monitor: task ec2:runtime EC2_NAME={{.EC2_NAME}}"

if [ "{{.WAIT}}" = "true" ]; then
echo -e "{{.INFO}} WAIT=true — handing off to ec2:watch (auto-fetch report on completion)"
task ec2:watch \
EC2_NAME={{.EC2_NAME}} \
OPERATION_ID="$OP_ID" \
POLL_INTERVAL={{.POLL_INTERVAL}} \
MAX_WAIT={{.MAX_WAIT}} \
OUTPUT_DIR={{.OUTPUT_DIR}}
fi

# ============================================================================
# Post-AMI Tool Setup
# ============================================================================
Expand Down
Loading
Loading