snort2.9源码预处理流转到detect模块分析(着重http模块)

snort/templates下

sp_template.h和sp_template.c是开发预处理插件使用的模板

spp_template.h和spp_template.c是开发预处理器使用的模板。


具体怎么在源码下面加载自己想要的插件,可以看http://wenku.baidu.com/link?url=QgklgCAaHYbeR5skIRa6PJSGMb6LZP1AlyRDIKq7cr4fezFgk_vXyNOUB6xmhaV_xjV_SPKB1NVm-I3Z-a857sLR-w_ygSOFOJlKTtUyf9y



在spp_httpinspect.c里面的HttpInspect函数是完成普通的http检测流程的,首先我们得到一个包结构,然后扔它去http检测模块,而http检测模块里面的第一步就是会话检测阶段,这个会话检测阶段非常重要。。在这个函数里面,我们先检测这个包是不是tcp,这是前提条件,也就是assert(IsTCP(p) && p->dsize && p->data);。。然后就是状态方面的预处理,PREPROC_PROFILE_START(hiPerfStats);。。然后我们就进行SnortHttpInspect(pPolicyConfig, p);之后我们就ClearHttpBuffers()。。最后我们通过PERF_PROFILING如果为真,就看我们是否已经调用了http的detect,如果是的话,就把各种状态清空。。这里分析下SnortHttpInspect方法。。

这个方法首先是启动HI_SI_INPUT指针,这个指针是session的检测过程中用来决定是client和server的通信。这也有个好处就是使得http的检测库与snort更加独立了。。

接下来就是流程的走,首先是会话的检测模块,会话模块就是去恢复可能的服务端配置(为这个会话),然后就是http检测模块,这个模块也不是说就是一个检测http的模块,它是一个帮助功能的模块,它帮忙发送数据到可能的检测路径,这些路径有可能是客户端的检测,服务端的检测,或者任意服务端的检测。。然后就是http的标准化模块,经过http的准检测模块,我们的数据已经比较标准,那么在client/server的管道上面,我们接受前一阶段来的数据,然后具体去处理各个管道方向的信息。然后就到了http的detection模块,这个模块在httpinspect的第一轮迭代中是不会被执行的,但是所有http的显著特征的内容一定会被利用到这个模块。。接下来就是一些事件的处理而已。。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值