查询注册表是攻击者通过访问Windows注册表数据库获取系统配置、软件信息及安全策略的常见技术。注册表包含系统运行的关键参数,攻击者通常使用reg.exe命令行工具或API接口进行键值查询,为后续权限提升、防御规避等行为提供情报支撑。防御方可通过监控注册表敏感路径访问、分析异常进程的API调用序列以及审计管理工具使用日志等手段进行检测。
为规避传统检测方法对注册表操作行为特征的有效捕获,攻击者发展出高度隐蔽的注册表查询技术,通过内存驻留、工具劫持、数据分片等手法,将查询行为深度融入系统正常操作流,并破坏数据泄露过程的关联特征,形成"无痕化"信息收集能力。
现有注册表查询匿迹技术的核心逻辑聚焦于操作链的解耦与系统信任机制的滥用。攻击者通过寄生在合法进程或管理工具中,消除注册表访问行为的独立特征:内存驻留技术利用系统进程的信任背书,使恶意查询获得与合法操作相同的执行上下文;管理工具劫持通过复用系统管理接口,构建符合运维行为特征的查询模式;数据分片存储则通过破坏数据完整性,规避基于内容特征的检测。三类技术的共性在于突破传统注册表监控的单一维度检测,从操作主体(进程)、执行工具(管理接口)、数据形态(存储结构)三个层面实施全方位伪装,使得注册表查询行为在各个环节均呈现合法特征。
匿迹技术的演进导致传统基于命令行监控或敏感路径告警的防御体系面临失效风险,防御方需构建注册表操作上下文关联分析能力,结合进程行为链完整性校验、管理工具异常模式识别等技术,并引入数据流血缘追踪机制,实现对隐蔽注册表查询行为的深度检测。
| 效应类型 | 是否存在 |
|---|---|
| 特征伪装 | ✅ |
| 行为透明 | ❌ |
| 数据遮蔽 | ✅ |
| 时空释痕 | ✅ |
攻击者通过完全复用系统管理工具(如PowerShell、WMI)的合法接口执行注册表查询,使操作指令在语法结构和工具特征层面与正常管理行为完全一致。同时利用进程注入技术将查询行为绑定到可信系统进程,实现操作主体的身份伪装。
采用分块加密机制对注册表查询结果进行处理,通过异或加密、Base64编码消除原始数据的语义特征。在数据传输阶段使用HTTPS协议封装,结合随机填充字节破坏网络载荷的规律性,使防御方无法通过内容检测识别敏感信息泄露。
将注册表查询操作拆分为多个微操作,分散在长达数小时甚至数天的周期内执行,单次操作频率低于检测阈值。查询结果分片存储在多个物理位置,利用系统临时文件自动清除机制实现数据残留时间的自主控制,破坏行为时序关联性。
| ID | Name | Description |
|---|---|---|
| S0045 | ADVSTORESHELL |
ADVSTORESHELL can enumerate registry keys.[1][2] |
| G0050 | APT32 |
APT32's backdoor can query the Windows Registry to gather system information. [3] |
| G0087 | APT39 |
APT39 has used various strains of malware to query the Registry.[4] |
| G0096 | APT41 |
APT41 queried registry values to determine items such as configured RDP ports and network configurations.[5] |
| S0438 | Attor |
Attor has opened the registry and performed query searches.[6] |
| S0344 | Azorult |
Azorult can check for installed software on the system under the Registry key |
| S0414 | BabyShark |
BabyShark has executed the |
| S0031 | BACKSPACE |
BACKSPACE is capable of enumerating and making modifications to an infected system's Registry.[9] |
| S0239 | Bankshot |
Bankshot searches for certain Registry keys to be configured before executing the payload.[10] |
| S0534 | Bazar |
Bazar can query |
| S0574 | BendyBear |
BendyBear can query the host's Registry key at |
| S0268 | Bisonal |
Bisonal has used the RegQueryValueExA function to retrieve proxy information in the Registry.[14] |
| S0570 | BitPaymer |
BitPaymer can use the RegEnumKeyW to iterate through Registry keys.[15] |
| S0252 | Brave Prince |
Brave Prince gathers information about the Registry.[16] |
| S1039 | Bumblebee | |
| S0030 | Carbanak |
Carbanak checks the Registry key |
| S0484 | Carberp |
Carberp has searched the Image File Execution Options registry key for "Debugger" within every subkey.[19] |
| S0335 | Carbon | |
| S0348 | Cardinal RAT |
Cardinal RAT contains watchdog functionality that periodically ensures |
| S0674 | CharmPower |
CharmPower has the ability to enumerate |
| G0114 | Chimera |
Chimera has queried Registry keys using |
| S0023 | CHOPSTICK |
CHOPSTICK provides access to the Windows Registry, which can be used to gather information.[24] |
| S0660 | Clambling |
Clambling has the ability to enumerate Registry keys, including |
| S0154 | Cobalt Strike |
Cobalt Strike can query |
| S0126 | ComRAT |
ComRAT can check the default browser by querying |
| S0115 | Crimson |
Crimson can check the Registry for the presence of |
| G1034 | Daggerfly |
Daggerfly used Reg to dump the Security Account Manager (SAM), System, and Security Windows registry hives from victim machines.[31] |
| S0673 | DarkWatchman |
DarkWatchman can query the Registry to determine if it has already been installed on the system.[32] |
| S0354 | Denis | |
| S0021 | Derusbi |
Derusbi is capable of enumerating Registry keys and values.[34] |
| S0186 | DownPaper |
DownPaper searches and reads the value of the Windows Update Registry Run key.[35] |
| G0035 | Dragonfly |
Dragonfly has queried the Registry to identify victim information.[36] |
| S0567 | Dtrack |
Dtrack can collect the RegisteredOwner, RegisteredOrganization, and InstallDate registry values.[37] |
| S1159 | DUSTTRAP | |
| S0091 | Epic |
Epic uses the |
| S0512 | FatDuke |
FatDuke can get user agent strings for the default browser from |
| S0267 | FELIXROOT |
FELIXROOT queries the Registry for specific keys for potential privilege escalation and proxy information. FELIXROOT has also used WMI to query the Windows Registry.[41][42] |
| S0182 | FinFisher |
FinFisher queries Registry values as part of its anti-sandbox checks.[43][44] |
| G0117 | Fox Kitten |
Fox Kitten has accessed Registry hives ntuser.dat and UserClass.dat.[45] |
| S1044 | FunnyDream |
FunnyDream can check |
| S0666 | Gelsemium |
Gelsemium can open random files and Registry keys to obscure malware behavior from sandbox analysis.[47] |
| S0032 | gh0st RAT |
gh0st RAT has checked for the existence of a Service key to determine if it has already been installed on the system.[48] |
| S0249 | Gold Dragon |
Gold Dragon enumerates registry keys with the command |
| S0376 | HOPLIGHT |
A variant of HOPLIGHT hooks lsass.exe, and lsass.exe then checks the Registry for the data value 'rdpproto' under the key |
| S0203 | Hydraq |
Hydraq creates a backdoor through which remote attackers can retrieve system information, such as CPU speed, from Registry keys.[50][51] |
| G0119 | Indrik Spider |
Indrik Spider has used a service account to extract copies of the |
| S0604 | Industroyer |
Industroyer has a data wiper component that enumerates keys in the Registry |
| S0260 | InvisiMole |
InvisiMole can enumerate Registry values, keys, and data.[54] |
| S0201 | JPIN | |
| G0094 | Kimsuky |
Kimsuky has obtained specific Registry keys and values on a compromised host.[56] |
| G0032 | Lazarus Group |
Lazarus Group malware IndiaIndia checks Registry keys within HKCU and HKLM to determine if certain applications are present, including SecureCRT, Terminal Services, RealVNC, TightVNC, UltraVNC, Radmin, mRemote, TeamViewer, FileZilla, pcAnyware, and Remote Desktop. Another Lazarus Group malware sample checks for the presence of the following Registry key: |
| S0513 | LiteDuke |
LiteDuke can query the Registry to check for the presence of |
| S0680 | LitePower |
LitePower can query the Registry for keys added to execute COM hijacking.[60] |
| S0532 | Lucifer |
Lucifer can check for existing stratum cryptomining information in |
| S1060 | Mafalda |
Mafalda can enumerate Registry keys with all subkeys and values.[62] |
| S1015 | Milan |
Milan can query |
| S1047 | Mori |
Mori can read data from the Registry including from |
| S0385 | njRAT | |
| G0049 | OilRig |
OilRig has used |
| C0014 | Operation Wocao |
During Operation Wocao, the threat actors executed |
| S0165 | OSInfo |
OSInfo queries the registry to look for information about Terminal Services.[68] |
| S1050 | PcShare |
PcShare can search the registry files of a compromised host.[46] |
| S0517 | Pillowmint |
Pillowmint has used shellcode which reads code stored in the registry keys |
| S0013 | PlugX |
PlugX can enumerate and query for information contained within the Windows Registry.[70][71] |
| S0145 | POWERSOURCE |
POWERSOURCE queries Registry keys in preparation for setting Run keys to achieve persistence.[72] |
| S0194 | PowerSploit |
PowerSploit contains a collection of Privesc-PowerUp modules that can query Registry keys for potential opportunities.[73][74] |
| S0184 | POWRUNER |
POWRUNER may query the Registry by running |
| S0238 | Proxysvc |
Proxysvc gathers product names from the Registry key: |
| S0269 | QUADAGENT |
QUADAGENT checks if a value exists within a Registry key in the HKCU hive whose name is the same as the scheduled task it has created.[77] |
| S1076 | QUIETCANARY |
QUIETCANARY has the ability to retrieve information from the Registry.[78] |
| S1148 | Raccoon Stealer |
Raccoon Stealer queries the Windows Registry to fingerprint the infected host via the |
| S0241 | RATANKBA |
RATANKBA uses the command |
| S0172 | Reaver |
Reaver queries the Registry to determine the correct Startup path to use for persistence.[82] |
| S0075 | Reg |
Reg may be used to gather details from the Windows Registry of a local or remote system at the command-line interface.[83] |
| S0496 | REvil |
REvil can query the Registry to get random file extensions to append to encrypted files.[84] |
| S0448 | Rising Sun |
Rising Sun has identified the OS product name from a compromised host by searching the registry for |
| S0240 | ROKRAT |
ROKRAT can access the |
| S1018 | Saint Bot |
Saint Bot has used |
| S1099 | Samurai |
Samurai can query |
| S0140 | Shamoon |
Shamoon queries several Registry keys to identify hard disk partitions to overwrite.[89] |
| S1019 | Shark |
Shark can query |
| S0589 | Sibot |
Sibot has queried the registry for proxy server information.[90] |
| S0692 | SILENTTRINITY |
SILENTTRINITY can use the |
| S0627 | SodaMaster |
SodaMaster has the ability to query the Registry to detect a key specific to VMware.[92] |
| G0038 | Stealth Falcon |
Stealth Falcon malware attempts to determine the installed version of .NET by querying the Registry.[93] |
| S0380 | StoneDrill |
StoneDrill has looked in the registry to find the default browser path.[94] |
| S0603 | Stuxnet |
Stuxnet searches the Registry for indicators of security programs.[95] |
| S0559 | SUNBURST |
SUNBURST collected the registry value |
| S1064 | SVCReady |
SVCReady can search for the |
| S0242 | SynAck |
SynAck enumerates Registry keys associated with event logs.[98] |
| S0011 | Taidoor |
Taidoor can query the Registry on compromised hosts using |
| S0560 | TEARDROP |
TEARDROP checked that |
| G0027 | Threat Group-3390 |
A Threat Group-3390 tool can read and decrypt stored Registry values.[101] |
| S0668 | TinyTurla |
TinyTurla can query the Registry for its configuration information.[102] |
| G0010 | Turla |
Turla surveys a system upon check-in to discover information in the Windows Registry with the |
| S0022 | Uroburos |
Uroburos can query the Registry, typically |
| S0386 | Ursnif |
Ursnif has used Reg to query the Registry for installed programs.[105][106] |
| S0476 | Valak |
Valak can use the Registry for code updates and to collect credentials.[107] |
| S0180 | Volgmer | |
| G1017 | Volt Typhoon |
Volt Typhoon has queried the Registry on compromised systems, |
| S0612 | WastedLocker |
WastedLocker checks for specific registry keys related to the |
| S0579 | Waterbear |
Waterbear can query the Registry key |
| S0155 | WINDSHIELD |
WINDSHIELD can gather Registry values.[113] |
| S1065 | Woody RAT |
Woody RAT can search registry keys to identify antivirus programs on an compromised host.[114] |
| S0251 | Zebrocy |
Zebrocy executes the |
| S0330 | Zeus Panda |
Zeus Panda checks for the existence of a Registry key and if it contains certain values.[116] |
| G0128 | ZIRCONIUM |
ZIRCONIUM has used a tool to query the Registry for proxy settings.[117] |
| S0412 | ZxShell |
ZxShell can query the netsvc group value data located in the svchost group Registry key.[118] |
| S1013 | ZxxZ |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
| ID | Data Source | Data Component | Detects |
|---|---|---|---|
| DS0017 | Command | Command Execution |
Monitor executed commands and arguments for actions that may interact with the Windows Registry to gather information about the system, configuration, and installed software. Note: For PowerShell Module logging event id 4103, enable logging for module Microsoft.PowerShell.Management. The New-PSDrive PowerShell cmdlet creates temporary and persistent drives that are mapped to or associated with a location in a data store, such a registry key (PSProvider "Registry"). The the Get-ChildItem gets the items in one or more specified locations. By using both, you can enumerate COM objects in one or more specified locations. Analytic 1 - Suspicious Commands
|
| DS0009 | Process | OS API Execution |
Monitor for API calls (such as Note: Most EDR tools do not support direct monitoring of API calls due to the sheer volume of calls produced by an endpoint but may have alerts or events that are based on abstractions of OS API calls. |
| Process Creation |
Monitor for newly executed processes that may interact with the Windows Registry to gather information about the system, configuration, and installed software. Note: The New-PSDrive PowerShell cmdlet creates temporary and persistent drives that are mapped to or associated with a location in a data store, such a registry key (PSProvider "Registry"). The Get-ChildItem gets the items in one or more specified locations. By using both, you can enumerate COM objects in one or more specified locations. Note for Analytic 3: Replace FilePathToLolbasProcessXX.exe with lolBAS process names that are used by your organization. The number_standard_deviations parameter should be tuned accordingly. Identifying outliers by comparing distance from a data point to the average value against a certain number of standard deviations is recommended for data values that are symmetrical distributed. If your data is not distributed, try a different algorithm such as the Interquartile Range (IQR). Analytic 1 - Suspicious Processes with Registry keys
Analytic 2 - reg.exe spawned from suspicious cmd.exe
Analytic 3 - Rare LolBAS command lines
|
||
| DS0024 | Windows Registry | Windows Registry Key Access |
Monitor for unexpected process interactions with the Windows Registry (i.e. reads) that may be related to gathering information. Note: For Security Auditing event ids 4656 and 4663, a System Access Control List (SACL) that controls the use of specific access rights such as Enumerate sub-keys and Query key value is required for event generation. Depending on the Registry key you are monitoring, the implementation of a new System Access Control List (SACL) might be required. Depending of Registry key used for the creation of a System Access Control List (SACL), the generation of event ids 4656 and 4663 might be noisy. Analytic 1 - Suspicious Registry
|