EXPLORE
← Back to Explore
splunk_escuTTP

Multiple Archive Files Http Post Traffic

The following analytic detects the high-frequency exfiltration of archive files via HTTP POST requests. It leverages HTTP stream logs to identify specific archive file headers within the request body. This activity is significant as it often indicates data exfiltration by APTs or trojan spyware after data collection. If confirmed malicious, this behavior could lead to the unauthorized transfer of sensitive data to an attacker’s command and control server, potentially resulting in severe data breaches and loss of confidential information.

MITRE ATT&CK

Detection Query

`stream_http` http_method=POST
  | eval archive_hdr1=substr(form_data,1,2)
  | eval archive_hdr2 = substr(form_data,1,4)
  | stats values(form_data) as http_request_body min(_time) as firstTime max(_time) as lastTime count
    BY src_ip dest_ip http_method
       http_user_agent uri_path url
       bytes_in bytes_out archive_hdr1
       archive_hdr2
  | where count >20 AND (archive_hdr1 = "7z" OR archive_hdr1 = "PK" OR archive_hdr2="Rar!")
  | `security_content_ctime(firstTime)`
  | `security_content_ctime(lastTime)`
  | `multiple_archive_files_http_post_traffic_filter`

Author

Teoderick Contreras, Splunk

Created

2026-03-10

Data Sources

Splunk Stream HTTP

Tags

Data ExfiltrationCommand And ControlAPT37 Rustonotto and FadeStealerHellcat Ransomware
Raw Content
name: Multiple Archive Files Http Post Traffic
id: 4477f3ea-a28f-11eb-b762-acde48001122
version: 11
date: '2026-03-10'
author: Teoderick Contreras, Splunk
status: production
type: TTP
description: The following analytic detects the high-frequency exfiltration of archive files via HTTP POST requests. It leverages HTTP stream logs to identify specific archive file headers within the request body. This activity is significant as it often indicates data exfiltration by APTs or trojan spyware after data collection. If confirmed malicious, this behavior could lead to the unauthorized transfer of sensitive data to an attacker’s command and control server, potentially resulting in severe data breaches and loss of confidential information.
data_source:
    - Splunk Stream HTTP
search: |-
    `stream_http` http_method=POST
      | eval archive_hdr1=substr(form_data,1,2)
      | eval archive_hdr2 = substr(form_data,1,4)
      | stats values(form_data) as http_request_body min(_time) as firstTime max(_time) as lastTime count
        BY src_ip dest_ip http_method
           http_user_agent uri_path url
           bytes_in bytes_out archive_hdr1
           archive_hdr2
      | where count >20 AND (archive_hdr1 = "7z" OR archive_hdr1 = "PK" OR archive_hdr2="Rar!")
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `multiple_archive_files_http_post_traffic_filter`
how_to_implement: To successfully implement this search, you need to be ingesting logs with the stream HTTP logs or network logs that catch network traffic. Make sure that the http-request-body, payload, or request field is enabled in stream http configuration.
known_false_positives: Normal archive transfer via HTTP protocol may trip this detection.
references:
    - https://attack.mitre.org/techniques/T1560/001/
    - https://www.mandiant.com/resources/apt39-iranian-cyber-espionage-group-focused-on-personal-information
    - https://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/
drilldown_searches:
    - name: View the detection results for - "$src_ip$"
      search: '%original_detection_search% | search  src_ip = "$src_ip$"'
      earliest_offset: $info_min_time$
      latest_offset: $info_max_time$
    - name: View risk events for the last 7 days for - "$src_ip$"
      search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$src_ip$") starthoursago=168  | 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: $info_min_time$
      latest_offset: $info_max_time$
rba:
    message: A http post $http_method$ sending packet with possible archive bytes header in uri path $uri_path$
    risk_objects:
        - field: src_ip
          type: system
          score: 50
    threat_objects:
        - field: url
          type: url
tags:
    analytic_story:
        - Data Exfiltration
        - Command And Control
        - APT37 Rustonotto and FadeStealer
        - Hellcat Ransomware
    asset_type: Endpoint
    mitre_attack_id:
        - T1048.003
    product:
        - Splunk Enterprise
        - Splunk Enterprise Security
        - Splunk Cloud
    security_domain: network
tests:
    - name: True Positive Test
      attack_data:
        - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1048.003/archive_http_post/stream_http_events.log
          source: stream
          sourcetype: stream:http