Boot or Logon Autostart Execution: XDG Autostart Entries
Other sub-techniques of Boot or Logon Autostart Execution (14)
Adversaries may modify XDG autostart entries to execute programs or commands during system boot. Linux desktop environments that are XDG compliant implement functionality for XDG autostart entries. These entries will allow an application to automatically start during the startup of a desktop environment after user logon. By default, XDG autostart entries are stored within the
~/.config/autostart directories and have a .desktop file extension.
Within an XDG autostart entry file, the
Type key specifies if the entry is an application (type 1), link (type 2) or directory (type 3). The
Name key indicates an arbitrary name assigned by the creator and the
Exec key indicates the application and command line arguments to execute.
Adversaries may use XDG autostart entries to maintain persistence by executing malicious commands and payloads, such as remote access tools, during the startup of a desktop environment. Commands included in XDG autostart entries with execute after user logon in the context of the currently logged on user. Adversaries may also use Masquerading to make XDG autostart entries look as if they are associated with legitimate programs.
|M1033||Limit Software Installation||
Restrict software installation to trusted repositories only and be cautious of orphaned software packages.
|M1022||Restrict File and Directory Permissions||
Restrict write access to XDG autostart entries to only select privileged users.
|M1018||User Account Management||
Limit privileges of user accounts so only authorized privileged users can create and modify XDG autostart entries.
Malicious XDG autostart entries may be detected by auditing file creation and modification events within the
~/.config/autostart directories. Depending on individual configurations, defenders may need to query the environment variables
$XDG_CONFIG_DIRS to determine the paths of Autostart entries. Autostart entry files not associated with legitimate packages may be considered suspicious. Suspicious entries can also be identified by comparing entries to a trusted system baseline.
Suspicious processes or scripts spawned in this manner will have a parent process of the desktop component implementing the XDG specification and will execute as the logged on user.