背景技术
僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染僵尸程序病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
僵尸网络是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模网络攻击,如分布式拒绝服务攻击、海量垃圾邮件攻击等。是一种一对多的控制关系,正式这种拓扑关系的原因,使得攻击者能够以极低的代价高效地控制大量的资源为其服务。
ICR(因特网中继聊天)僵尸网络的建立、控制和攻击过程如下:
控制者建立IRC聊天频道,生成包含IRC服务地址、聊天频道、用户名、密码等信息的各个僵尸程序;控制者把所述僵尸程序植入受害者主机,从而使得受害者主机变成僵尸主机;所述僵尸主机根据所述僵尸程序中的信息,加入IRC聊天频道;控制者登陆受害者的聊天频道;僵尸主机等待攻击和控制指令;控制者在受害者的聊天频道发布一条攻击或控制指令;IRC服务器把该指令下发给聊天频道内的所有用户;各个受害者主机中植入的僵尸程序接收到命令后,解析攻击命令,发动对受害者主机的DDOS(分布式拒绝服务)攻击。
针对僵尸网络目前的状况,其检测方法都是相互独立的,主要有三种检测手段,即报文特征分析检测、行为分析检测和基于蜜罐***捕获。这三种方法的原理及缺点列举如下:
报文特征分析检测室根据报文的特征来检测IRC僵尸网络。因为IRC僵尸网络控制者和僵尸主机登录于同一IRC聊天频道,IRC聊天内容能同时分发给控制者和僵尸主机,特征检测的方法因为没有继续对控制者和僵尸主机 进行进一步地行为监控,从而容易把IRC服务器、控制者和僵尸主机三者混淆。
基于行为分析检测IRC僵尸网络是依据用户名的命名规律和IRC僵尸用户长时间静默等行为特点进行IRC僵尸网络的检测。行为分析检测本身就具有一定的误报和漏报。并且IRC僵尸网络控制者和僵尸网络具有类似的行为特征,这样就很容易混淆IRC僵尸网络的各个角色。
基于蜜罐***捕获僵尸网络则是依据搭建的蜜罐,被动等待僵尸网络的入侵和控制,这就存在不能对僵尸网络做出实时响应以及后续人工参与分析工作量大等缺点。
发明内容
有鉴于此,本发明的目的在于提出一种僵尸网络的检测方法和装置,该僵尸网络的检测方法和装置能够实时地对僵尸网络做出相应,有效遏制僵尸网络发起的恶意行为。
基于上述目的本发明提供的僵尸网络的检测方法,包括如下步骤:1)进行僵尸网络特征检测并提取僵尸网络信息;2)根据所述僵尸网络信息进行行为检测的监控并把所述僵尸网络信息存入监控表;3)定时扫描所述监控表;4)将从监控表中扫描的僵尸网络信息写入待写数据库。
可选的,所述监控表包括控制者监控表和英特网中继聊天服务器监控表。
可选的,步骤2)进一步包括如下步骤:
51)获得来自特征检测消息队列的僵尸网络信息并同时进入步骤52);52)以源IP地址和僵尸工具名作为验证码计算哈希值并同时进入步骤53);53)判断源IP地址和所述僵尸工具是否在控制者监控表;若是,则进入步骤510);若否,则进入步骤54;510)更新节点时间;54)判断源网络间互联协议地址和所述僵尸工具是否在英特网中继聊天服务器监控表;若是,则进入步骤55);若否,则进入步骤511);511)创建哈希节点,进入步骤512);512)把目的网络间互联协议地址挂到上述哈希节点的通信对端单链表,进入步骤513);513)英特网中继聊天服务器监控表哈希节点的个数增加,进入步骤59);55)更新节点时间戳,即更新节点时间,并同时进入步骤56);56)判断目的网络间互联协议地址是否在该节点的通信对端链表 中;若是,则进入步骤59);若否,则进入步骤57);57)创建通信对端单链表节点并同时进入步骤58);58)英特网中继聊天服务器监控表中的哈希节点的数目增加并同时进入步骤59);59)结束。
可选的,步骤3)进一步包括如下步骤:
61)判断英特网中继聊天服务器监控表节点是否为空;若是,则进入步骤610),若否,则进入步骤62);610)扫描控制者监控表并进入步骤611);611)判断控制者监控表中的节点是否为空;若是,则进入步骤69;若否,则进入步骤612);612)判断控制者监控表的节点创建时间是否超过老化时间阈值;若是,则进入步骤613);若否,则进入步骤615);613)把与控制者、英特网中继聊天服务器等相关的僵尸网络信息放入待写数据库队列并进入步骤614);614)删除控制者监控表节点并进入步骤615);615)读取下一个单链表节点并返回步骤611);62)判断英特网中继聊天服务器监控表节点的创建时间是否超过控制者监控时间阈值且英特网中继聊天服务器监控表节点个数为1,若是,则进入步骤616);若否,则进入步骤63);616)把英特网中继聊天服务器控制表节点加入控制者监控表中,其中控制者网络间互联协议地址赋值为服务器网络间互联协议地址,所述服务器网络间互联协议地址赋值为通信对端网络间互联协议地址,并进入步骤617);617)删除所述英特网中继聊天服务器控制表节点,并进入步骤618);618)读取下一个英特网中继聊天服务器控制表节点,并返回步骤61);63)判断英特网中继聊天服务器监控表节点创建的时间是否超过老化时间阈值;若是,则进入步骤64);若否,则进入步骤619);64)判断通信对端单链表是否为空;若是,则删除该英特网中继聊天服务器监控表节点;若否,则进入步骤65);65)赋值,即将通信对端链表中节点的网络间互联协议地址逐个作为僵尸网络间互联协议地址,对所述通信对端链表中的僵尸网络信息进行赋值并进入步骤66);66)将所述僵尸网络信息放入待写数据库队列并进入步骤67);67)删除所述通信对端单链表并进入步骤68);68)取下一个通信对端单链表节点并返回步骤64);69)结束。
进一步,本发明提供一种僵尸网络的检测装置,包括特征检测模块、行为检测模块、定时扫描模块、记录模块;所述特征检测模块进行僵尸网络特征检测并提取僵尸网络信息;所述行为检测模块根据所述僵尸网络信息进行行为检测的监控并把所述僵尸网络信息存入监控表;所述定时扫描模 块定时扫描所述监控表;所述记录模块将从监控表中扫描的僵尸网络信息写入待写数据库。
可选的,所述监控表包括控制者监控表和英特网中继聊天服务器监控表。
可选的,所述行为检测模块在根据所述僵尸网络信息进行行为检测的监控并把所述僵尸网络信息存入监控表时,执行如下步骤:
51)获得来自特征检测消息队列的僵尸网络信息并同时进入步骤52);52)以源IP地址和僵尸工具名作为验证码计算哈希值并同时进入步骤53);53)判断源IP地址和所述僵尸工具是否在控制者监控表;若是,则进入步骤510);若否,则进入步骤54;510)更新节点时间;54)判断源网络间互联协议地址和所述僵尸工具是否在英特网中继聊天服务器监控表;若是,则进入步骤55);若否,则进入步骤511);511)创建哈希节点,进入步骤512);512)把目的网络间互联协议地址挂到上述哈希节点的通信对端单链表,进入步骤513);513)英特网中继聊天服务器监控表哈希节点的个数增加,进入步骤59);55)更新节点时间戳,即更新节点时间,并同时进入步骤56);56)判断目的网络间互联协议地址是否在该节点的通信对端链表中;若是,则进入步骤59);若否,则进入步骤57);57)创建通信对端单链表节点并同时进入步骤58);58)英特网中继聊天服务器监控表中的哈希节点的数目增加并同时进入步骤59);59)结束。
可选的,所述定时扫描模块定时扫描所述监控表时执行如下步骤:
61)判断英特网中继聊天服务器监控表节点是否为空;若是,则进入步骤610),若否,则进入步骤62);610)扫描控制者监控表并进入步骤611);611)判断控制者监控表中的节点是否为空;若是,则进入步骤69;若否,则进入步骤612);612)判断控制者监控表的节点创建时间是否超过老化时间阈值;若是,则进入步骤613);若否,则进入步骤615);613)把与控制者、英特网中继聊天服务器等相关的僵尸网络信息放入待写数据库队列并进入步骤614);614)删除控制者监控表节点并进入步骤615);615)读取下一个单链表节点并返回步骤611);62)判断英特网中继聊天服务器监控表节点的创建时间是否超过控制者监控时间阈值且英特网中继聊天服务器监控表节点个数为1,若是,则进入步骤616);若否,则进入步骤63);616)把英特网中继聊天服务器控制表节点加入控制者监控表中,其中控制者网络 间互联协议地址赋值为服务器网络间互联协议地址,所述服务器网络间互联协议地址赋值为通信对端网络间互联协议地址,并进入步骤617);617)删除所述英特网中继聊天服务器控制表节点,并进入步骤618);618)读取下一个英特网中继聊天服务器控制表节点,并返回步骤61);63)判断英特网中继聊天服务器监控表节点创建的时间是否超过老化时间阈值;若是,则进入步骤64);若否,则进入步骤619);64)判断通信对端单链表是否为空;若是,则删除该英特网中继聊天服务器监控表节点;若否,则进入步骤65);65)赋值,即将通信对端链表中节点的网络间互联协议地址逐个作为僵尸网络间互联协议地址,对所述通信对端链表中的僵尸网络信息进行赋值并进入步骤66);66)将所述僵尸网络信息放入待写数据库队列并进入步骤67);67)删除所述通信对端单链表并进入步骤68);68)取下一个通信对端单链表节点并返回步骤64);69)结束。
从上面所述可以看出,本发明提供的僵尸网络的检测方法,有效地结合了报文特征分析检测和基于行为分析检测的优势有效结合起来,首先根据报文特征识别出僵尸网络,然后对僵尸网络进行进一步行为分析和监控从而精确识别出僵尸网络的服务器、控制者、僵尸主机各个角色,所有过程都是设备自动化完成,不需要人工参与,减轻工作量,可以实时地对僵尸网络做出响应,从而有效的从源头上遏制僵尸网络发起分布式拒绝服务(DistributedDenial of service,DDOS)攻击等恶意行为,使得网络通信更加高效和安全。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本实施例中的僵尸网络监测方法,通过部署网络检测设备,首先根据规 则库进行报文特征检测,监控到控制者和IRC服务器、IRC服务器和僵尸主机的通信报文,并对其作丢弃处理,从而阻断僵尸网络的通信。然后通过所述检测设备建立控制者僵尸主机和IRC服务器监控表,进行IRC僵尸网络的后续的行为分析和监控,以明确检测出IRC服务器、控制者、僵尸主机等IRC僵尸网络的各个角色。
图1为僵尸网络攻击指令的下达和转发示意图。控制者下发指令到IRC服务器;再由IRC服务器对所述控制者下发的指令进行转发,发送至僵尸主机,同时所述IRC服务器将指令转发的信息发送给控制者。对于同一个指令,IRC僵尸网络会对应地产生三种类型的僵尸网络报文,包括:控制者下发某条指令,由控制者到IRC服务器的报文;IRC服务器转发该指令,由IRC服务器到僵尸主机的报文;以及IRC服务器转发该指令,由IRC服务器到控制者的报文。对于所述指令,则设备首先根据规则库进行报文特征检测,识别出僵尸工具名、命令,源IP(网络间互联协议)地址,目的IP地址等信息。设备把该信息放入控制者监控链表和IRC服务器监控表,进行后续的行为监控。
如图2所示,控制者监控表21是哈希链表,把控制者的信息在内存中暂时缓存起来以用于行为监测。控制者IP地址和僵尸工具名作为验证码(key)算出哈希(hash)值,控制者监控表21包括节点22(node),其主要信息包括控制者IP地址(CtrlIP:control IP)、IRC僵尸工具名(tool)、节点创建时间、节点更新时间。
I如图3所示,RC服务器监控表31也是哈希链表,IRC服务器IP地址和僵尸工具名作为key算出hash值。其hash节点32主要信息包括IRC服务器IP地址(SerIP)、僵尸工具名(tool)、该服务器通信的对端IP地址个数(num)、与该服务器通信的对端IP单链表33、节点创建时间、节点更新时间。其中通信对端IP单链表33包括对端IP地址(OppIP)和标志(flag)。
本发明实施例的具体检测流程如图4所示,包括如下步骤。
步骤1:特征检测进程。即僵尸网络特征检测以初步检测僵尸网络;根据僵尸网络中的报文内容进行僵尸特征检测并提取僵尸网络信息,然后把源IP地址、目的IP地址、僵尸工具名、僵尸工具的指令号等信息写入到特征检测消息队列a,并把检测到的僵尸网络报文丢弃。
步骤2:行为监控进程。即僵尸网络行为监控以检测出僵尸网络,从所 述特征检测消息队列a获取僵尸网络信息,把相应信息存入控制者监控表b和IRC服务器监控表c进行行为检测的监控。
步骤3:定时进程:定时扫描控制者监控表和IRC服务器监控表,把需要老化的信息及时老化,把需要存储的信息放入待写数据库消息队列d。为了提高查找效率,可以在***初始化时的预分配上述各个监控表中的节点,并为其建立活跃度表。所述需要老化的信息包括节点,所述需要存储的信息包括节点所包含的信息。
步骤4:写数据库进程。从待写数据库消息队列中提取消息,把IRC僵尸网络信息写入所述待写数据库存储起来。
上述步骤中,行为监控进程的流程图如图5所示,包括如下步骤:
步骤51:获取僵尸网络信息。本步骤中,获得来自特征检测消息队列的僵尸网络信息并同时进入步骤52。
步骤52:计算hash值。本步骤中,以源IP地址和僵尸工具名作为key计算hash值并同时进入步骤53。其中,hash值代表在hash冲突链中的索引。其中,hash冲突链包含多个单链表,每个所述索引对应一个单链表。
步骤53:判断控制者监控表。本步骤中,判断源IP地址和所述僵尸工具是否在控制者监控表;若是,则进入步骤510;若否,则进入步骤54。
步骤510:更新节点时间。
步骤54:判断IRC服务器监控表。本步骤中,判断源IP地址和所述僵尸工具是否在IRC服务器监控表;若是,则进入步骤55;若否,则进入步骤511。
步骤511:创建hash节点,进入步骤512。
步骤512:把信息挂入通信对端单链表。本步骤中,把目的IP地址挂到上述hash节点的通信对端单链表,进入步骤513。
步骤513:增加节点个数。本步骤中,IRC服务器监控表hash节点的个数增加,进入步骤59。
步骤55:更新节点时间戳,即更新节点时间,并同时进入步骤56。
步骤56:判断通信对端链表。本步骤中,判断目的IP地址是否在该节点的通信对端链表中;若是,则进入步骤59;若否,则进入步骤57。
步骤57:创建通信对端单链表节点。本步骤中,创建通信对端单链表节点并同时进入步骤58。
步骤58:节点数目增加。本步骤中,IRC服务器监控表中的hash节点的数目增加并同时进入步骤59。
步骤59:结束。
图6为图4中定时进程的流程图,在此进程中,定时器定时扫描IRC服务器监控表,对超出控制者监控时间阈值且通信对端数目为1的节点判断为是控制者发往IRC服务器的报文,从而确定出控制者和IRC服务器。对于和所述僵尸服务器IRC通信的对端则判定为僵尸主机。至此明确出IRC僵尸网络的IRC服务器、控制者和僵尸主机等各角色。具体的,所述定时进程包括如下步骤:
步骤61:判断IRC服务器监控表节点是否为空;若是,则进入步骤610,若否,则进入步骤62。
步骤62:判断节点创建时间是否超过阈值且节点个数是否为1,判断IRC服务器监控表节点的创建时间是否超过控制者监控时间阈值IRC服务器监控表节点个数为1,若是,则进入步骤616;若否,则进入步骤63。
步骤63:判断IRC服务器监控表节点创建的时间是否超过老化时间阈值;若是,则进入步骤64;若否,则进入步骤619。
步骤64:判断通信对端单链表是否为空;若是,则删除该IRC服务器监控表节点;若否,则进入步骤65。
步骤65:赋值,即将通信对端链表中节点的IP地址逐个作为僵尸IP地址,SerIP作为服务器IP地址,对所述通信对端链表中的僵尸网络信息进行赋值并进入步骤66。
步骤66:放入待写数据库队列,即将所述僵尸网络信息放入待写数据库队列并进入步骤67。
步骤67:删除单链表节点。在本步骤中,删除所述通信对端单链表节点并进入步骤68。
步骤68:取下一个通信对端单链表节点并返回步骤64。
步骤69:结束。
步骤610:扫描控制者监控表并进入步骤611。
步骤611:判断控制者监控表中的节点是否为空;若是,则进入步骤69;若否,则进入步骤612。
步骤612:判断控制者监控表的节点创建时间是否超过老化时间阈值; 若是,则进入步骤613;若否,则进入步骤615。
步骤613:把相关信息放入待写数据库队列。在本步骤中,把与控制者、IRC服务器等相关的僵尸网络信息放入待写数据库队列并进入步骤614。
步骤614:删除控制者监控表节点并进入步骤615。
步骤615:读取下一个单链表节点并返回步骤611。
步骤616:赋值。在本步骤中,把IRC服务器控制表节点加入控制者监控表中,其中CtrlIP赋值为SerIP,SerIP赋值为通信对端IP地址,并进入步骤617。
步骤617:删除所述IRC服务器控制表节点,并进入步骤618。
步骤618:读取下一个IRC服务器控制表节点,并返回步骤61。
从上面所述可以看出,本发明所提供的僵尸网络监测方法,能够根据特征检测准确有效地识别出IRC僵尸网络,并根据后续行为检测准确识别出IRC僵尸网络中的各个角色,从而可以对僵尸网路做出实时相应,从源头上遏制僵尸网络的恶意行为。
进一步,本发明提供一种僵尸网络的检测装置,该装置运用本发明所提供的僵尸网络检测方法进行僵尸网络的检测。
具体的,所述僵尸网络检测装置包括征检测模块、行为检测模块、定时扫描模块、记录模块;所述特征检测模块进行僵尸网络特征检测并提取僵尸网络信息;所述行为检测模块根据所述僵尸网络信息进行行为检测的监控并把所述僵尸网络信息存入监控表;所述定时扫描模块定时扫描所述监控表;所述记录模块将从监控表中扫描的僵尸网络信息写入待写数据库。
所述行为检测模块在根据所述僵尸网络信息进行行为检测的监控并把所述僵尸网络信息存入监控表时,按照图5所示的流程执行。
所述定时扫描模块定时扫描所述监控表时,按照图6所示的流程执行。
从上面所述可以看出,本发明提供的僵尸网络检测装置,通过其各个模块之间相互结合,能够对僵尸网络进行及时、高效的检测,避免了因为没有进一步监控而把IRC服务器、控制者和僵尸主机三者混淆;同时也避免误报或漏报,从而不会混淆IRC僵尸网络的各个角色。从而,本发明所提供的僵尸网络检测装置,能够有效阻止攻击者的集中控制,能够更高效地保护用户的资源和信息安全。
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。