Detection rules › Kusto

Cloudflare - Unexpected client request

Status
available
Severity
medium
Time window
1h
Source
github.com/Azure/Azure-Sentinel

'Detects client requests to unusual client request.'

MITRE ATT&CK coverage

Rule body

id: f32142b1-4bcb-45c0-92e4-2ddc18768522
name: Cloudflare - Unexpected client request
description: |
  'Detects client requests to unusual client request.'
severity: Medium
status: Available
requiredDataConnectors:
  - connectorId: CloudflareDataConnector
    dataTypes:
      - Cloudflare
queryFrequency: 1h
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
  - InitialAccess
relevantTechniques:
  - T1190
  - T1133
query: |
  Cloudflare
  | where HttpRequestMethod =~ 'GET'
  | where DstBytes != 0 or SrcBytes != 0
  | where ClientRequestURI has_any ('/admin', '/admin.php', 'wp-admin', '.htaccess', '/etc/shadow', '/etc/passwd', '/etc/hosts', '/etc/ssh/')
entityMappings:
  - entityType: IP
    fieldMappings:
      - identifier: Address
        columnName: SrcIpAddr
version: 1.0.2
kind: Scheduled

Stages and Predicates

Stage 1: source

Cloudflare

Stage 2: where

| where HttpRequestMethod =~ 'GET'

Stage 3: where

| where DstBytes != 0 or SrcBytes != 0

Stage 4: where

| where ClientRequestURI has_any ('/admin', '/admin.php', 'wp-admin', '.htaccess', '/etc/shadow', '/etc/passwd', '/etc/hosts', '/etc/ssh/')

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
ClientRequestURImatch
  • .htaccess transforms: term
  • /admin transforms: term
  • /admin.php transforms: term
  • /etc/hosts transforms: term
  • /etc/passwd transforms: term
  • /etc/shadow transforms: term
  • /etc/ssh/ transforms: term
  • wp-admin transforms: term
field:"ClientRequestURI" kind:match
DstBytesne
  • 0
field:"DstBytes" kind:ne value:"0"
HttpRequestMethodeq
  • GET
field:"HttpRequestMethod" kind:eq value:"GET"
SrcBytesne
  • 0
field:"SrcBytes" kind:ne value:"0"