Detection rules › Splunk

Windows BitDefender Submission Wizard DLL Sideloading

Status
experimental
Severity
medium
Group by
SignatureStatus, Signed, dest, image_loaded, original_file_name, process_guid, process_hash, process_id, process_name, service_dll_signature_exists, service_dll_signature_verified, signature, signature_id, user, user_id, vendor_product
Author
Michael Haag, Splunk
Source
github.com/splunk/security_content

Detects DLL side-loading of Bitdefender Submission Wizard (BDSubmit.exe, bdsw.exe, or renamed BluetoothService.exe) when a malicious log.dll is loaded from a non-standard path via Sysmon ImageLoad events.

Known false positives

  • Legitimate Bitdefender installations loading log.dll from Program Files are excluded. Allowlist known paths as needed.

MITRE ATT&CK coverage

Telemetry coverage

ProviderRecord / event type
SysmonEvent ID 7: Image loaded

Rule body

name: Windows BitDefender Submission Wizard DLL Sideloading
id: a1b2c3d4-e5f6-4789-a012-3456789abcde
version: 3
creation_date: '2026-03-16'
modification_date: '2026-05-13'
author: Michael Haag, Splunk
status: experimental
type: TTP
description: |
    Detects DLL side-loading of Bitdefender Submission Wizard (BDSubmit.exe, bdsw.exe, or renamed BluetoothService.exe) when a malicious log.dll is loaded from a non-standard path via Sysmon ImageLoad events.
data_source:
    - Sysmon EventID 7
search: |-
    `sysmon`
    EventCode=7
    (
        Image IN (
            "*\\BDSubmit.exe",
            "*\\bdsw.exe",
            "*\\BluetoothService.exe"
        )
        OR
        OriginalFileName IN (
            "BDSubmit.exe",
            "bdsw.exe"
        )
    )
    ImageLoaded="*\\log.dll"
    NOT ImageLoaded IN (
        "*:\\Program Files (x86)\\*",
        "*:\\Program Files\\*",
        "*:\\Windows\\System32\\*",
        "*:\\Windows\\SysWOW64\\*"
    )
    | stats count min(_time) as firstTime
                  max(_time) as lastTime
      by dest Image ImageLoaded Signed SignatureStatus User OriginalFileName loaded_file
         loaded_file_path process_exec process_guid process_hash process_id process_name
         process_path service_dll_signature_exists service_dll_signature_verified signature
         signature_id user_id vendor_product
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_bitdefender_submission_wizard_dll_sideloading_filter`
how_to_implement: |
    Ingest Sysmon ImageLoad events and ensure the Splunk Add-on for Sysmon is configured to parse them. Enable ImageLoad in Sysmon config for DLLs. Map logs to Endpoint data model where applicable.
known_false_positives: |
    Legitimate Bitdefender installations loading log.dll from Program Files are excluded. Allowlist known paths as needed.
references:
    - https://attack.mitre.org/techniques/T1574/002/
    - https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/
    - https://attack.mitre.org/groups/G0065/
finding:
    title: Bitdefender Submission Wizard loaded $ImageLoaded$ from a non-standard path on $dest$ by user $User$, indicating potential DLL side-loading activity.
    entity:
        field: User
        type: user
        score: 50
intermediate_findings:
    entities:
        - field: dest
          type: system
          score: 50
          message: Bitdefender Submission Wizard loaded $ImageLoaded$ from a non-standard path on $dest$ by user $User$, indicating potential DLL side-loading activity.
threat_objects:
    - field: Image
      type: process_name
    - field: ImageLoaded
      type: file_name
analytic_story:
    - Lotus Blossom Chrysalis Backdoor
asset_type: Endpoint
mitre_attack_id:
    - T1574
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`sysmon`
EventCode=7
(
    Image IN (
        "*\\BDSubmit.exe",
        "*\\bdsw.exe",
        "*\\BluetoothService.exe"
    )
    OR
    OriginalFileName IN (
        "BDSubmit.exe",
        "bdsw.exe"
    )
)
ImageLoaded="*\\log.dll"
NOT ImageLoaded IN (
    "*:\\Program Files (x86)\\*",
    "*:\\Program Files\\*",
    "*:\\Windows\\System32\\*",
    "*:\\Windows\\SysWOW64\\*"
)

Stage 2: stats

| stats count min(_time) as firstTime
              max(_time) as lastTime
  by dest Image ImageLoaded Signed SignatureStatus User OriginalFileName loaded_file
     loaded_file_path process_exec process_guid process_hash process_id process_name
     process_path service_dll_signature_exists service_dll_signature_verified signature
     signature_id user_id vendor_product

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `windows_bitdefender_submission_wizard_dll_sideloading_filter`

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
ImageLoadedin"*:\\Program Files (x86)\\*", "*:\\Program Files\\*", "*:\\Windows\\SysWOW64\\*", "*:\\Windows\\System32\\*"excludes:ImageLoaded

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 7 corpus 41 (splunk 39, elastic 1, kusto 1)
field:"EventID" kind:eq value:"7"
Imagein
  • "*\\BDSubmit.exe"
  • "*\\BluetoothService.exe"
  • "*\\bdsw.exe"
field:"Image" kind:in
ImageLoadedeq
  • "*\\log.dll"
field:"ImageLoaded" kind:eq
OriginalFileNamein
  • "BDSubmit.exe"
  • "bdsw.exe"
field:"OriginalFileName" kind:in