网络安全 频道

IPS/IDS特征识别和签名或规则编写

总结一下:BT软件是先TCP三次握手,然后应用层握手,接下来有TCP 的控制部分还有UDP的控制部分,接下来是搞TCP的DATA部分的传输,我们抓包特征有好几次机会:

1.       应用层握手从第1个字节开始算特征, "BitTorrent protocol" 是BT软件开始应用层握手的信息.

2.       TCP CONTROL部分

3.       UDP CONTROL部分

4.       TCP DATA部分,这部分往往是加密传输,不太容易做的

这里再声明一次TCP的三次握手不用抓,因为这个不是协议异常攻击,是完全的应用层软件的东西

还有就是有时候要检测PAYLOAD的长度,一般的时候不需要,为了消除误报,可以把PAYLOAD长度作为一个条件加进去,前提是PAYLOAD长度固定或者在一定范围内.

 

B)      IMS即时通讯工具

1)      QQ检测

QQ分UDP登陆和HTTP隧道登陆方式

先看看UDP

filter qq udp( dport: QQ_PORTS ) { 

 

if ( substr(udp.blob,0,1) == "\x02"){  #这里跟SNORT的一样,这个用函数

#substr做PAYLOAD的匹配,这里写的是从第0个字节开始,长度为1的包,也就#是第一个字节是0x02

        #detect qq login

if ( substr(udp.blob,4,1) == "\x22"){ #这里写的是从第4个字节开始,长度为

#1的包,也就是第一个字节是0x22

               $temp1=ulong(udp.blob,7); #这里去出QQ号

              alert( source_me, qq_login_alert,   #这里是报警的内容,前两个参数在

#qq.acf文件里定义了              

             ip.src, ip.dst, #在UDP协议检测里必须写上的原和目的的IP

             cat("QQ ",$temp1 ," :log in server"), #自定义参数,QQ号            

             "--AlertDetails", "ALERT_ID", "911-003-001", #报警的ID,最好不要

#和其他签名重复     

             "ALERT_SEVERITY", "low", #报警的严重层度     

             "ALERT_IMPACT", "information gathering", #漏洞类型        

             "ALERT_EVENT_TYPE","logging",  #事件类型

             "ALERT_ASSESSMENT", "unknown", #事件考评,基本都是unknown

                "ALERT_CONFIDENCE", 90, #签名报警的可信度                   

             "IP_ADDR_SRC", ip.src,       

             "PORT_SRC", udp.sport,       

             "IP_ADDR_DST", ip.dst,       

             "PORT_DST", udp.dport,

             "$temp1",$temp1,

             "$temp2",$temp2);

              record packet.sec, ip.src, udp.sport, ip.dst,  #做数据报记录的功能,

#如果attack里的inhitit.values开启了record这个签名的功能

#,这里就要录制数据报

               udp.sport, "qq client connect to server" ,"N/A" to RCDR;

               }

再看看QQ的HTTP隧道特征

其他的特征包我就不在这里贴了,这里为了消除误报,当有下面的情况发生是可能也被检测成QQ HTTP登陆:

上面这个是QQ浏览www.qq.com网站的情况,我们这里要把HOST字段www.qq.com过滤掉,Referer 是http://www.qq.com过滤掉.

我们这里还要检测Cookie的特征,才能检测QQ HTTP登陆的情况

if(index($host, "www.qq.com") < 0)

{

if($Referer != NULL)

{

if(index($Referer, ".qq.com") > 0) return;

}

if ((index($url, "/getsyspanel?") >= 0)&&(index($url, "qqver") >= 0)&&(index($url, "qq=") >= 0)){

alert(ims_qqhttp_source, qq_http_alert,tcp.connsrc,

          tcp.conndst,

          "--AlertDetails", "ALERT_ID", "911-011-001",

          "ALERT_CONFIDENCE", 90,

          "ALERT_SEVERITY", "info",

          "ALERT_EVENT_TYPE", "attack",

          "IP_ADDR_SRC", tcp.connsrc, "IP_ADDR_DST", tcp.conndst,

          "PORT_SRC", tcp.connsport, "PORT_DST", tcp.conndport,"QQURI",$url);

         

}

if ((index($url, "/getlogo?QQ=") >= 0)||(index($url, "superbag.xml") >= 0)){

alert(ims_qqhttp_source, qq_http_alert,tcp.connsrc,

          tcp.conndst,

          "--AlertDetails", "ALERT_ID", "911-011-001",

          "ALERT_CONFIDENCE", 90,

          "ALERT_SEVERITY", "info",

          "ALERT_EVENT_TYPE", "attack",

          "IP_ADDR_SRC", tcp.connsrc, "IP_ADDR_DST", tcp.conndst,

          "PORT_SRC", tcp.connsport, "PORT_DST", tcp.conndport,"QQURI",$url);

         

}

if (((index($cookie, "QQ_IPAddress=") >= 0)&&((index($cookie, "pvid=") >= 0)||(index($cookie, "flv=") >= 0))) && (index($host, ".qq.com") >= 0)){

alert(ims_qqhttp_source, qq_http_alert,tcp.connsrc,

          tcp.conndst,

          "--AlertDetails", "ALERT_ID", "911-011-001",

          "ALERT_CONFIDENCE", 90,

          "ALERT_SEVERITY", "info",

          "ALERT_EVENT_TYPE", "attack",

          "IP_ADDR_SRC", tcp.connsrc, "IP_ADDR_DST", tcp.conndst,

          "PORT_SRC", tcp.connsport, "PORT_DST", tcp.conndport,

          "QQURI",$url,"Host",$host,"Cookie",$cookie);

         

}

}

1
相关文章