RtlInitUnicodeString (&usname, L"\\SystemRoot\\System32\\LogFiles\\passthru. log"); InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); Status = ZwCreateFi1e(&hfi1e, GENERIC_WRITE, &oa, &iostatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OVERWRITE_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); 转存所有网络通信并^%文件的程序代码如下: ZwWriteFile(hfile, NULL, NULL, NULL, &iostatus, PrintContent, count, NULL, NULL); 有些设备驱动程序和执行组件创建专门处理?&^1仲层的工作的线程;然而,通常采用 系统工作线程代替,以避免不必要的系统调度和内存开销。这里我们调用执行函数 £又9此此?0411咖以请求系统工作线程的服务。此函数在线程工作队列调度对象中放置工作 项。工作项包括指向例程的指针以及线程传输给例程的参数。该例程由设备设备驱动程序或 ii:^^Epas s i ve_ 1 eve 1级地可执行组件实现。 案例分析 作者用上述组件和技术实现了一个恶意网络通信拦截和分析系统。实验环境如下:两台 测试机,一台装有八口%化和^?的如13服务器;另一台作为客户端,安装NDIS中间层驱动程序。 在该案例中,Adobe ?1&8&播放器漏洞被用来攻击测试机。所有输入和输出的网络通信均被 即13中间层驱动程序拦截。收集八如&?1&吐播放器漏洞签名并存放在签名匹配列表中。图6 显示了选定的八如66 ?1&811播放器漏洞有效载荷的唯一字符串。 正如上述所讨论的一样,所有拦截到的网络通信活动都记录在一个十六进制的日志文件中。 在执行NDIS中间层驱动程序后,所有网络数据包通过试验机传球被截获。如果八如& 卩13池播放器漏洞有效载荷匹配成功,函数将扫描拦截到的网络通信。检测八如&?13池播放 器漏洞创建的网络通信,同时NDIS中间层驱动程序丢弃恶意网络数据包。图7显示了当发现 签名时,“签名匹配成功”消息显示被丢弃的恶意网络数据包。 小结 恶意软件扫描引擎是保护计算机系统重要工具。许多用户将其作为防御网络攻击和系统 威胁的第一道防护网。随着恶意软件技术的发展,攻击受害者计算机的模式逐渐演变为内核 模式。然而,大多数个人扫描引擎只处理用户模式下的网络数据包,这也带来很多限制。为 了更好地保护用户计算机,需要在内核模式下进行安全防范操作。本文深入有关入侵检测系 统和防火墙概念,使用NDIS中间层驱动程序来捕获和过琥恶意网络通信。 |