← 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
References
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