From f78fdcef450b13bb465986582aaab3dc00bfe597 Mon Sep 17 00:00:00 2001 From: logangoins Date: Tue, 1 Jul 2025 21:52:15 -0400 Subject: [PATCH] Made bofhound compatible --- src/adws.py | 24 ++++++++++++++---------- src/soap_templates.py | 4 ++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/adws.py b/src/adws.py index eade893..0428629 100644 --- a/src/adws.py +++ b/src/adws.py @@ -506,8 +506,7 @@ class ADWSConnect: for item in et.findall(".//ad:value/../..", namespaces=NAMESPACES): synthetic_attributes = [] print( - ("[+] Object Found: " + self._get_tag_name(item)), - end="\n", + ("--------------------") ) object_values: dict[str, str] = {} @@ -532,12 +531,13 @@ class ADWSConnect: if sid in WELL_KNOWN_SIDS: sid += f" Well known sid: {WELL_KNOWN_SIDS[sid]}" parsed.append(sid) + """ elif syntax == "GeneralizedTimeString": parsed = [ GeneralizedTime(value).asDateTime.astimezone().isoformat() for value in values ] - + if name in [ "accountExpires", "lastLogoff", @@ -559,14 +559,17 @@ class ADWSConnect: + datetime.timedelta(microseconds=us) ).isoformat() ) - elif name in ["objectGUID"]: - parsed = [str(UUID(bytes=b64decode(value))) for value in values] + """ + if name in ["objectGUID"]: + parsed = [str(UUID(bytes_le=b64decode(value))) for value in values] + """ elif name == "userAccountControl": parsed = [ self._format_flags(int(value), AccountPropertyFlag) for value in values ] - elif name == "sAMAccountType": + + if name == "sAMAccountType": parsed = [ self._format_flags(int(value), SamAccountType) for value in values @@ -583,6 +586,7 @@ class ADWSConnect: self._format_flags(int(value), GroupTypeFlags) for value in values ] + elif name == "instanceType": parsed = [ self._format_flags(int(value), InstanceTypeFlags) @@ -592,6 +596,7 @@ class ADWSConnect: parsed = [ self._format_flags(int(value), SystemFlags) for value in values ] + elif name == "msDS-AllowedToActOnBehalfOfOtherIdentity": parsed = [] for value in values: @@ -609,13 +614,12 @@ class ADWSConnect: ) ] parsed.append(f"{value} DACL ACE SIDs: {' '.join(aces)}") + """ + object_values[name] = ", ".join(parsed if parsed else values) - object_values[name] = " ".join(parsed if parsed else values) - - format_str = f"{{:>{22}}}: {{:<}}" + format_str = f"{{}}: {{}}" for k, v in object_values.items(): print(format_str.format(k, v)) - print() if print_synthetic_vars: for part in synthetic_attributes: diff --git a/src/soap_templates.py b/src/soap_templates.py index 4ed06f4..eda1b0d 100644 --- a/src/soap_templates.py +++ b/src/soap_templates.py @@ -67,6 +67,10 @@ LDAP_PULL_FSTRING: str = """ + MIQAAAADAgEH + """