Snort分析

Snort分析

 

Snort的程序架构

       Snort 由几大软件模块组成,这些软件模块采用插件方式与Snort 结合,扩展起来非常方便,例如有预处理器和检测插件,报警输出插件等。Snort程序的基本框架如下图所示:

 

 

1  Snort程序的框架图

Snort的源代码结构:

snort 源代码主要由以下几个主要部分构成:

 

snort. c snort 主函数

decode. c 包解码器

rules. c 规则引擎

detect. c 检测引擎

log. c 记录引擎

spp-开头预处理器插件

sp-开头处理插件

sop-开头输出插件

 

Snort.c 分析

 

       Snort.cSnort的主函数所在,主要作用是控制程序的工作流程和初始话所需的插件。其中,程序从.SnortMain()函数开始,基本流程如下:

 

 

 

2 SnortMain的流程图

 

 

 

 

 

 

 

 

 

3 Snort的数据包处理流程

Snort的预处理程序

       对于Snort来讲,提供超越规则检验的功能还是必要的,比如协议的异常检测和正确性检测,仅仅通过规则匹配是不能完成这样的任务的,这些额外的规则通过预处理器实现。

预处理程序是Snort的一个可通过插件配置的组成部分。主要包括:①模拟TCPIP堆栈功能的插件,如IP碎片重组、TCP流重组插件;②各种解码插件:http解码插件、unicode解码插件、rpc解码插件、tel-net解码插件等;③规则匹配无法进行攻击检测时所用的插件:端口扫描插件、spade异常入侵检测插件、bo检测插件、arp欺骗检测插件等。

 

      

Snort规则的格式

       Snort采用简单的规则描述格式,举例说明如下:

      

Alert TCP  !$HOME_NET any ->!$HOME_NET (meg : “CAN-1999-0736-IIS-showcode”,  flsgs:A:content:”/selector/showcode.asp”: nocase)

 

前面的alert TCP 代表对应于检测引擎的表头,括号内部的规则选项,其中冒号“:” 的是关键字,引号内部的是规则。当且仅当所有的规则均为真的时候才会触发事件。

 

Snort的检测引擎

       Snort的检测引擎通过一个三维链表维护其检测规则,,首先按规则类型( LogPassAlertDynamicActivation)分类,分成了五个单独的规则链;然后针对这五个规则链的每一个按协议类型(TCPUDPICMPIP)分成相应的节点链表;最后又按照源IP、目的IP、源端口号及目的端口号分为多个规则树节点(RTN);每个规则树节点下又有规则选项,称为选项树节点(OTN);这样每个OTN 节点就对应了一条规则,Snort 规则树结构如图4

 

 

4 Snort 规则树结构

 

       当数据包到达检测引擎时,Snort 将首先匹配规则链,然后根据数据包协议匹配相应的节点链表,于是从左至右遍历RTN,参看源、目的IP 及端口号是否匹配,找到一个匹配后,算法向下进行,在每个OTN 中寻找匹配;当找到一个匹配后,退出树结构返回相应规则链的头部,通过指定格式输出。

       在字符串比较方面,Snort主要采用BoyerMoore算法,同时在2.0以后的版本中有WumanberAhoCroshik可供选择。

 

 

总结

       作为IDS而言,Snort的结构使得其可以方便的扩展和部署。但是,遍历的检测引擎和基于lipcap的数据包捕获机制决定了它只能作为中小型企业的入侵检测系统。

 

 

 

 。。。。。

还不能上图

 

 
### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值