Skip to content

ENG-8834 feat(network-ops): standardize auth params; fix netexec kerberos routing (ENG-8831) - #180

Open
thomasqbrady wants to merge 1 commit into
mainfrom
eng-8834-network-ops-auth
Open

thomasqbrady wants to merge 1 commit into
mainfrom
eng-8834-network-ops-auth

Conversation

@thomasqbrady

Copy link
Copy Markdown
Contributor

Summary

Unifies the authentication parameter surface across the network-ops tool family so an agent uses one vocabulary as it chains tools, and removes a silent Kerberos mis-routing in netexec.

Closes ENG-8831 and ENG-8834.

What changed

  • nt_hash everywhere for the NTLM hash — retires hash (netexec) and hashes (impacket, bloodyad, krbrelayx, coercion). netexec keeps str | list[str] since nxc accepts multiple hashes/files.
  • kerberos: bool across the family. netexec's single kerberos: str is split into kerberos: bool + explicit aes_key / ccache, dropping the len(kerberos) == 32/64 heuristic that silently mis-routed a 32/64-char ccache path to --aesKey and a non-standard AES key to the ccache branch (ENG-8831). bloodyad's use_kerberos folds into kerberos.
  • Host naming. certipy's target (which is the DC) becomes dc_ip; bloodyad's DC connection becomes dc_ip, with its DNS override renamed dc_ip_override. target/targets now consistently means the attacked host, dc_ip the domain controller.
  • certipy also accepts the family's full LMHASH:NTHASH form (previously NT-only).
  • Convention documented in capabilities/AGENTS.md; capability bumped 2.2.1 → 2.3.0 (breaking tool-arg surface change).

Tests

  • netexec Kerberos-routing regressions: 64-char ccache → --use-kcache (not --aesKey), aes_key → --aesKey, mutual-exclusion guard, nt_hash → -H.
  • Per-wrapper forwarding tests across all 11 kerberos-bearing netexec wrappers.
  • certipy hash-format test; family-wide auth-param naming guard.
  • Full suite: 154 passing.

Notes

Breaking change: callers using the old arg names (hash/hashes, kerberos=<str>, use_kerberos, bloodyad host, certipy target) must update. No skill/agent markdown used literal kwargs, so the prose layer is unaffected. The dreadnode-tiger submodule pointer should be bumped to this once merged.

Unify the authentication surface across the network-ops tool family so an
autonomous agent carries one vocabulary as it chains tools in a run.

- nt_hash everywhere for the NTLM hash (retire hash / hashes)
- kerberos: bool across the family, with explicit aes_key / ccache params;
  netexec no longer guesses AES key vs ccache path by string length, which
  silently mis-routed valid inputs (ENG-8831)
- bloodyad: use_kerberos -> kerberos; the DC connection is dc_ip, its DNS
  override is dc_ip_override
- certipy: target -> dc_ip, and accept the family's full LMHASH:NTHASH form
- document the convention in AGENTS.md; bump capability 2.2.1 -> 2.3.0
  (breaking tool-arg surface change)

Adds netexec Kerberos-routing regression tests, per-wrapper forwarding tests,
a certipy hash-format test, and a family-wide auth-param naming guard.

ENG-8831, ENG-8834

@mkultraWasHere mkultraWasHere left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants