Response playbooks, investigation guides, and Atomic Red Team tests are Pro-only. Upgrade to unlock the full detection package for THREAT-Exfil-ChunkedSizeLimitEvasion.

Upgrade to Pro
THREAT-Exfil-ChunkedSizeLimitEvasion

Data Transfer Size Limits — Chunked & Throttled Data Transfer to Evade DLP/Proxy Size-Threshold Detection

Exfiltration Last updated:

Many DLP and web-proxy platforms only inspect or alert on a single transaction/session once its size crosses a configured ceiling (e.g. 10MB, 25MB, 50MB, 100MB) or once a per-user daily transfer volume is exceeded. Adversaries who are aware of these ceilings deliberately size their exfiltration to stay just underneath them rather than attempting a single large transfer that would trip the control. This shows up in two complementary behaviors: (1) archive splitting, where a staged collection of stolen data is compressed into equal-sized sub-threshold volumes using 7-Zip's -v flag, WinRAR's split-volume switch, Rclone's chunker overlay, or a raw `split -b`, producing sequentially numbered parts (.7z.001/.002, .partN.rar, .r00/.r01); and (2) session/day throttling, where the exfiltration channel itself (a C2 implant, a legitimate cloud-sync client abused for the transfer, or a scripted uploader) caps each individual upload's byte count and paces the uploads across many sessions in a day so that both the per-transaction proxy/DLP threshold and any daily aggregate quota are never technically breached, even though the cumulative volume moved over 24 hours can be very large. The two behaviors are frequently combined: a chunked archive's numbered parts are uploaded one at a time, each part sized just under the proxy's inspection ceiling, spread across a day to avoid burst-based rate alarms. Because each individual event looks unremarkable in isolation, this technique is best detected by aggregation — looking for repeated sessions from the same user/host to the same destination whose sent-byte counts cluster just below a round-number threshold, and by correlating that pattern with local filesystem evidence of split-archive staging.

What is THREAT-Exfil-ChunkedSizeLimitEvasion Chunked & Throttled Data Transfer to Evade DLP/Proxy Size-Threshold Detection?

Chunked & Throttled Data Transfer to Evade DLP/Proxy Size-Threshold Detection (THREAT-Exfil-ChunkedSizeLimitEvasion) is a sub-technique of Data Transfer Size Limits (T1030) in the MITRE ATT&CK framework. It maps to the Exfiltration tactic — the adversary is trying to steal data.

This page provides production-ready detection logic for Chunked & Throttled Data Transfer to Evade DLP/Proxy Size-Threshold Detection, covering the data sources and telemetry it touches: Microsoft Defender for Endpoint (DeviceFileEvents), Proxy / Firewall logs normalized to CommonSecurityLog (Zscaler, Bluecoat/Symantec ProxySG, Palo Alto Networks, Squid), Sysmon Event ID 11. The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Exfiltration
Microsoft Sentinel / Defender
kusto
let ChunkStaging =
    // Signal 1: sequentially-numbered archive chunk files staged locally ahead of a throttled transfer
    DeviceFileEvents
    | where Timestamp > ago(1d)
    | where ActionType == "FileCreated"
    | where FileName matches regex @"(?i)\.(7z|zip|rar|tar|gz)\.[0-9]{2,3}$"
        or FileName matches regex @"(?i)\.part[0-9]{1,4}(\.rar)?$"
        or FileName matches regex @"(?i)\.r[0-9]{2}$"
    | summarize Timestamp = min(Timestamp), ChunkCount = count(), Files = make_set(FileName, 10)
        by DeviceName, AccountName = InitiatingProcessAccountName, InitiatingProcessFileName, TimeBucket = bin(Timestamp, 15m)
    | where ChunkCount >= 4
    | project Timestamp, User = AccountName, Host = DeviceName, ProcessName = InitiatingProcessFileName,
        Destination = "(local staging)", SessionCount = ChunkCount, TotalBytesSent = long(null),
        MaxBytesSent = long(null), NearestThresholdMB = int(null), Signal = "ChunkedArchiveStaging",
        RiskScore = 55, Detail = strcat("Files=", tostring(Files));
// Base aggregation: proxy/firewall sessions whose sent-bytes land just under a common DLP/proxy inspection ceiling (80-100% of a round MB threshold)
let SubThresholdSessions =
    CommonSecurityLog
    | where TimeGenerated > ago(1d)
    | where isnotempty(SentBytes) and SentBytes > 1048576
    | where not(ipv4_is_in_range(DestinationIP, "10.0.0.0/8"))
        and not(ipv4_is_in_range(DestinationIP, "172.16.0.0/12"))
        and not(ipv4_is_in_range(DestinationIP, "192.168.0.0/16"))
    | extend NearestThresholdMB = case(
        SentBytes between (8388608 .. 10485760), 10,
        SentBytes between (20971520 .. 26214400), 25,
        SentBytes between (41943040 .. 52428800), 50,
        SentBytes between (83886080 .. 104857600), 100,
        SentBytes between (209715200 .. 262144000), 250,
        0)
    | where NearestThresholdMB > 0
    | summarize TimeBucket = min(TimeGenerated), SessionCount = count(), TotalBytesSent = sum(SentBytes),
        MaxBytesSent = max(SentBytes), Host = any(SourceIP)
        by User = SourceUserName, Destination = DestinationHostName, NearestThresholdMB, bin(TimeGenerated, 1d);
// Signal 2: same user/destination pair repeatedly landing just under the same threshold across many sessions in a day
let SubThresholdBurst =
    SubThresholdSessions
    | where SessionCount >= 6
    | project Timestamp = TimeBucket, User, Host, ProcessName = "", Destination, SessionCount, TotalBytesSent,
        MaxBytesSent, NearestThresholdMB, Signal = "SubThresholdProxyBurst", RiskScore = 75,
        Detail = strcat("MaxBytesSent stayed below the ", NearestThresholdMB, "MB threshold across ", SessionCount, " sessions");
// Signal 3: the daily aggregate volume is large despite every individual session staying capped -- the "low and slow" tell
let HighVolumeLowAndSlow =
    SubThresholdSessions
    | where SessionCount >= 6 and TotalBytesSent > 524288000
    | project Timestamp = TimeBucket, User, Host, ProcessName = "", Destination, SessionCount, TotalBytesSent,
        MaxBytesSent, NearestThresholdMB, Signal = "HighVolumeLowAndSlowExfil", RiskScore = 92,
        Detail = strcat("TotalBytesSent=", TotalBytesSent, " over ", SessionCount, " sub-threshold sessions in 24h");
union ChunkStaging, SubThresholdBurst, HighVolumeLowAndSlow
| sort by RiskScore desc, Timestamp desc

Three-signal detection combining Microsoft Defender for Endpoint filesystem telemetry with proxy/firewall logs ingested into CommonSecurityLog: (1) local staging of 4 or more sequentially-numbered archive chunk files within a 15-minute window, the filesystem fingerprint of 7-Zip/WinRAR/Rclone volume splitting; (2) six or more outbound proxy/firewall sessions from the same user to the same external destination in a day whose sent-byte counts each land in the 80-100% band just below a common round-number DLP/proxy inspection ceiling (10/25/50/100/250MB); (3) an escalation of signal 2 where the summed daily transfer volume across those capped sessions exceeds 500MB, the clearest evidence that the actor is intentionally staying under a per-session limit while still moving a large amount of data over the course of a day.

high severity medium confidence

Data Sources

Microsoft Defender for Endpoint (DeviceFileEvents) Proxy / Firewall logs normalized to CommonSecurityLog (Zscaler, Bluecoat/Symantec ProxySG, Palo Alto Networks, Squid) Sysmon Event ID 11

Required Tables

DeviceFileEvents CommonSecurityLog

False Positives

  • Backup and replication software (Veeam, Backup Exec, Acronis, Duplicati) that both splits archive volumes for media-size compatibility and paces uploads to a cloud target during a maintenance window
  • Approved cloud-sync clients (OneDrive, Google Drive, Dropbox, Box) that natively chunk large file uploads into fixed-size segments as part of their resumable-upload protocol
  • Software distribution pipelines or CDN pre-staging jobs that upload large installers in fixed-size parts to avoid a single oversized PUT request
  • Scheduled ETL/data-warehouse export jobs that intentionally throttle egress bandwidth to a partner or analytics vendor to comply with a contracted rate limit rather than to evade security controls
  • Video conferencing or streaming applications whose segmented media uploads can produce a superficially similar many-sessions-of-similar-size pattern to a single destination

Sigma rule & cross-platform mapping

The detection logic for Chunked & Throttled Data Transfer to Evade DLP/Proxy Size-Threshold Detection (THREAT-Exfil-ChunkedSizeLimitEvasion) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: process_creation
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Simulate Split-Archive Staging

    Expected signal: Sysmon Event ID 1 for 7z.exe launched with a -v9m volume-size flag; Sysmon Event ID 11 for the creation of stage_archive.7z.001, .002, .003, etc. within a short window.

  2. Test 2Simulate Sub-Threshold Proxy Session Burst

    Expected signal: Proxy/firewall log entries (CommonSecurityLog or pan:traffic) showing 8 outbound sessions to the test endpoint, each with SentBytes in the 8.5-9.5MB range, spread across roughly 40 minutes.

  3. Test 3Simulate High-Volume Low-and-Slow Exfil Escalation

    Expected signal: 60 proxy/firewall session log entries to the test endpoint, each SentBytes in the 8.5-9.5MB range, summing to roughly 540MB over the test run.

Unlock playbooks & atomic tests with Pro

Get the full detection package for THREAT-Exfil-ChunkedSizeLimitEvasion — response playbook and atomic red team tests, plus investigation guidance and hunting queries.

df00tech Pro — £29/user/month

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections