Architecture
Bounty uses a two-process architecture: a Wails desktop application (Go backend + React-TS frontend) and a Windows service that manages encrypted database operations.Components
Desktop Application (Wails)
The main Bounty application provides the user interface and all AD interaction logic:Database Service
A standalone Windows service that provides encrypted storage for all Bounty data:Data Flow
Security Model
Encryption Key Lifecycle
- On first launch, Bounty generates a random AES encryption key
- The key is encrypted using Windows DPAPI (
CryptProtectData) — binding it to the current machine and user - The encrypted key is stored at
%PROGRAMDATA%\Bounty\svc.enc - The database service decrypts the key at startup using DPAPI
- All database operations use the decrypted key for BadgerDB encryption
Service Communication
- On first launch, Bounty generates a TLS certificate and key pair
- Both are stored in the secure certificates directory
- The desktop app and database service authenticate each other via mTLS
- All gRPC calls are encrypted in transit
Account Tracking
Bounty tracks all affected accounts by their Security Identifier (SID) rather than sAMAccountName. This ensures findings remain valid even if accounts are renamed.Directory Structure
Protocols
Bounty communicates with Active Directory using multiple protocols depending on the scan type:SIEM Event Format
Bounty forwards structured events to configured SIEM platforms. Events include:
Supported platforms use native integrations — Splunk HEC, Elastic bulk API, Sentinel workspace API, QRadar syslog, Wazuh syslog, ArcSight CEF, Huntress API, and a generic custom webhook endpoint.

