发明名称 基于改进OBS-NMF算法的入侵检测方法
摘要 本发明公开了一种基于改进OBS-NMF算法的入侵检测方法,主要解决已有技术存在的处理高维数据能力低,鲁棒性不强,阈值选取范围小,检测结果不理想的问题。其实现步骤为:(1)收集进程系统调用;(2)构造并简化训练矩阵;(3)对训练矩阵进行降维分解;(4)判断是否满足收敛条件,若满足,则执行步骤(5),否则返回步骤(3)继续迭代,直到达到最大迭代次数;(5)构造测试矩阵U;(6)利用基矩阵W求解U的特征系数向量hu;(7)求解U中进程向量的异常度;(8)设定阈值λ,输出检测结果。本发明具有实现简单,稳定性好,检测精度高,阈值选取范围大和实时性强的优点,可用于基于主机系统调用的实时入侵检测。
申请公布号 CN101866403A 申请公布日期 2010.10.20
申请号 CN201010199102.2 申请日期 2010.06.11
申请人 西安电子科技大学 发明人 马文萍;焦李成;赵富家;公茂果;刘芳;王爽;尚荣华;马晶晶
分类号 G06F21/00(2006.01)I 主分类号 G06F21/00(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华;朱红星
主权项 1.一种基于改进OBS-NMF算法的入侵检测方法,包括如下步骤:(1)运行客户端计算机,利用服务器对其进行入侵攻击,监视系统运行中产生的正常进程和异常进程,收集进程执行过程中产生的系统调用;(2)将收集到的每一个正常进程按照系统调用号从小到大构造一个进程向量,将系统调用出现的次数作为向量的元素,设定训练矩阵规模,将每一个向量依次输入作为训练矩阵的一列,构建出训练矩阵V<sup>*</sup>表示如下:<maths num="0001"><![CDATA[<math><mrow><msub><msup><mi>V</mi><mo>*</mo></msup><mrow><mi>n</mi><mo>&times;</mo><mi>m</mi></mrow></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>3</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>2</mn></mtd><mtd><mn>2</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mrow><mo>[</mo><msub><msup><mi>v</mi><mo>*</mo></msup><mn>1</mn></msub><mo>,</mo><msub><msup><mi>v</mi><mo>*</mo></msup><mn>2</mn></msub><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><msup><msub><mi>v</mi><mi>i</mi></msub><mo>*</mo></msup><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><msub><msup><mi>v</mi><mo>*</mo></msup><mi>m</mi></msub><mo>]</mo></mrow></mrow></math>]]></maths>n是最大系统调用号,m是进程数,v是系统调用次数;(3)删除训练矩阵中0元素比例大于95%的行,并标记被删除的行,计算训练矩阵中各系统调用在相应进程中的使用概率,将V<sup>*</sup>简化成矩阵V;(4)使用OBS-NMF算法对简化后的训练矩阵V进行降维分解,使得V≈WH,W表示V的权值矩阵,其大小为n×r,H表示V的系数矩阵,其大小为r×m,r表示分解因子,W和H的初始值取随机值;(5)利用以下迭代公式求得权值矩阵W和系数矩阵H:W<sup>+</sup>←((H·H<sup>T</sup>)<sup>-1</sup>·H·V<sup>T</sup>)<sup>T</sup>W=W<sup>+</sup>+ΔW<sup>+</sup>H<sup>+</sup>←(W·(W<sup>T</sup>·W)<sup>-1</sup>)<sup>T</sup>·VH=H<sup>+</sup>+ΔH<sup>+</sup>其中W<sup>+</sup>和H<sup>+</sup>分别是W和H的过渡变量,<img file="FSA00000158300800012.GIF" wi="614" he="137" /><img file="FSA00000158300800021.GIF" wi="570" he="153" />分别表示调整W<sup>+</sup>和H<sup>+</sup>后引起的均方误差增量,j=1,2,…,n,e<sub>j</sub>第j列的单位矩阵,矩阵W<sub>j</sub>=W<sup>+</sup>e<sub>j</sub>,H<sub>j</sub>=H<sup>+</sup>e<sub>j</sub>,5<r<20;(6)选择最大迭代次数maxiter=1000,判断V与WH的迭代误差是否满足收敛条件Conv>γ,其中,0.8<γ<1,若满足,则执行步骤(7),否则返回步骤(5)继续迭代,直到达到最大迭代次数maxiter,迭代误差式表示为:<maths num="0002"><![CDATA[<math><mrow><mi>Conv</mi><mo>=</mo><munder><mi>min</mi><mi>i</mi></munder><mrow><mo>(</mo><mfrac><mrow><msubsup><mi>v</mi><mi>i</mi><mi>T</mi></msubsup><mrow><mo>(</mo><msub><mi>Wh</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow><mrow><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>v</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>2</mn></msub><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>Wh</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>2</mn></msub></mrow></mfrac><mo>)</mo></mrow><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mi>m</mi></mrow></math>]]></maths>其中,h<sub>i</sub>表示H矩阵的列向量;(7)取全部正常进程和异常进程作为测试样本,对该测试样本执行步骤(2),并删除步骤(3)中标记的行,得到测试矩阵U,使用如下公式,求解U中每个列向量u的特征系数向量h<sub>u</sub>:h<sub>u</sub>=(W<sup>T</sup>·W)<sup>-1</sup>·W<sup>T</sup>·u;(8)比较h<sub>u</sub>与H中每个向量h<sub>i</sub>的正弦距离,将最小的正弦距离作为U中每个进程向量u的异常度e:<maths num="0003"><![CDATA[<math><mrow><mi>e</mi><mo>=</mo><mn>1</mn><mo>-</mo><munder><mi>max</mi><mi>i</mi></munder><mrow><mo>(</mo><mfrac><mrow><msubsup><mi>h</mi><mi>u</mi><mi>T</mi></msubsup><msub><mi>h</mi><mi>i</mi></msub></mrow><mrow><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>h</mi><mi>u</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>2</mn></msub><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>h</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>2</mn></msub></mrow></mfrac><mo>)</mo></mrow><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mi>m</mi><mo>;</mo></mrow></math>]]></maths>(9)设定门限阈值0<λ<0.1,如果e>λ,则表明该进程存在异常,提示系统进行处理,否则提示进程安全。
地址 710071 陕西省西安市太白南路2号