-
-
Notifications
You must be signed in to change notification settings - Fork 4
Object Model
Flashingestor uses rigid types modeled after the official BloodHound CE format, defined in buildertypes.go. The fields of these types are defined below:
Note
Attribute(REMOTE): indicates attributes populated during remote collection only and merged during the conversion step.
The main type that is embedded in other object types, as it contains attributes common to all objects.
Attributes:
-
ObjectIdentifier: Extracted using a three-tier fallback: first triesobjectSidvia entry.GetSID(), then falls back toobjectGUIDvia entry.GetGUID(), and finally to the distinguished name (DN) if neither is available. Objects withobjectSid(User, Group, Computer, Domain) use SID; objects without it (Container, OU, GPO, all PKI objects) use GUID. -
Aces: Parsed fromnTSecurityDescriptorbinary attribute via ParseBinaryACL(), then resolved via ResolveACETypes(). Read ACL-Parsing for more information. -
IsDeleted: Extracted fromisDeletedLDAP attribute (check for "TRUE" value) -
IsACLProtected: Determined from security descriptor control flags during ACL parsing -
ContainedBy: Resolved from parent DN via MemberCache - special handling for theBuiltincontainer and null for domain objects, as domains are root containers
Built by BuildDomainFromEntry() from domain partition root LDAP entry and trust entries.
Filter: (objectClass=domain)
Base attributes:
-
Trusts: Array of trust relationships parsed from trust LDAP entries (filter:objectClass=trustedDomain)- Each trust extracts:
name,trustDirection,trustAttributes,securityIdentifierfrom LDAP attributes - Trust flags parsed via parseTrust() to determine type, transitivity, SID filtering, TGT delegation
- Each trust extracts:
-
Links: GPO links parsed fromgPLinkLDAP attribute via parseGPLinkString()- Each link resolved via MemberCache to get GPO GUID
- Each
GPLinkRefcontains:-
GUID: The GPO object identifier -
IsEnforced: Boolean indicating if the link is enforced (from gPLink option == 2)
-
-
ChildObjects: Retrieved from ChildCache indexed by DN, converted toTypedPrincipal -
GPOChanges(REMOTE): Populated during remote collection phase (GPOLocalGroup method)-
AffectedComputers: Computers affected by GPO modifications -
DcomUsers: Users granted DCOM rights via GPO -
LocalAdmins: Users/groups granted local admin via GPO -
PSRemoteUsers: Users granted PowerShell remoting rights via GPO -
RemoteDesktopUsers: Users granted RDP rights via GPO
-
-
InheritanceHashes: Computed from security descriptor via GetInheritedAceHashes() -
ForestRootIdentifier: Retrieved from DomainSIDCache using forest root name fromBState().GetForestRoot()
Properties:
-
Domain: Extracted from DN via GetDomainFromDN() and uppercased -
DistinguishedName: Uppercased DN from LDAP entry -
DomainSID: Extracted fromobjectSidvia GetSID() -
Description: Extracted fromdescriptionLDAP attribute -
WhenCreated: Extracted fromwhenCreatedLDAP attribute, formatted via FormatTime1() -
Name: Same as Domain (uppercased domain name) -
FunctionalLevel: Extracted frommsDS-Behavior-VersionLDAP attribute, mapped viaFUNCTIONAL_LEVELSmap -
HighValue: Hardcodedtrue(all domains are high-value targets) -
IsACLProtected: Copied from BaseADObject -
Collected: Hardcodedtrue -
DoesAnyAceGrantOwnerRights: Computed from ACE list by checking for owner rights SID -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list by checking inherited ACEs for owner rights SID
Built by BuildUserFromEntry() from user LDAP entries.
Filter: (|(&(objectCategory=person)(objectClass=user))(objectClass=msDS-ManagedServiceAccount)(objectClass=msDS-GroupManagedServiceAccount))
Base attributes:
-
AllowedToDelegate: Array of computers user can delegate to, resolved frommsDS-AllowedToDelegateTovia ResolveSpn() -
UnconstrainedDelegation: Copied from Properties -
PrimaryGroupSID: Constructed from domain SID +primaryGroupIDLDAP attribute -
HasSIDHistory: Array of principals fromsIDHistory, resolved via ResolveSID() -
SPNTargets: Parsed fromservicePrincipalName, filtering for MSSQL SPNs to create SQLAdmin privileges -
DomainSID: Extracted fromobjectSidby removing RID
Properties:
-
Domain: Extracted from DN via GetDomainFromDN() -
DistinguishedName: Uppercased DN -
DomainSID: Derived fromobjectSidby removing RID component -
Description: Extracted fromdescriptionLDAP attribute -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed assAMAccountName@DOMAIN(uppercased) -
SAMAccountName: Extracted fromsAMAccountNameLDAP attribute -
IsACLProtected: Copied from BaseADObject -
Sensitive: Bit flag check on userAccountControl (UAC & 0x00100000) -
DontReqPreauth: Bit flag check on UAC (UAC & 0x00400000) -
PasswordNotReqd: Bit flag check on UAC (UAC & 0x00000020) -
UnconstrainedDelegation: Bit flag check on UAC (UAC & 0x00080000) -
PwdNeverExpires: Bit flag check on UAC (UAC & 0x00010000) -
Enabled: Bit flag check on UAC (!(UAC & 2)) -
TrustedToAuth: Bit flag check on UAC (UAC & 0x01000000) -
LastLogon: Extracted fromlastLogon, formatted via FormatTime2() (Windows FILETIME) -
LastLogonTimestamp: Extracted fromlastLogonTimestamp, formatted via FormatTime2(), defaults to -1 if 0 -
PwdLastSet: Extracted frompwdLastSet, formatted via FormatTime2() -
ServicePrincipalNames: Extracted fromservicePrincipalNamemulti-value LDAP attribute -
HasSPN: Computed aslen(ServicePrincipalNames) > 0 -
DisplayName: Extracted fromdisplayNameLDAP attribute -
Email: Extracted frommailLDAP attribute -
Title: Extracted fromtitleLDAP attribute -
HomeDirectory: Extracted fromhomeDirectoryLDAP attribute -
UserPassword: Extracted fromuserPasswordLDAP attribute -
UnixPassword: Extracted fromunixUserPasswordLDAP attribute -
UnicodePassword: Extracted fromunicodePwdLDAP attribute -
SFUPassword: Extracted frommsSFU30PasswordLDAP attribute -
LogonScript: Extracted fromscriptPathLDAP attribute -
AllowedToDelegate: Extracted frommsDS-AllowedToDelegateTomulti-value LDAP attribute -
AdminCount: Extracted fromadminCountLDAP attribute (check for "1") -
SIDHistory: Extracted fromsIDHistorymulti-value LDAP attribute -
AdminSDHolderProtected: Computed by comparing security descriptor hash with AdminSDHolder hash via IsAdminSDHolderProtected() -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildGroupFromEntry() from group LDAP entries.
Filter: (objectClass=group)
Base attributes:
-
Members: Extracted frommembermulti-value LDAP attribute, resolved via getMembership() using MemberCache or SIDCache for foreign security principals -
HasSIDHistory: Array resolved fromsIDHistoryvia ResolveSID()
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed assAMAccountName@DOMAIN(uppercased) -
SAMAccountName: Extracted fromsAMAccountNameLDAP attribute -
IsACLProtected: Copied from BaseADObject -
AdminCount: Extracted fromadminCount(check for "1") -
HighValue: Computed via isHighValue() checking for well-known high-value SIDs (ends with-512,-516,-519, or matchesS-1-5-32-(544|548|549|550|551)) -
SIDHistory: Extracted fromsIDHistorymulti-value attribute -
AdminSDHolderProtected: Computed by comparing security descriptor hash with AdminSDHolder hash -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildContainerFromEntry() from container LDAP entries.
Filter: (&(!(objectClass=groupPolicyContainer))(objectClass=container))
Base attributes:
-
ChildObjects: Retrieved from ChildCache indexed by DN -
InheritanceHashes: Computed from security descriptor via GetInheritedAceHashes()
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameorcnLDAP attribute +@DOMAIN(uppercased) -
HighValue: Hardcodedfalse -
IsACLProtected: Copied from BaseADObject -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Certain containers are filtered out via IsFilteredContainer().
Built by BuildOUFromEntry() from OU LDAP entries.
Filter: (objectClass=organizationalUnit)
Base attributes:
-
Links: GPO links parsed fromgPLinkLDAP attribute via parseGPLinkString(), resolved via MemberCache- Each
GPLinkRefcontains:-
GUID: The GPO object identifier -
IsEnforced: Boolean indicating if the link is enforced (from gPLink option == 2)
-
- Each
-
ChildObjects: Retrieved from ChildCache indexed by DN -
GPOChanges(REMOTE): Populated during remote collection (GPOLocalGroup method)-
AffectedComputers: Computers affected by GPO modifications -
DcomUsers: Users granted DCOM rights via GPO -
LocalAdmins: Users/groups granted local admin via GPO -
PSRemoteUsers: Users granted PowerShell remoting rights via GPO -
RemoteDesktopUsers: Users granted RDP rights via GPO
-
-
InheritanceHashes: Computed from security descriptor via GetInheritedAceHashes()
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameorouLDAP attribute +@DOMAIN(uppercased) -
IsACLProtected: Copied from BaseADObject -
HighValue: Hardcodedfalse -
BlocksInheritance: Extracted fromgPOptionsLDAP attribute (check for "1") -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildGPOFromEntry() from GPO LDAP entries.
Filter: (objectCategory=groupPolicyContainer)
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromdisplayNameLDAP attribute +@DOMAIN(uppercased) -
IsACLProtected: Copied from BaseADObject -
GPCPath: Extracted fromgPCFileSysPathLDAP attribute (uppercased), points to SYSVOL location -
HighValue: Hardcodedfalse -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildCertTemplateFromEntry() from certificate template LDAP entries found in the Configuration partition.
Filter: (objectClass=pKICertificateTemplate) (applied during conversion from Configuration partition entries collected with (objectClass=*))
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Extracted fromnameLDAP attribute -
ValidityPeriod: Parsed frompKIExpirationPeriodbinary attribute via ConvertPKIPeriod() (converts 100-nanosecond intervals to human-readable) -
RenewalPeriod: Parsed frompKIOverlapPeriodbinary attribute via ConvertPKIPeriod() -
SchemaVersion: Extracted frommsPKI-Template-Schema-Versionas uint32 -
DisplayName: Extracted fromdisplayNameLDAP attribute -
OID: Extracted frommsPKI-Cert-Template-OIDLDAP attribute -
EnrollmentFlag: Parsed frommsPKI-Enrollment-Flagas bitfield, converted to string viaparseFlagsToString() -
RequiresManagerApproval: Bit check on enrollment flag (PEND_ALL_REQUESTS) -
NoSecurityExtension: Bit check on enrollment flag (NO_SECURITY_EXTENSION) -
CertificateNameFlag: Parsed frommsPKI-Certificate-Name-Flagas bitfield, converted to string -
EnrolleeSuppliesSubject: Bit check on name flag (ENROLLEE_SUPPLIES_SUBJECT) -
SubjectAltRequireUPN: Bit check on name flag (SUBJECT_ALT_REQUIRE_UPN) -
SubjectAltRequireDNS: Bit check on name flag (SUBJECT_ALT_REQUIRE_DNS) -
SubjectAltRequireDomainDNS: Bit check on name flag (SUBJECT_ALT_REQUIRE_DOMAIN_DNS) -
SubjectAltRequireEmail: Bit check on name flag (SUBJECT_ALT_REQUIRE_EMAIL) -
SubjectAltRequireSPN: Bit check on name flag (SUBJECT_ALT_REQUIRE_SPN) -
SubjectRequireEmail: Bit check on name flag (SUBJECT_REQUIRE_EMAIL) -
EKUs: Extracted frompKIExtendedKeyUsagemulti-value LDAP attribute (OID strings) -
CertificateApplicationPolicy: Extracted frommsPKI-Certificate-Application-Policymulti-value attribute -
CertificatePolicy: Extracted frommsPKI-Certificate-Policymulti-value attribute -
AuthorizedSignatures: Extracted frommsPKI-RA-Signatureas int64 -
ApplicationPolicies: Parsed frommsPKI-Certificate-Application-Policyvia ParseCertTemplateApplicationPolicies() (handles backtick-delimited format based on schema version) -
IssuancePolicies: Extracted frommsPKI-RA-Application-Policiesmulti-value attribute -
EffectiveEKUs: Computed based on schema version (v1 uses EKUs, v2+ uses CertificateApplicationPolicy) -
AuthenticationEnabled: Computed by checking if EffectiveEKUs intersects with authentication OIDs or is empty -
SchannelAuthenticationEnabled: Computed by checking if EffectiveEKUs intersects with Schannel OIDs or is empty -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildEnterpriseCAFromEntry() from enterprise CA LDAP entries found in the Configuration partition.
Filter: (objectClass=pKIEnrollmentService) (applied during conversion from Configuration partition entries collected with (objectClass=*))
Base attributes:
-
HostingComputer(REMOTE): Resolved by querying the CA'sdNSHostNameattribute and performing DNS resolution to find the hosting server -
CARegistryData(REMOTE): Populated during remote collection via WINREG RPC (CARegistry method)- Registry paths under
HKLM\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CAName>\* -
CASecurity: ACEs read fromSecurityregistry value -
EnrollmentAgentRestrictions: Read from CA-specific registry configuration -
IsUserSpecifiesSanEnabled: Read fromEditFlagsregistry value -
IsRoleSeparationEnabled: Read from CA configuration registry
- Registry paths under
-
EnabledCertTemplates: Resolved fromcertificateTemplatesmulti-value attribute via CertTemplateCache (indexed by domain+template CN) -
HttpEnrollmentEndpoints(REMOTE): Populated during remote collection (CertServices method) via HTTP/HTTPS probes to web enrollment endpoints- Endpoints tested:
/certsrv/,/ADPolicyProvider_CEP_*/service.svc - Tests for NTLM authentication vulnerabilities (ESC8)
- Checks channel binding requirements
- Endpoints tested:
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameLDAP attribute +@DOMAIN -
CAName: Extracted fromnameLDAP attribute -
DNSHostname: Extracted fromdNSHostNameLDAP attribute -
Flags: Parsed fromflagsLDAP attribute as bitfield viaparseFlagsToString()using certificate authority flag definitions -
CertThumbprint: Parsed fromcACertificatebinary attribute via parseCACertificate() (SHA1 hash) -
CertName: Extracted from certificate subject -
CertChain: Parsed certificate chain fromcACertificate -
HasBasicConstraints: Parsed from certificate basic constraints extension -
BasicConstraintPathLength: Extracted from certificate basic constraints -
CASecurityCollected: Boolean flag indicating whether CASecurity data was successfully collected during remote collection -
EnrollmentAgentRestrictionsCollected: Boolean flag indicating whether EnrollmentAgentRestrictions data was successfully collected during remote collection -
IsUserSpecifiesSanEnabledCollected: Boolean flag indicating whether IsUserSpecifiesSanEnabled data was successfully collected during remote collection -
RoleSeparationEnabledCollected: Boolean flag indicating whether RoleSeparationEnabled data was successfully collected during remote collection -
UnresolvedPublishedTemplates: Array of template CNs fromcertificateTemplatesthat couldn't be resolved viaCertTemplateCache -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildRootCAFromEntry() from root CA LDAP entries in the Configuration partition.
Filter: (objectClass=certificationAuthority) (applied during conversion from Configuration partition entries collected with (objectClass=*))
Base attributes:
-
DomainSID: Retrieved from DomainSIDCache
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache using domain name from DN -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameLDAP attribute +@DOMAIN -
CertThumbprint: Parsed fromcACertificatebinary attribute via parseCACertificate() (SHA1 hash) -
CertName: Extracted from certificate subject -
CertChain: Parsed certificate chain -
HasBasicConstraints: Parsed from certificate basic constraints extension -
BasicConstraintPathLength: Extracted from certificate basic constraints -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildAIACAFromEntry() from Authority Information Access CA LDAP entries found in the Configuration partition.
Filter: (objectClass=certificationAuthority) with additional filtering for AIA-specific attributes (applied during conversion from Configuration partition entries collected with (objectClass=*))
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameLDAP attribute +@DOMAIN -
CrossCertificatePair: Raw binary data fromcrossCertificatePairLDAP attribute -
HasCrossCertificatePair: Boolean check ifcrossCertificatePairhas data -
CertThumbprint: Parsed fromcACertificatebinary attribute via parseCACertificate() (SHA1 hash) -
CertName: Extracted from certificate subject -
CertChain: Parsed certificate chain -
HasBasicConstraints: Parsed from certificate basic constraints extension -
BasicConstraintPathLength: Extracted from certificate basic constraints -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildIssuancePolicyFromEntry() from issuance policy LDAP entries found in the Configuration partition.
Filter: (objectClass=msPKI-Enterprise-Oid) (applied during conversion from Configuration partition entries collected with (objectClass=*))
Base attributes:
-
GroupLink: ResolvedTypedPrincipalfrommsPKI-OID-Group-LinkDN via MemberCache
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromdisplayNameorcnLDAP attribute +@DOMAIN -
DisplayName: Extracted fromdisplayNameLDAP attribute -
CertTemplateOID: Extracted frommsPKI-Cert-Template-OIDLDAP attribute -
OIDGroupLink: DN extracted frommsPKI-OID-Group-Link, resolved via MemberCache to get ObjectIdentifier -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildNTAuthStoreFromEntry() from NTAuthStore LDAP entry in the Configuration partition.
Filter: (objectClass=certificationAuthority) at specific DN CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration (applied during conversion from Configuration partition entries collected with (objectClass=*))
Base attributes:
-
DomainSID: Retrieved from DomainSIDCache
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Retrieved from DomainSIDCache using domain name from DN -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromnameLDAP attribute +@DOMAIN -
CertThumbprints: Array of SHA1 thumbprints parsed fromcACertificatemulti-value binary attribute viax509.ParseCertificate() -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list
Built by BuildComputerFromEntry() from computer LDAP entries.
Filter: (&(sAMAccountType=805306369)(!(objectClass=msDS-GroupManagedServiceAccount))(!(objectClass=msDS-ManagedServiceAccount))) (excludes gMSA/MSA accounts which are collected as Users)
Base attributes:
-
DomainSID: Derived fromobjectSid -
AllowedToAct: Parsed frommsDS-AllowedToActOnBehalfOfOtherIdentitybinary security descriptor via ParseBinaryACL(), filtering for GenericAll rights -
AllowedToDelegate: Resolved frommsDS-AllowedToDelegateTovia ResolveSpn() -
UnconstrainedDelegation: Copied from Properties -
PrimaryGroupSID: Constructed from domain SID +primaryGroupID -
LocalGroups(REMOTE): Populated during remote collection (LocalGroups method) via SAMR RPC (SamrEnumerateAliasesInDomain,SamrGetMembersInAlias) with SID translation via LSAT RPC (LsatLookupSids) -
Sessions(REMOTE): Populated during remote collection (Sessions method) via SRVS RPC (NetSessionEnum) retrieving active network sessions. Performs DNS reverse lookups for source IPs and resolves usernames via SamCache (indexed by domain+sAMAccountName) -
PrivilegedSessions(REMOTE): Populated during remote collection (loggedon method) via WKSSVC RPC (NetWkstaUserEnum) retrieving currently logged-on users. Uses NetBIOSDomainCache for domain resolution and SamCache for user resolution -
RegistrySessions(REMOTE): Populated during remote collection (RegSessions method) via WINREG RPC enumerating subkeys underHKEY_USERS(each subkey represents a user SID with loaded registry hive) -
HasSIDHistory: Resolved fromsIDHistoryvia ResolveSID() -
Status(REMOTE): Populated when availability checks fail before remote collection; contains connectivity status (Connectable: bool) and error message details -
UserRights(REMOTE): Populated during remote collection (UserRights method) via LSAD RPC (LsaEnumerateAccountsWithUserRight) queryingSeRemoteInteractiveLogonRightprivilege. Uses LSAT RPC for SID translation and WellKnown SID handling -
DumpSMSAPassword: Resolved frommsDS-HostServiceAccountmulti-value attribute via MemberCache -
DCRegistryData(REMOTE): Populated during remote collection (DCRegistry method) for domain controllers reading registry values:-
CertificateMappingMethods:HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\CertificateMappingMethods -
StrongCertificateBindingEnforcement:HKLM\SYSTEM\CurrentControlSet\Services\Kdc\StrongCertificateBindingEnforcement -
VulnerableNetlogonSecurityDescriptor:HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\VulnerableChannelAllowList
-
-
NTLMRegistryData(REMOTE): Populated during remote collection (NTLMRegistry method) via WINREG RPC reading NTLM configuration fromHKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\*- Examples:
RestrictSendingNtlmTraffic,NtlmMinClientSec,LmCompatibilityLevel,ClientAllowedNTLMServers
- Examples:
-
IsWebClientRunning(REMOTE): Populated during remote collection (WebClient method) by attempting to connect to the named pipeDAV RPC SERVICEon theIPC$share via SMB. Success indicates WebClient service is running -
IsDC: Copied from Properties -
SMBInfo(REMOTE): Populated during remote collection (SMBInfo method) via WINREG RPC reading signing requirement registry value
Properties:
-
Domain: Extracted from DN -
DistinguishedName: Uppercased DN -
DomainSID: Derived fromobjectSidby removing RID -
Description: Extracted fromdescription -
WhenCreated: Extracted fromwhenCreated, formatted via FormatTime1() -
Name: Constructed fromdNSHostName, falls back tosAMAccountName(minus $) +.DOMAIN, thencnorname(uppercased) -
SAMAccountName: Extracted fromsAMAccountNameLDAP attribute -
HasLAPS: Checked via entry.HasLAPS() (presence ofms-Mcs-AdmPwdormsLAPS-Passwordattributes) -
IsACLProtected: Copied from BaseADObject -
AdminSDHolderProtected: Computed by comparing security descriptor hash with AdminSDHolder hash -
Enabled: Bit flag check onuserAccountControl(!(UAC & 2)) -
UnconstrainedDelegation: Bit flag check on UAC (UAC & 0x00080000) -
TrustedToAuth: Bit flag check on UAC (UAC & 0x01000000) -
IsDC: Bit flag check on UAC (UAC & 0x2000) -
IsReadOnlyDC: Bit flag check on UAC (UAC & 0x04000000) -
EncryptedTextPwdAllowed: Bit flag check on UAC (UAC & 0x0080) -
UseDesKeyOnly: Bit flag check on UAC (UAC & 0x00200000) -
LogonScriptEnabled: Bit flag check on UAC (UAC & 0x0001) -
LockedOut: Bit flag check on UAC (UAC & 0x0010) -
PasswordExpired: Bit flag check on UAC (UAC & 0x00800000) -
SupportedEncryptionTypes: Parsed frommsDS-SupportedEncryptionTypesvia ConvertEncryptionTypes() (DES, RC4, AES128, AES256) -
AdminCount: Extracted fromadminCount(check for != "0") -
LastLogon: Extracted fromlastLogon, formatted via FormatTime2() -
LastLogonTimestamp: Extracted fromlastLogonTimestamp, formatted via FormatTime2(), defaults to -1 if "0" -
PwdLastSet: Extracted frompwdLastSet, formatted via FormatTime2() -
ServicePrincipalNames: Extracted fromservicePrincipalNamemulti-value attribute -
Email: Extracted frommailLDAP attribute -
UserAccountControl: Raw UAC value as int64 -
OperatingSystem: Constructed fromoperatingSystem+operatingSystemServicePack(if present) -
SIDHistory: Extracted fromsIDHistorymulti-value attribute -
ObjectGUID: Extracted fromobjectGUIDvia entry.GetGUID() -
AllowedToDelegate: Extracted frommsDS-AllowedToDelegateTomulti-value attribute -
LdapAvailable(REMOTE): Populated during remote collection (LdapServices method) - port check on TCP 389 -
LdapsAvailable(REMOTE): Populated during remote collection (LdapServices method) - port check on TCP 636 -
LdapSigning(REMOTE): Populated during remote collection (LdapServices method) - tests LDAP authentication to determine if signing is required (checks for "Strong Auth Required" error) -
LdapsEpa(REMOTE): Populated during remote collection (LdapServices method) - tests LDAPS authentication with channel binding disabled to determine if Extended Protection for Authentication is required (checks for error code 0x80090346) -
DoesAnyAceGrantOwnerRights: Computed from ACE list -
DoesAnyInheritedAceGrantOwnerRights: Computed from ACE list