Detection rules › Sigma

Kerberos enumeration with existing/unexisting users (Kerbrute)

Status
experimental
Severity
high
Time window
30m
Log source
product windows, service security
Author
mdecrevoisier
Source
github.com/mdecrevoisier/SIGMA-detection-rules

Detects scenarios where an attacker attempts to enumerate existing or non existing users using "Kerbrute". This use case can also be related to spot vulnearbility "MS14-068".

MITRE ATT&CK coverage

TacticTechniques
Credential AccessT1110 Brute Force

Event coverage

Rule body yaml

title: Kerberos enumeration with existing/unexisting users (Kerbrute)
name: kerbrute_enumeration
description: Detects scenarios where an attacker attempts to enumerate existing or non existing users using "Kerbrute". This use case can also be related to spot vulnearbility "MS14-068".
references:
  - https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0006-Credential%20Access/T1110.xxx-Brut%20force
  - https://github.com/ropnop/kerbrute
  - https://www.jpcert.or.jp/english/pub/sr/20170612ac-ir_research_en.pdf
tags:
  - attack.credential_access
  - attack.t1110
author: mdecrevoisier
status: experimental
logsource:
  product: windows
  service: security
detection:
  selection:
    EventID:
      - 4771
      - 4768
    Status: "0x6" # KDC_ERR_C_PRINCIPAL_UNKNOWN
    TicketOptions: 0x50800000
  filter:
    - IpAddress: "%domain_controllers_ips%" # reduce amount of false positives
    - TargetUserName: "%account_allowed_proxy%" # accounts allowed to perform proxiable requests
  condition: selection and not filter
falsepositives:
  - Missconfigured application or identity services
level: high

---
title: Kerberos enumeration with existing/unexisting users (Kerbrute) Count
status: experimental
correlation:
  type: value_count
  rules:
    - kerbrute_enumeration # Referenced here
  group-by:
    - Computer
  timespan: 30m
  condition:
    gte: 20
    field: TargetUserName # Count how many failed logins were reported on the domain controller.
level: high

Stages and Predicates

Stage 0: condition

selection and not filter

Stage 1: selection

selection:
  EventID:
    - 4771
    - 4768
  Status: "0x6"
  TicketOptions: 0x50800000

Stage 2: not filter

filter:
  - IpAddress: "%domain_controllers_ips%"
  - TargetUserName: "%account_allowed_proxy%"

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
IpAddresseq%domain_controllers_ips%
TargetUserNameeq%account_allowed_proxy%

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
Statuseq
  • 0x6 corpus 5 (splunk 3, sigma 2)
TicketOptionseq
  • 1350565888