LoFP LoFP / an single endpoint requesting a large number of kerberos service tickets is not common behavior. possible false positive scenarios include but are not limited to vulnerability scanners, administration systems and missconfigured systems.

Techniques

Sample rules

Windows Large Number of Computer Service Tickets Requested

Description

The following analytic leverages Event ID 4769, A Kerberos service ticket was requested, to identify more than 30 computer service ticket requests from one source. When a domain joined endpoint connects to other remote endpoint, it will first request a Kerberos Service Ticket with the computer name as the Service Name. A user requesting a large number of computer service tickets for different endpoints could represent malicious behavior like lateral movement, malware staging, reconnaissance, etc. Active Directory environments can be very different depending on the organization. Users should test this detection and customize the arbitrary threshold as needed.

Detection logic

 `wineventlog_security` EventCode=4769 ServiceName="*$" TargetUserName!="*$" 
| bucket span=5m _time 
| stats dc(ServiceName) AS unique_targets values(ServiceName) as host_targets by _time, IpAddress, TargetUserName 
| where unique_targets > 30 
| `windows_large_number_of_computer_service_tickets_requested_filter`

Unusual Number of Kerberos Service Tickets Requested

Description

The following hunting analytic leverages Kerberos Event 4769, A Kerberos service ticket was requested, to identify a potential kerberoasting attack against Active Directory networks. Kerberoasting allows an adversary to request kerberos tickets for domain accounts typically used as service accounts and attempt to crack them offline allowing them to obtain privileged access to the domain. The detection calculates the standard deviation for each host and leverages the 3-sigma statistical rule to identify an unusual number service ticket requests. To customize this analytic, users can try different combinations of the bucket span time and the calculation of the upperBound field.

Detection logic

 `wineventlog_security` EventCode=4769 ServiceName!="*$" TicketEncryptionType=0x17 
| bucket span=2m _time 
| stats dc(ServiceName) AS unique_services values(ServiceName) as requested_services by _time, src 
| eventstats avg(unique_services) as comp_avg , stdev(unique_services) as comp_std by src 
| eval upperBound=(comp_avg+comp_std*3) 
| eval isOutlier=if(unique_services > 2 and unique_services >= upperBound, 1, 0) 
| search isOutlier=1 
| `unusual_number_of_kerberos_service_tickets_requested_filter`