Remote Services

Adversaries may use Valid Accounts to log into a service that accepts remote connections, such as telnet, SSH, and VNC. The adversary may then perform actions as the logged-on user.

In an enterprise environment, servers and workstations can be organized into domains. Domains provide centralized identity management, allowing users to login using one set of credentials across the entire network. If an adversary is able to obtain a set of valid domain credentials, they could login to many different machines using remote access protocols such as secure shell (SSH) or remote desktop protocol (RDP).[1][2] They could also login to accessible SaaS or IaaS services, such as those that federate their identities to the domain.

Legitimate applications (such as Software Deployment Tools and other administrative programs) may utilize Remote Services to access remote hosts. For example, Apple Remote Desktop (ARD) on macOS is native software used for remote management. ARD leverages a blend of protocols, including VNC to send the screen and control buffers and SSH for secure file transfer.[3][4][5] Adversaries can abuse applications such as ARD to gain remote code execution and perform lateral movement. In versions of macOS prior to 10.14, an adversary can escalate an SSH session to an ARD session which enables an adversary to accept TCC (Transparency, Consent, and Control) prompts without user interaction and gain access to data.[6][7][4]

ID: T1021
Platforms: IaaS, Linux, Windows, macOS
System Requirements: Active remote service accepting connections and valid credentials
Contributors: Dan Borges, @1njection
Version: 1.4
Created: 31 May 2017
Last Modified: 02 June 2023

Procedure Examples

ID Name Description
S1063 Brute Ratel C4

Brute Ratel C4 has the ability to use RPC for lateral movement.[8]

S0437 Kivars

Kivars has the ability to remotely trigger keyboard input and mouse clicks. [9]

S1016 MacMa

MacMa can manage remote screen sessions.[10]

S0603 Stuxnet

Stuxnet can propagate via peer-to-peer communication and updates using RPC.[11]

G0102 Wizard Spider

Wizard Spider has used the WebDAV protocol to execute Ryuk payloads hosted on network file shares.[12]

Mitigations

ID Mitigation Description
M1042 Disable or Remove Feature or Program

If remote services, such as the ability to make direct connections to cloud virtual machines, are not required, disable these connection types where feasible.

M1032 Multi-factor Authentication

Use multi-factor authentication on remote service logons where possible.

M1018 User Account Management

Limit the accounts that may use remote services. Limit the permissions for accounts that are at higher risk of compromise; for example, configure SSH so users can only run specific programs.

Detection

ID Data Source Data Component Detects
DS0017 Command Command Execution

Monitor executed commands and arguments that may use Valid Accounts to log into a service specifically designed to accept remote connections, such as telnet, SSH, and VNC. The adversary may then perform actions as the logged-on user.

Malicious actors may rename built-in commands or external tools, such as those provided by SysInternals, to better blend in with the environment. In those cases, the file path name is arbitrary and may blend in well with the background. If the arguments are closely inspected, it may be possible to infer what tools are running and understand what an adversary is doing. When any legitimate software shares the same command lines, it must be whitelisted according to the expected parameters.

Any tool of interest with commonly known command line usage can be detecting by command line analysis. Known substrings of command lines include

  • PuTTY
  • port forwarding -R * -pw
  • secure copy (scp) -pw * * @
  • mimikatz sekurlsa::
  • RAR  -hp
  • Archive* a * Additionally, it may be useful to find IP addresses in the command line
  • \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}

Analytic 1 - Suspicious Arguments

port_fwd = filter process where (command_line match "-R . -pw")scp = filter process where (command_line match "-pw . . .@."mimikatz = filter process where (command_line match "sekurlsa")rar = filter process where (command_line match " -hp ")archive = filter process where (command_line match ". a .*")ip_addr = filter process where (command_line match \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})

DS0028 Logon Session Logon Session Creation

Monitor for user accounts logged into systems they would not normally access or abnormal access patterns, such as multiple systems over a relatively short period of time. Correlate use of login activity related to remote services with unusual behavior or other malicious or suspicious activity. Adversaries will likely need to learn about an environment and the relationships between systems through Discovery techniques prior to attempting Lateral Movement. For example, in macOS you can review logs for "screensharingd" and "Authentication" event messages. [7][13]

Note: When using Security event id 4624, %$ means user names that do not end with $ character. Usually, computer accounts or local system accounts names end with the $ character. When using Security event 4624, UserName and UserLogonId correspond to TargetUserName and TargetLogonId respectively. When using Security event 4624, LogonType 3 corresponds to a Network Logon

Analytic 1 - New services being created under network logon sessions by non-system users

remote_logon_sessions = filter Hostname, UserName, UserLogonId, SourceIp where event_id == "4624" AND LogonType == "3" AND UserName NOT LIKE '%$'

new_services = filter UserName, UserLogonId, ServiceName where event_id = "4697"

suspicious_services = filter l.UserName, l.UserLogonId, l.SourceIp, s.ServicenameFROM remote_logon_sessions lINNER JOIN new_services sON l.UserLogonId = s.UserLogonId

DS0011 Module Module Load

Monitor DLL/PE file events, specifically creation of these binary files as well as the loading of DLLs into processes, that may use Valid Accounts to log into a service specifically designed to accept remote connections, such as telnet, SSH, and VNC. The adversary may then perform actions as the logged-on user.

Note: On Windows, Sysmon Event ID 7 (Image loaded) can be used to monitor the loading of DLLs into processes, including those designed to accept remote connections. This is a particularly noisy event and can generate a large volume of data, so we recommend baselining and filtering out any known benign processes and module to help reduce the number of events that are produced.

DS0033 Network Share Network Share Access

Monitor interactions with network shares, such as reads or file transfers, using remote services such as Server Message Block (SMB).

DS0029 Network Traffic Network Connection Creation

Monitor for newly constructed network connections that may use Valid Accounts to log into a service specifically designed to accept remote connections, such as RDP, telnet, SSH, and VNC. Monitor network connections involving common remote management protocols, such as ports tcp:3283 and tcp:5900, as well as ports tcp: 3389 and tcp:22 for remote login.

Note: Network Analysis frameworks such as Zeek can be used to capture, decode, and alert on network service protocols such as SSH and RDP.

Analytic 1 - Suspicious Protocols

suspicious_protocol = filter network_traffic where ((server_port = "636" AND protocol = "6") OR (server_port = "389" AND protocol = "17"))

Network Traffic Flow

Monitor network data for uncommon data flows that may be related to abuse of Valid Accounts to log into a service specifically designed to accept remote connections, such as RDP, telnet, SSH, and VNC.

DS0009 Process Process Creation

Monitor for newly executed processes that may use Valid Accounts to log into a service specifically designed to accept remote connections, such as RDP, telnet, SSH, and VNC. The adversary may then perform actions that spawn additional processes as the logged-on user.

DS0005 WMI WMI Creation

Monitor for newly constructed WMI objects that is often used to log into a service that accepts remote connects.

References