入侵检测基本概念检测算法基础_第1页
入侵检测基本概念检测算法基础_第2页
入侵检测基本概念检测算法基础_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、入侵检测基本概念与检测算法基础本文主要分为几个部分1.入侵检测基本概念2.入侵检测算法的理论研究发展3.入侵检测算法的一种实现尝试1.入侵检测基本概念入侵检测是一种通过收集和分析被保护系统的信息,从而发现入侵的技术。它的主要 功能是对网络和计算机系统进行实时监控,发现和识别系统中的入侵行为或企图,给出入 侵警报入侵检测攻防对抗的观点1.要想完全避免安全事件的发生并不太现实,网络安全人员需要做的是尽力发现和察 觉入侵及入侵企图(即具有高度的异常敏感性,从长远的角度来看,安全的问题本来就是 一个互相攻防对抗的过程。1安全的攻防对抗没有一招解决所有问题的技术2好的攻防思路是部署一种尽可能敏感的攻击事

2、件捕获机制,当发生了已知、或者 未知的攻击的事件时,我们能第一时间获取到关于本次攻击的尽可能多的元数据(强大的入侵检测机制3针对发生的攻击,采取针对性的防御,针对性地防御是最有效的方法漏洞进行针对性的代码修复、为系统的某个cve漏洞打上补丁(对cms的4在针对性防御的基础上,我们对一些解决方案进行归纳、总结,试图找到一种底 层性的、归类性的安全解决方案(回想历史上微软的dep、aslr、safeseh技术2.采取有效的措施来堵塞漏洞和修复系统入侵检测的定义及分类1.定义:1将入侵企图或威胁定义为未经授权蓄意尝试访问信息(sql注入、横向/纵向越权 访问、非法下载数据库/日志信息、窜改信息(挂黑

3、链、sql注入,使系统不可靠或不能 使用(种植后门木马、webshell2入侵是指有关试图破坏资源的完整性、机密性及可用性的活动集合定义(安全的三大3从分类角度指出入侵包括:3.1尝试性闯入(扫描行为3.2伪装攻击(代理、跳板攻击3.3安全控制系统渗透3.4泄漏3.5拒绝服务(ddos3.6恶意使用(僵尸网络、rootkit后门2.分类:入侵检测技术主要分成两大类型1异常入侵检测能够根据异常行为和使用计算机资源情况检测出来的入侵,异常入侵检测试图用定量方式描述可接受的行为特征,以区分非正常的、潜在的入侵性行。整个流程基本如下:1.1建立威胁模型,包括:1.1.1确定一个算法1.1.2监控哪些事

4、件的发生1.1.3需要获取哪些数据1.1.4对获取到的数据进行怎样的计算1.1.5计算的结果的上线阈值是多少1.1.6当超过这个阈值的时候,需要采取什么操作,是直接报警、还是采取权重打分 的机制1.2进行行为监控,并捕获数据1.3对捕获的数据进行异步、或实时计算1.4根据计算的结果采取相应的预设动作2误用入侵检测误用检测是指:根据己知的攻击方法,预先定义入侵特征,通过判断这此特征是否出 现来完成检测任务。误用检测中使用的检测技术主要有:模式匹配、专家系统、状态转移 等,其中模式匹配原理简单,可扩展性好,而且最为常用。据统计,现在大约的入侵检测95%的入侵检测都是特征匹配3. 异常入侵检测和误用

5、入侵检测的异同点1误用入侵检测根据己知的攻击方法,预先定义入侵特征,通过判断这此特征是否 出现来完成检测任务2异常入侵检测是检查出与正常行为相违背的行为,异常入侵检测的核心就是对合 法的行为和可疑的行为进行二值逻辑区分我个人觉得误用入侵检测更多的是一种针对性防御,根据已知的对性的匹配规则,例如:poc、exp攻击特征,指定针1 waf对web漏洞的url特征建立的阻断规则库2网络防火墙对ddos等攻击的流量模式建立规则库3杀软对已知病毒、shellcode的二进制特征、api调用特征建立规则库而异常入侵检测更侧重于对已知、未知的异常行为进行捕获、判断,本文重点学习异常入侵检测异常入侵检测方法异

6、常入侵检测的主要前提条件是将入侵性活动作为异常活动的子集。理想状况是异常活动集与入侵性活动集等同,这样,若能检测所有的异常活动,则可检测所有的入侵 性活动。但是,入侵性 活动并不总是与异常活动相符合,它们之间存在以下几种关系1异常且入侵性(黑客攻击2异常但非入侵(误报3非异常但入侵(漏报4非异常且非入侵(正常业务操作,选择忽略异常入侵要解决的问题就是构造异常活动集,并从中发现入侵性活动子集 异常入侵检测方法依赖于异常模型的建立,不同模型构成不同的检测方法。异常检测 就是通过观测到的一组测量值偏离度来预测用户行为的变化,然后作出决策判断的检测技术,对此,学术界和企业界都提出了很多优秀的异常模型,

7、在不同的场景下不同的异 常模型的效果是打不相同的我认为本质上来说,这也就一个误报、漏报的问题1我们可以通过文件行为监控,捕获所有的磁盘文件操作行为(windows、;linux都 提供了相应的callback回调api2通过逆向机器学习、行为建模、阈值判断从所有的行为中过滤出:2.1用户正常操作2.1.1文件新建管理员通过ftp、ssh、rdp登录后在web根目录下进行单个文件的新建管理员在进行文件单个、批量复制(复制文件从操作系统的层面上来看还是一 个文件新建的行为 rar压缩包解压(rar压缩包解压只是一种软件机制,在操作系统层面还是在 进行文件的

8、新建2.1.2文件修改管理员通过ftp、ssh、rdp登录后在web根目录下进行单个文件的编辑并 修改(注意:从操作系统层面来看,只有打开文件并编辑保存之后才能算文件修改,否则只 是单纯的文件访问行为2.2网站正常运行行为2.2.1文件创建网站的web系统在正常的运行过程中会有一些文件创建的行为产生 cache临时缓存文件预编译模板高速缓存网站配置信息settings高速缓存 log日志文件、error_log出错日志文件文件上传控件(fck、kindeditor导致的图片、rar附件上传 web

9、系统为了并发串行访问的需求生成临时锁文件(.lock2.2.2文件修改网站配置信息sett ings高速缓存的修改管理员进行网站模板编辑2.3黑客在尝试进行攻击2.3.1文件创建黑客通过注入拿到了网站后台,通过后台可以上传文件的地方进行上传(本质上是文件创建行为黑 客 通 过web漏 洞 的 代 码 执 行 直 接 生 成 文 件(。?黑客通过注入拿到了网站后台,通过webshellsql执行接口进行文件写入(selectshell.shell into outfile path黑客已经拿到了rdp、ssh、f

10、tp登录口令,以正常管理员的身份进行登录, 并写webshell黑客通过老的webshell上传新的webshell2.3.2文件修改黑客通过注入拿到了网站后台,对模板文件、配置文件进行修改,在其中插 入webshell(这类文件一般都是.php黑客通过老的webshell对网站的正常文件进行编辑标准的入侵检测测试数据集kdd99 data set,kdd测试数据集的这种思路我觉得非 常好,有时候,通过这种集中式的数据观察、对数据进行聚类、分段,能得到很多对入侵 行为、入侵模式新的观点。 我们需要建立一套磁盘文件行为的规范化表示,并捕获一段时 间内的记

11、录,建立一个测试数据集,为我们之后作训练作准备2.入侵检测算法的理论研究发展我们前面提到一个关键概念:异常入侵检测方法依赖于异常模型的建立,不同模型构成不同的检测方法。异常 检测就是通过观测到的一组测量值偏离度来预测用户行为的变化,然后作出决策判断 的检测技术,下面我们逐步学习几种在学术界提出的关于异常模型的思想概念0 x1:基于特征选择异常检测方法基于特征选择异常检测方法是通过从一组度量(例如文件创建时间、文件大小、时间/事件孤立度、是否包含敏感关键字中挑选能检测出入侵的度量构成向量(或者子集来准确 地预测(或分类已检测到的异常行为。这种技术的难点有以下几个:1 异常活动和入侵活动之间难于作

12、出判断(回想之前我们提到的入侵性活动和异常活动的关系2进行二值分类的特征值(阈值的选取是否合理、符合实际、达到准确效果 为此,一个度量集(特征向量对各种各样的入侵类型不可能是足够的。 在文献(网络安全入侵检测研究综述.pdf中提到使用学习分类器方案生成遗传交叉算 子和基因突变算子,除去降低预测入侵的度量子集,而采用遗传算子产生更强的度量自己 取代。这里小瀚个人觉得对于可疑磁盘文件操作行为的入侵分类,我们需要着重考虑的问题 有两个1度量子集的选取:和遗传优化算法相比,更加利于项目实践、更贴近实际的做法是将安全研究员的经 验进行固化,安全人员根据服务器渗透、入侵、cms漏洞的实际研究经验,选择在正

13、常业 务操作、和黑客攻击中所表现出的所有度量维度。以此来建立入侵检测度量子集。2测量值偏移度(异常阈值的确定:比起度量子集的选择,测量值偏移度的计算则更加棘手,即使采用安全人员的安全 知识来进行确定也具有很大的主观性、随机性的制约。很难保证确定的阈值的正确性,因 为在不同的业务场景(web系统下,超过怎样的值算作入侵,不是很容易用经验进行确定,在这方面。在这个 问题上,可以考虑引入例如机器学习、遗传算法这类的反馈机制,不断通过,通过一些学 习的过程来确定最好的阈值(所以提到引入kdd的这种思想,建立一个文件操作行为的kdd数据集,进行数据分析0 x2:基于贝叶斯推理的异常检测方法 基于贝叶斯推

14、理的异常检测方法是通过在任意给定的时刻测量值,推理判断系统是否有入侵事件发生。其中每个变量表示系统不同方面的特征:a1,a2,a3.an变量1如磁盘i/0的活动数量2或者系统中页面出错的数量下面是数学的模型定义:1假定ai变量有两个值: 1表示异常、0表示正常2 i表示系统当前遭受入侵攻击。每个异常变量ai的异常可靠性表示为:p(ai=1/l和敏感性”表示为:和p(ai=1/q因此,根据各种异常测量的值、入侵的先验概率及入侵发生时每种测量到的异常概 率,能够检测判断入侵的概率。但是,为了检测的准确性,还必须考虑各个测量ai之间的独立性。一种方法是通过相 关性分析,确定各个异常变量与入侵的关系0

15、 x3:基于模式预测的异常检测方法基于模式预测的异常检测方法的假设条件是事件序列不是随机的而是遵循可辨别的 模式。这种检测方法的特点是:1考虑了事件的序列2考虑了事件之间的相互联系teng和chen给出了基于时间的推理方法,利用时间规则来识别用户行为正常模式 的特征。classfication and detection of computer intrusions通过归纳学习产生这些规则集,并能动态地修改系统中这些规则,使之具有较高效的 预测性、准确性、和可信度,如果规则大部分时间是正确的,并能够成功地运用预测所观 察到的数据,那么规则就 具有高可信度,tlm给出了一条产生规则:(e1-e2

16、-e3-(e4=95%、e5=5%其中e1e5表示安全事件 这条规则表明:如果前面观测到事件e1-e2-e3这样一个事件链模式,则后面观测到e4事件的概率 是95%,而e5事件的概率是5%根据观察到的用户行为、或者机器行为归纳出一套规则规则集来构成用户的轮廓 框架。1如果观察到的事件序列匹配规则的左边,而后续事件显著偏离规则预测到的事 件,那么系统就可以检测出这种偏离,这就表明用户操作是异常的,否则相反这种技术的优点有:1能较好地处理变化多样的用户行为,并具有很强的时序模式2能够集中考察少数几个相关的安全事件,而不是关注可疑的整个会话过程3对发现检测系统遭受攻击,具有良好的灵敏度4根据规则的蕴

17、含语义,在系统学习阶段,能够更容易地辨别出欺骗着训练系统的 企图0 x4:基于数据采掘的异常检测方法 除了依靠安全人员的经验固化来建立规则、模式。还有一种思路是将数据挖掘技术应 用到入侵检测研究领域中,从审计数据或数据流中提取感兴趣的知识,这些知识是:1隐含的2事先未知的3潜在的有用信息 提取的知识表示为:1概念2规则3规律4模式等形式 并可用这些知识去检测异常入侵和已知的入侵。基于数据挖掘的异常检测方法目前已 有现成的kdd算法可疑借用,这种方法的优点是可适应处理大量数据的情况0 x5:适合于入侵检测的分步特征选择算法 入侵检测是一种通过收集和分析被保护系统的信息,从而发现入侵的技术。它的主

18、要 功能是对网络和计算机系统进行实时监控,发现和识别系统中的入侵行为或企图,给出入 侵警报。我们知道,入侵行为的特征是由特征来刻画的,一般情况下,只有特征向量中包含 足够多的类别信息,才能通过分类器实现正确分类:识别正常、或入侵。而问题就在于:怎么证明特征向量中是否包含足够的类别信息是很难确定的,为此,为 了提高识别率,系统总是最大限度地提取特征信息,使得特征维数增大。但是,维数的增 大、数据量的提高必然导致入侵检测系统处理的速度下降,计算资源消耗增大。同时还有另一方面,不同的特征对检测的有效性贡献也不同(即它们的权值不同,如 果对它们相同对待就会导致算法效率下降,因此,根据特征的贡献度权值分

19、配不同的资源 对入侵检测算法来说是一个值得考虑的方面因此,特征选择算法的任务主要是删除两类特征:1无用特征2冗余特征 传统入侵检测的特征选择算法是以对一组测试数据检测的正确性、或时间作为度量准 则,这种方法有一定的局限性:即使测试数据的统计特性与实际特性相同,它也是针对特定 的检测方法,缺乏普遍性抛开检测算法,从数据统计特性出发,文献提出了一种基于互信息的分步特征选择算法,首先删除无用特征,然后再删除冗余特征,减少了删除冗余特征的计算量0 x6:模式匹配算法在入侵检测中的应用我们知道,入侵检测分为误用检测和异常检测,之前学习的都是异常检测,接下来继续学习误用检测,而误用检测中使用的检测技术中占

20、大多数的主要是模式匹配是所谓的正则匹配(也就模式匹配算法性能的好坏直接影响到入侵检测系统的效率。随着网络传输速度的大幅 度提高,入侵检测系统需要处理的数据量越来越大,如果模式匹配算法来不及处理这些实 时的大量的数据包,必然 会丢弃部分数据包,而这些被丢弃的数据包中很可能就包含有入侵信息,从而造成漏报我们接下来学习几种用于入侵检测的模式匹配算法,包括:1单模式匹配算法模式匹配:是指在给定长度为n的目标串t=t1t2tn中查找长度为m的模式串p=p1p2pm的首次出现或多次出现的过程。这里ti(1isnpj(1,若1次 或 多 次 ,1次只能对1个模式串进p在行匹配的算法t中 出 现则称匹配成功,

21、否则称匹配失败。单模式匹配算法:在目标串中2多模式匹配算法在目标串中可同时对多个模式串进行匹配的算法(即多模正则匹配单模匹配算法、多模匹配算法是一种思想,它们有很多具体的算法实现,下面逐一学1.单模匹配算法1.1bruteforce算法(bf算法在bf算法的目标串和模式串的字符比较中,只要有1个字符不相等,而不管前面已 有多少个字符相等,就需要把目标串t回退,下次比较时目标串t只后移1个字符。虽然 算法简单,但效率低下从这个缺点出发,可以明白匹配算法的优化方向 高效的模式匹配算法都是设法增大不匹配时目标串t或模式串p之间的偏移量,以减 少总的比较次数(即减小时间复杂度1.2 kmp算法1970

22、年,sacook从理论上证明了一维模式匹配问题可以在o(m+2时间内解决。d.e.knuth,v.r.pratt和t.h.morris在bf算法的基础上提出了一种快速模式 匹配算法,称为kmp算法,该算法消除了bf算法的目标串指针在相当多个字符比较相等 后,只要有1个字符比较不等便需要回溯的缺点,使算法的效率得到了大幅度提高,时间 复杂度达到最理想的o(m+n,空间复杂度是o(m1.3 bm算法相对于bf算法,kmp算法虽然消除了主串指针的回溯,在不匹配时能使模式串右滑 若干位,但由上述next函数可知:右滑的最大距离不会超过1趟匹配操作所进了的比较次 数j,原因在于kmp算法的匹配操作是从左

23、到右进行的。受到rsboyer和jsmoore提出一种新的快速字符串匹配算法一1.4 rk算法kmp算法的启发,bm算法。karp和rabin在1981年提出来的rk算法利用了hash方法和素数理论。rk算法的思想是:1首先定义一个hash函数,用该函数计算出模式串p的hash函数值2再计算出目标串t中所有长度为m的子串的hash函数值3然后用相应的hash函数值进行比较。当出现hash冲突时,再进行相应字符串的 比较4当构造hash函数的素数选择得合理,hash冲突出现的概率就可以做到很小。rk算法的时间复杂度是0(mn。在实际应用中,可设法取kr算法的如果hash冲突不发生,即不再需要额外

24、的字符匹配,0(m+n;若考虑字符匹配,则rk算法的时间复杂度是适当大的素数q,使得mod q仍可执行并且hash冲突又几乎不发生,从而使得实际运行时间只需0(m+n。rk算法采用了与kmp和bf算法不同的思路,尽量减少字符之间的比较次数,从而 达到提高效率的目的2.多模式匹配算法 与单模式匹配算法相比,多模式匹配算法的优势在于一趟遍历可以对多个模式进行匹 配,从而大大提高了匹配效率。对于单模式匹配算法,如果要匹配多个模式,那么有几个 模式就需要几趟遍历。当然多模式匹配算法也适用于单模式的情况。下面学习一下多模匹配的相关算法2.1 ahocorasick(ac算法ac算法1975年产生于贝尔实

25、验室,最早用于图书馆的书目查询程序中。该算法基于 有限状态自动机(fsa,在进行匹配之前先对模式串集合sp进行预处理,形成模式树(树 形fsa,然后只需对目标串t扫描一次就可以找出所有与其匹配的模式串p。模式树k的构成如下:ac算法模式匹配的时间复杂度是的长度无关。无论模式串中,所以无论是最好情况还是最坏情况,0(n,并且与模式集中模式串的个数和每个模式串ac算法模式匹配的时间复杂度都是0(n,包括p是否出现在目标串t中,t中的每个字符都必须输入状态机预处理时间在内,ac算法总时间复杂度是o(m+n,其中m为所有模式串的长度总和22 acbm算法对多模式串的匹配而言,虽然ac算法比bm算法高效

26、得多,但ac算法必须逐一查bm算法则能够利用 右滑”ac算法中,则可大大提高commentzwalter最先将snort就是采用commentzwalter算法;baezayates结合bmp看目标串的每个字符,即必须按顺序输入,不能实现跳跃,而应用到多模式匹配算法的效率。许多人据此给出了各种改进的算法。跳 过 目 标 串 中 的 大 段 字 符, 从 而 提高搜索速度。如果将bm算法的这种启发式搜索技术bm算法和ac算法结合在一起给出了ac-bm的优化算法算法和ac算法也给出了多模式匹配改进算法。据说著名的入侵检测系统3.入侵检测算法的一种实现尝试目前对漏报的问题基本没遇到问题,但是对误报的

27、问题很严重,从特征子集(规则的角度、和偏移度(阈值这两个角度应该还有很多需要改进、优化的地方/*算法目的:对磁盘文件的正常操作、异常操作进行二值区分,起到入侵检测的作用事件特征向量维度:向量0 x1:可疑文件创建行为(on_fileadded1相邻两次文件创建时间的间距2相邻两次文件创建时间的间距的阈值(判断是否为密集文件操作3密集文件创建事件连续发生的次数密集文件创建事件(在间距阈值之内发生一次文件创建算作一次4文件的扩展名后缀5新建文件所在目录的其他文件创建时间的平均值6新建文件所在的目录是否为新建目录向量0 x2:可疑文件修改行为(on_filemodified1相邻两次文件修改时间的间

28、距2相邻两次文件修改时间的间距的阈值(判断是否为密集文件操作3密集文件修改事件连续发生的次数密集文件创建事件(在间距阈值之内发生一次文件修改算作一次4文件的扩展名后缀5文件的修改时间和创建时间的差值(表明是否是老文件被修改/头文件#include /变量声明unsigned long file_create_time_last。/记录上一次文件创建的unix时间unsignedlong file_create_time_count。/记录本次文件创建的unix时间unsigned longfile_modify_time_last。/记录上一次文件被重写、修改的unsigned long fi

29、le_modify_time_count。件被重写、修改的unix时间/记录本次文unix时间/*当有文件的创建操作时触发这个回调函数parameter:const cstring & strfilename:捕获到的磁盘文件操作的完整路径return value:1:入侵事件0:正常操作*/int on_fileadded(const cstring & strfilename/*说明:在进行实际的入侵行为判断前,先进行一次密集文件创建状态判断,因为有以下几种行为可能导致短时间内出现大量的文件创建操作被捕获1管理员通过ftp、ssh、rdp登录后在web根目录下进行单个文件的

30、新建2管理员在进行文件单个、批量复制一个文件新建的行为(复制文件从操作系统的层面上来看还是3 rar压缩包解压(rar压缩包解压只是一种软件机制,在操作系统层面还是 在进行文件的新建4 cache临时缓存文件5预编译模板高速缓存6网站配置信息settings高速缓存7 log日志文件、error_log出错日志文件8文件上传控件(fck、kindeditor导致的图片、rar附件上传9 web系统为了并发串行访问的需求生成临时锁文件(.lock在入侵检测前排除掉这部分的报告,可以减少一些误报 参数说明:两次创建事件时间间隔阈值(小于则说明在进行密集文件创建密集文件创建事件连续发生的次数内则说明

31、当前处于密集文件复制状态: 5次: 10ms(如果连续5次的文件创建时间间隔都在阈值之*/if (intensive_file_creation_detection(strfilename, 10, 5 = 1/处于文件创建密集状态,即正常操作return 0。else/并非文件创建密集状态,继续判断逻辑/参数说明: strfilename为捕获到的磁盘文件操作的完整路径if (createtime_detection(strfilename = 1/入侵事件return 1。else/正常操作return 0。/*判断是否处于文件密集创建状态中parameter:const cstring

32、& strfilename:捕获到的磁盘文件操作的完整路径int threshold:两次创建事件时间间隔阈值(小于则说明在进行密集文件创建int times:密集文件创建事件连续发生的次数(在间距阈值之内发生一次文件创建算作一次密集文件创建事件return:0:并非在进行密集文件创建操作1:正在进行密集文件创建操作*/int intensive_file_creation_detection(const cstring & strfilename, intthreshold, int timesunsigned long file_create_time_current =

33、0。/新增的当前文件的创建时间long handle。/保存指定文件的文件属性结构体的变量struct _finddata_t fileinfo。handle=_findfirst(strfilename, &fileinfo。if(-1 = handlereturn 0。file_create_time_current = fileinfo.time_create。if ( (file_create_time_current - file_create_time_last file_create_time_count+。/开始计数file_create_time_last = fil

34、e_create_time_current。else /if( (file_create_time_current - file_create_time_last 60 file_create_time_count=0。/只要有一次不满足,则计数器清零file_create_time_last = file_create_time_current。if( file_create_time_count times return 1。else return 0。/*可疑文件创建行为的入侵检测判断parameter:const cstring & strfilename:捕获到的磁盘文件操作

35、的完整路径 return:1:入侵事件0:正常操作*/int createtime_detection(const cstring & strfilenamechar * pch。char *ext = *.*。long handle。/用来保存路径中最后一个的位置的指针/需要检测的文件扩展名/保存指定文件的文件属性结构体的变量char pathbuf128 = 0。/保存路径信息的缓冲区struct _finddata_t fileinfo。char createtimebuffer50。/保存文件创建时间(用于显示之用unsigned long curfilecreatetime。

36、/新增的当前文件的创建时间unsigned longavgfilecreatetime = 0。/保存当前目录下所有文件的创建时间的平均 值int i = 0。static int num_file = 0。static int num_bad_file = 0。/只检测.php、.html文件if(ignore_ext(strfilename = 1 return 0。 /*1.获取当前新增文件的创建时间,为了之后的比较之用*/ handle=_findfirst(strfilename, &fileinfo。if(-1=handlereturn 0。curfilecreatetim

37、e = fileinfo.time_create。/*2.计算当前新增文件所在目录的所有文件的创建时间的平均值1获取路径中最后一个的位置2截取从路径开始到最后一个之前的路径字符串3拼接通配符4遍历新增的文件当前目录下的所有文件,知道找不到其他的为止*/ pch =strrchr(strfilename,。strncpy ( pathbuf, strfilename, (pch - strfilename + 1 。strncat (pathbuf,ext, 3。handle=_findfirst(pathbuf, &fileinfo。_findnext(handle,&file

38、info。if(-1=handlereturn 0。while(!_findnext(handle,&fileinfoi+。/*1.当前目录下的所有文件个数已经统计完毕2.开始遍历新增的文件当前目录下的所有文件,知道找不到其他的为止3. avgfilecreatetime最终的计算结果就已经是平均值了*/handle=_findfirst(pathbuf, &fileinfo。_findnext(handle,&fileinfo。if(-1=handlereturn 0。while(!_findnext(handle,&fileinfoavgfilecreate

39、time += (fileinfo.time_create / i。/*1.根据一个时间阈值进行可疑性判断2.注意:如果avgfilecreatetime为0,则说明是新创建的文件夹,php的写磁盘不允许直接创建新目录的同时写文件,所以如果是往新的文件夹下复制文件,一定是合法的行为,要排除这种情况*/if (avgfilecreatetime != 0if (curfilecreatetime - avgfilecreatetime 1000000/m_listbox.addstring( _t(一 个 可 疑 文 件 的 创 建 行 为 被 检 测 到 + strfilename。retur

40、n 1。elsereturn 0。elsereturn 0。_findclose(handle。/*过滤指定扩展名后缀的文件parameter:const cstring & strfilename:捕获到的磁盘文件操作的完整路径return:1:这个文件应该忽略0:这个文件不能忽略,需要继续执行检测逻辑*/int ignore_ext(const cstring & strfilenamechar * pch。/用来保存路径中最后一个.的位置的指针char extbuf20。/保存需要捕获文件后缀名char ext_php12 = .php。char ext_html12 =

41、 .html。pch = strrchr(strfilename,.。/获取路径中最后一个.的位置strcpy(extbuf, pch。if ( (strcmp(ext_php, extbuf != 0 & (strcmp(ext_html, extbuf != 0/既不是.php、也不是.html,应该忽略return 1。:elsereturn 0。/*当有文件的修改操作时触发这个回调函数parameter:const cstring & strfilename:捕获到的磁盘文件操作的完整路径 return value:1:入侵事件0:正常操作*/int on_filemo

42、dified(const cstring & strfilename/*说明:在进行实际的入侵行为判断前,先进行一次密集文件修改状态判断,因为有以下几种行为可能导致短时间内出现大量的文件修改操作被捕获1管理员通过ftp、ssh、rdp登录后在web根目录下进行单个文件的编辑 并修改(注意:从操作系统层面来看,只有打开文件并编辑保存之后才能算文件修改,否则 只是单纯的文件访问行为2网站配置信息settings高速缓存的修改3管理员进行网站模板编辑 在入侵检测前排除掉这部分的报告,可以减少一些误报 参数说明:两次创建事件时间间隔阈值(小于则说明在进行密集文件创建: 10000ms密集文件创

43、建事件连续发生的次数(如果连续5次的文件创建时间间隔都在阈值之 内则说明当前处于密集文件复制状态: 1次*/if (intensive_file_modify_detection(strfilename, 10000, 1 = 1/处于文件修改密集状态,即正常操作return 0。else/并非文件修改密集状态,继续判断逻辑/参数说明: strfilename为捕获到的磁盘文件操作的完整路径if (modifytime_detection(strfilename = 1/入侵事件return 1。else/正常操作return 0。/*判断是否处于文件密集修改状态中parameter:const cstring & strfilename:捕获到的磁盘文件操作的完整路径int threshold:两次创建事件时间间隔阈值(小于则说明在进行密集文件创建int times:密集文件创建事件连续发生的次数(在间距阈值之内发生一次文件创建算作一次密集文件创建事件retu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论