T1059 Command and Scripting Interpreter
High-Level Description
Adversaries may abuse command and script interpreters to execute commands, scripts, or binaries. These interfaces and languages provide ways of interacting with computer systems and are a common feature across many different platforms. Most systems come with some built-in command-line interface and scripting capabilities, for example, macOS and Linux distributions include some flavor of Unix Shell while Windows installations include the Windows Command Shell and PowerShell.
There are also cross-platform interpreters such as Python, as well as those commonly associated with client applications such as JavaScript and Visual Basic.
Adversaries may abuse these technologies in various ways as a means of executing arbitrary commands. Commands and scripts can be embedded in Initial Access payloads delivered to victims as lure documents or as secondary payloads downloaded from an existing C2. Adversaries may also execute commands through interactive terminals/shells, as well as utilize various Remote Services in order to achieve remote Execution.
Kill Chain Phase
- Execution (TA0002)
Platforms: ESXi, IaaS, Identity Provider, Linux, macOS, Network Devices, Office Suite, Windows
What to Check
- Identify if Command and Scripting Interpreter technique is applicable to target environment
- Check ESXi systems for indicators of Command and Scripting Interpreter
- Check IaaS systems for indicators of Command and Scripting Interpreter
- Check Identity Provider systems for indicators of Command and Scripting Interpreter
- Verify mitigations are bypassed or absent (9 known mitigations)
- Assess detection coverage (1 detection strategies)
How to Test
Atomic Red Team Tests
The following tests are from Atomic Red Team and provide actionable ways to test this technique:
Atomic Test 1: AutoIt Script Execution
An adversary may attempt to execute suspicious or malicious script using AutoIt software instead of regular terminal like powershell or cmd. Calculator will popup when the script is executed successfully.
Supported Platforms: windows
Start-Process -FilePath "#{autoit_path}" -ArgumentList "#{script_path}"
Dependencies:
- AutoIt executable file must exist on disk at the specified location (#{autoit_path})
Manual Testing
If Atomic Red Team tests are not applicable, manually verify the technique by:
Identify Attack Surface: Determine if the target environment is susceptible to Command and Scripting Interpreter by examining the target platforms (ESXi, IaaS, Identity Provider).
Assess Existing Defenses: Review whether mitigations for T1059 are in place. If defenses are absent or misconfigured, this technique may be exploitable.
Execute Test: Use tools and methods described in the MITRE ATT&CK page and external references below.
Remediation Guide
M1033 Limit Software Installation
Prevent user installation of unrequired command and scripting interpreters.
M1045 Code Signing
Where possible, only permit execution of signed scripts.
M1042 Disable or Remove Feature or Program
Disable or remove any unnecessary or unused shells or interpreters.
M1038 Execution Prevention
Use application control where appropriate. For example, PowerShell Constrained Language mode can be used to restrict access to sensitive or otherwise dangerous language elements such as those used to execute arbitrary Windows APIs or files (e.g., Add-Type).
M1049 Antivirus/Antimalware
Anti-virus can be used to automatically quarantine suspicious files.
M1026 Privileged Account Management
When PowerShell is necessary, consider restricting PowerShell execution policy to administrators. Be aware that there are methods of bypassing the PowerShell execution policy, depending on environment configuration.
PowerShell JEA (Just Enough Administration) may also be used to sandbox administration and limit what commands admins/users can execute through remote PowerShell sessions.
M1047 Audit
Inventory systems for unauthorized command and scripting interpreter installations.
M1021 Restrict Web-Based Content
Script blocking extensions can help prevent the execution of scripts and HTA files that may commonly be used during the exploitation process. For malicious code served up through ads, adblockers can help prevent that code from executing in the first place.
M1040 Behavior Prevention on Endpoint
On Windows 10, enable Attack Surface Reduction (ASR) rules to prevent Visual Basic and JavaScript scripts from executing potentially malicious downloaded content .
Detection
Behavioral Detection of Command and Scripting Interpreter Abuse
Risk Assessment
| Finding | Severity | Impact |
|---|---|---|
| Command and Scripting Interpreter technique applicable | Low | Execution |
CWE Categories
| CWE ID | Title |
|---|---|
| CWE-94 | Improper Control of Generation of Code |