IDS入侵特征库样本数据建立方法详解
先说说最基本的判断:入侵检测系统要想真正有效识别攻击行为,必须依赖一个足够强大的入侵特征数据库。这就像杀毒软件要查杀病毒,必须先有一个完备的病毒库。但问题在于,IDS自带的特征库往往跟不上新攻击手段的演进速度。攻击手法稍微变化一下,系统可能就“相逢不相识”了。因此,管理员自己动手,学会创建符合实际需
特征(Signature)的基本概念
在IDS领域,特征通常指用来判别通信信息类别的数据。以下是一些典型场景和识别方法的例子: * **来自保留IP地址的连接企图**:只需检查IP报头中的源地址即可。 * **带有非法TCP标志的数据包**:对比TCP报头中的标志组合,与已知正确或错误标志不匹配的即为异常。 * **含有特殊病毒信息的电子邮件**:可对比邮件主题,或搜索附件名中是否包含特定名称。 * **查询负载中的DNS缓冲区溢出企图**:解析DNS域名,检查每个域的长度,判断是否存在溢出企图;或者直接在负载中搜索“壳代码利用”的序列代码组合。 * **针对POP3服务器的DoS攻击**:跟踪记录某个命令连续发出的次数,若超过预设上限则触发报警。 * **未登录情况下使用文件和目录命令,对FTP服务器进行文件访问攻击**:创建一种能跟踪连接状态的特征数据,先监视成功登录的FTP对话,再发现那些未经验证就想发命令的入侵企图。 从这些分类可以看出,特征的范围非常广泛:有简单的报头域数值,有高度复杂的连接状态跟踪,也有扩展的协议分析。我们从最简单的特征入手,详细说明它们的功能以及如何开发、如何定制。 不过需要先说明一点:不同IDS产品的特征功能差异很大。有些网络IDS系统仅允许有限地定制或编写特征,而另一些则给予用户极大的自由度,几乎可以定制或编写任何想要的特征。再比如,有的系统只能检查特定的报头或负载数值,而有的则可以获取任意信息包中任何位置的数据。特征有什么作用?
这个问题看似答案明显:特征就是用来检测数据包中是否存在可疑内容、是否包含攻击行为的对照物。既然IDS已经自带特征库,为什么还需要我们自己去定制或编写特征呢? 打个比方,你可能会经常看到一些“眼熟”的通信信息流在网络上游荡。但IDS系统因为特征库滞后,或者因为这些信息本身并非攻击或探测数据,所以不会特别关注。然而作为网络管理员,对这类可疑数据必须保持警惕。因此,需要自己指定一些特征样本,去捕捉它们,然后仔细分析其来源和意图。唯一的办法,就是对现有特征库做一些定制配置,或者干脆编写新的特征数据。 特征定制或编写的粒度,可粗可细,完全取决于实际需求。有时候,你只想判断是否发生了异常行为,而不需要知道具体是什么攻击,这样可以节省资源和时间。有时候,你又需要判断出具体的攻击手段或漏洞利用方式,从而获取更多信息。报头值(Header Values)
报头值的结构相对简单,而且能清晰识别异常报头信息,因此编写特征数据时,首先想到的往往就是它。一个经典的例子是:明显违背RFC793中规定的TCP标准,设置了SYN和FIN标记的TCP数据包。这种数据包被很多入侵软件采用,用来攻击防火墙、路由器以及IDS系统。 异常报头值的来源主要有以下几种: * 大多数操作系统和应用软件,都是在假定RFC被严格遵守的前提下编写的,没有针对异常数据添加错误处理程序。因此,很多包含报头值的漏洞利用,都会故意违反RFC的标准定义。 * 一些包含错误代码的不完善软件,也会产生违反RFC定义的报头值数据。 * 并非所有操作系统和应用程序都能全面拥护RFC定义,总会在某些方面与RFC不协调。 * 随着时间推移和技术创新,执行新功能的协议,可能压根就不在现有RFC的覆盖范围内。 由于上述原因,严格基于RFC的IDS特征数据,就有可能产生漏报或误报。因此,RFC本身也在随着新出现的违反信息不断更新。这也意味着,有必要定期回顾或更新已有的特征数据定义,及时发现不足。 非法报头值是特征数据的基础部分,但合法却可疑的报头值也同样重要。例如,如果发现端口31337或27374上有可疑连接,很可能存在木马活动。再结合其他更详细的探测信息,就能进一步判断是否真的中了木马。确定特征数据的候选对象
为了更具体地理解如何开发基于报头值的特殊数据,我们通过一个实际例子来分析。 Synscan是一个流行的扫描和探测工具。2001年初,因其代码被用于创建蠕虫Ramen的头部片段而名声大噪。Synscan的执行行为很有代表性,它发出的信息包具有多种可分辨的特性,包括: * 不同的来源IP地址信息 * TCP来源端口21,目标端口21 * 服务类型0 * IP鉴定号码39426 * 设置SYN和FIN标志位 * 不同的序列号集合 * 不同的确认号码集合 * TCP窗口尺寸1028 下面我们对这些数据进行筛选,看看哪些适合做特征数据。我们寻找的是非法、异常或可疑的数据,这些数据通常能反映出攻击者利用的漏洞,或者他们使用的特殊技术。以下是候选对象: * 只设置了SYN和FIN标志的数据包:这是公认的恶意行为迹象。 * 没有设置ACK标志,但确认号码数值却非0的数据包:正常情况下,确认号码应该是0,所以这种情况很反常。 * 来源端口和目标端口都被设置为21的数据包:这经常与FTP服务器关联。这种端口相同的情况,一般称为reflexive,除了个别时候(比如进行一些特殊的NetBIOS通信),正常情况下不应出现。reflexive端口本身不违反TCP标准,但大多数情况下,它并非预期数值。例如,在一个正常的FTP对话中,目标端口一般是21,而来源端口通常都高于1023。 * TCP窗口尺寸为1028,且IP鉴定号码在所有数据包中为39426:根据IP RFC的定义,这两类数值应该在数据包之间有所不同,所以持续不变本身就说明有问题。如何正确使用特征
从上述四个候选特征对象中,我们可以单独选一个作为基于报头的特征数据,也可以选几个组合起来。 选择一项数据作为特征,局限性很大。例如,一个简单的特征可以是“只具有SYN和FIN标志的数据包”。这能很好地提示我们可能有不正常的行为,但完全无法告诉我们为什么会这样。SYN和FIN通常联合在一起攻击防火墙和其他设备,有它们出现,基本就预示着扫描在进行、信息在收集、攻击要开始。但仅此而已,我们需要更多细节。 反过来,把上面四项全部组合起来作为特征,也不现实。这太特殊了,而且会消耗很多系统资源。虽然能精确地提供行为信息,但比只用一项数据作为特征,效率要低得多。实际上,特征的定义,永远是在效率和精确度之间找平衡。大多数情况下,简单特征因为太普遍,更容易产生误报;而复杂特征因为太全面,攻击软件的某个特征会随时间变化,所以更容易产生漏报。 多也不行,少也不行,一切由实际情况决定。例如,我们想判断攻击可能用的什么工具,那除了SYN和FIN标志,还需要什么其他属性?“反身”端口虽然可疑,但很多工具都用它,而且一些正常通信也有这个现象,所以不适合做特征。TCP窗口尺寸1028虽然有点可疑,但也会自然发生。IP鉴定号码39426也一样。没有ACK标志的ACK数值,明显是非法的,所以非常适合做特征数据。当然,根据环境的不同,及时调整或组合特征数据,才是达到最优效果的不二法门。 接下来,我们创建一个特征,用来寻找并确定synscan发出的每个TCP信息包中的以下属性: * 只设置了SYN和FIN标志 * IP鉴定号码为39426 * TCP窗口尺寸为1028 第一个项目已经很普遍了,第二个和第三个项目同时出现在一个数据包里的情况不太多。因此,把这三项组合起来,就能定义一个比较详细的特征了。再加上其他synscan的属性,不会显著提高特征的精确度,只会增加资源消耗。到此,判断synscan软件的特征就创建好了。扩展,创建识别更多异常通信的特征
上面创建的特征,能满足对标准synscan软件的探测。但synscan可能有很多变种,其他工具也在不断变化,所以这个特征不一定能识别所有的变种。这时候,就需要结合使用特殊特征和通用特征,才能创建一个更好、更全面的解决方案。如果一个入侵检测特征既能揭示已知威胁,还能预测潜在威胁,那IDS的性能会大大提升。 先看一个“变脸”synscan发出的数据信息特征: * 只设置了SYN标志,这完全是正常的TCP数据包特征。 * TCP窗口尺寸总是40,而不是1028。40是初始SYN信息包中一个很罕见的小窗口尺寸,比正常的1028少见得多。 * “反身”端口数值为53,而不是21。老版本的BIND使用“反身”端口用于特殊操作,新版本BIND则不再使用。因此,一看到这个信息,就很容易让人产生怀疑。 上面这三种数据,与标准synscan产生的数据有很多相似之处,所以可以初步推断,产生它的工具,要么是synscan的不同版本,要么是其他基于synscan代码的工具。显然,前面定义的特征已经无法识别这个“变脸”了,因为三个特征子项全都变了。 这时候,可以采取三种方法: 1. 再单独创建一个匹配这些内容的特殊特征。 2. 调整探测目标,只关注普通的异常行为,而不是特殊的异常行为,创建通用特征。 3. 1和2都做,既全面撒网,也重点垂钓。真实的罪犯必抓,可疑的分子也别跑。 通用特征可以创建成这样: * 没有设置确认标志,但确认数值却非0的TCP数据包。 * 只设置了SYN和FIN标志的TCP数据包。 * 初始TCP窗口尺寸低于一定数值的TCP数据包。 使用这些通用特征,前面提到的两种异常数据包,都能有效识别出来。看来,网大了,捞鱼也容易些。 当然,如果需要更详细的探测,再在这些通用特征的基础上,添加一些个性数据,就能创建出一个特殊特征。还是那个观点:创建什么样的特征、创建哪些特征,取决于实际需求。实践,是检验创建何种特征的唯一标准。报头值关键元素小结,信息包种类检查分析
从上面讨论的例子中,我们看到了很多可以用来创建IDS特征的报头值信息。通常,最有可能用于生成报头相关特征的元素,主要有以下几种: * **IP地址**:特别是保留地址、非路由地址、广播地址。 * **不应被使用的端口号**:特别是众所周知的协议端口号和木马端口号。 * **异常信息包碎片**。 * **特殊TCP标志组合值**。 * **不应该经常出现的ICMP字节或代码**。 知道了如何用基于报头的特征数据,接下来要确定的是检查哪种信息包。确定的标准,同样是根据实际需求。 因为ICMP和UDP信息包是无状态的,所以大多数情况下,需要对它们的每一个属性都进行检查。而TCP信息包是有连接状态的,所以有时候可以只检查连接中的第一个信息包。例如,IP地址和端口这类特征,在连接的所有数据包中保持不变,只检查一次就够了。其他特征,比如TCP标志,在对话过程中不同数据包里的内容会不一样,如果要查找特殊的标志组合值,就需要对每一个数据包进行检查。检查的数量越多,消耗的资源和时间也就越多。 另外还要了解一点:关注TCP、UDP或者ICMP的报头信息,要比关注DNS报头信息更方便。因为TCP、UDP以及ICMP都属于IP协议,它们的报头信息和载荷信息都在IP数据包的payload部分。例如,要获取TCP报头数值,先解析IP报头,然后就能判断出这个载荷的父类是TCP。而像DNS这样的协议,它又包含在UDP和TCP数据包的载荷里,要获取DNS的信息,就必须深入两层才能看到真面目。而且,解析这类协议还需要更多更复杂的编程代码,完全不如TCP那样简单。实际上,这个解析操作,也正是区分不同协议的关键所在。评价一个IDS系统的好坏,也体现在它是否能够很好地分析更多的协议。结语
这篇文章对如何定制IDS的关键部件——特征数据库,做了比较详细的介绍,相信你对此已经有了更进一步的认识。入侵者总是狡猾多变的,我们不能让手里的钢刀有刃无光。要经常磨砺它、改装它,才可能以万变应万变,让入侵者胆战心惊。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
- 热门数据榜
相关攻略
2026-08-31 11:56
2026-08-31 11:56
2026-08-31 11:55
2026-08-31 11:55
2026-08-31 11:54
2026-08-31 11:53
2026-08-31 11:53
2026-08-31 11:53
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

