That's not that simple:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms678543%28v=vs.85%29.aspxClean system:
<any process> => Ole32.dll => svchost.exe (COM server) => look in registry to get process to launch => wmiprvse.exe (handle WMI)Infected system
<any process> => Ole32.dll => svchost.exe (COM server) => look in registry to get process to launch => dllhost.exe, loaded with malicious DLL payload => restores the registry keyIn blue, this is the legit chain, which is identical.
In Green, this is the legit action, starting the WMI handler
In Red, this is the malware action, starting a malicious payload through the DLL loader (dllhost, which is rather the same as rundll32)
As you can see, dllhost is started by a completely legit chain, and it can be initiated from any process that needs WMI. Hard to block.
I'm pretty sure the value of the registry key is also cached in svchost until next reboot, this is why removing the registry isn't enough.
dllhost can be blocked from running, based on what DLL it is starting. But do so you need real time protection mechanisms