Unusual HTTP Request Method


Description

The following analytic detects Zeek HTTP requests using methods outside a configurable allowlist of standard and commonly used HTTP methods. Unusual methods can indicate protocol abuse, exploitation attempts, or command-and-control traffic. Review the method, source, destination, and URI to assess the activity.

Query · spl

`zeek_http`
method=*
NOT method IN (
      "ACL",
      "CCM_POST",
      "CONNECT",
      "COPY",
      "DELETE",
      "GET",
      "HEAD",
      "LOCK",
      "MKCOL",
      "MOVE",
      "OPTIONS",
      "PATCH",
      "POST",
      "PRI",
      "PROPFIND",
      "PROPPATCH",
      "PUT",
      "REPORT",
      "SEARCH",
      "TRACE",
      "unknown",
      "UNLOCK"
    )

| eval dest_port=coalesce(dest_port, 'id.resp_p'),
       dest=coalesce(dest, dest_ip, 'id.resp_h'),
       src=coalesce(src, src_ip, 'id.orig_h')

| stats count min(_time) as firstTime max(_time) as lastTime
              values(method) as method
              values(uri) as uri
              values(status_code) as status_code

  by src dest dest_port

| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `unusual_http_request_method_filter`

Implementation guide

Zeek HTTP logs must be ingested into Splunk using the latest version of Splunk Add-on for Zeek (https://splunkbase.splunk.com/app/5466). Configure the zeek_http macro to match the sourcetype used by your Zeek add-on.

Known false positives

  • Some legitimate applications and frameworks may use non-standard HTTP methods. Review the method and destination to determine whether the traffic is expected, then add confirmed legitimate methods to the allowlist.

Analyst notes

Known false positives: Some legitimate applications and frameworks may use non-standard HTTP methods. Review the method and destination to determine whether the traffic is expected, then add confirmed legitimate methods to the allowlist.

Raw source Unusual HTTP Request Method · SPL
Esc
Published by splunk/security_content ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
name: Unusual HTTP Request Method
id: c086ad2b-a747-4c61-9c90-d6ffdcaefbe8
version: 1
creation_date: '2026-10-12'
modification_date: '2026-10-12'
author: Raven Tait, Splunk
status: production
type: Anomaly
description: |-
    The following analytic detects Zeek HTTP requests using methods outside a configurable allowlist of standard and commonly used HTTP methods.
    Unusual methods can indicate protocol abuse, exploitation attempts, or command-and-control traffic.
    Review the method, source, destination, and URI to assess the activity.
data_source:
    - Zeek HTTP
search: |-
    `zeek_http`
    method=*
    NOT method IN (
          "ACL",
          "CCM_POST",
          "CONNECT",
          "COPY",
          "DELETE",
          "GET",
          "HEAD",
          "LOCK",
          "MKCOL",
          "MOVE",
          "OPTIONS",
          "PATCH",
          "POST",
          "PRI",
          "PROPFIND",
          "PROPPATCH",
          "PUT",
          "REPORT",
          "SEARCH",
          "TRACE",
          "unknown",
          "UNLOCK"
        )

    | eval dest_port=coalesce(dest_port, 'id.resp_p'),
           dest=coalesce(dest, dest_ip, 'id.resp_h'),
           src=coalesce(src, src_ip, 'id.orig_h')

    | stats count min(_time) as firstTime max(_time) as lastTime
                  values(method) as method
                  values(uri) as uri
                  values(status_code) as status_code

      by src dest dest_port

    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `unusual_http_request_method_filter`
how_to_implement: |-
    Zeek HTTP logs must be ingested into Splunk using the latest version of Splunk Add-on for Zeek (https://splunkbase.splunk.com/app/5466).
    Configure the `zeek_http` macro to match the sourcetype used by your Zeek add-on.
known_false_positives: |-
    Some legitimate applications and frameworks may use non-standard HTTP methods.
    Review the method and destination to determine whether the traffic is expected, then add confirmed legitimate methods to the allowlist.
references:
    - https://attack.mitre.org/techniques/T1071/001/
    - https://attack.mitre.org/techniques/T1190/
    - https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
drilldown_searches:
    - name: View the detection results for - "$src$"
      search: '%original_detection_search% | search src = "$src$"'
      earliest_offset: $info_min_time$
      latest_offset: $info_max_time$
    - name: View risk events for the last 7 days for - "$id.orig_h$"
      search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src$") | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
      earliest_offset: 7d
      latest_offset: "0"
intermediate_findings:
    entities:
        - field: src
          type: system
          score: 20
          message: An unusual HTTP method [$method$] ws observed from [$src$] to [$dest$] over port [$dest_port$] to URI - [$uri$].
threat_objects:
    - field: uri
      type: uri
analytic_story:
    - Command And Control
    - HTTP Request Smuggling
asset_type: Web Server
mitre_attack_id:
    - T1071.001
    - T1190
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: web
security_domain: network
tests:
    - name: True Positive Test
      attack_data:
        - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1071/zeek_http_unusual_method/http.log
          sourcetype: zeek:http
          source: http.log
      test_type: unit

Detection rules belong to the projects that publish them and remain under their own licenses. This site indexes and links to them; it claims no rights in them.