发明内容
本发明实施的目的提供一种基于双过滤机制的高速网络僵尸报文的检测方法,能够实时地对高速主干网络流量中的僵尸主机进行检测,并得到僵尸网络的规模范围。
本发明的技术方案是提供了一种基于双过滤机制的高速网络僵尸报文的检测方法,其特征在于:
步骤一、设置一个比特向量B、一个IP地址存储结构、一个僵尸主机库和一个僵尸网络控制器IP库,比特向量B是由2m个比特构成的向量,其中m是2的上标,2m是2的m次幂,m是大于1的正整数,2m个比特初始值为0,进入步骤二;
步骤二、在比特向量B和IP地址存储结构中分别记录僵尸网络控制器IP库内所有的僵尸网络控制器IP,进入步骤三;
步骤三、当测量器测量到一个报文,测量器从报文头中提取所测量报文的源IP地址、宿IP地址,在比特向量B中快速近视查找所测量报文的源IP地址,如果在比特向量B中查找成功,则进入步骤四,否则进入步骤六;
步骤四、在IP地址存储结构中精确查找所测量报文的源IP地址,如果在IP地址存储结构中成功查找到的所测量报文的源IP地址,进入步骤五,否则进入步骤六;
步骤五、将所测量报文的宿IP地址作为僵尸主机加入到僵尸主机库,进入步骤六;
步骤六、如果处理完所有报文后,对僵尸主机库的僵尸主机进行分类汇总生成僵尸网络规模报告,否则回到步骤三。
与现有技术相比,本发明具有如下优点及有效效果:
(1)本发明提出的双过滤机制检测僵尸报文能够根据已知的僵尸网络控制器IP集合,从高速主干网络中实时检测出被管理网络中被僵尸控制器所控制的僵尸主机规模;
(2)本发明是采用一个比特向量对所有网络流量报文进行快速近似地第一次过滤,对于通过第一次过滤的报文然后采用IP地址存储结构进行第二次精确过滤,比特向量第一次近似过滤方法只会存在误报不会存在漏报,第二次精确过滤将误报删除;
(3)由于直接进行精确匹配的方法难以适应高速网络流量需求,本发明所提出的双过滤机制方法能够应用在大规模高速主干网络的环境中进行僵尸检测过滤。
具体实施方式
下面将结合本发明实施实例中的附图,对本发明实施实例中的技术方案进行清楚、完整地描述,当然所描述的实施实例仅仅是本发明一部分实施实例,而不是全部的实施实例。
实施实例1
本发明实施例提供了一种基于双过滤机制的高速网络僵尸报文的检测方法,图1为本发明基于双过滤机制的高速网络僵尸报文的检测方法流程示意图,如图1所示,该方法包括如下步骤:
步骤一、设置一个比特向量B、一个IP地址存储结构、一个僵尸主机库和一个僵尸网络控制器IP库,比特向量B是由2m个比特构成的向量,其中m是2的上标,2m是2的m次幂,m是大于1的正整数,2m个比特初始值为0,IP地址存储结构是由2n个32比特正整数构成的向量,其中n是2的上标,2n是2的n次幂,2n大于所要检测僵尸网络控制器IP数量,初始的时候这2n个正整数均设置为0,进入步骤二;
步骤二、在比特向量B和IP地址存储结构中分别记录僵尸网络控制器IP库内所有的僵尸网络控制器IP,所述的比特向量B记录僵尸网络控制器IP库内所有的僵尸网络控制器IP的步骤包括:设置一个哈希函数H1,哈希函数H1的输入是IP地址,输出是有一个m个比特的比特串的步骤,将每个僵尸网络控制器IP地址作为哈希函数H1的输入,并由哈希函数H1输出一个正整数,并以在这个正整数为比特向量B的指针,同时将指针指向的比特向量B的比特值设置为1的步骤,
IP地址存储结构记录僵尸网络控制器IP库内所有的僵尸网络控制器IP包括:设置一个哈希函数H2的输入是一个IP地址,输出是由一个n比特构成的比特串,将每个僵尸网络控制器IP作为哈希函数H2的输入生成一个正整数,并以在这个正整数为IP地址存储结构的指针,查找指针对应的IP地址存储结构中的值,如果所对应值为0,则将该僵尸网络控制器IP地址记录在指针指向的IP地址存储结构中的相应位置上;如果所对应值不为0,则从IP地址存储结构中查找下一个值,直到找到一个为0的值,并在与这个0值所对应的IP地址存储结构的位置上记录所述僵尸网络控制器IP地址。
步骤三、当测量器测量到一个报文,测量器从报文头中提取所测量报文的源IP地址、宿IP地址,在比特向量B中快速近视查找所测量报文的源IP地址,将所测量报文的源IP地址作为哈希函数H1的输入,查找比特向量B中哈希函数H1输出值所对应位置的比特值,如果其比特值为1,返回查找成功,如果在比特向量B中查找成功,则进入步骤四,否则进入步骤六;
步骤四、在IP地址存储结构中精确查找所测量报文的源IP地址,对于在IP地址存储结构中精确查找所测量报文的源IP地址包括:首先将所测量报文的源IP地址作为哈希函数H2的输入,查找IP地址存储结构中输出值对应位置的正整数,从IP地址存储结构中查找下一个正整数方法:如果查找到IP地址存储结构中的最后一个正整数后还需要查找下一个正整数,则从IP地址存储结构中的第一个正整数开始查找,如果所对应正整数等于所测量报文的源IP地址,则返回成功查找,否则如果所对应正整数不等于所测量报文的源IP地址,且所对应位置的正整数值为0,则返回失败查找,否则进入查找IP地址存储结构中下一个正整数继续查找,如果在IP地址存储结构中成功查找到的所测量报文的源IP地址,进入步骤五,否则进入步骤六;
步骤五、将所测量报文的宿IP地址作为僵尸主机加入到僵尸主机库,将所测量报文的源IP地址和宿IP地址作为一条记录写在僵尸主机库中,其中所测量报文的源IP地址为僵尸控制器IP地址,所测量报文的宿IP地址为受僵尸控制器IP地址所控制的僵尸主机,进入步骤六;
步骤六、如果处理完所有报文后,对僵尸主机库的僵尸主机进行分类汇总生成僵尸网络规模报告,将僵尸主机库中所有记录按照源IP地址进行聚类,统计每个源IP地址所对应不同宿IP地址的数量作为以源IP地址为僵尸网络控制器所控制的僵尸网络的规模,否则回到步骤三。
实施实例2
步骤一(1):设置一个比特向量B、一个IP地址存储结构和给定一个僵尸网络控制器IP集合,设已知僵尸网络控制器IP集合中的IP地址为IP1、IP2和IP3,其中比特向量B由23=8个比特构成的向量,8个比特初始值为0;IP地址存储结构是由22=4个32比特正整数构成的向量,初始的时候这4个正整数均设置为0,进入步骤二(2);
步骤二(2):在比特向量B和IP地址存储结构中分别记录僵尸网络控制器IP集合,其中比特向量B记录僵尸网络控制器IP集合的步骤包括:
(1)设置一个哈希函数H1,该函数的输入是IP地址,输出是一个3个比特的比特串,设H1(IP1)=3、H1(IP2)=7、H1(IP3)=2;
(2)将僵尸网络控制器IP地址IP1作为哈希函数H1的输入,对应一个输出值H1(IP1)=3,将比特向量B中输出值对应位置第3个比特的比特值设置为1;将僵尸网络控制器IP地址IP2作为哈希函数H1的输入,对应一个输出值H1(IP2)=7,将比特向量B中输出值对应位置第7个比特的比特值设置为1;将僵尸网络控制器IP地址IP3作为哈希函数H1的输入,对应一个输出值H1(IP3)=2,将比特向量B中输出值对应位置第2个比特的比特值设置为1;
IP地址存储结构记录僵尸网络控制器IP集合的步骤包括:
(1)设置一个哈希函数H2的输入是一个IP地址,输出是有一个2比特的比特串,设H2(IP1)=1、H2(IP2)=3、H2(IP3)=1;
(2)将僵尸网络控制器IP地址IP1作为哈希函数H2的输入生成一个输出值H2(IP1)=1,查找输出值对应位置1的IP地址存储结构中的正整数;
(3)IP地址存储结构中位置1所对应正整数为0,将该僵尸网络控制器IP地址IP1记录在位置1所对应正整数中;
(4)将僵尸网络控制器IP地址IP2作为哈希函数H2的输入生成一个输出值H2(IP2)=3,查找输出值对应位置3的IP地址存储结构中的正整数;
(5)IP地址存储结构中位置3所对应正整数为0,将该僵尸网络控制器IP地址IP2记录在位置1所对应正整数中;
(6)将僵尸网络控制器IP地址IP3作为哈希函数H2的输入生成一个输出值H2(IP3)=1,查找输出值对应位置1的IP地址存储结构中的正整数;
(7)对应位置1正整数不为0,则从IP地址存储结构中查找下一个位置2的正整数,位置2的正整数为0,将该僵尸网络控制器IP地址IP3记录在该正整数中;
进入步骤三(3)
步骤三(3):设一共测量到4个报文,第一个报文的源IP地址为SIP1和宿IP地址为DIP1,第二个报文的源IP地址为SIP2和宿IP地址为DIP2,第三个报文的源IP地址为SIP3和宿IP地址为DIP3,第4个报文的源IP地址为SIP4和宿IP地址为DIP4,其中SIP1=IP1、SIP3=IP3;H1(SIP1)=H1(IP1)=3、H1(SIP2)=5、H1(SIP3)=H1(IP3)=2、H1(SIP4)=7;H2(SIP1)=H2(IP1)=1、H2(SIP2)=2、H2(SIP3)=H2(IP3)=1、H2(SIP4)=0;
对于第一个被测量到的报文,在比特向量B中匹配其源IP地址SIP1,具体方法是:将网络报文的源IP地址SIP1作为哈希函数H1的输入,查找比特向量B中哈希函数H1输出值H1(SIP1)=H1(IP1)=3所对应位置的比特值,其比特值为1,返回成功,进入步骤四(4);
步骤四(4):对于在比特向量B中成功匹配的报文源IP地址SIP1,在IP地址存储结构中查找报文源IP地址SIP1,对于在IP地址存储结构中查找IP地址的具体方法是:首先将报文的源IP地址SIP1作为哈希函数H2的输入,查找IP地址存储结构中输出值对应位置H2(SIP1)=H2(IP1)=1的正整数,所对应正整数为IP1等于报文源IP地址SIP1,则返回成功查找,进入步骤五(5);
步骤五(5):对于在IP地址存储结构中成功查找到的报文源IP地址,将该报文的宿IP地址作为僵尸主机加入到僵尸主机库,具体方法是将报文的源IP地址和宿IP地址作为一条记录写在僵尸主机库中,其中报文的源IP地址为僵尸控制器IP地址,报文的宿IP地址为受僵尸控制器IP地址所控制的僵尸主机,进入步骤六(6);
步骤六(6):处理下一个被测量报文,回到步骤三(7);
步骤三(7):对于第二个被测量到的报文,在比特向量B中匹配其源IP地址SIP2,具体方法是:将网络报文的源IP地址SIP2作为哈希函数H1的输入,查找比特向量B中哈希函数H1输出值H1(SIP2)=5所对应位置的比特值,其比特值为0,返回失败匹配,进入步骤六(8);
步骤六(8):处理下一个被测量报文,回到步骤三(9);
步骤三(9):对于第三个被测量到的报文,在比特向量B中匹配其源IP地址SIP3,具体方法是:将网络报文的源IP地址SIP3作为哈希函数H1的输入,查找比特向量B中哈希函数H1输出值H1(SIP3)=H1(IP3)=2所对应位置的比特值,其比特值为1,返回成功,进入步骤四(10);
步骤四(10):对于在比特向量B中成功匹配的报文源IP地址SIP3,在IP地址存储结构中查找报文源IP地址SIP3,对于在IP地址存储结构中查找IP地址的具体方法是:首先将报文的源IP地址SIP3作为哈希函数H2的输入,查找IP地址存储结构中输出值对应位置H2(SIP3)=H2(IP3)=1的正整数,所对应正整数为IP1不等于报文源IP地址SIP3,查找IP地址存储结构中第二个位置正整数,找IP地址存储结构中输出值对应位置H2(SIP3)=H2(IP3)=1的正整数,所对应正整数为IP3不等于报文源IP地址SIP3,进入步骤五(11);
步骤五(11):对于在IP地址存储结构中成功查找到的报文源IP地址SIP3,将该报文的宿IP地址作为僵尸主机加入到僵尸主机库,具体方法是将报文的源IP地址和宿IP地址作为一条记录写在僵尸主机库中,其中报文的源IP地址为僵尸控制器IP地址,报文的宿IP地址为受僵尸控制器IP地址所控制的僵尸主机,进入步骤六(12);
步骤六(12):处理下一个被测量报文,回到步骤三(13);
步骤三(13):当第四个报文到达测量器,测量器从报文头中提取其源IP地址、宿IP地址,在比特向量B中匹配其源IP地址,具体方法是:将网络报文的源IP地址SIP4作为哈希函数H1的输入,查找比特向量B中哈希函数H1输出值H1(SIP4)=7所对应位置的比特值,其比特值为1,返回成功匹配,则进入步骤四(14);
步骤四(14):对于在比特向量B中成功匹配的报文源IP地址SIP4,在IP地址存储结构中查找报文源IP地址SIP4,对于在IP地址存储结构中查找IP地址的具体方法是:首先将报文的源IP地址SIP4作为哈希函数H2的输入,查找IP地址存储结构中输出值对应位置H2(SIP4)=0的正整数,所对应位置的正整数值为0,则返回失败查找,进入步骤六(15);
步骤六(15):处理完所有的被测量报文后,对僵尸主机库的僵尸主机进行分类汇总生成僵尸网络规模报告,具体方法是:将僵尸主机库中所有记录按照源IP地址进行聚类,统计每个源IP地址相同而不同宿IP地址的数量作为源IP地址僵尸网络控制器所控制的僵尸网络的规模,
输出结果为
僵尸控制器IP地址IP1,控制僵尸主机1个;
僵尸控制器IP地址IP2,控制僵尸主机0个;
僵尸控制器IP地址IP3,控制僵尸主机1个;
方法结束。