WEB开发网
开发学院网络安全防火墙 Windows软件防火墙实现技术简述 阅读

Windows软件防火墙实现技术简述

 2007-07-21 12:46:26 来源:WEB开发网   
核心提示: 2004年12月的时候,www.rootkit.com上面的一名黑客发表了一篇著名的文章:“Hooking into NDIS and TDI, part 1,Windows软件防火墙实现技术简述(2),这篇文章本意是为rootkit作者们提供一种挂接底层驱动实现端口重用的方法

2004年12月的时候,www.rootkit.com上面的一名黑客发表了一篇著名的文章:“Hooking into NDIS and TDI, part 1。这篇文章本意是为rootkit作者们提供一种挂接底层驱动实现端口重用的方法,但是这篇文章揭示了一个全新的技术:通过动态的注册ndis假协议,可以获得ndis protocol的链表地址。得到这个地址之后就能不通过重起,就能替换并监控每个ndis protocol的send(packets)handler和receive(packet)handler,并且可以动态的卸载监控模块不需要重起。在这篇文章出现之后,很多防火墙厂商都悄悄地对自己的产品进行了升级。目前的ZoneAlarm等产品就是使用这种技术,可以在安装后即时发挥作用。这个例子更充分的体现了,黑客和反黑技术本来就是相辅相成的,本源同一的。

这里给出一个寻找该链表头的代码例子:

该函数返回的NDIS_HANDLE就是链表头地址。

NDIS_HANDLE RegisterBogusNDISProtocol(void)
{
   NTSTATUS Status = STATUS_SUCCESS;
   NDIS_HANDLE hBogusProtocol = NULL;
   NDIS_PROTOCOL_CHARACTERISTICS BogusProtocol;
   NDIS_STRING ProtocolName;
   NdisZeroMemory(&BogusProtocol,sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
   BogusProtocol.MajorNdisVersion = 0x04;
   BogusProtocol.MinorNdisVersion = 0x0;
   NdisInitUnicodeString(&ProtocolName,L"BogusProtocol");
   BogusProtocol.Name = ProtocolName;
   BogusProtocol.ReceiveHandler = DummyNDISProtocolReceive;
   BogusProtocol.BindAdapterHandler = dummyptbindadapt;
   BogusProtocol.UnbindAdapterHandler = dummyptunbindadapt;
   NdisRegisterProtocol(&Status,&hBogusProtocol,&BogusProtocol,
     sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
   if(Status == STATUS_SUCCESS){ return hBogusProtocol;}
   else {
#ifdef bydbg
     DbgPrint("ndishook:cannot register bogus protocol:%x
",Status);
     DbgBreakPoint();
#endif
     return NULL;
   }
}

上一页  1 2 3 4 5 6  下一页

Tags:Windows 软件 防火墙

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接