浏览器助手对象或BHO是一个DLL模块,它被设计为Microsoft的Internet Explorer网络浏览器的附件,以提供附加功能。当您的系统上安装BHO时,每次启动Internet Explorer时都会自动加载插件。黑客通过安装恶意BHO窃取用户的在线银行密码并执行各种其他恶意活动来滥用此功能。
在分析McAfee检测到的特定恶意软件“convite.exe”为“PWS-Banker!dtl”时,我注意到一些非常有趣的事情,因此决定发布我的发现。在被恶意软件丢弃的各种文件中,一个文件特别感兴趣,称为“flashcpx.dll”,它被安装为BHO。
当BHO注册到系统上时,它会在注册表中添加各种密钥。当Internet Explorer启动时,它会读取下面的注册表位置,告诉Internet Explorer需要加载哪个BHO。我们来看看安装在我的机器“AcroIEHelperShim.dll”上的Adobe BHO的例子。
[HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Browser Helper Objects]
{18DF081C-E8AD-4283-A596-FA578C2EBDC3}
在这个关键位置列出了BHO的16字节CLSID字符串。然后使用该字符串指向注册表中的另一个位置,告诉Internet Explorer加载哪个DLL模块。
[HKLM \ SOFTWARE \ Classes \ CLSID \ {18DF081C-E8AD-4283-A596-FA578C2EBDC3} \ InprocServer32]
C:\ Program Files \ Common Files \ Adobe \ Acrobat \ ActiveX \ AcroIEHelperShim.dll
现在,当恶意的“flashcpx.dll”BHO被安装时,它会巧妙地隐藏它的存在,但仍然可以加载。正如你在下面看到的,CLSID字符串比平常长。即使Internet Explorer加载BHO,添加的字符也会导致大多数工具不列出BHO。
[HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Browser Helper Objects]
{399BFACE-3ADA-4DAE-80D8-E221812243A9} 80D8-E221812243A9}
当Internet Explorer加载BHO时,浏览器只读取16字节的CLSID格式{399BFACE-3ADA-4DAE-80D8-E221812243A9},然后通过正常进程加载BHO。所以任何添加的字符都会被Internet Explorer忽略。
[HKLM \ SOFTWARE \ Classes \ CLSID \ {399BFACE-3ADA-4DAE-80D8-E221812243A9} \ InprocServer32]
C:\ WINDOWS \ system32 \ flashcpx.dll
例如,如果我们想看看安装了什么BHO,我们可以使用Internet Explorer的管理加载项或使用SysInternals Autoruns.exe。两者都不显示安装的恶意BHO,因为这些工具读取的是整个字符串,而不是Internet Explorer的16字节CLSID格式。
由于在[HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID]中找到CLSID键时字符串比推荐时间更长,因此未找到该键,因此DLL模块未列出。很奇怪的是,“管理加载项”是Internet Explorer的一部分,但没有列出它,但很高兴加载BHO :)。