| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 黑客技术 >> 入侵检测 >> 文章正文 用户登录 新用户注册
  用Snort从原理上检测MS05-051攻击[转]         ★★★ 【字体:
用Snort从原理上检测MS05-051攻击[转]
作者:stardust    文章来源:安全焦点    点击数:    更新时间:2006-1-11    


MS05-051漏洞及相关的攻击代码和蠕虫已经出现一些日子了,从IDS的角度来看,如何检测利用MS05-051漏洞的攻击呢?

Snort虽然提供了一些规则来检测攻击相关的请求,但并远不是攻击本身:

alert udp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT-UDP IXnRemote BuildContextW little endian attempt"; flowbits:isset,dce.bind.IXnRemote; content:"|05|"; byte_test:1,&,16,3,relative; content:"|00|"; within:1; distance:1; content:"|07 00|"; within:2; distance:19;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT v4 IXnRemote BuildContextW attempt"; flow:established,to_server; content:"|04 00|"; byte_test:1,!&,16,2,relative; content:"|E0 0C|k|90 0B C7|g|10 B3 17 00 DD 01 06|b|DA|"; within:16; distance:22; content:"|00 07|"; within:2; distance:28; pcre:"/^.{10}/sR";)
alert udp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT-UDP v4 IXnRemote BuildContextW attempt"; content:"|04 00|"; byte_test:1,!&,16,2,relative; content:"|E0 0C|k|90 0B C7|g|10 B3 17 00 DD 01 06|b|DA|"; within:16; distance:22; content:"|00 07|"; within:2; distance:28; pcre:"/^.{10}/sR";)
alert tcp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT IXnRemote BuildContextW attempt"; flow:established,to_server; flowbits:isset,dce.bind.IXnRemote; content:"|05|"; byte_test:1,!&,16,3,relative; content:"|00|"; within:1; distance:1; content:"|00 07|"; within:2; distance:19;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT IXnRemote BuildContextW little endian attempt"; flow:established,to_server; flowbits:isset,dce.bind.IXnRemote; content:"|05|"; byte_test:1,&,16,3,relative; content:"|00|"; within:1; distance:1; content:"|07 00|"; within:2; distance:19;)
alert udp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT-UDP IXnRemote BuildContextW attempt"; flowbits:isset,dce.bind.IXnRemote; content:"|05|"; byte_test:1,!&,16,3,relative; content:"|00|"; within:1; distance:1; content:"|00 07|"; within:2; distance:19;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT v4 IXnRemote BuildContextW little endian attempt"; flow:established,to_server; content:"|04 00|"; byte_test:1,&,16,2,relative; content:"|E0 0C|k|90 0B C7|g|10 B3 17 00 DD 01 06|b|DA|"; within:16; distance:22; content:"|07 00|"; within:2; distance:28; pcre:"/^.{10}/sR";)
alert udp $EXTERNAL_NET any -> $HOME_NET 1024: (msg:"NETBIOS DCERPC DIRECT-UDP v4 IXnRemote BuildContextW little endian attempt"; content:"|04 00|"; byte_test:1,&,16,2,relative; content:"|E0 0C|k|90 0B C7|g|10 B3 17 00 DD 01 06|b|DA|"; within:16; distance:22; content:"|07 00|"; within:2; distance:28; pcre:"/^.{10}/sR";)

对于正常的请求,这些规则也可能触发告警,显然这是不另人满意的。


漏洞分析
--------

要检测攻击当然需要先对MS05-051漏洞作一下比较深入的成因分析,以下的分析完全整理自小四(scz at nsfocus dot com)的工作。

漏洞的成因在于远程调用msdtcprx!BuildContextW()时存在内存破坏问题,msdtcprx.dll!BuildContextW()对应DCE-RPC 7号调用,相应的最简请求报文参数手工解码如下:

--------------------------------------------------------------------------
0x00, 0x00,                                     // +0x000 param0开始,2字节长
0x00, 0x00,                                     // 填充字节,4字节对齐
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +0x004 param1开始,24字节长
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00,                         // +0x018 param2开始,参数最大可能长度,4字节长
0x00, 0x00, 0x00, 0x00,                         // 参数最小可能长度,4字节长
0x01, 0x00, 0x00, 0x00,                         // 参数实际长度,4字节长
0x00, 0x00,                                     // 参数串,Unicode格式
0x00, 0x00,                                     // 填充字节,4字节对齐
0x01, 0x00, 0x00, 0x00,                         // +0x028 pwszHostName,param3开始,参数最大可能长度,4字节长
0x00, 0x00, 0x00, 0x00,                         // 参数最小可能长度,4字节长
0x01, 0x00, 0x00, 0x00,                         // 参数实际长度,4字节长
0x00, 0x00,                                     // 参数串,Unicode格式
0x00, 0x00,                                     // 填充字节,4字节对齐
0x01, 0x00, 0x00, 0x00,                         // +0x038 pwszUuidString param4开始,参数最大可能长度,4字节长,正常情况下应该是0x00000025,如果大于此值则是畸形的
0x00, 0x00, 0x00, 0x00,                         // 参数最小可能长度,4字节长
0x01, 0x00, 0x00, 0x00,                         // 参数实际长度,4字节长
0x00, 0x00,                                     // 参数串,Unicode格式
0x00, 0x00,                                     // 填充字节,4字节对齐
0x01, 0x00, 0x00, 0x00,                         // +0x048 param5开始,参数最大可能长度,4字节长,正常情况下应该是0x00000025,如果大于此值则是畸形的
0x00, 0x00, 0x00, 0x00,                         // 参数最小可能长度,4字节长
0x01, 0x00, 0x00, 0x00,                         // 参数实际长度,4字节长
0x00, 0x00,                                     // 参数串,Unicode格式
0x00, 0x00,                                     // 填充字节,4字节对齐
0x01, 0x00, 0x00, 0x00,                         // +0x058 pwszGuidOut param6开始,参数最大可能长度,4字节长
0x00, 0x00, 0x00, 0x00,                         // 参数最小可能长度,4字节长
0x01, 0x00, 0x00, 0x00,                         // 参数实际长度,4字节长
0x00, 0x00,                                     // 参数串,Unicode格式
0x00, 0x00,                                     // 填充字节,4字节对齐
0x00, 0x00, 0x00, 0x00,                         // +0x068 param7
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,                         // +0x074 Count
0x00, 0x00, 0x00, 0x00                          // +0x078 Array[*]
                                  &

[1] [2] [3] [4] 下一页

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    Sniffit常见问题及防范策略分
    活地运用SQL Injection做数据
    MSN视频暗藏杀机 微软补丁忙
    MSN Space大赛官方网站入侵经
    “MSN性感相册”病毒变种多达
    机构数据: QQ市场占有率为M
    微软携安全厂商建统一战线 M
    用Syskey命令加强Windows200
    CISCO IOS NHRP 功能中存在缓
    Sniffit常见问题及防范策略深
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.