Detection rules › Elastic

Unusual Kerberos Client Process

Time window
1m
Sequence by
process.entity_id
Source
github.com/elastic/protections-artifacts

Identifies network connections to the standard Kerberos port from an unusual process. On Windows, the only native system process that normally performs Kerberos traffic from a domain joined host is lsass.exe.

MITRE ATT&CK coverage

TacticTechniques
Credential Access

Rule body

[rule]
description = """
Identifies network connections to the standard Kerberos port from an unusual process. On Windows, the only native system
process that normally performs Kerberos traffic from a domain joined host is lsass.exe.
"""
id = "b5c91c3e-9d2d-4df6-afb7-c9d236b5ebe2"
license = "Elastic License v2"
name = "Unusual Kerberos Client Process"
os_list = ["windows"]
version = "1.0.32"

query = '''
sequence by process.entity_id with maxspan=1m
 [any where user.id like ("S-1-5-21*", "S-1-12-*") and
  (
   (event.category =="library" and dll.name : ("System.DirectoryServices.*.dll", "Wldap32.dll")) or
   (event.category in ("network", "dns") and dns.question.name : "_ldap._tcp.*")
  )]
 [network where destination.port == 88 and source.port >= 49152 and
  network.direction == "egress" and network.transport == "tcp" and
  not destination.address : ("127.*", "::1", "66.64.*") and
  not process.executable : 
         ("?:\\Program Files (x86)\\GFI\\LanGuard 12 Agent\\lnsscomm.exe",
          "?:\\Program Files\\Microsoft Azure Active Directory Connect\\AzureADConnect.exe",
          "?:\\Program Files (x86)\\GalacticAgent\\bin\\GalacticScan.exe",
          "?:\\Xelis Dental Trainer\\Bin-x64\\XelisDental.exe")]
'''

min_endpoint_version = "7.16.0"
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0

[[optional_actions]]
action = "rollback"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1558"
name = "Steal or Forge Kerberos Tickets"
reference = "https://attack.mitre.org/techniques/T1558/"


[threat.tactic]
id = "TA0006"
name = "Credential Access"
reference = "https://attack.mitre.org/tactics/TA0006/"

[internal]
min_endpoint_version = "7.16.0"

Stages and Predicates

Ordered sequence: each step below must occur in order within 1m, correlated by process.entity_id.

Stage 1: any

[any where user.id like ("S-1-5-21*", "S-1-12-*") and
  (
   (event.category =="library" and dll.name : ("System.DirectoryServices.*.dll", "Wldap32.dll")) or
   (event.category in ("network", "dns") and dns.question.name : "_ldap._tcp.*")
  )]

Stage 2: network

[network where destination.port == 88 and source.port >= 49152 and
  network.direction == "egress" and network.transport == "tcp" and
  not destination.address : ("127.*", "::1", "66.64.*") and
  not process.executable : 
         ("?:\\Program Files (x86)\\GFI\\LanGuard 12 Agent\\lnsscomm.exe",
          "?:\\Program Files\\Microsoft Azure Active Directory Connect\\AzureADConnect.exe",
          "?:\\Program Files (x86)\\GalacticAgent\\bin\\GalacticScan.exe",
          "?:\\Xelis Dental Trainer\\Bin-x64\\XelisDental.exe")]

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
destination.addresswildcard127.*, ::1, 66.64.*excludes:destination.address field:"destination.address" value:"127.*" field:"destination.address" value:"::1" field:"destination.address" value:"66.64.*"
process.executableeq?:\Program Files (x86)\GFI\LanGuard 12 Agent\lnsscomm.exe, ?:\Program Files\Microsoft Azure Active Directory Connect\AzureADConnect.exe, ?:\Program Files (x86)\GalacticAgent\bin\GalacticScan.exe, ?:\Xelis Dental Trainer\Bin-x64\XelisDental.exeexcludes:process.executable

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
destination.porteq
  • 88 transforms: number corpus 7 (elastic 4, sigma 2, splunk 1)
field:"DestinationPort" kind:eq value:"88"
dll.namewildcard
  • System.DirectoryServices.*.dll
  • Wldap32.dll corpus 5 (elastic 5)
field:"dll.name" kind:wildcard
dns.question.namewildcard
  • _ldap._tcp.*
field:"QueryName" kind:wildcard value:"_ldap._tcp.*"
event.categoryeq
  • library corpus 22 (elastic 22)
field:"event.category" kind:eq value:"library"
event.categoryin
  • dns corpus 3 (elastic 3)
  • network corpus 19 (elastic 19)
field:"event.category" kind:in
network.directioneq
  • egress corpus 17 (elastic 17)
field:"Initiated" kind:eq value:"egress"
network.transporteq
  • tcp corpus 26 (elastic 25, sigma 1)
field:"Protocol" kind:eq value:"tcp"
source.portge
  • 49152 transforms: number corpus 16 (elastic 16)
field:"SourcePort" kind:ge value:"49152"
user.idwildcard
  • S-1-12-* corpus 46 (elastic 46)
  • S-1-5-21* corpus 47 (elastic 47)
field:"user.id" kind:wildcard