Skip to main content
Applies to BloodHound Enterprise only This document provides technical design details and API reference information for the BloodHound Enterprise integration with Cortex XSOAR. For configuration instructions, see Configure the integration.

Integration type

The SpecterOps BloodHound Enterprise integration is a vulnerability management integration that enables automated retrieval of attack path findings from BloodHound Enterprise into Cortex XSOAR. This streamlines incident creation and investigation for Active Directory and Microsoft Azure environments.

Use cases

  • Automatically fetch new attack paths from BloodHound Enterprise
  • Create incidents in XSOAR for each detected attack path
  • Filter incidents by domain and finding type
  • Track attack paths with granular timestamp-based deduplication
  • Retrieve detailed information about Active Directory and Azure assets
  • Enrich incident data with asset details including object IDs, names, and properties
  • Support for both directory types (User, Computer, Group, Container, Domain, GPO, etc.) and Azure types (AZApp, AZGroup, AZUser, AZRole, AZTenant, AZServicePrincipal, etc.)
  • Check if attack paths exist between two principals in the environment
  • Search for objects by name to retrieve their object IDs
  • Analyze relationships between principals and assets
  • Support for multiple Active Directory domains
  • Filter by specific domains or finding types
  • Track attack paths per domain and finding type combination

Authentication

The integration uses HMAC-based signature authentication with the following process:
  1. Generate HMAC signature using SHA-256 with the token key
  2. Include token ID, request date, and signature in request headers
  3. Format: Authorization: bhesignature {token_id}
  4. Include RequestDate header in ISO format
  5. Include Signature header as base64-encoded HMAC digest

Configuration parameters

Commands and outputs

test-module

Tests the connection to the BloodHound Enterprise API. Arguments: None Context outputs: None Human-readable output:
  • Success: “ok”
  • Failure: Error message indicating the specific failure reason (Unauthorized, Bad Request, Forbidden, Server Error, DNS resolution error, etc.)

bhe-get-object-id

Retrieves object IDs for one or more objects by their names. Arguments: Context outputs: Human-readable output: Object ID Search Results

bhe-fetch-asset-info

Retrieves detailed information about one or more assets by their object IDs. Arguments: Context outputs: Human-readable output: Asset Information
For Azure objects, the response includes additional related entity counts such as group membership counts, role assignments, inbound/outbound control counts, and abusable app role assignments (for service principals).

bhe-does-path-exist

Checks if an attack path exists between two principals in the BloodHound Enterprise graph. Arguments: Context outputs: Human-readable output: Path Existence Check

fetch-incidents

Fetches attack path findings from BloodHound Enterprise and creates incidents in XSOAR (automatically executed when isFetch is enabled). Arguments: None Context outputs: Fetch logic:
  1. Lock Mechanism: Uses integration context to prevent concurrent fetch operations
  2. Domain Filtering: Fetches available domains and filters by finding_domain parameter
  3. Finding Type Collection: Collects available finding types for each domain
  4. Finding Type Filtering: Filters finding types by finding_category parameter
  5. Path Metadata Fetching: Retrieves titles, descriptions, and remediation guidance for each finding type
  6. Incremental Fetching: Uses timestamp-based filtering to only fetch new attack paths since last run
  7. Granular Tracking: Tracks timestamps per {domain_name}:{finding_type} combination for precise deduplication
  8. Pagination: Handles pagination for large result sets (up to 1000 results per page)
  9. Incident Creation: Creates one incident per attack path with all relevant metadata

API endpoints

The integration uses the following BloodHound Enterprise API v2 endpoints:

Supported object types

Active Directory types

  • User
  • Computer
  • Group
  • Container
  • Domain
  • GPO (Group Policy Object)
  • Aiaca
  • Rootca
  • Enterpriseca
  • Ntauthstore
  • Certtemplate
  • OU (Organizational Unit)

Azure types

  • AZApp (Azure Application)
  • AZGroup (Azure Group)
  • AZUser (Azure User)
  • AZRole (Azure Role)
  • AZTenant (Azure Tenant)
  • AZServicePrincipal (Azure Service Principal)
  • AZAutomationAccount (Azure Automation Account)

Error handling

The integration implements comprehensive error handling with specific exception types:

Retry logic

  • Automatic retry for rate limit (429) and server errors (500, 502, 503, 504)
  • Maximum of 3 retry attempts
  • Immediate retry without exponential backoff

Memory limitation handling

  • Gracefully handles memory limitation errors for large queries (especially for AZTenant)
  • Returns appropriate error messages when memory limits are encountered
  • Sets related entity counts to 0 when memory limitations occur