1.本技术涉及互联网
技术领域:
:,特别地涉及一种网络扫描装置。
背景技术:
::2.网络扫描是发现网络中活跃主机、端口和服务的典型方式,主要由网络管理员或研究人员用于进行网络的安全评估和维护。借助nmap、zmap和masscan等扫描工具,网络扫描已经成为理解目标网络甚至整个互联网中主机行为的标准测量技术。网络扫描技术在发现新的安全漏洞、监控服务部署、认知不透明的分布式系统等领域都发挥着无法替代的作用。3.如今,随着扫描空间的迅速扩大和安全事件的频繁发生,现有网络扫描工具越来越难以跟得上这个发展趋势。近期随着ipv6网络的大规模部署和iot(internet-of-things,物联网)设备、移动设备的大规模普及,网络扫描器所要处理的扫描空间日益变大,这给网络扫描器的可扩展性提出了很高的要求。同时,由于这些iot设备和移动设备频繁的上下线,网络的动态性非常高,这就要求网络扫描器能够尽可能快地完成一次综合性的扫描;否则,就会导致一些安全事件无法被捕捉到,一些重要的安全事故可能会被遗漏。4.然而,今天的网络扫描器非常慢,很难满足上述的可扩展性和快速扫描的要求。即使使用最先进的网络扫描器zipperzmap,扫描能力也只能达到10gbps的吞吐和14.2mpps的速率。这里面的根本原因还是现有网络扫描器的实现方式和部署位置。首先,在实现方式上,当前的网络扫描器都是在商用服务器实现的。由于服务器上的cpu不是专门为高速数据包处理而设计的,因此导致这些基于cpu的网络扫描器在扫描速度上很受限,难以及时覆盖大的扫描空间。其次,就部署位置而言,目前所有的网络扫描器都位于网络边缘的终端主机上。从网络边缘扫描通常受到终端主机上行带宽的限制,这不可避免地限制了网络扫描任务的最大扫描速度。此外,端到端的扫描路径也意味着网络中的带宽浪费更多,丢弃探测包/响应包的可能性也更大。技术实现要素:5.针对上述问题,本技术提供一种网络扫描装置。6.本技术提供了一种网络扫描装置,应用于交换机,包括:7.控制模块和数据处理模块,其中,所述控制模块用于将模版数据包输入至数据处理模块,所述数据处理模块用于将所述模版数据包加速至预设线速的数据包,将预设线速的数据包进行复制,并将复制的数据包的包头进行编辑生成探测数据包,并将所述探测数据包发送出去以进行网络扫描。8.在一些实施例中,所述数据处理模块包括:9.加速器,用于将所述模版数据包加速至预设线速的数据包;10.复制器,用于将所述预设线速的数据包进行复制并将复制后的数据包并行转发至指定端口;11.编辑器,从各个指定端口获取复制后的数据包,将复制后的数据包的进行修改,以得到探测数据包。12.发送单元,用于将所述探测数据包发送出去。13.在一些实施例中,所述控制模块包括表项生成器,所述编辑器还用于存储探测ip范围表,所述表项生成器用于基于至少部分探测ip范围表中的探测ip地址进行随机排列,并填充表项,所述编辑器还用于从所述表项中获取随机ip地址,并基于所述随机ip地址修改数据包,得到探测数据包。14.在一些实施例中,所述表项包括:第一寄存器数组和第二寄存器数组,所述表项生成器用于当所述编辑器从第一寄存器数组中获取随机ip地址时,基于至少部分探测ip范围表中的探测ip地址进行随机排列,并填充所述第二寄存器数组。15.在一些实施例中,所述数据处理模块还用于在所述编辑器获取完第一寄存器数组中的随机ip地址后发送完成信号至表项生成器,所述表项生成器在接收到所述完成信号的情况下,对所述第一寄存器数组进行填充。16.在一些实施例中,所述控制模块还用于设置时间阈值;所述数据处理模块还包括:节流器,所述节流器用于基于所述时间阈值控制所述复制器是否复制所述加速至预设线速的数据包到所述编辑器。17.在一些实施例中,所述编辑器还用于将秘钥编辑进各个数据包的包头中,以生成探测数据包;所述数据处理模块还包括:验证器,用于基于所述秘钥确定接收的数据包是否为探测数据包的响应数据包。18.在一些实施例中,所述控制模块还包括:秘钥生成单元,用于周期性更新所述秘钥。19.在一些实施例中,所述数据处理模块还包括:秘钥存储单元,用于保存至少3个周期的秘钥,每个秘钥具有索引编码,所述编辑器还用于将所述索引编码编辑进各个数据包的包头中,所述验证器还用于基于所述秘钥和索引编码确定接收的数据包是否为探测数据包的响应数据包。20.在一些实施例中,所述交换机为可编程交换机。21.本技术提供的一种网络扫描装置,所述网络扫描装置包括:控制模块和数据处理模块,其中,所述控制模块用于将模版数据包输入至数据处理模块,所述数据处理模块用于将所述模版数据包加速至预设线速的数据包,将预设线速的数据包进行复制,并将复制的数据包的包头进行编辑生成探测数据包,并将所述探测数据包发送出去以进行网络扫描,能够实现高速扫描。附图说明22.在下文中将基于实施例并参考附图来对本技术进行更详细的描述。23.图1为本技术实施例提供的一种网络扫描装置的结构示意图;24.图2为本技术实施例提供的一种探测数据包的产生流程示意图;25.图3为本技术实施例提供的一种秘钥更新流程示意图。26.在附图中,相同的部件使用相同的附图标记,附图并未按照实际的比例绘制。具体实施方式27.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。28.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。29.如果申请文件中出现“第一\第二\第三”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。30.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域:
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。31.基于相关技术中存在的问题,本技术实施例提供一种网络扫描装置,应用于交换机,图1为本技术实施例提供的一种网络扫描装置的结构示意图,如图1所示,所述网络扫描装置包括:控制模块101和数据处理模块102,其中,所述控制模块101用于将模版数据包输入至数据处理模块,所述数据处理模块102用于将所述模版数据包加速至预设线速的数据包,将预设线速的数据包进行复制,并将复制的数据包的包头进行编辑生成探测数据包,并将所述探测数据包发送出去以进行网络扫描。32.本技术实施例中,所述交换机为可编程交换机,可编程交换机能够提供的高速报文处理能力、可编程能力和部署位置上的优势,实现了高速安全的网络扫描。33.本技术实施例中,所述控制模块可以是交换机的cpu,所述数据处理模块可以是交换机芯片,由于交换机芯片并不能天然产生数据包,因此采用交换机cpu注入模版数据包、交换机芯片修改数据包的思路来产生高速的探测包。34.在一些实施例中,所述数据处理模块包括:35.加速器,用于将所述模版数据包加速至预设线速的数据包;复制器,用于将所述预设线速的数据包进行复制并将复制后的数据包并行转发至指定端口;编辑器,从各个指定端口获取复制后的数据包,将复制后的数据包的进行修改,以得到探测数据包。发送单元,用于将所述探测数据包发送出去。36.图2为本技术实施例提供的一种探测数据包的产生流程示意图,如图2所示,交换机cpu首先准备一组带有初始化报文头的模板数据包,并将它们注入交换机芯片中。在接收到这些模板数据包后,交换机芯片在交换管道(switchpipeline)中持续循环这些数据包。在交换管道中,每个数据包都经历了三个连续的元件:将模板数据包加速到100gbps线速的加速器(accelerator)、将模板数据包复制到多个交换机端口的复制器(replicator),以及将复制的模板数据包头编辑成所需探测数据包的编辑器(editor)。在经过编辑后,发送单元将探测数据包发送出去。37.本技术实施例中,加速器位于交换机芯片的入口管道(ingresspipeline)上,它通过将这些数据包注入再循环端口(recirculateport)来保持模板数据包的加速循环。再循环端口是交换机管道中的一个特殊端口,在这里注入的数据包会被立即发送回入口管道。因此,在注入一组模板数据包以填充交换机管道之后,我们为复制器获得了100gbps稳定线速的数据包源。38.复制器位于流量管理器(trafficmanager),它主要将来自加速器的模板数据包作为输入,并使用数据包复制引擎(packetreplicationengine)将这些数据包复制到给定的端口集合。数据包复制引擎是流量管理器中的一个硬件组件,目前的可编程交换机广泛支持该组件。通过从控制模块为多播配置一组端口,传入的数据包将被复制并并行转发到给定的端口集合。来自加速器的模板数据包将继续在交换机管道中循环,以确保复制器的线速率稳定的数据包源,并且复制的模板数据包将通过编辑器进行进一步处理。39.编辑器驻留在出口管道(egresspipeline)中,它负责将复制的模板数据包修改为所需的探测数据包。只要数据包报头可以被可编程交换机解析,报头就可以设置为给定值,例如常数或来自寄存器的值。要将复制的模板数据包转换为探测数据包,一些报头字段(例如,目标ip地址、目标端口)需要通过编辑器进行修改,而其他字段(例如,协议类型、源ip地址)则从最初由交换机cpu创建的模板数据包继承。40.在将模板数据包通过加速器、复制器、编辑器处理后,在多个出口端口中以线速获得连续的探测数据包。41.在一些实施例中,所述控制模块包括表项生成器,所述编辑器还用于存储探测ip范围表,所述表项生成器用于基于至少部分探测ip范围表中的探测ip地址进行随机排列,并填充表项,所述编辑器还用于从所述表项中获取随机ip地址,并基于所述随机ip地址修改数据包,得到探测数据包。42.本技术实施例中,网络探测装置(imap)应该能够生成完全覆盖扫描空间(即|地址空间|×|端口空间|)的探测包,并支持根据网络状况调整扫描速率。因此,为了完全覆盖扫描地址空间,一种直观的方法是从起始ip地址逐个扫描到结束ip地址。然而,简单地按数字顺序探测ip地址将使目标网络承受过于集中的扫描流量,这可能会产生不一致的探测结果,并引起目标网络的投诉。为了避免这种情况,imap能够根据地址空间的随机排列扫描地址,而不会出现重复和遗漏。然而,交换机芯片只有有限的可编程性和内存资源,无法支持复杂的计算或维持大量状态。已有工作zmap中的地址生成方法需要乘法和模运算,因此在交换机芯片中不可行。43.为了解决这个问题,利用交换机cpu的灵活性来补充交换机芯片,以生成地址随机的探测数据包。在交换机芯片的编辑器中,设计了一个基于寄存器数组(registerarray)的探测ip范围表(piprtable)。在交换机cpu中,设置一个表项生成器。表项生成器用于填充表项,所述表项可以叫pipr表。44.本技术实施例中,使用类似于zmap的地址生成方法,pipr表项生成器可以为给定地址空间生成探测ip范围的随机排列。在pipr表项生成器将生成的探测ip范围的一部分填充到pipr表中之后,探测数据包可以迭代通过pipr表来获得随机目标ip地址。45.然而,进行新一轮pipr表格填充是一项耗时的任务。填充一个大小为65536的pipr表也需要大约0.3秒。这表明,在一轮扫描之后,我们必须等待至少0.3秒才能开始下一轮扫描。这对于高速扫描是不可接受的,因为中间的等待会显著降低扫描速率。46.因此,在一些实施例中,所述表项包括:第一寄存器数组和第二寄存器数组,所述表项生成器用于当所述编辑器从第一寄存器数组中获取随机ip地址时,基于至少部分探测ip范围表中的探测ip地址进行随机排列,并填充所述第二寄存器数组。47.由于数据平面扫描速度非常快,表项大小为1的pipr表将很快被扫描完,因此我们在pipr表的每个条目中存储一个探测ip范围。为了实现这一点,我们的pipr表由两个寄存器数组组成,即第一寄存器数组和第二寄存器数组。48.示例性地,第一寄存器数组为pipr_start数组,用于存储探测ip范围的开始;第二寄存器数组为pipr_end数组,用于存储探测ip范围的末端。在pipr表之前,设置一个pipr_index寄存器(resgiter),用于索引pipr表。cpu将pipr_index寄存器的初始值设置为0;在历经一个探测数据包时,pipr_index的值增加1,直到pipr表的大小;之后,pipr_索引被重置为0,另一个循环开始。对于pipr_start数组,在经历每个数据包后,相应的pipr_start寄存器也会增加1,直到pipr_end寄存器。当最后一个pipr_start寄存器的值等于最后一个pipr_end寄存器的值时,这表示当前pipr表的扫描完成了,pipr表项生成器模块会将新一轮探测ip范围填充到pipr表中。49.引入了两个pipr表和pipr_index索引寄存器。扫描一个pipr表时,另一个pipr表将填充下一轮探测ip范围。为了使两个pipr表无缝切换,我们在出口管道的第一阶段(stage)设计了一个probe_table寄存器,该寄存器在0和1之间切换,用于控制探测数据包的流程。probe_table寄存器的切换由egresstoegressmirror原语的完成信号触发。50.但是以上的设计只考虑一个端口的场景,应该扩展到支持端口范围方案,例如从端口22扫描到端口80。由于扫描地址已经具有很好的随机性,选择逐个扫描端口。然而,从控制模块更新port寄存器将带来竞争,因为高速探测数据包已经在交换机管道中循环。为了解决这个问题,在数据模块上设计了一个端口自增机制。由于控制模块预先知道扫描地址空间需要在pipr表中循环的次数,在交换机管道中设计了一个port_stride寄存器,由cpu填充循环次数。每次完成一个pipr表的扫描时,相应的计数器将增加1,直到port_stride的值。然后,port寄存器增加1,计数器再次设置为0。从而能够实现了生成地址随机探测数据包以完全覆盖扫描空间,而不会过载目标网络。51.在一些实施例中,所述数据处理模块还用于在所述编辑器获取完第一寄存器数组中的随机ip地址后发送完成信号至表项生成器,所述表项生成器在接收到所述完成信号的情况下,对所述第一寄存器数组进行填充。52.本技术实施例中,为了将完成信号发送到cpu,利用交换机管道中的egresstoegressmirror原语,该原语可以携带预定义的标志到交换机cpu,以通知pipr表项生成器。53.在一些实施例中,所述控制模块还用于设置时间阈值;所述数据处理模块还包括:节流器,所述节流器用于基于所述时间阈值控制所述复制器复制所述加速至预设线速的数据包的时间。54.本技术实施例中,为了避免影响网络的正常路由功能,imap需要能够调整扫描速率。为此,我们在数据处理模块设计了速率调整接口,该接口可接收来自控制模块的命令,以精确调整扫描速率。55.本技术实施例中,交换机芯片中添加了一个节流器,该节流器可以从控制模块进行灵活调整。节流器位于入口管道中,用于确定复制器何时可以复制模板数据包。通常,交换机芯片可提供每端口100gbps报文处理能力,从而实现每个数据包的纳秒级的时间戳(例如,64字节数据包为6纳秒)。节流器由交换机管道中的两个寄存器组成。第一个被命名为timestamp寄存器,用于记录成功复制并发送到编辑器的最后一个模板数据包的时间戳。对于每个进来的模板数据包,节流器计算当前数据包的时间戳与timestamp寄存器中记录的时间戳之间的差异。当差异超过时间阈值时,节流器将模板数据包传递给复制器并更新记录的时间戳。第二个被命名为rate寄存器,用于存储从控制模块上可配置的时间阈值。在入口管道中,rate寄存器位于timestamp寄存器之前,控制模块可以将特定数值填充到rate寄存器中以实现速率控制。56.在一些实施例中,所述编辑器还用于将秘钥编辑进各个数据包的包头中,以生成探测数据包;所述数据处理模块还包括:验证器,用于基于所述秘钥确定接收的数据包是否为探测数据包的响应数据包。57.本技术实施例中,作为一个位于交换机上的网络扫描装置,imap的输入既有正常需要转发的数据包,也有响应探测包的响应包。imap应该能够正确区分正常数据包和响应数据包。为了区分响应数据包与正常数据包,一种方法是为每个探测数据包保持秘密状态(秘钥),然后相应地验证响应数据包是否对应于秘密状态。然而,交换asic的内存资源有限,无法维持大量的秘密状态。58.因此,本技术实施例中,编辑器将秘密状态编码到每个探测数据包的可变字段中,而不是在交换机芯片中维护状态。该字段应该对相应响应包的字段具有可识别的影响。具体来说,对于tcp扫描,我们选择源端口和初始序列号;对于icmp,我们使用icmp标识符和序列号;对于udp,我们使用源端口。以tcp为具体示例,在出口管道中,当imap发送探测包时,编辑器将srcport设置为hash(key,proto,srcip,dstip),将seqno设置为hash(key,proto,srcip,dstip,srcport,dstport),其中key是在交换机芯片的寄存器中维护的密钥。相应地,在入口管道中,imap有一个验证器(verifier),其检查dstport和ackno以确定所接收的数据包是否是对探测包的有效响应。icmp扫描和udp扫描的工作方式是相似的,除了不同的数据包头字段外。与zmap类似,在响应包经过验证器的检查验证后,imap还会向每个syn-ack数据包回复tcprst数据包,以关闭tcp连接。59.在一些实施例中,所述控制模块还包括:秘钥生成单元,用于周期性更新所述秘钥。60.本技术实施例中,交换机芯片中支持的哈希函数(如crc32)相对简单,不是真正安全的加密函数,容易受到选择明文攻击。因此,攻击者可能会进行此类攻击来恢复密钥,并故意注入伪造的响应包来污染扫描结果。为了进一步增强验证器的安全性并实现无污染的扫描结果,imap每t秒更新一次密钥。这可以在很大程度上减少泄露密钥造成的损害:即使攻击者以某种方式获得了当前密钥,这些知识在最多t秒后也将变得毫无用处。61.在一些实施例中,所述数据处理模块还包括:秘钥存储单元,用于保存至少3个周期的秘钥,每个秘钥具有索引编码,所述编辑器还用于将所述索引编码编辑进各个数据包的包头中,所述验证器还用于基于所述秘钥和索引编码确定接收的数据包是否为探测数据包的响应数据包。62.由于简单地更新密钥会导致不一致的扫描结果。例如,imap发送探测包后,key1更新为key2。响应包到达后,验证器确定该数据包无效,因为当前密钥无法正确验证该数据包头。为了解决上述的不一致性问题,imap存储了在特定时间段内使用的上一个密钥。图3为本技术实施例提供的一种秘钥更新流程示意图,如图3所示,imap在任何给定时间维护三个密钥(即上一个密钥、当前密钥和下一个密钥)。每隔t秒,imap将插槽索引从0旋转到2,并且插槽i中的密钥用于哈希函数。每把密钥最多可在插槽中停留3t秒;3t秒后,密钥由控制模块更新。其中t表示任何探测包和相应响应包之间的最大时间间隔。编辑器将把密钥的2-bit插槽索引编码到探测包的头字段中,这些字段也应添加到该连接内的相应响应数据包中。目前,我们将该索引编码到tcp/udp的源端口和icmp的标识符中。基于该插槽索引,验证器可以正确地进行验证。63.在一些实施例中,所述交换机为可编程交换机。64.该网络扫描装置运行在可编程交换机上,分为数据处理模块和控制模块。数据处理模块使用p4语言编写,有数据包正常转发、加速器、复制器、编辑器、节流器、验证器等模块,控制模块的程序使用c编写,负责初始化对应的数据面表项、发送初始模版数据包、接收更新通知和更新数据平面的表项/寄存器。部署时,首先使用可编程交换机系统提供的工具链将p4程序和c程序进行编译,然后运行编译后的c程序加载p4程序到交换机芯片中,并配置数据平面状态,系统即进入正常运行状态,即可进行高速安全的网络扫描。65.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。66.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。67.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。68.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。69.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。70.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。71.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台控制器执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。72.以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12