本周,卡巴斯基实验室发现了一种通过将恶意代码注入Windows可执行文件而传播的新型计算机病毒,它被命名为“KBOT”。
KBOT会做什么?根据卡巴斯基实验室的说法,在受感染的文件被打开后,KBOT便会将自身写入Startup和Task Scheduler,然后部署Web注入以尝试窃取受害者的银行和个人数据。
除此之外,KBOT还会下载其他窃取程序模块,这些窃取程序模块几乎能够收集有关受害者的全部信息并将它们上传到C&C服务器,包括密码/登录名、加密货币钱包数据、文件列表以及已安装的应用程序等。
值得注意的是,所有被盗文件和数据全都被存储在使用RC6算法加密的虚拟文件系统中,这就导致KBOT的恶意行为很难被检测到。
KBOT的感染链如上所述,KBOT是通过将恶意代码注入Windows可执行文件来传播的。根据卡巴斯基实验室的说法,它会感染位于逻辑驱动器(HDD分区、外部媒体、网络驱动器)和共享网络文件夹中的所有EXE文件。
为了实现这一点,KBOT使用了IID_IwbemObjectSink接口和SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA'Win32_LogicalDisk类型的查询来侦听本地和网络逻辑驱动器的连接事件,然后覆盖IWbemObjectSink接口的Indicate函数,并对每个驱动器执行目录的递归扫描。
在扫描目录并感染可执行EXE文件之前,KBOT还会使用API函数NetServerEnum和NetShareEnum检索共享网络资源的路径。
KBOT的功能Web注入
为了隐藏其恶意行为,KBOT会尝试将代码注入正在运行的系统进程中,injects.ini示例如下:
其中,JUPITER.32和JUPITER.64是执行Web注入的DLL,可帮助KBOT窃取受害者在浏览器中输入的个人数据,包括密码、信用卡/加密货币钱包号码等。
DLL劫持
为实现在合法系统应用程序的地址空间中运行,KBOT选择了通过感染在系统可执行文件的导入目录中指定的系统库来执行DLL劫持攻击,以便将自身写入Startup。
自启动
为实现随受感染系统启动而自动运行,KBOT使用了以下方法:
1.将自身写入Software\\Microsoft\\Windows\\CurrentVersion\\Run。
2.使用WMI工具,在Task Scheduler中创建一个任务来运行受感染的系统EXE文件,用于创建任务的XML示例如下:
远程管理
为实现对受感染计算机的远程管理,KBOT会与BC.ini文件中列出的服务器建立反向连接。
为了使用RDP协议同时创建多喝会话,KBOT会配置远程桌面服务器的设置:
1.查找在内存中加载了termserv.dll库的进程。
2.修补加载了termserv.dll库的进程的内存部分。
3.在修补过程中,在模块的内存中搜索特定的字节集,并将其替换为指定的字节。
接下来,KBOT会适当地编辑负责TermService设置的注册表项的值,包括但不限于如下这些值:
HKLM\SYSTEM\ControlSet\Control\TerminalServer\LicensingCore\ EnableConcurrentSessionsHKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\EnableConcurrentSessionsHKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\ AllowMultipleTSSessionsHKLM\SOFTWARE\Policies\Microsoft\WindowsNT\TerminalServices\MaxInstanceCount然后,KBOT将重新启动TermService并在系统中创建一个用户,用于使用SID WinBuiltinRemoteDesktopUsersSid进行远程连接。
C&C通信
分析表明,KBOT可以从C&C服务器接收如下命令:
DeleteFile —从文件存储中删除指定的文件。UpdateFile —更新文件存储中的指定文件。UpdateInjects —更新injects.ini。UpdateHosts—更新hosts.ini。UpdateCore —更新主bot模块和配置文件kbot.ini。Uninstall—卸载自身。UpdateWormConfig—更新worm.ini,其中包含有关要感染的EXE文件的位置信息,worm.ini示例如下:混淆
为隐藏其恶意行为,KBOT使用了一套相当复杂的混淆工具。
加载时,主bot模块将检查是否对导入的函数进行了断点修补。如果是这样,它会将导入的DLL重新加载到内存中,将导入的函数的名称清零,并使用字符串混淆(使用RC4算法加密,解密密钥存储在结构中)。
加密的字符串被存储在特殊的结构数组中,在需要访问它们时,KBOT将使用数组中字符串结构的编号调用解密函数,解密函数示例如下:
结语KBOT可以说是一种高危险性的网络威胁,因为它不仅能够通过感染Windows可执行文件迅速在系统和本地网络中传播,而且功能强大——能够通过远程桌面会话控制受感染计算机系统、窃取个人数据,以及执行Web注入以窃取用户的银行数据。