feat: add comprehensive automation modules for AD and Windows exploitation#233
Open
feat: add comprehensive automation modules for AD and Windows exploitation#233
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #233 +/- ##
==========================================
+ Coverage 75.10% 75.49% +0.38%
==========================================
Files 383 427 +44
Lines 81465 105867 +24402
==========================================
+ Hits 61187 79927 +18740
- Misses 20278 25940 +5662 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
bda0eaa to
8a7b1b8
Compare
2f66c2f to
470eb2b
Compare
61cc615 to
9d669c3
Compare
) **Key Changes:** - Added extensive unit and integration tests across all modules in ares-cli, ares-core, ares-llm, and ares-tools - Improved test coverage for pure functions, builder APIs, input validation, and end-to-end tool workflows - Introduced mock executor for ares-tools to enable isolated tool wrapper testing - Enhanced test assertions to cover edge cases, deduplication, and error handling **Added:** - Unit tests for config, deduplication, label normalization, user and credential processing, and MITRE technique detection in ares-cli - Direct tests for time window plumbing, builder logic, and detection query composition in detection/techniques - Test modules for orchestrator automation helpers, deduplication keys, domain/host logic, and parent/child domain matching - Test coverage for orchestrator state persistence, publishing, milestones, and redis-backed dedup sets - Tests for result processing, admin checks, parsing, timeline event classification, and critical hash detection - Mock Redis connection and in-memory state for ares-core, including scan, pipeline, and set/hash/list operations - End-to-end and unit tests for gap analysis, recommendations, ground truth transformation, and scoring in ares-core eval modules - Tests for telemetry propagation (traceparent injection/setting), state readers/writers, and blue operations in ares-core - Blue and red/blue correlation tests for technique matching, gap reason analysis, and coverage calculation - Default test features for blue team support in ares-core, ares-llm, and ares-tools - Unit and integration tests for tool registry logic, agent role parsing, and blue tool capability assignment in ares-llm - Test coverage for all tool wrapper functions in ares-tools, including argument validation, command builder APIs, and output sanitization - Tests for output parsers, including SMB, LDAP, BloodHound, delegation, and credential spider logic **Changed:** - Refactored code to allow easier dependency injection for testability (e.g., generic TaskQueueCore over connection type) - Adjusted some test-only code paths to use #[cfg(test)] or - Improved test assertions to cover corner cases, deduplication, ordering, and fallback logic - Updated test data to use consistent sample IPs, domains, and hostnames across modules - Enhanced test performance by using in-memory or tempfile-backed stores for persistence tests **Removed:** - Unused or dead test helper modules (e.g., resume_helper.rs in orchestrator recovery) - Redundant #[allow(dead_code)] attributes on enums and structs now covered by tests - Legacy or placeholder test code in favor of comprehensive, behavior-driven test suites
…ogon exploits
**Added:**
- Automated detection and exploitation modules for:
- noPac (CVE-2021-42287/42278): computer account manipulation to enable DCSync
- PrintNightmare (CVE-2021-1675): Print Spooler DLL injection for SYSTEM access
- NTLM relay: automatic orchestration of relay attacks (SMB->LDAP, ADCS ESC8)
- Zerologon (CVE-2020-1472): Netlogon protocol check for DCs
- New deduplication set constants for each technique to prevent redundant dispatches
- New test coverage for deduplication keys and technique registration
**Changed:**
- Registered new automation tasks in the orchestrator automation module and spawner
- Integrated new deduplication sets into deduplication tracking and tests
- Added new techniques to all strategy weight presets (fast, comprehensive, stealth)
- Updated strategy tests to verify inclusion and correct prioritization of new techniques
- Updated GOAD checklist documentation to reflect dispatch and test status for added CVE exploits
**Added:** - Introduced `auto_share_coercion` automation to drop coercion files (.scf, .url, .lnk) on writable shares for NTLMv2 hash capture; integrates with dispatcher and deduplication logic - Added `auto_smb_signing_detection` automation to scan discovered hosts for SMB signing disabled and publish vulnerabilities for NTLM relay - Registered both automation tasks in the automation spawner for concurrent execution - Included test coverage for deduplication and vulnerability key generation in new modules **Changed:** - Exported `auto_share_coercion` and `auto_smb_signing_detection` from automation module for external use - Updated attack strategy presets (fast, comprehensive, stealth) to include weights for `share_coercion` technique, ensuring prioritized dispatching - Expanded the GOAD checklist documentation to reflect coverage and results for SMB signing and file-based coercion automation, increasing network poisoning & relay and user-level/coercion coverage statistics **Removed:** - Outdated checklist items and comments for coercion attacks that are now automated in `goad-checklist.md`
…, ldap signing, webdav **Added:** - Introduced `auto_mssql_coercion` to dispatch NTLM authentication coercion from MSSQL servers using xp_dirtree/xp_fileexist, enabling relay/cracking of service account hashes - Added `auto_password_policy` to enumerate password policies per domain, supporting safer password spraying and lockout avoidance - Added `auto_gpp_sysvol` for scanning SYSVOL for Group Policy Preferences passwords and credential artifacts, combining GPP XML and script searches - Added `auto_ntlmv1_downgrade` to detect DCs allowing NTLMv1 authentication, enabling capture of easily crackable hashes via downgrade attacks - Introduced `auto_ldap_signing` to check for LDAP signing/channel binding enforcement on each DC, identifying relay/NTLM vulnerabilities - Added `auto_webdav_detection` to detect WebDAV-enabled hosts for NTLM relay and proactively register related vulnerabilities for downstream modules **Changed:** - Registered new deduplication sets in state for mssql coercion, password policy, gpp sysvol, ntlmv1 downgrade, ldap signing, and webdav detection - Updated automation module exports and mod.rs to include all new automation tasks for orchestration - Registered new automation spawns in `automation_spawner.rs` to ensure new modules are launched at runtime - Expanded strategy module to assign priorities to new automation techniques across all strategy presets (fast, comprehensive, stealth) - Synchronized deduplication set lists and tests to cover all new dedup sets
…eral checks **Added:** - Automated detection and dispatch of Print Spooler service checks on discovered hosts (`auto_spooler_check`) - Automated per-domain MachineAccountQuota (MAQ) checks to support machine account attack paths (`auto_machine_account_quota`) - Automated DFSCoerce (MS-DFSNM) NTLM coercion dispatch against uncoerced DCs (`auto_dfs_coercion`) - Automated unauthenticated PetitPotam (MS-EFSRPC) coercion attempts against DCs (`auto_petitpotam_unauth`) - Automated WinRM lateral movement attempts using owned credentials against hosts with WinRM indicators (`auto_winrm_lateral`) - Unit tests for deduplication key and set name for all new modules **Changed:** - Registered new deduplication set constants and integrated them with the dedup system (`DEDUP_SPOOLER_CHECK`, `DEDUP_MACHINE_ACCOUNT_QUOTA`, `DEDUP_DFS_COERCION`, `DEDUP_PETITPOTAM_UNAUTH`, `DEDUP_WINRM_LATERAL`) - Updated automation task spawner to launch new automation modules - Re-exported new automation functions in the automation module for unified API - Added new techniques to the strategy module with appropriate priority weights for fast, comprehensive, and stealth modes - Updated GOAD checklist documentation to reflect coverage and automation for Print Spooler, WinRM lateral, and WebDAV checks, and adjusted statistics for privilege escalation, lateral movement, and coercion coverage **Removed:** - No removals in this change
…coverage **Added:** - Automated certificate abuse: `auto_certifried` module for CVE-2022-26923 machine account DNS spoofing and `auto_certipy_auth` for certificate-based authentication - DNS attack surface: `auto_dns_enum` module for zone transfer and SRV/A/CNAME record enumeration from DCs - LDAP enumeration: `auto_domain_user_enum` for per-domain user enumeration, `auto_group_enumeration` for group memberships, and `auto_foreign_group_enum` for cross-domain/forest group memberships - Privilege escalation & credential access: `auto_krbrelayup` for Kerberos relay attacks when LDAP signing is weak, `auto_lsassy_dump` for LSASS memory dump on owned hosts - Lateral movement: `auto_rdp_lateral` for RDP lateral movement to port 3389 hosts, `auto_pth_spray` for pass-the-hash spray, and `auto_localuser_spray` for explicit localuser credential checks across DCs - User coercion: `auto_searchconnector_coercion` for dropping .searchConnector-ms files on writable shares for WebDAV relay - SID and well-known account mapping: `auto_sid_enumeration` to resolve domain SIDs and enumerate renamed administrator accounts - Registered all new deduplication sets in orchestrator state and updated dedup tracking for each automation - Comprehensive test coverage for dedup key formats and logic for all new modules **Changed:** - Expanded `mod.rs` to include all new automation modules in the orchestrator - Updated `automation_spawner.rs` to spawn all new automation tasks - Extended deduplication set arrays and ALL_DEDUP_SETS in orchestrator state to include new modules for dedup and persistence - Updated strategy weights (fast, comprehensive, stealth) to assign priorities to new automation techniques, ensuring they're integrated into all operational modes - Improved documentation checklist to reflect the addition and coverage of new automation modules, including credential discovery, lateral movement, coercion, and enumeration techniques **Removed:** - No removals; all changes extend automation coverage and infrastructure
**Added:** - Implemented auto_dacl_abuse for direct ACL abuse on known attack paths, dispatching abuses such as ForceChangePassword, GenericWrite, WriteDacl, WriteOwner, and GenericAll when matching credentials and targets are found - Introduced auto_smbclient_enum to perform authenticated SMB share enumeration using available credentials, complementing unauthenticated enumeration - Unit tests for deduplication logic in both new modules **Changed:** - Registered auto_dacl_abuse and auto_smbclient_enum modules and their public exports in the automation orchestration layer - Spawned new automation tasks for dacl abuse and smbclient enum in the automation task spawner - Added deduplication constants and updated ALL_DEDUP_SETS for new automation tasks in state management - Incorporated dacl_abuse and smbclient_enum into automation strategy weights for all presets (fast, comprehensive, stealth) - Updated GOAD checklist to reflect new automation coverage, marking Certifried as dispatched and adjusting attack/coverage counts
…tool reliability - Redesign comprehensive strategy weights to use a three-tiered system that prioritizes exploitation breadth over speed-to-DA, with Tier 1 for ADCS, delegation, NTLM relay; Tier 2 for credential pipeline; Tier 3 for recon - Pass --always-continue to coercer and petitpotam to prevent EOF on interactive prompts - Fix DFSCoerce to use positional args matching CLI expectations - Add setuptools install to noPac venv in Ansible role (provides pkg_resources) - Update tests to validate tiered weights instead of flat priorities
…verage **Added:** - Introduced `acl_discovery` automation module for discovering ACL attack paths via targeted LDAP queries, bridging the gap between BloodHound collection and DACL exploitation. Includes logic to dispatch per-domain LDAP ACE enumeration tasks and register discovered ACL paths as vulnerabilities. - Added `cross_forest_enum` automation module for targeted cross-forest user and group enumeration, using best available credentials and retrying with improved creds as discovered (e.g., via hash cracking or pivots). - Implemented comprehensive unit tests for the new modules, covering dedup key logic, cross-forest detection, ACE type filtering, and fallback behaviors. - Registered new deduplication set constants `DEDUP_ACL_DISCOVERY` and `DEDUP_CROSS_FOREST_ENUM` with coverage in state management and tests. - Unit tests for deduplication constants to ensure uniqueness and presence in the global dedup set list. **Changed:** - Refined `auto_adcs_enumeration` to select credentials on a per-domain basis, ensuring proper handling of cross-domain ADCS hosts. - Enhanced test coverage across multiple automation modules with new cases for dedup key normalization, detection and filtering logic, domain extraction from hostnames, and correct fallback behaviors for missing fields. - Expanded group enumeration automation to always include filters and attributes for group objects, as well as recursion and foreign principal resolution. - Updated deduplication set constants and their use throughout state management to support new modules. - Extended `automation_spawner` and module re-exports to include new automation tasks for ACL discovery and cross-forest enumeration. - Improved documentation and comments throughout the automation codebase to clarify test logic and rationale. **Removed:** - Eliminated fallback logic in `auto_adcs_enumeration` that previously selected a single credential for all ADCS hosts, in favor of per-domain selection.
) **Key Changes:** - Added extensive unit and integration tests across all modules in ares-cli, ares-core, ares-llm, and ares-tools - Improved test coverage for pure functions, builder APIs, input validation, and end-to-end tool workflows - Introduced mock executor for ares-tools to enable isolated tool wrapper testing - Enhanced test assertions to cover edge cases, deduplication, and error handling **Added:** - Unit tests for config, deduplication, label normalization, user and credential processing, and MITRE technique detection in ares-cli - Direct tests for time window plumbing, builder logic, and detection query composition in detection/techniques - Test modules for orchestrator automation helpers, deduplication keys, domain/host logic, and parent/child domain matching - Test coverage for orchestrator state persistence, publishing, milestones, and redis-backed dedup sets - Tests for result processing, admin checks, parsing, timeline event classification, and critical hash detection - Mock Redis connection and in-memory state for ares-core, including scan, pipeline, and set/hash/list operations - End-to-end and unit tests for gap analysis, recommendations, ground truth transformation, and scoring in ares-core eval modules - Tests for telemetry propagation (traceparent injection/setting), state readers/writers, and blue operations in ares-core - Blue and red/blue correlation tests for technique matching, gap reason analysis, and coverage calculation - Default test features for blue team support in ares-core, ares-llm, and ares-tools - Unit and integration tests for tool registry logic, agent role parsing, and blue tool capability assignment in ares-llm - Test coverage for all tool wrapper functions in ares-tools, including argument validation, command builder APIs, and output sanitization - Tests for output parsers, including SMB, LDAP, BloodHound, delegation, and credential spider logic **Changed:** - Refactored code to allow easier dependency injection for testability (e.g., generic TaskQueueCore over connection type) - Adjusted some test-only code paths to use #[cfg(test)] or - Improved test assertions to cover corner cases, deduplication, ordering, and fallback logic - Updated test data to use consistent sample IPs, domains, and hostnames across modules - Enhanced test performance by using in-memory or tempfile-backed stores for persistence tests **Removed:** - Unused or dead test helper modules (e.g., resume_helper.rs in orchestrator recovery) - Redundant #[allow(dead_code)] attributes on enums and structs now covered by tests - Legacy or placeholder test code in favor of comprehensive, behavior-driven test suites
**Added:** - Introduced detailed unit tests for automation modules in the following areas: - Validated payload JSON structure and fields for each attack technique - Verified struct construction and field assignments for all work types - Checked deduplication key normalization and uniqueness logic per context - Asserted credential domain/user matching (including case-insensitivity) - Ensured service detection logic for SMB, RDP, WinRM, WebDAV, and others - Added coverage for selection/fallback logic in credential and user queries - Tested edge cases (e.g., empty domains, dedup keys, fallback fields, limits) - Confirmed correct logic for admin/writable share filtering and permission checks - Verified protocol and attribute lists for LDAP and other enumeration modules **Changed:** - Significantly increased unit test coverage across all orchestrator/automation modules - Strengthened assertions to ensure correct business logic for all main workflows - Unified style and approach to test construction and assertions for consistency **Removed:** - No code or test removals; all changes are additive to improve test coverage and reliability
**Added:** - Introduced pure functions (e.g., `collect_acl_discovery_work`, `collect_adcs_work`, `collect_certifried_work`, etc.) for each automation module to encapsulate work item construction logic, enabling unit testing without dispatcher or async runtime - Added comprehensive unit tests for each new work collection function, validating all edge cases and credential selection logic **Changed:** - Refactored automation modules to delegate work item construction to the new pure `collect_*_work` functions, reducing code duplication and improving testability - Updated per-automation test modules to cover both original and new work collection logic, improving test coverage - Made `StateInner::new` public within the crate to enable state construction in tests and work functions - Ensured that all deduplication, credential selection, and domain matching logic is now unit-testable and consistent across modules **Removed:** - Removed large inline work item construction blocks from async automation routines, replacing them with calls to the new pure logic functions
…overy improvements **Added:** - Implement cross-domain LDAP operation support by adding `bind_domain` logic to orchestrator and tool payloads - Introduce `smb_login_check` tool for checking SMB credential validity and admin status; add orchestration, parsing, and dispatch support - Add `DeferredQueue::total_count()` method for deferred task monitoring - Emit timeline event when golden ticket is forged for attack path tracking - Wait for active and deferred red team tasks to drain before shutdown, with a 5-minute cap **Changed:** - Update LDAP-using orchestrator modules (`acl_discovery`, `domain_user_enum`, `group_enumeration`, `ldap_signing`) to support cross-domain operations by conditionally adding `bind_domain` to payload - Expand user discovery logic to accept and process new trusted sources: `ldap_group_enumeration`, `acl_discovery`, `foreign_group_enumeration`, `ldap_enumeration` in both parsing and polling - Enhance group and ACL enumeration instructions to clarify required `discovered_users` output format for all users found, including cross-domain memberships - Add `smb_login_check` to tool routing as a recon and auth-bearing tool - Add weight entries for `cross_forest_enum` and `acl_discovery` in all strategy presets, with associated tests - Clarify `ldap_search` and `ldap_search_descriptions` docs and logic to support `bind_domain` for correct authentication context - Set HOME env for xfreerdp execution to avoid user profile issues **Removed:** - Remove `--admin-status` flag from `domain_admin_checker` since netexec reports admin automatically - Remove unnecessary test attribute guard from `ActiveTaskTracker::total()` for production use
**Added:** - Emit timeline events for admin upgrades, exploitation, lateral movement (S4U), and domain admin achievement with MITRE technique mapping - Add defense-in-depth sanitation for span target IPs/FQDNs, rejecting CIDRs, multi-value strings, and malformed input at both span builder and extraction - Unit tests for target info extraction: CIDR/multi-token rejection, nmap arg parsing, coverage of new edge cases - Timeline event for DA auto-set from krbtgt hash in state publishing **Changed:** - Improved discovery observability: for "hosts" discoveries, emit a span per discovered host for accurate destination.address attribution - Enhanced cross-forest and group enumeration instructions for LLM agents, specifying strict JSON schema for discovered users and explicit vuln reporting - Certipy instructions for ADCS recon updated with explicit vulnerable template reporting, including guidance for mapping ESC types and failure fallback - Timeline events now include richer MITRE ATT&CK mappings based on exploitation technique, such as Kerberoasting, RBCD, ADCS ESCs, etc. - All user enumeration in essos.local marked as complete in goad-checklist.md - Unconstrained delegation and MSSQL exploitation status updated for clarity in goad-checklist.md - Coverage table in goad-checklist.md updated: user enumeration, group parsing, ADCS enumeration, lateral movement, and trust exploitation status refreshed **Removed:** - Redundant or duplicate timeline event emission for DA achievement in favor of unified event creation with full context and MITRE mapping
**Changed:** - Updated logic to check if event description already starts with 'CRITICAL:' before prepending the prefix, ensuring it is not added multiple times in `print_attack_path` function within the loot display formatter
… for multi-domain AD
**Added:**
- Introduced `resolve_dc_ip` and `all_domains_with_dcs` methods to StateInner for
robust domain controller IP resolution across all known, trusted, and discovered
domains, improving automation coverage in multi-domain and trust scenarios
- Added trust credential fallback logic (`find_trust_credential`) to enable child→parent
and cross-forest credential use for group/ACL/ADCS enumeration when no same-domain
cleartext credential is present
- Implemented multi-line rpcclient `queryuser` description/password extraction
for improved plaintext credential discovery (block-aware parser)
- Added machine hostname domain filtering (`is_machine_hostname_domain`) to prevent
SMB banners and UPNs from polluting domain context during user/password extraction
- Enhanced instructions and prompt context for LLM tasks to include explicit
pass-the-hash guidance and clarify fallback logic for AD trust/forest scenarios
- Updated ADCS tool wrappers and schemas to support pass-the-hash (`hashes` argument)
for certipy_find and rpcclient_command, with corresponding tool inventory updates
- Implemented post-exploitation grace period in completion logic to allow group/ACL/ADCS
automation to complete after DA/GT is achieved
**Changed:**
- Refactored all orchestrator automation modules to use `all_domains_with_dcs` for
DC iteration instead of direct `domain_controllers` mapping, ensuring complete
enumeration and task dispatch across all AD domains and trust relationships
- Updated credential selection logic for group/ACL/ADCS automation to:
- Only use same-domain cleartext creds for initial attempts
- Skip cross-domain creds unless a valid trust allows authentication
- Dispatch hash-based (PTH) tasks with distinct dedup keys so failed cred attempts
do not block hash fallback
- Revised group and ACL enumeration modules to generate and test dedup keys separately
for cred, hash, and trust credential attempts, preventing task starvation
- Updated LLM credential routing logic to correctly permit child→parent and bidirectional
cross-forest authentication, aligning with AD trust semantics
- Improved recon and privesc prompt templates to explicitly present technique, instructions,
NTLM hash context, and tool-specific notes for agent tasks
- Enhanced password and user extraction routines to ignore machine hostnames as domains,
ensuring only valid AD domains are tracked and assigned
- Lowered group/ACL automation intervals for faster post-DA post-exploitation coverage
- Updated test coverage for new trust/cred fallback logic, machine hostname filtering,
and rpcclient multi-user extraction
**Removed:**
- Eliminated fallback to `credentials.first()` for group/ACL/ADCS automation, preventing
accidental cross-domain task dispatch that would consume dedup slots with doomed attempts
- Removed acceptance of cross-domain creds for LDAP simple bind unless a trust relationship
is known and valid, improving automation reliability in multi-domain labs
**Added:** - Added `mark_host_owned` method to persist host ownership in Redis and trigger downstream automations when admin access is confirmed - Provided new debug and info logging for group enumeration, LDAP signing, and lsassy_dump automation modules to improve traceability - Documented cross-domain authentication requirements and bind_domain usage in automation instructions and LLM prompt templates - Extended tool schema for `ldap_search` (bind_domain) and `create_inter_realm_ticket` (optional extra_sid for child-to-parent escalation) - Added test coverage for credential fallback in group enumeration and extra_sid handling in trust ticket creation **Changed:** - Refactored automation modules (`group_enumeration`, `ldap_signing`, `lsassy_dump`) to use `force_submit`, bypassing throttler to avoid blocking on long-running recon tasks - Group enumeration and ACL discovery now support credential fallback across trusted domains using both explicit trusts and presence heuristics - Group enumeration and LDAP signing automations now provide more detailed instructions, including correct hash handling and cross-domain bind guidance - Improved domain resolution for result processing, ensuring correct attribution when extracting credentials or marking hosts as owned - Trust exploitation prompt now resolves target DC hostname for Kerberos SPN accuracy, improving guidance for secretsdump_kerberos usage - Updated tool wrappers to parse and use only the NT hash portion for pass-the-hash scenarios in rpcclient - Increased the default and tested max concurrent tasks to 12 and set more conservative weights for group_enumeration and acl_discovery in fast mode - Various documentation and checklist improvements to reflect new validation results, trust fallback logic, and accurate coverage assessment **Removed:** - Removed unnecessary debug logging from some automation modules for clarity - Eliminated redundant golden ticket extra_sid logic from trust ticket creation (now optional and user-controlled) - Pruned unreachable code paths in state and dispatcher modules
**Added:** - Introduced `mssql_openquery` tool and API for cross-forest MSSQL pivots, allowing use of stored login mappings to bypass Kerberos double-hop issues - Added `impersonate_user` parameter to all linked-server MSSQL tools to enable source-side `EXECUTE AS LOGIN` for privilege escalation and cross-forest hops - Implemented deduplication tracking for cross-realm lateral movement attempts to suppress repeated dead-end retries and provide clear LLM feedback - Added `/etc/hosts` idempotent mapping logic in trust privesc to ensure FQDN resolution for Kerberos/SPN on workers without DNS access **Changed:** - Reduced orchestrator systemd unit concurrency and added memory limits (`MemoryHigh`, `MemoryMax`) for both orchestrator and worker units, and introduced a systemd slice with overall memory/task caps for Ares processes - EC2 setup script now creates a swap file for OOM resilience and tunes kernel swappiness/OOM behavior - Orchestrator callback and dispatcher now pre-check and reject cross-realm lateral requests, returning a clear message to LLM and marking dedup state to avoid retries - MSSQL exploitation automation and LLM documentation updated with explicit cross-forest pivot guidance, including `mssql_openquery` and `impersonate_user` usage - Enhanced MSSQL tool registry schemas and help text to document cross-forest caveats and parameter usage - Default memory/task caps in orchestrator and worker systemd units adjusted for safety **Removed:** - Legacy `clear_dedup` logic for trust exploits that failed to compromise krbtgt, now replaced by marking the vuln exploited and waking cross-forest fallback paths
…ovements
**Added:**
- Introduced `auto_golden_cert` automation for forging Golden Certificates after
owning an ADCS CA host, including work item collection, dispatch logic, and
extensive unit tests (`golden_cert.rs`)
- Added deduplication set `DEDUP_GOLDEN_CERT` to track processed Golden Cert
attempts and avoid redundant operations
- Registered `auto_golden_cert` in automation spawner and module exports
- Added `certipy_forge` tool integration for offline certificate forgery using
CA PFX, with tool definition, input schema, and implementation in both
`ares-tools` and LLM tool registry
- Documented and exposed the full Golden Certificate pipeline (backup, forge,
auth) in tool descriptions
**Changed:**
- Enhanced credential selection logic for exploitation automations:
- Added `find_source_credential` and `find_source_hash` helpers to select
credentials/hashes for the source principal, supporting cross-forest
and explicit domain matching in `StateInner`
- Updated ADCS, RBCD, shadow credentials, MSSQL, and exploitation modules
to use identity-aware credential selection, allowing correct cross-domain
and trusted-domain operations
- Improved deduplication for ADCS certipy_find: dedup keys now include both
credential type and identity (`{host}:cred:{user@dom}`), preventing an early
failed attempt from blocking correct credentials later
- Updated cross-forest fallback logic to clear dedup keys for all CA hosts
belonging to a target domain, enabling retries with new cross-forest creds
- Improved tool and pipeline documentation, including usage details and
fallback/edge-case handling for Golden Certificate flows
- Increased timeouts for long-running ADCS backup operations
**Removed:**
- Removed same-domain-only restrictions for credential lookups in automation
modules, enabling cross-forest and trust-based exploitation flows
- Eliminated redundant domain checks in credential/hash selection for
exploitation automations
**Added:** - Added tests for child-to-parent and cross-forest credential scenarios to cover new credential selection logic for ADCS automation **Changed:** - Updated ADCS automation to select credentials only from the same forest as the target CA host, preventing LDAP bind failures (52e) when using cross-forest credentials (adcs.rs) - Adjusted credential and hash selection logic to include only those matching the target's forest root, using the new `forest_root_of` method - Added and updated tests to verify correct behavior when only cross-forest, child, parent, or sibling credentials are available, ensuring dispatch only occurs for valid same-forest credentials - Made `forest_root_of` method in `StateInner` public to support credential filtering across modules
0dbdf25 to
efe412a
Compare
**Changed:** - Updated AWS agent roles to run only when the cloud provider is AWS, preventing failures on other clouds like Azure where EC2 metadata service is unavailable - Clarified comments to explain why AWS-specific roles are conditionally included
…t config **Added:** - Introduced `warpgate.yaml` template for building an Azure-based Ares golden image with preinstalled red team tools and tailored provisioning steps for Azure Image Builder limitations **Changed:** - Updated Loki endpoint configuration in the attack box playbook to use the `ALLOY_LOKI_ENDPOINT` environment variable with a default fallback, improving deployment flexibility
…ation **Added:** - Active credential resolver that injects passwords, hashes, AES keys, tickets, trust keys, and SIDs from operation state at tool dispatch time. Principals are referenced by name only; all secret fields are auto-resolved before tool execution (`ares-cli/src/worker/credential_resolver.rs`). - Tool output context structure to allow secondary regex extractors to skip credential regexes on hash-auth invocations, preventing hash echos from being stored as passwords. - Domain candidate publishing and DNS SRV-based confirmation workflow. Hostname- inferred domains are held as candidates and only promoted after positive AD evidence or probe confirmation (`ares-cli/src/orchestrator/state/domain_probe`). - Validation in tool dispatcher to reject LLM tool calls with hallucinated or misspelled domain arguments that do not match any known discovered domain. - `ares_core` models for `CandidateDomain`, `DomainEvidence`, and `KerberosTicket` for robust domain and ticket tracking. - Password spray now supports a built-in common-password mode via `use_common_passwords`, with orchestrator and tool support. **Changed:** - All tool schemas strip credential fields (`password`, `hash`, etc.) before being surfaced to the LLM; secrets are injected at dispatch only. - All LLM-facing prompt templates updated to remove credential values and instruct the agent to reference principals by name only. All secrets are auto-resolved at dispatch and never shown in prompts or schemas. - Prompts and orchestrator logic for credential access, lateral movement, privesc, and trust exploitation now surface only capability labels (password, nthash, etc.). - Tool dispatchers and executors (both local and Redis) now validate arguments to ensure no credential placeholders reach the command layer. - Share enumeration, LDAP search, and all credential-using tools updated to support the new principal-only contract. - Domain discovery via host FQDNs now routes through candidate/confirmation path, preventing cloud PTRs and default Windows hostnames from polluting authoritative domain lists. - Password spray and related techniques now require either a specific password or the new common-passwords mode; logic ensures safety and prevents accidental lockout attempts when policy is unknown. - Automated MSSQL exploit re-dispatch when new credentials for a domain become available, improving cross-forest pivot reliability. - Tool output regex extractors updated to skip placeholder markers (e.g. `[PWD]`, `[TGT]`) as credentials, preventing state pollution. - Improved state deduplication and exploit supersession, marking host-level vulns as exploited when deeper pivots succeed. - Various bug fixes and hardening for DC registration, domain controller mapping, and hash upserts to ensure correct and up-to-date operation state. **Removed:** - Direct credential field handling from prompt templates and LLM tool schemas; LLM is now strictly forbidden from passing or inventing secret fields. - Automatic promotion of domains from host FQDNs without corroborating evidence. - Extraction of passwords or hashes from placeholder or marker tokens in tool output.
**Added:** - Introduced variables to control NVIDIA driver and CUDA toolkit installation in `cracking_tools` role, including package lists and booleans for enabling driver/toolkit install - Added Ansible tasks to install NVIDIA driver and CUDA toolkit conditionally, verify driver and OpenCL platform, and display GPU/OpenCL detection summary - Documented new variables and tasks in `cracking_tools` role README **Changed:** - Updated the attack box playbook to enable NVIDIA driver and CUDA toolkit installation for GPU-accelerated hashcat use on AMIs - Modified the warpgate golden image template to use the ares repo's ansible subtree directly, ensuring AMI and role changes remain in sync - Refactored image builder steps to delegate all NVIDIA/driver/CUDA installation and validation to the ansible `cracking_tools` role for improved maintainability and correctness **Removed:** - Eliminated redundant shell commands for NVIDIA driver and CUDA toolkit installation in the image builder template, consolidating logic in ansible role
…den-image **Changed:** - Adjusted shell provisioner steps to ensure local ansible collection overlay occurs after galaxy install, preventing published collection from overwriting local edits. Added explanatory comments about dependency resolution order. - Moved removal of temporary files and repeated overlay to ensure correct collection state before running ansible playbook. - Inserted command to inspect initial cracking_tools role steps for debugging.
…overlay **Changed:** - Updated provisioning strategy to always use the local nimbus_range collection, avoiding transitive pulls from galaxy.com and ensuring latest role edits are present - Galaxy dependencies are now installed to /opt/ansible-galaxy-deps instead of the main collections path, with explicit ANSIBLE_COLLECTIONS_PATH prioritizing the local overlay - Added checks to assert the presence of specific tasks in the local nimbus_range before running the playbook, ensuring correct version is used - Removed redundant copy and removal steps for nimbus_range; now only overlays once and removes galaxy-pulled versions as defense-in-depth - Enhanced shell provisioner with strict error checking (`set -euxo pipefail`) and updated environment variables to ensure correct playbook execution context - Improved documentation in comments to clarify collection isolation and the rationale for the new defense-in-depth approach
…tion **Added:** - Track credential_key in ActiveTask to associate inflight slots with task lifetimes **Changed:** - Release CredentialInflight slot when tasks are removed from ActiveTaskTracker, both in result consumer and stale-task cleanup, ensuring no slot leaks if tasks hang or time out - Pass CredentialInflight to monitoring and result consumer functions to enable coordinated slot release - Update Taskfile to support direct targeting via IPS variable, bypassing AWS lookup when specified - Mirror agent key naming in preflight_tool_check to handle underscores in role names - Increase Redis BRPOP timeout to prevent premature response timeout errors during long-running blocking operations **Removed:** - Remove redundant credential inflight release in dispatcher task execution, delegating responsibility to tracker removal logic
**Added:** - Added debug commands to log directory listings and file stats for `linux.yml` at multiple stages in the provisioner shell script. This includes listing the source tree, checking file stats and content before and after copy, and after ansible-galaxy install, to aid troubleshooting of overlay issues.
**Changed:** - Enhanced orchestrator wrapper script to validate OP_REQUEST contains "operation_id" before processing, skipping malformed requests and logging a message instead - Updated orchestrator logging to ensure OP_ID is always extracted and to skip operations with missing IDs, improving error handling and log clarity - .taskfiles/remote/orchestrator-wrapper-patch.json - Configured telemetry formatter to explicitly write to stderr for consistent logging output - ares-core/src/telemetry/init.rs
**Changed:** - Removed `asyncio` from the list of pip-installed packages in the base role to avoid conflicts with the standard library version; added explanatory comments to clarify that `asyncio` should not be installed from PyPI since it is built into Python 3.4+ and the PyPI package can break imports - Updated documentation in the README to reflect the removal of `asyncio` from the default pip dependencies list
…orruption **Added:** - Added shell-based pip install with log teeing to surface full install output - Added tasks to display the tail of the pip install log and print it on failure - Added fail-fast task that triggers if pip install fails, referencing log output **Changed:** - Switched from ansible.builtin.pip to ansible.builtin.shell for installing Python dependencies to work around CloudWatch log truncation and provide better error diagnostics - Removed `--ignore-installed` pip flag to prevent reinstallation of apt-managed packages and avoid site-packages corruption during installs **Removed:** - Removed previous use of ansible.builtin.pip for dependency installation in favor of the new shell-based approach
…hon deps **Changed:** - Update pip install command to use `--ignore-installed` instead of `--upgrade` to handle apt-managed Python dependencies on Kali, preventing uninstall errors due to missing RECORD files and ensuring dependencies are overwritten in place - Revise task comments to clarify the need for `--ignore-installed` and remove outdated explanation about forced reinstalls and site-packages corruption
**Changed:** - Replace single bulk `gem update` command with per-gem loop to avoid OOM kills during parallel native extension compilation on low-memory instances, adding `--no-document` to skip memory-intensive documentation generation - Clarify task description and README to reflect per-gem update approach for vulnerable Ruby gems
…efully **Changed:** - Clarified in documentation that vulnerable ruby gem dependencies are updated only on Ubuntu, as Kali handles CVE patches via apt - Limited the gem update task to Ubuntu by adding a distribution check and explicitly excluding Kali - Added `failed_when: false` to the gem update task to prevent task failure if the update process is killed or encounters issues - Expanded documentation and task comments to explain the rationale behind these changes and the memory limitations during gem updates
**Changed:** - Replace `libnvidia-opencl1` with `nvidia-opencl-icd` in the list of NVIDIA driver packages to improve compatibility and match current package naming in both documentation and default configuration for the cracking tools role
**Added:** - Execute NVIDIA driver and OpenCL runtime installation using shell with full output logging to capture complete error details during apt installation - Display the last 200 lines of the NVIDIA install log on failure for better troubleshooting - Print the captured install log tail in Ansible debug output if the install fails - Explicitly fail the play with a descriptive message if NVIDIA driver install fails, referencing the install log for context **Changed:** - Updated documentation to reflect use of shell-based NVIDIA driver install, log tail display, and explicit failure handling in the task list **Removed:** - Removed previous use of the Ansible apt module for NVIDIA driver and OpenCL runtime installation to avoid truncation of important error output
…patibility **Changed:** - Switch default NVIDIA driver package from `linux-headers-amd64` to `linux-headers-cloud-amd64` to ensure DKMS module builds succeed on Kali AMIs using the cloud kernel - Update documentation to reflect the new default package and clarify the reason for using the cloud headers over the generic headers
… packages **Added:** - Added task to install NVIDIA CUDA apt repository for accessing newer drivers compatible with Kali's 6.19+ kernel and Turing+ GPUs **Changed:** - Updated default NVIDIA driver packages to use `cuda-drivers` and `nvidia-open-kernel-dkms` instead of `nvidia-driver`, ensuring support for modern kernels and open-source modules - Clarified and expanded documentation regarding NVIDIA package sources and driver/kernel compatibility in defaults
**Changed:** - Update CUDA keyring download URL from Debian 12 to Debian 13 in cracking tools installation script to ensure compatibility with newer Debian releases
**Changed:** - Updated documentation and package list to use `nvidia-kernel-open-dkms` instead of deprecated `nvidia-open-kernel-dkms` for Turing+ GPUs in the NVIDIA driver installation defaults. This aligns with current package naming and ensures compatibility with modern kernels.
**Changed:** - Replaced `cuda-drivers` with `nvidia-driver-cuda` in default package list to ensure only the open kernel module is used and prevent conflicts with closed drivers - Improved comments to clarify package selection rationale and avoid pulling conflicting kernel modules via meta-packages - Removed `nvidia-opencl-common` from the driver package list as it is no longer required
**Added:** - Added separate task to install `linux-headers-cloud-amd64`, `dkms`, and `firmware-misc-nonfree` before NVIDIA driver installation to ensure DKMS prerequisites are fully configured on Debian systems **Changed:** - Improved reliability of NVIDIA driver installation by preventing race conditions where DKMS modules are configured before kernel headers are ready during a single apt transaction on Debian
…nstalled **Added:** - Add task to dump DKMS `make.log` and relevant build environment details on NVIDIA driver build failure to aid troubleshooting - Print captured DKMS `make.log` output using debug module for easier visibility **Changed:** - Ensure `build-essential` is installed alongside DKMS and headers to provide required build tools for NVIDIA driver installation
…tion **Changed:** - Enhance domain extraction to fall back to `credential.domain` if top-level domain is missing or empty, ensuring proper domain value is used in prompt generation and preventing downstream authentication failures due to empty realms in secretsdump scenarios - ares-llm/src/prompt/credential_access/mod.rs - Add clarifying comments on domain fallback behavior and its necessity for correct tool invocation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key Changes:
coercion, and enumeration in
ares-cliAdded:
nopac(CVE-2021-42287/42278),zerologon,print_nightmare,krbrelayup,certifried(CVE-2022-26923),dacl_abusentlm_relay,share_coercion,mssql_coercion,dfs_coercion,petitpotam_unauth,searchconnector_coercionpassword_policy,gpp_sysvol,ntlmv1_downgrade,ldap_signing,webdav_detection,spooler_check,machine_account_quota,group_enumeration,localuser_spray,sid_enumeration,dns_enum,domain_user_enum,foreign_group_enum,smb_signing,smbclient_enumwinrm_lateral,rdp_lateral,pth_spray,lsassy_dumpcertipy_authpublic exports in
automation/mod.rsand dedup constants instate/mod.rssetuptoolsis installed in noPac venvfor
pkg_resourcesimportChanged:
automation_spawner.rs): registered all new modules to bespawned and monitored automatically
state/mod.rs,state/inner.rs): added dedup constantsand test coverage for all new modules, ensuring idempotency and correct state
strategy.rs):fast,comprehensive, andstealthpresets, introducing three-tier prioritization for comprehensive modedocs/goad-checklist.md): documented coverage, testobservations, and module effects for each exploit, enumeration, and privilege
escalation path