T1048.003 Google Chronicle · YARA-L

Detect Exfiltration Over Unencrypted Non-C2 Protocol in Google Chronicle

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.

MITRE ATT&CK

Tactic
Exfiltration
Technique
T1048 Exfiltration Over Alternative Protocol
Sub-technique
T1048.003 Exfiltration Over Unencrypted Non-C2 Protocol
Canonical reference
https://attack.mitre.org/techniques/T1048/003/

YARA-L Detection Query

Google Chronicle (YARA-L)
yaral
rule t1048_003_exfil_unencrypted_process {
  meta:
    author = "Argus Detection Engineering"
    description = "Detects process launches matching FTP, HTTP upload, DNS tunneling, or SMTP exfiltration tool patterns for T1048.003"
    mitre_attack_tactic = "Exfiltration"
    mitre_attack_technique = "T1048.003"
    severity = "HIGH"
    confidence = "MEDIUM"
    version = "1.0"

  events:
    $e.metadata.event_type = "PROCESS_LAUNCH"
    (
      re.regex($e.principal.process.file.full_path, `(?i)(ftp\.exe|winscp\.exe|filezilla\.exe|ncftp|lftp)`) or
      re.regex($e.principal.process.command_line, `(?i)(ftp://|ftps://|--ftp-upload|--upload-file|-T ftp|STOR )`) or
      (
        re.regex($e.principal.process.file.full_path, `(?i)(curl\.exe|wget\.exe|curl|wget)`) and
        re.regex($e.principal.process.command_line, `(?i)(--upload-file|--data-binary|--data @|-d @|--form|-F file)`) and
        re.regex($e.principal.process.command_line, `http://`)
      ) or
      re.regex($e.principal.process.file.full_path, `(?i)(dnscat|iodine|dns2tcp|dnstunnel)`) or
      re.regex($e.principal.process.command_line, `(?i)(dnscat|iodine|dns2tcp)`) or
      (
        re.regex($e.principal.process.file.full_path, `(?i)(blat\.exe|swaks|sendmail|msmtp)`) and
        re.regex($e.principal.process.command_line, `(?i)(-attach|--attach|-to |--to |-server)`)
      ) or
      (
        re.regex($e.principal.process.command_line, `(?i)(Send-MailMessage|smtp)`) and
        re.regex($e.principal.process.command_line, `(?i)(-attach|--attach|-to |--to |-server)`)
      )
    )

  condition:
    $e
}

rule t1048_003_plaintext_network_exfil {
  meta:
    author = "Argus Detection Engineering"
    description = "Detects outbound network connections to unencrypted protocol ports from non-browser processes targeting external IPs — T1048.003"
    mitre_attack_tactic = "Exfiltration"
    mitre_attack_technique = "T1048.003"
    severity = "MEDIUM"
    confidence = "MEDIUM"
    version = "1.0"

  events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $e.target.port in (21, 25, 69, 80, 110, 143, 2121, 8080, 8000, 8888)
    not re.regex($e.target.ip, `^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.)`)
    not re.regex($e.principal.process.file.full_path, `(?i)(chrome\.exe|firefox\.exe|msedge\.exe|iexplore\.exe|svchost\.exe|services\.exe|lsass\.exe|MsMpEng\.exe)`)

  condition:
    $e
}
high severity medium confidence

Two Chronicle YARA-L 2.0 rules for T1048.003. Rule 1 matches PROCESS_LAUNCH events against FTP client tools, curl/wget plain-HTTP upload command lines, DNS tunneling utilities (dnscat, iodine, dns2tcp), and SMTP exfiltration mailers with attachment/recipient flags. Rule 2 matches NETWORK_CONNECTION events targeting external IP addresses on plaintext protocol ports from non-browser, non-system processes.

Data Sources

Google Chronicle UDM (via Bindplane or Chronicle forwarder)Windows Endpoint telemetry via Chronicle agentNetwork telemetry via Chronicle forwarder

Required Tables

UDM events: PROCESS_LAUNCHUDM events: NETWORK_CONNECTION

False Positives & Tuning

  • Legitimate FTP or plain HTTP file distribution by IT operations using automation scripts for software deployment, patch delivery, or configuration management to remote offices
  • Internal web APIs operating on alternate HTTP ports (8080, 8000, 8888) accessed by orchestration or data pipeline automation for authorized data movement
  • Security operations personnel running DNS diagnostic utilities (nslookup, dig) or network testing tools that match DNS tunneling process name patterns
Download portable Sigma rule (.yml)

Other platforms for T1048.003


Testing Methodology

Validate this detection against 5 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 1FTP File Exfiltration Using Native Windows FTP Client

    Expected signal: Sysmon Event ID 1: Process Create with Image=ftp.exe, CommandLine containing '-s:%TEMP%\ftp_script.txt'. Sysmon Event ID 11: File Create for ftp_script.txt. Sysmon Event ID 3: Network Connection attempt to 127.0.0.1:21 (may not appear if connection immediately refused). Security Event ID 4688 if command line auditing enabled.

  2. Test 2HTTP POST File Upload via curl to Plaintext Endpoint

    Expected signal: Sysmon Event ID 1: Process Create with Image=curl.exe, CommandLine containing '--upload-file' and 'http://127.0.0.1:8080/upload'. Sysmon Event ID 3: Network Connection to 127.0.0.1:8080 from curl.exe. The connection will be refused but process and network events will still be logged.

  3. Test 3DNS Subdomain Exfiltration via nslookup

    Expected signal: Sysmon Event ID 1: Process Create for powershell.exe and child nslookup.exe with a long base64-like subdomain in the command line. Sysmon Event ID 22: DNS query event showing the long subdomain query. The query will fail (NXDOMAIN or timeout) but all telemetry is generated.

  4. Test 4SMTP Email Exfiltration via PowerShell Send-MailMessage

    Expected signal: Sysmon Event ID 1: Process Create for powershell.exe with CommandLine containing 'Send-MailMessage', '-SmtpServer', and '-Attachments'. Sysmon Event ID 3: Network Connection attempt to 127.0.0.1:25. PowerShell ScriptBlock Log Event ID 4104 with the full Send-MailMessage command and parameters including attachment path.

  5. Test 5Data Staging and FTP Exfiltration via WinSCP Script (Linux/macOS via curl)

    Expected signal: Linux auditd or Sysmon for Linux Event ID 1: Process Create for tar, then curl with --upload-file and ftp:// URL. Syslog or auditd SYSCALL records for execve of curl with FTP arguments. Network connection attempt to 127.0.0.1:21. File creation events for the tar archive.

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

Related Detections