Event Triggered Execution: Component Object Model Hijacking

Adversaries may establish persistence by executing malicious content triggered by hijacked references to Component Object Model (COM) objects. COM is a system within Windows to enable interaction between software components through the operating system.[1] References to various COM objects are stored in the Registry.

Adversaries can use the COM system to insert malicious code that can be executed in place of legitimate software through hijacking the COM references and relationships as a means for persistence. Hijacking a COM object requires a change in the Registry to replace a reference to a legitimate system component which may cause that component to not work when executed. When that system component is executed through normal system operation the adversary's code will be executed instead.[2] An adversary is likely to hijack objects that are used frequently enough to maintain a consistent level of persistence, but are unlikely to break noticeable functionality within the system as to avoid system instability that could lead to detection.

ID: T1546.015
Sub-technique of:  T1546
Platforms: Windows
Permissions Required: User
Contributors: Elastic
Version: 1.0
Created: 16 March 2020
Last Modified: 10 November 2020

Procedure Examples

ID Name Description
S0045 ADVSTORESHELL

Some variants of ADVSTORESHELL achieve persistence by registering the payload as a Shell Icon Overlay handler COM object.[3]

G0007 APT28

APT28 has used COM hijacking for persistence by replacing the legitimate MMDeviceEnumerator object with a payload.[4][5]

S0127 BBSRAT

BBSRAT has been seen persisting via COM hijacking through replacement of the COM object for MruPidlList {{42aedc87-2188-41fd-b9a3-0c966feabec1}} or Microsoft WBEM New Event Subsystem {{F3130CDB-AA52-4C3A-AB32-85FFC23AF9C1}} depending on the system's CPU architecture.[6]

S0126 ComRAT

ComRAT samples have been seen which hijack COM objects for persistence by replacing the path to shell32.dll in registry location HKCU\Software\Classes\CLSID{{42aedc87-2188-41fd-b9a3-0c966feabec1}}\InprocServer32.[7]

S0679 Ferocious

Ferocious can use COM hijacking to establish persistence.[8]

S0044 JHUHUGIT

JHUHUGIT has used COM hijacking to establish persistence by hijacking a class named MMDeviceEnumerator and also by registering the payload as a Shell Icon Overlay handler COM object ({{3543619C-D563-43f7-95EA-4DA7E1CC396A}}).[4][9]

S0356 KONNI

KONNI has modified ComSysApp service to load the malicious DLL payload.[10]

S0256 Mosquito

Mosquito uses COM hijacking as a method of persistence.[11]

S0692 SILENTTRINITY

SILENTTRINITY can add a CLSID key for payload execution through Registry.CurrentUser.CreateSubKey("Software\\Classes\\CLSID\\{{" + clsid + "}}\\InProcServer32").[12]

S0670 WarzoneRAT

WarzoneRAT can perform COM hijacking by setting the path to itself to the HKCU\Software\Classes\Folder\shell\open\command key with a DelegateExecute parameter.[13]

Mitigations

This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.

Detection

ID Data Source Data Component
DS0017 Command Command Execution
DS0011 Module Module Load
DS0009 Process Process Creation
DS0024 Windows Registry Windows Registry Key Modification

There are opportunities to detect COM hijacking by searching for Registry references that have been replaced and through Registry operations (ex: Reg) replacing known binary paths with unknown paths or otherwise malicious content. Even though some third-party applications define user COM objects, the presence of objects within HKEY_CURRENT_USER\Software\Classes\CLSID\ may be anomalous and should be investigated since user objects will be loaded prior to machine objects in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID.[14] Registry entries for existing COM objects may change infrequently. When an entry with a known good path and binary is replaced or changed to an unusual value to point to an unknown binary in a new location, then it may indicate suspicious behavior and should be investigated.

Likewise, if software DLL loads are collected and analyzed, any unusual DLL load that can be correlated with a COM object Registry modification may indicate COM hijacking has been performed.

References