Adversaries may store data in "fileless" formats to conceal malicious activity from defenses. Fileless storage can be broadly defined as any format other than a file. Common examples of non-volatile fileless storage in Windows systems include the Windows Registry, event logs, or WMI repository.[1][2] In Linux systems, shared memory directories such as /dev/shm
, /run/shm
, /var/run
, and /var/lock
may also be considered fileless storage, as files written to these directories are mapped directly to RAM and not stored on the disk.[3][4][5]
Similar to fileless in-memory behaviors such as Reflective Code Loading and Process Injection, fileless data storage may remain undetected by anti-virus and other endpoint security tools that can only access specific file formats from disk storage. Leveraging fileless storage may also allow adversaries to bypass the protections offered by read-only file systems in Linux.[6]
Adversaries may use fileless storage to conceal various types of stored data, including payloads/shellcode (potentially being used as part of Persistence) and collected data not yet exfiltrated from the victim (e.g., Local Data Staging). Adversaries also often encrypt, encode, splice, or otherwise obfuscate this fileless data when stored.
Some forms of fileless storage activity may indirectly create artifacts in the file system, but in central and otherwise difficult to inspect formats such as the WMI (e.g., %SystemRoot%\System32\Wbem\Repository
) or Registry (e.g., %SystemRoot%\System32\Config
) physical files.[1]
ID | Name | Description |
---|---|---|
G0050 | APT32 |
APT32's backdoor has stored its configuration in a registry key.[7] |
S0631 | Chaes |
Some versions of Chaes stored its instructions (otherwise in a |
S0023 | CHOPSTICK |
CHOPSTICK may store RC4 encrypted configuration information in the Windows Registry.[9] |
S0126 | ComRAT |
ComRAT has stored encrypted orchestrator code and payloads in the Registry.[10][11] |
S0673 | DarkWatchman |
DarkWatchman can store configuration strings, keylogger, and output of components in the Registry.[12] |
S0343 | Exaramel for Windows |
Exaramel for Windows stores the backdoor's configuration in the Registry in XML format.[13] |
S0666 | Gelsemium | |
S0531 | Grandoreiro |
Grandoreiro can store its configuration in the Registry at |
S0256 | Mosquito |
Mosquito stores configuration values under the Registry key |
S0198 | NETWIRE |
NETWIRE can store its configuration information in the Registry under |
C0012 | Operation CuckooBees |
During Operation CuckooBees, the threat actors stroed payloads in Windows CLFS (Common Log File System) transactional logs.[18] |
S1145 | Pikabot |
Some versions of Pikabot build the final PE payload in memory to avoid writing contents to disk on the executing machine.[19] |
S0517 | Pillowmint |
Pillowmint has stored a compressed payload in the Registry key |
S0501 | PipeMon |
PipeMon has stored its encrypted payload in the Registry under |
S0518 | PolyglotDuke |
PolyglotDuke can store encrypted JSON configuration files in the Registry.[22] |
S0650 | QakBot |
QakBot can store its configuration information in a randomly named subkey under |
S0269 | QUADAGENT |
QUADAGENT stores a session identifier unique to the compromised system as well as a pre-shared key used for encrypting and decrypting C2 communications within a Registry key (such as |
S0662 | RCSession |
RCSession can store its obfuscated configuration file in the Registry under |
S0511 | RegDuke | |
S0496 | REvil |
REvil can save encryption parameters and system information in the Registry.[28][29][30][31][32] |
S0596 | ShadowPad |
ShadowPad maintains a configuration block and virtual file system in the Registry.[33][34] |
S0589 | Sibot |
Sibot has installed a second-stage script in the |
S0663 | SysUpdate |
SysUpdate can store its encoded configuration file within |
S0665 | ThreatNeedle |
ThreatNeedle can save its configuration data as a RC4-encrypted Registry key under |
S0668 | TinyTurla |
TinyTurla can save its configuration parameters in the Registry.[38] |
G0010 | Turla |
Turla has used the Registry to store encrypted and encoded payloads.[39][40] |
S0263 | TYPEFRAME |
TYPEFRAME can install and store encrypted configuration data under the Registry key |
S0022 | Uroburos |
Uroburos can store configuration information for the kernel driver and kernel driver loader components in an encrypted blob typically found at |
S0476 | Valak |
Valak has the ability to store information regarding the C2 server and downloads in the Registry key |
S0180 | Volgmer |
Volgmer stores an encoded configuration file in |
ID | Mitigation | Description |
---|---|---|
M1047 | Audit |
Consider periodic review of common fileless storage locations (such as the Registry or WMI repository) to potentially identify abnormal and malicious data. |
ID | Data Source | Data Component | Detects |
---|---|---|---|
DS0009 | Process | Process Creation |
In Linux systems, monitor for newly executed processes from shared memory directories such as |
DS0024 | Windows Registry | Windows Registry Key Creation |
Monitor for the creation of Registry values that may highlight storage of malicious data such as commands or payloads. |
DS0005 | WMI | WMI Creation |
Monitor for the creation of WMI Objects and values that may highlight storage of malicious data such as commands or payloads. |