Hey friends! Today’s another Tales of Pentest Pwnage!

Quick tangent first on a couple side projects: I’ve got a music thing at quack.house (like the duck noise, not the drug) and a podcast with my dancer son Atticus at DadOfADancer.com. Speaking of Atticus — he just landed a spot in Master Ballet Academy’s summer program in Phoenix, and I am a very proud dance dad over here.

OK, on to the pentest:

  • A weird runas quirk: If your AD test account password ends in a percent sign, runas seems to misbehave (Claude thinks Windows is interpreting the % as a variable delimiter). Workaround: runascs.exe, which wraps your tool launch with creds inline. Worked like a champ — notes over on the 7MinSec.wiki.
  • Standard first pass: PingCastle for the AD overview, then Snaffler for share crawling, with Chimas as a nicer web UI for searching the Snaffler JSON.
  • The “Snaffler missed something” moment: Snaffler is great but it primarily uses pattern matching, so manual review of interesting directories still matters. I found a PowerShell script with a funky obfuscation routine, fed it to Claude for context, tracked down the function definition, and ended up decrypting a local admin password.
  • Going loud: SMB-sprayed that cred across the subnets → handful of machines popped → ran a deeper, targeted Snaffler against just those boxes → enumerated sessions and spotted a domain admin interactively logged in.
  • Plan A fizzled: Wanted to pull off a favorite trick — sneak in via WinRM and queue a scheduled task as the logged-in DA (no password needed). WinRM was disabled. Oh fart.
  • Plan B — the “trap” file: Dropped a malicious .library-ms file directly into the DA’s desktop folder. No clicks required — just the desktop being open is enough to trigger an HTTP coercion to my evil box. (Caveat: I think you need a DNS record or computer object that the victim box trusts as “intranet zone.”)
  • The escalation: Had ntlmrelayx standing by, ready to relay to LDAP on a DC. The coerced auth fired the moment the “trap” file landed on disk. An interactive LDAP shell fired in the DA’s context, and I used it to add my low-priv account to the Domain Admins group.
  • Defense angles: Rather than chase each technique individually (LDAP signing, web client GPOs, library-ms neutralization, etc.), I like to back up to the systemic fixes that break the chain earlier. Big ones here: deploy LAPS so a single decrypted local admin password isn’t a master key everywhere, and a thorough sweep for sensitive data and custom obfuscation routines hanging out on shares.

Got thoughts on any of this? Shoot ’em over — I always love hearing how you’d have tackled things differently.

Written by: Brian Johnson

Share on socials: