Puppy

Initial Enumeration with Nmap

We start with a full TCP scan against the target IP 10.129.122.66.

nmap -p- -sS -sV -sC 10.129.122.66

This reveals many open ports, notably:

  • SMB: 445

  • LDAP: 389

  • Kerberos: 88

  • WinRM: 5985

  • HTTPAPI: 5985

  • Multiple RPC services

SMB Enumeration with Valid Credentials

We begin testing credentials using nxc against SMB.

nxc smb 10.129.122.66 -u levi.james -p KingofAkron2025!

Login is successful. Next, enumerate users:

nxc smb 10.129.122.66 -u levi.james -p KingofAkron2025! --users

We find valid usernames like adam.silver, steph.cooper, and steph.cooper_adm.

Listing Shares

Using the same credentials, we list available shares:

We discover a DEV share that we can access.

Accessing the DEV Share

Using smbclient, we mount the share and download files.

Download the following files:

  • KeePassXC-2.7.9-Win64.msi

  • recovery.kdbx

Brute-Forcing KeePass DB

We use a KeePass brute-forcing tool to crack the .kdbx file.

Found password: liverpool

Retrieving Passwords

We find credentials for adam.silver:ILY2025!, but login fails. We switch to ant.edwards:Antman2025! which works.

Group Enumeration

List members of the developers group:

We confirm that multiple users including adam.silver are developers.

Enumerate with BloodHound

We use bloodhound-python to enumerate:

Attempt Shadow Credential Attack

We target adam.silver for shadow credentials:

No success due to account being disabled.

Enable Account Using LDIF

We create an LDIF file to re-enable the account:

Execute it:

Reset Password for Adam

Access confirmed with WinRM:

Extract user flag from Adam's desktop.

Credential Dump via DPAPI

We find a .xml.bak config with steph.cooper credentials. Use pypykatz to decode DPAPI:

Use masterkey to decode stored credentials and get:

  • steph.cooper_adm:FivethChipOnItsWay2025!

Final WinRM Login and Root Flag

Navigate to Administrator's desktop and retrieve:

  • root.txt: 63a979215b5a82cb97e4e594e19bff3f

Last updated