该rootkit最重要的函数功能:
·通过隐藏方式来保护关键的注册表键值;
·通过隐藏方式来保护关键的磁盘上的文件;
·从内核态驱动注入恶意代码到系统进程中;
·隐藏TCP网络端口;
·执行某些功能(结束进程、结束线程、隐匿注入DLL模块等)。
它通过向系统驱动堆栈添加一个恶意的过滤器来隐藏文件。该方法在每个卷中都在循环执行着感染。
这个方法可谓一箭双雕:
一方面,该rootkit隐藏磁盘上的以“tdl”开头的文件,另一方面在尝试打开 \Device\HarddiskVolumeX卷时返回错误
消息。这会导致各种反rootkit工具在需要打开卷进行文件系统结构的底层分析时会发生错误。
虚假错误是恶意软件通过返回错误消息“STATUS_TOO_MANY_SECRETS”来实现的;返回虚假错误系统消息的这种
方法正好突出体现出了当前网络犯罪的一种冷幽默调侃。
另一方面,网络端口同样也通过在 \Device\Tcp驱动堆栈添加恶意过滤器被隐藏。
与恶意服务和配置参数相关联的注册表项目都通过挂钩系统函数NtEnumerateKey被隐藏。
这是通过嫁接替换功能函数开始部分的一定数量的字节来重定向到恶意驱动上来实现的。
截图为一已受感染系统:NtEnumerateKey 与 NtFlushInstructionCache功能函数被替换的实例
挂钩系统函数NtFlushInstructionCache是此恶意软件比较有趣的特性。通过调用这个函数,恶意驱动文件可以执行如下附加命令:
·结束一个线程;
·阻止线程执行;
·结束一个当前进程;
·获取当前进程名;
·隐藏一个注入的DLL模块;
·卸载一个驱动文件;
·获取正在运行的进程列表。