T1048.003
Exfiltration Over Unencrypted Non-C2 Protocol
Adversaries may steal data by exfiltrating it over an unencrypted network protocol other than that of the existing command and control channel. Common protocols used include HTTP, FTP, SMTP, DNS, and TFTP. Data may be obfuscated using encoding schemes such as Base64 or embedded within protocol headers and fields without the use of encryption. Real-world threat actors including Lazarus Group, FIN8, APT32, Salt Typhoon, and Mustang Panda have leveraged FTP, HTTP POST, DNS tunneling, and SMTP for this purpose.
Microsoft Sentinel / Defender
kusto
let FtpTools = dynamic(["ftp.exe", "winscp.exe", "filezilla.exe", "winscp3.exe", "ncftp", "lftp"]);
let CurlWgetPatterns = dynamic(["curl ", "wget ", "Invoke-WebRequest", "curl.exe", "wget.exe"]);
let FtpExfilPatterns = dynamic(["--upload-file", "-T ", "PUT ", "STOR ", "-u ftp", "ftp://", "ftps://", "sftp://"]);
let DnsExfilPatterns = dynamic(["nslookup ", "Resolve-DnsName", "dig ", "dnscat", "iodine"]);
let SmtpExfilPatterns = dynamic(["smtp", "sendmail", "blat", "swaks", "Send-MailMessage"]);
let HttpExfilPatterns = dynamic(["--data-binary", "--data @", "-d @", "multipart/form-data", "-F file", "--form"]);
// Detection 1: FTP client usage with suspicious data transfer flags
let FtpExfil = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (FtpTools) or ProcessCommandLine has_any (["ftp://", "--ftp-upload", "-T ftp"])
| where ProcessCommandLine has_any (FtpExfilPatterns) or FileName has_any (FtpTools)
| extend ExfilMethod = "FTP"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, ExfilMethod;
// Detection 2: curl/wget uploading data over HTTP (not HTTPS)
let HttpExfil = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (["curl.exe", "curl", "wget.exe", "wget"])
| where ProcessCommandLine has_any (HttpExfilPatterns)
or (ProcessCommandLine matches regex @"http://[^\s]+" and ProcessCommandLine has_any (["--upload-file", "-T ", "--data", "-d ", "--form", "-F "]))
| extend ExfilMethod = "HTTP_Upload"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, ExfilMethod;
// Detection 3: DNS-based exfiltration tools
let DnsExfil = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (["nslookup.exe", "nslookup", "dnscat", "iodine", "dns2tcp"])
or ProcessCommandLine has_any (DnsExfilPatterns)
| where ProcessCommandLine matches regex @"[A-Za-z0-9+/]{20,}\.[a-z]{2,}"
or ProcessCommandLine has_any (["dnscat", "iodine", "dns2tcp", "dnstunnel"])
| extend ExfilMethod = "DNS_Tunnel"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, ExfilMethod;
// Detection 4: SMTP/email-based exfiltration
let SmtpExfil = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (["blat.exe", "swaks", "sendmail", "msmtp"]) or ProcessCommandLine has_any (SmtpExfilPatterns)
| where ProcessCommandLine has_any (["-server", "-to ", "--to ", "-attach", "--attach", "-body", "--body"])
| extend ExfilMethod = "SMTP"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, ExfilMethod;
// Detection 5: Large outbound data via network connections on plaintext ports
let PlaintextNetworkExfil = DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemotePort in (21, 25, 69, 80, 110, 143, 8080, 8000, 8888, 2121)
| where RemoteIPType == "Public"
| where InitiatingProcessFileName !in~ ("svchost.exe", "services.exe", "lsass.exe", "MsMpEng.exe", "chrome.exe", "msedge.exe", "firefox.exe", "iexplore.exe")
| extend ExfilMethod = case(
RemotePort in (21, 2121), "FTP",
RemotePort in (25, 110, 143), "Email_Protocol",
RemotePort == 69, "TFTP",
RemotePort in (80, 8080, 8000, 8888), "HTTP",
"Unknown_Plaintext")
| project Timestamp, DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemotePort, RemoteUrl, ExfilMethod;
union FtpExfil, HttpExfil, DnsExfil, SmtpExfil, PlaintextNetworkExfil
| sort by Timestamp desc high severity
medium confidence
Data Sources
Process: Process Creation Network Traffic: Network Connection Creation Command: Command Execution Microsoft Defender for Endpoint
Required Tables
DeviceProcessEvents DeviceNetworkEvents
False Positives
- Legitimate FTP file transfers by IT operations teams using WinSCP or FileZilla to upload builds to internal FTP servers
- Web developers or DevOps engineers using curl or wget to upload files to HTTP-based staging servers or artifact repositories
- Monitoring agents or backup tools making HTTP connections on non-standard ports to internal infrastructure that happens to use plaintext
- Network scanning or vulnerability assessment tools that probe FTP/HTTP ports on public IPs as part of authorized engagements
- Internal mail relay servers or legacy applications using SMTP on port 25 for legitimate notification emails
Last updated: 2026-04-16 Research depth: deep
References (12)
- https://attack.mitre.org/techniques/T1048/003/
- https://attack.mitre.org/techniques/T1048/
- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/fundamentals/command/cf_command_ref/C_commands.html#wp1068167689
- https://arxiv.org/ftp/arxiv/papers/1408/1408.1136.pdf
- https://www.mandiant.com/resources/blog/cutting-edge-part-2
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1048.003/T1048.003.md
- https://github.com/SigmaHQ/sigma/tree/master/rules/windows/network_connection
- https://unit42.paloaltonetworks.com/cookieminer/
- https://securelist.com/faq-the-projectsauron-apt/75533/
- https://www.welivesecurity.com/2019/03/20/fake-or-fake-keeping-up-with-oceanlotus-decoys/
- https://blog.checkpoint.com/security/apt35-exploits-log4j-vulnerability-to-distribute-new-modular-powershell-toolkit/
- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/fundamentals/command/cf_command_ref/C_commands.html
Unlock Pro Content
Get the full detection package for T1048.003 including response playbook, investigation guide, and atomic red team tests.
Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance