CN114826635A - 端口服务探测方法、装置、设备及计算机可读存储介质 - Google Patents

端口服务探测方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114826635A
CN114826635A CN202110121236.0A CN202110121236A CN114826635A CN 114826635 A CN114826635 A CN 114826635A CN 202110121236 A CN202110121236 A CN 202110121236A CN 114826635 A CN114826635 A CN 114826635A
Authority
CN
China
Prior art keywords
service
detection
task
matching
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110121236.0A
Other languages
English (en)
Inventor
张力
陈少鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110121236.0A priority Critical patent/CN114826635A/zh
Publication of CN114826635A publication Critical patent/CN114826635A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种端口服务探测方法、装置、设备及计算机可读存储介质;方法包括:分别创建与目标服务器的各目标端口对应的探测任务;采用至少部分探测任务并行的处理方式,执行各探测任务,得到至少两个探测结果;分别创建与各探测结果对应的匹配任务,匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;采用至少部分匹配任务并行的处理方式,执行各匹配任务,得到相应的匹配结果;基于匹配结果确定相应的目标端口所提供的服务。通过本申请能够缩短端口服务探测时间,提高整体探测执行效率以及端口服务探测的准确性。

Description

端口服务探测方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及互联网安全技术,尤其涉及一种端口服务探测方法、装置、设备及计算机可读存储介质。
背景技术
一个端口就是一个潜在的通信通道,也就是一个入侵通道,端口的不规范使用容易造成服务器中的重要服务直接对外暴露,从而导致服务器被入侵、网络资产遭受黑客攻击等安全事件。一般通过对服务器的端口进行探测,得到被探测端口所提供的服务信息,并根据端口提供的服务判断该服务器的安全性。
相关技术的端口探测是对目标机器对应的互联网协议(IP,Internet Protocol)地址上的端口进行扫描,针对每个端口顺序执行预先加载的服务指纹。由于在端口探测过程中是串行执行指纹,如果指纹不断扩充,整个端口探测时间就会线性增加,将影响整体性能。
发明内容
本申请实施例提供一种端口服务探测方法、装置、设备及计算机可读存储介质,能够缩短端口服务探测时间,提高整体探测执行效率以及端口服务探测的准确性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种端口服务探测方法,包括:
分别创建与目标服务器的各目标端口相对应的探测任务,所述探测任务用于指示向相应的目标端口发送服务探针;
采用至少部分探测任务并行的处理方式,执行各所述探测任务,得到至少两个探测结果,所述探测结果包括用于响应所述服务探针的服务特征;
分别创建与各所述探测结果相对应的匹配任务,所述匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;
采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,得到相应的匹配结果;
基于所述匹配结果确定相应的目标端口所提供的服务。
本申请实施例提供一种端口服务探测装置,包括:
第一创建模块,用于分别创建与目标服务器的各目标端口相对应的探测任务,所述探测任务用于指示向相应的目标端口发送服务探针;
探测模块,用于采用至少部分探测任务并行的处理方式,执行各所述探测任务,得到至少两个探测结果,所述探测结果包括用于响应所述服务探针的服务特征;
第二创建模块,用于分别创建与各所述探测结果相对应的匹配任务,所述匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;
匹配模块,用于采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,得到相应的匹配结果;
确定模块,用于基于所述匹配结果确定相应的目标端口所提供的服务。
上述方案中,所述第一创建模块,还用于获取目标服务器的各开放端口作为目标端口;
创建与各所述目标端口相对应的任务调度协程,得到任务调度协程组;
通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务。
其中,通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务,包括:
所述任务调度协程组中各任务调度协程独立执行以下操作:
所述任务调度协程获取相应目标端口的端口信息;
将所述端口信息与所述服务探针进行打包,得到与所述目标端口相对应的探测任务。
上述方案中,所述探测模块,还用于创建网络通信协程池,所述网络通信协程池包括至少两个网络通信协程;
通过所述至少两个网络通信协程,并行执行各所述探测任务。
上述方案中,所述装置还包括限速模块,所述限速模块用于在通过所述至少两个网络通信协程,并行执行各所述探测任务的过程中,分别获取各所述网络通信协程的任务执行频率;
其中,所述任务执行频率,为向相应的目标端口发送服务探针的频率;
当所述任务执行频率达到任务执行频率阈值时,对相应的网络通信协程的任务执行频率进行控制。
上述方案中,所述第二创建模块,还用于通过所述至少两个网络通信协程,将各所述探测结果以及与所述探测结果对应的探测任务进行打包,得到各所述探测结果相对应的匹配任务。
上述方案中,所述匹配模块,还用于创建特征匹配协程池,所述特征匹配协程池包括至少两个特征匹配协程;
通过所述至少两个特征匹配协程,并行执行各所述匹配任务。
上述方案中,所述装置还包括审计模块,所述审计模块用于在通过匹配模块基于匹配结果确定目标端口所提供的服务之后,
对所述目标端口所提供的服务进行安全审计,得到安全审计信息,所述安全审计信息,用于指示所述目标端口所提供的服务的安全性;
上述方案中,所述装置还包括输出模块,用于输出所述审计模块得到的安全审计信息和端口服务信息。
上述方案中,所述装置还包括加载模块,在通过第一创建模块创建与目标服务器的各目标端口对应的探测任务之前,
所述加载模块用于构建结构化格式的服务指纹,所述结构化格式的服务指纹包括:服务探针字段、服务特征字段;
相应的,所述匹配模块在执行各所述匹配认为,得到相应的匹配结果,包括:
将各所述探测结果中的服务特征与所述服务指纹的服务特征字段中的内容进行匹配,得到相应的匹配结果。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的端口服务探测方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的端口服务探测方法。
本申请实施例具有以下有益效果:
本申请实施例通过创建与目标服务器的各目标端口相对应的探测任务,并采用至少部分探测任务并行处理方式,执行各探测任务,获取至少两个探测结果,然后创建与各探测结果对应的匹配任务,采用至少部分匹配任务并行处理的方式执行各匹配任务,由于探测结果中包括用于响应服务探针的服务特征,执行各匹配任务的过程就是将探测结果中的服务特征与预设的服务特征进行匹配,最终确定目标端口所提供的服务,从而能够基于探测任务的并行处理以及匹配任务的并行处理,缩短端口服务探测时间,提高整体探测执行效率。
附图说明
图1是本申请实施例提供的端口服务探测系统架构的一个可选的结构示意图;
图2是本申请实施例提供的电子设备400的结构示意图;
图3是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图4是本申请实施例提供的服务指纹样式的一个可选的示意图;
图5是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图6是本申请实施例提供的端口服务探测方法的一个可选的结构示意图;
图7是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图8是本申请实施例提供的端口服务探测装置的一个可选的结构示意图;
图9是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图10是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图11是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图12是本申请实施例提供的相关服务指纹格式一个可选的示意图;
图13是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图14是本申请实施例提供的端口服务探测方法的一个可选的流程示意图;
图15A-15D是本申请实施例提供的端口服务探测方法的执行效率对比图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)服务发现,是指通过探测技术,发现网络中服务器上对外开放的服务。由于服务是绑定IP地址和端口上运行的,所以服务发现就是探测IP地址上开放的端口,以及该端口上运行的服务类型和版本等信息。
2)服务指纹,描述了在特定请求内容下,不同服务对于请求所返回的特征,在一些实施例中,可以通过文本文件来记录。具体来说,一个服务的指纹可以包含探针和特征列表;
其中,探针就是要发送给未知服务的内容,在获取到探针响应后,如果响应内容命中某个特征,就可以认为目标就是这个特征对应的服务;特征列表包括多个(即至少两个)特征,特征描述了要判断目标属于某个特定服务的必要条件。
3)YAML,是一种可读性高、易于编辑的通用数据结构序列化格式,常用于描述数据结构、配置文件等数据信息。
发明人发现,相关端口探测技术方案大多是对目标服务器进行端口扫描,探测实际开放端口,然后对每个端口顺序执行预先加载的服务指纹,如果端口绑定的服务命中某一条指纹,就返回命中的结果。
基于此,发明人发现,相关技术在端口服务探测过程中是串行执行服务指纹,如果服务指纹不断扩充,整个端口服务探测时间就会线性增加,这将影响到整体探测的性能。同时,在探测过程中不能对探测任务进行精准限速,存在发送指纹探针频率过快影响目标端口的正常服务的风险。其次,相关服务指纹件格式杂乱无章,所有服务指纹都放在一起,没有一个统一且易于管理的指纹描述方案。
基于此,本申请实施例提供一种端口服务探测方法、装置、设备和计算机可读存储介质,能够缩短端口服务探测时间,提高整体探测效率。
首先对本申请实施例提供的端口服务探测系统进行说明,图1为本申请实施例提供的端口服务探测系统100的一个可选的示意图,参见图1,为实现支撑一个端口服务探测示例性应用,目标服务器400(示例性示出了目标服务器400-1、目标服务器400-2)通过网络300连接探测服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
在一些实施例中,探测服务器200和目标服务器400都可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。管理终端500可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。管理终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
管理终端500,用于发送端口服务探测请求至探测服务器200,该探测请求中至少携带所请求探测的目标服务器的IP地址等参数。探测服务器200,用于响应管理终端500发送的探测请求,解析探测请求所携带的目标服务器的IP地址参数;基于解析得到的IP地址,获取目标服务器400的多个端口信息作为目标端口,并分别创建与各目标端口相对应的探测任务,其中,探测任务用于指示向相应的目标端口发送服务探针;采用至少部分探测任务并行的处理方式,执行各探测任务,得到至少两个探测结果,其中,探测结果包括用于响应服务探针的服务特征;分别创建与各探测结果相对应的匹配任务,匹配任务用于指示将探测结果中的服务特征与预设的服务特征进行匹配;采用至少部分匹配任务并行的处理方式,执行各匹配任务,得到相应的匹配结果;基于匹配结果确定相应的目标端口所提供的服务;
以及基于确定的目标端口所提供的服务,返回相应的探测结果至管理终端。
管理终端500,还用于接收探测服务器200返回的探测结果,以基于探测结果针对端口提供的服务进行安全审计。
接下来对本申请实施例提供的用于实施上述端口服务探测方法的电子设备进行说明,参见图2,图2是本申请实施例提供的电子设备400的结构示意图,在实际应用中,电子设备400可以实施为图1中的目标服务器400、探测服务器200或管理终端500,以电子设备为图1所示的探测服务器200为例,对实施本申请实施例的端口服务探测方法的电子设备进行说明。图2所示的电子设备400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。电子设备400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器450旨在包括任意适合类型的存储器。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的端口服务探测装置可以采用软件方式实现,图2示出了存储在存储器450中的装置455,其可以是程序和插件等形式的软件,包括以下软件模块:第一创建模块4551、探测模块4552、第二创建模块4553、匹配模块4554和确定模块4555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的端口服务探测装置可以采用硬件方式实现,作为示例,本申请实施例提供的端口服务探测装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的端口服务探测方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
接下来,将结合本申请实施例提供的探测服务器的示例性应用和实施,说明本申请实施例提供的端口服务探测方法。
参见图3,图3是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
步骤101:探测服务器分别创建与目标服务器的各目标端口相对应的探测任务,探测任务用于指示向相应的目标端口发送服务探针。
这里,探测任务与目标端口一一对应,探测服务器针对获取的各目标端口创建探测任务,探测任务至少包含服务探针以及目标端口的端口信息。
在实际实施时,探测服务器在创建与目标服务器的各目标端口相对应的探测任务之前,会先将所有的服务指纹文件加载到内存中保存,解析服务指纹信息,获取服务指纹信息中的服务探针,并将服务探针与目标端口的端口信息组装成探测任务。根据服务探针确定发送的探针内容,根据端口信息确定接收服务探针的目标端口,基于此,端口信息至少包括端口的标识(即端口号)、IP地址。
对服务指纹进行说明,服务指纹描述了在特定请求内容下,不同端口服务对于请求所返回的特征,一般通过以文件的形式存储。具体地,预先构建结构化格式的服务指纹,所述结构化格式的服务指纹包括:服务探针字段、服务特征字段。
在实际实施时,服务指纹可以按照YAML格式进行序列化存储,图4是本申请实施例提供的服务指纹样式的可选示意图,将结合图4对服务指纹进行说明。
示例性地,参见图4,服务指纹以YAML格式表达,关键字段包括服务探针字段qcontent(编号2)和特征字段allmathes(编号4),特征字段通常为包含多个服务特征的集合。另外,服务指纹还包括指纹优先级字段probeindex(编号1),优先级字段用于指示目标端口提供的端口服务可以与多个服务指纹中的服务特征匹配,确定指纹优先级最高的服务特征为目标端口所提供的服务。端口号字段ports(编号3)用于表示接收服务探针的端口列表,例ports值为1-65535表示所有的端口都可以接收服务探针。其中特征字段allmathes(编号4)是多个服务特征组成的集合,每个服务特征里包含多个字段,用来描述特定服务的服务特征信息。如servicename(编号5)就是该服务特征对应的服务名;mcontent(编号6)是要命中该服务特征的条件,是采用正则表达式描述的;fallback(编号7)值不为空时用于表示目标端口返回的探测结果与当前服务指纹中的服务特征都不匹配时,可以与fallback指定的服务指纹中的服务特征进行二次匹配,基于此,fallback的值一般是服务文件的名称;pcremod(编号8)是匹配模式、version(编号10)是服务版本信息、information(编号11)是服务特征的其他额外信息。基于YAML的结构化服务指纹格式,结构清晰,可读性高,方便修改、扩展和管理。
对创建探测任务进行说明,在一些实施例中,参见图5,图5是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,基于图3,步骤101还可以通过如下方式实现:
步骤1011:探测服务器获取目标服务器的各开放端口作为目标端口;
这里,目标端口为目标服务器中当前实际对外开放的端口,在执行相应服务时,能够表示该端口所执行网络通信服务的具体信息。
在实际实施时,目标服务器可以直接监听自身的端口信息,并将端口信息主动发送给探测服务器,使得探测服务器能够直接根据接收到端口信息准确探测目标服务器的开放端口,无需探测全部端口,从而提高探测效率。
步骤1012:创建与各目标端口相对应的任务调度协程,得到任务调度协程组;
这里,任务调度协程与目标端口一一对应,即任务调度协程的数量与目标端口的数量一致。
步骤1013:通过任务调度协程组,创建与各目标端口相对应的探测任务。
这里,通过任务调度协程组创建探测任务,实际上是由任务调度协程组中的任务调度协程创建与目标端口对应的探测任务。
在一些实施例中,各任务调度协程独立创建探测任务,具体地,任务调度协程获取相应目标端口的端口信息;将端口信息与服务探针进行打包,得到与目标端口相对应的探测任务。
在实际实施时,各任务调度协程创建探测任务时,相互独立,互不影响。
示例性地,参见图6,图6是本申请实施例提供的端口服务探测方法的一个可选的结构示意图。任务调度协程将端口信息和服务探针打包,创建探测任务,例如,一次端口探测采集到n个端口信息,从指纹文件目录中预先加载m个服务指纹至内存中,此时创建n个任务调度协程,每个任务调度协程将一个端口信息和m个服务探针(有m个服务指纹,因为每个服务指纹对应一个服务探针,服务探针的数量与服务指纹数量相同)打包,创建探测任务,所以探测任务的数量与目标端口数量一致,一共会创建n探测任务,其中每个探测任务中携带有m个服务探针,即每个目标端口都接收到一个携带有m个服务探针的探测任务。
在一些实施例中,一次性将所有服务指纹加载至内存中,且将所有服务指纹对应的服务探针与目标端口信息打包组成探测任务,分批次并行处理的方式可解决相关探测技术中,由于所有的服务探针保存在一个文件中每次只能按顺序获取服务探针带来的线性时间延长的问题。
在实际实施时,分批次并行处理服务探针,存在以下情况:单个服务探针同时向一批目标端口发送;一批服务探针同时向一个目标端口发送。
示例性地,参见图7,图7为本申请实施例提供的一种端口服务探测示意图。其中,服务探针1可以向目标服务器A的3个端口以及目标服务器B的3个端口与同时发送,即一个服务探针同时向一批端口发送;服务探针1和服务探针2可以同时向目标服务器A的端口1发送,即一批服务探针同时向一个目标端口发送。
步骤102:采用至少部分探测任务并行的处理方式,执行各探测任务,得到至少两个探测结果,探测结果包括用于响应服务探针的服务特征。
这里,采用至少部分探测任务并行的处理方式,执行各探测任务,可以理解为,一次端口探测过程,会创建多个与目标端口数量一致的探测任务,为了提高执行探测任务的效率,通常采用并行处理方式执行探测任务,但是由于实际网络带宽、服务器吞吐率等条件的限制,并不能一次执行将所有的探测任务,在实际应用中,会采用分批次并行处理的方式,即一次处理部分探测任务。
在一些实施例中,在采用至少部分探测任务并行的处理方式,执行各探测任务之前,任务调度协程会将创建完成的探测任务输出至探测任务队列,排队等待处理,执行探测任务时,探测任务从探测任务队列中出队。具体地,通过各任务调度协程,将各探测任务输出至探测任务队列,探测任务队列用于缓存等待执行的探测任务。
示例性地,参见图6,其中,任务调度协程创建的与目标端口相对应的探测任务会先入队至探测任务队列,等待执行。
在一些实施例中,参见图8,图8是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,基于图3,步骤102还可以通过如下方式实现:
步骤1021:创建网络通信协程池,网络通信协程池包括至少两个网络通信协程;
这里,网络通信协程池包括至少两个网络通信协程,其中,至少两个网络通信协程会并行执行与网络通信协程数量相同的探测任务,且各网络通信协程之间是相互独立、互不干扰,各自执行各自的业务逻辑。网络通信协程池中一旦有空闲的网络通信协程,就会不停地尝试从探测任务队列中获取等待执行的探测任务。
步骤1022:通过至少两个网络通信协程,并行执行各探测任务。
这里,网络通信协程获取等待执行的探测任务,并解析探测任务中端口信息,根据端口信息中的IP地址和端口号确定接收服务探针的目标端口。网络通信协程发出探测任务后,会不断地尝试从探测任务队列中获取下一个待处理的探测任务。探测任务执行完成后,网络通信协程会接收到由目标端口返回的探测结果(即目标端口针对接收到的服务探针回复的应答数据),其中探测结果中包括有指示目标端口所提供服务的服务特征信息。
这里,一个探测任务接收到的探测结果的数量,与探测任务中包含的服务探针的个数相同。例如,一个探测任务中携带有m个服务探针,目标端口会针对m个服务探针,回复m个应答数据。
在一些实施例中,为了防止网络通信协程池向各目标端口发送探测任务的频率过快,进而影响目标端口正常服务的执行,在发送每个探测任务前都会进行限速控制。具体地,在通过至少两个网络通信协程,并行执行各探测任务的过程中,分别获取各网络通信协程的任务执行频率;其中,任务执行频率为向相应的目标端口发送服务探针的频率;当任务执行频率达到任务执行频率阈值时,对相应的网络通信协程的任务执行频率进行控制。
对任务执行频率阈值进行说明,在一些实施例中,任务执行频率阈值基于相应目标端口针对探测任务的处理能力所决定,该处理能力可理解为预设时间内保证目标端口正常服务的情况下,目标端口能够响应的服务探针的最大并发数量时,对相应的网络通信协程的任务执行频率进行控制以保证所述任务执行频率低于任务执行频率阈值。
在实际实施时,限速的维度可以是目标服务器的IP地址(目标IP)或者目标端口。对目标IP是从整体角度做限速处理,保证目标IP的探测频率不会太高,从而保证目标IP上的正常服务的执行。例如,假设目标IP每秒只能处理m个探测任务,但通过网络通信协程池一个可以发出m+n个探测任务时,就会有n个探测任务进入等待处理,等待下一秒处理。另外,还可以针对单个目标端口做精准限速。本申请实施例不对限速的方式作具体限定。
步骤103:分别创建与各探测结果相对应的匹配任务,匹配任务用于指示将探测结果中的服务特征与预设的服务特征进行匹配。
这里,匹配任务包括探测结果,探测结果是目标端口针对服务探针返回的携带有目标端口所提供服务的服务特征的应答数据。
对创建与各探测结果相对应的匹配任务进行说明,在一些实施例中,匹配任务至少包括目标端口接收到服务探针后返回的探测结果以及相应的探测任务,具体地,通过至少两个网络通信协程,将各探测结果以及与所述探测结果对应的探测任务进行打包,得到各探测结果相对应的匹配任务。
在一些实施例中,匹配任务创建完成后,并不会马上执行,需要等待资源,基于此,网络通信协程会将创建完成的匹配任务输出至匹配任务队列,排队等待处理,执行匹配任务时,匹配任务从匹配任务队列中出队。具体地,通过各网络通信协程,将各匹配任务输出至匹配任务队列,匹配任务队列用于缓存等待执行的匹配任务。
示例性地,参见图6,网络通信协程将一个携带有m各服务探针的探测任务发送给目标端口,目标端口针对该探测服务的每个服务探针均进行回应,并返回相应的探测结果,即一个探测任务返回探测结果的数量与探测任务中携带的服务探针的数量相同。网络通信协程将探测结果与探测任务打包,得到匹配任务。并将匹配任务输出至匹配任务队列,等待执行。
步骤104:采用至少部分匹配任务并行的处理方式,执行各匹配任务,得到相应的匹配结果。
这里,采用至少部分匹配任务并行的处理方式,执行各匹配任务,可以理解为,通过网络通信协程池将各探测结果和各探测任务打包创建多个匹配任务,为了提高执行匹配任务的效率,通常采用并行处理方式执行匹配任务,但是由于实际网络带宽、服务器吞吐率等条件的限制,并不能一次执行所有的匹配任务,在实际应用中,会采用分批次并行处理的方式执行匹配任务,即一次执行部分匹配任务。
在一些实施例中,在采用至少部分匹配任务并行的处理方式,执行各匹配任务之前,网络通信协程会将创建完成的匹配任务输出至匹配任务队列,排队等待处理,执行匹配任务时,匹配任务从匹配任务队列中出队。具体地,通过各网络通信协程,将各匹配任务输出至匹配任务队列,匹配任务队列用于缓存等待执行的匹配任务。
对部分匹配任务的并行处理进行说明,在一些实施例中,参见图9,图9是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,基于图3,步骤104还可以通过如下方式实现:
步骤1041:创建特征匹配协程池,特征匹配协程池包括至少两个特征匹配协程;
这里,特征匹配协程池包括至少两个特征匹配协程,其中,各特征匹配协程之间是相互独立、互不干扰,各自执行各自的特征匹配业务逻辑。特征匹配协程池中一旦有空闲的特征匹配协程,就会不停地尝试从匹配任务队列中获取等待执行的匹配任务。
步骤1042:通过至少两个特征匹配协程,并行执行各匹配任务,得到相应的匹配结果。
这里,特征匹配协程池中的至少两个特征匹配协程获取等待执行的至少两个匹配任务,保证匹配任务的并行执行,提高匹配效率。特征匹配协程执行完当前的匹配任务后,会不断地尝试从匹配任务队列中获取下一个待处理的匹配任务。
对特征匹配协程执行匹配任务进行说明,在一些实施例中,特征匹配协程解析匹配任务中探测结果,获取目标端口所提供服务的服务特征信息,与预先加载的服务探针所在服务指纹中的特征字段中的所有服务特征进行匹配,具体地,通过特征匹配协程池中的协程分别将各探测结果中的服务特征与预设的服务特征进行匹配,得到至少两个特征匹配结果;其中,预设的服务特征是与服务探针对应的服务指纹中的特征字段中的各服务特征。
在另一些实施例中,预设的服务特征中的具体信息,通常是以正则表达式的形式存在,解析匹配任务中探测结果,获取目标端口所提供服务的服务特征信息,并将该服务特征信息与预设的服务特征信息中的正则表达式进行匹配,具体地,获取服务指纹中的特征字段所包含的各服务特征对应的各正则表达式;将各探测结果中的服务特征与各正则表达式进行匹配。
示例性地,参见图10,图10是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,其中YAML格式的服务指纹probe1,其中2表示服务探针字段qcontent,3表示特征字段allmatches,其中包含服务特征名称servicename为http,以及符合http服务特征对应的条件mcomtent(即一串正则表达式)。将该服务探针qcontent发送给IP地址为127.0.0.1目标服务器的80端口,端口针对该服务探针返回应答数据,应答数据中包含端口80所提供的Nginx服务的服务特征8,将服务特征8与mcontent中预设的服务特征进行匹配(即与mcontent表示的正则表达式进行匹配),若能匹配上,说明80端口所提供的服务是nginx服务。
步骤105:基于匹配结果确定相应的目标端口所提供的服务。
这里,对匹配结果进行说明,在一些实施例中,一个探测任务可以携带多个服务探针,针对每个服务探针都会返回一个探测结果。匹配任务基于每一个探测结果获取相应的匹配结果。即一个目标端口所提供服务的服务特征信息可以与多个服务指纹中的特征字段匹配得到一批匹配结果,至于使用哪一个匹配结果则是由服务指纹的优先级字段确定即根据服务探针所属服务指纹优先级选择优先级高的匹配结果。例如,目标端口1获取两个探测结果与服务指纹中的特征字段都能匹配上,则根据服务指纹的优先级最终确定端口1所提供的服务,端口1有针对服务指纹1的匹配结果1,还有针对服务指纹2的匹配结果2,如果服务指纹1的优先级高于服务指纹2,则根据匹配结果1确定目标端口1所提供的服务。
在一些实施例中,在基于匹配结果确定相应的目标端口所提供的服务之后,会将目标端口的服务信息返回给任务调度协程,任务调度协程对目标端口提供的服务进行安全审计,进一步判定该目标端口对应的服务是否存在漏洞,或者该目标端口提供的服务是否为高危服务。其中,安全审计是指按照指定的安全策略,对已有的记录进行审查,从而发现系统漏洞、入侵行为的过程。在这里指的是通过安全策略来判断该目标端口提供的服务是否存在安全漏洞。具体地,对目标端口所提供的服务进行安全审计,得到安全审计信息,所述安全审计信息,用于指示目标端口所提供的服务的安全性。
在实际实施时,针对目标端口服务进行安全审计,需要设置指定的安全策略。判断某个端口服务是否高危或有漏洞,首先设置安全策略,安全策略用于判断目标端口提供的服务是否有漏洞或者是否为高危服务的一种手段,例如,将探测得到目标端口所提供的服务的版本信息、名称、标识等信息与预设的关键字进行匹配,其中预设的关键字用于表示端口提供的服务存在漏洞或者是高危服务,若端口所提供的服务的相关信息包含预设的关键字就认为该端口提供的服务存在漏洞,那么这些预设的关键字就可认定为一种安全策略。
在实际实施时,进行安全审计的方式还可以是设置服务黑名单,依据探测到的服务的版本信息、名称、标识等信息,与黑名单(即具有安全隐患的服务名单)中相应的信息进行匹配,以根据匹配结果确定该服务是否具有安全隐患。
综上所述,本申请实施例中不同目标端口可以同时探测,而且单个目标端口可以同时接收多个服务探针,在获取到一批匹配结果后,根据服务指纹的优先级选择优先级高的匹配结果。这种分批次并发发送服务探针的方式可以缩短探测时间,提升程序性能;另外,本申请实施例通过设计网络通信协程池和特征匹配协程池等池化技术抽象端口服务探测流程,网络通信协程池、特征匹配协程池里包含相同的处理协程,进而可以将资源利用最大化;再者,为了防止探测频率过快,本申请实施例引入限速处理,可以针对单个探测目标做进准限速,防止影响到目标端口的正常服务;最后,为了解决传统服务指纹格式乱的问题,本申请实施例提供基于YAML的格式化指纹格式,YAML格式的服务指纹结构清晰、可读性强,方便修改和管理。
接下来继续对本申请实施例提供的端口服务探测方法进行介绍,图11是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,参见图11,本申请实施例提供的端口服务探测方法由目标服务器、探测服务服务器以及管理终端协同实施。
步骤201:管理终端向探测服务器发送端口服务探测请求。
这里,管理终端向探测服务器发送探测请求,其中端口服务探测请求中携带的参数信息至少包括管理终端预先构建的结构化格式的服务指纹文件和目标IP信息等。目标IP可以是一个需要进行端口服务探测的目标服务器的IP地址,也可以是多个目标服务器IP地址。
对结构化格式的服务指纹文件进行说明,在一些实施例中,结构化格式的服务指纹文件可以按照YAML格式进行结构化存储,一个服务探针对应一个服务指纹,每个服务指纹中包含优先级字段(probeindex)、服务探针字段(qcontent)、特征字段(allmatches)等多个字段。
相关技术中的服务指纹格式混乱,示例性地,参见图12,图12是本申请实施例提供的相关服务指纹格式一个可选的示意图。一个服务指纹中包含多个服务探针,服务指纹格式混乱。而采用基于YAML的格式化服务指纹格式,参见图4,服务指纹结构清晰,可读性强,方便修改和管理。本申请实施例不对结构化的服务指纹格式作具体限定。
步骤202:探测服务器基于接收到的探测请求,解析探测请求中携带的参数信息。
这里,管理终端发送的探测请求中携带的参数信息至少包括结构化格式的服务指纹信息和目标IP信息。其中,服务指纹信息可以是一个服务指纹信息,也可以是一批服务指纹信息;目标IP可以是一个目标服务器的IP地址,也可以是多个目标服务器IP地址。
在进行端口服务探测之前,探测服务器会将所有的服务指纹加载到内存,并对服务指纹进行解析,获取所有的服务探针内容以及目标服务器的IP信息。而相关技术中一个服务指纹中包含多个服务探针,参见图12,一个服务探针信息的主要字段包括:服务探针字段Probe(编号1)即包括服务名称(如TCP)、探针名称(GetRequest)以及探针内容(GET/HTTP/1.@\r\n\r\n);端口信息字段ports(编号2)表示该探针内容只向ports指定的端口发送;特征字段match(编号3),多个match简单的堆叠,具体内容可读性差。从该服务指纹文件中读取服务探针时,只能顺序读取,随着服务指纹数目的扩充,端口服务探测的时间线性增长。其中,服务指纹数目扩充可以是服务指纹文件数量的增加,也可以是单个服务指纹中特征字段中服务特征的增加。
采用上述并行获取服务探针的方式解决了传统串行读取服务指纹获取服务探针带来的线性时间延长的问题。
步骤203:探测服务器基于解析得到的参数信息,获取目标服务器的开放端口作为目标端口。
这里,探测服务器基于解析得到的目标IP,与目标IP建立连接并获取目标IP的开放端口作为目标端口。
对目标端口的获取进行说明,在一些实施例中,目标服务器可以主动上报自身的开放端口信息,目标服务器监听自身的端口信息,当目标服务器对自身所提供的服务存在安全性检测需求时,向探测服务器上报自身开放端口信息,使得探测服务器能够直接根据接收到的端口信息准确探测各目标服务器中的开放端口,而无需探测全部端口。在另一些实施例中,探测服务器可以主动获取目标服务器的开放端口信息,探测服务器直接通过解析服务指纹中端口信息字段ports中的值获取需要发送服务探针的目标端口。本申请实施例不对目标端口的获取方式作具体限定。
步骤204:探测服务器创建与各目标端口相对应的任务调度协程,得到任务调度协程组。
这里,任务调度协程的数量与目标端口数量相同。
步骤205:任务调度协程组中各任务调度协程获取相应目标端口的端口信息。
步骤206:任务调度协程将端口信息与服务探针进行打包,得到与目标端口相对应的探测任务。
这里,一个探测任务中包含的服务探针数量与服务指纹的数量相同,例如,有3个服务指纹,那么一个探针任务中就包含3个服务探针。探测任务根据服务探针确定需要发送的探针内容,再根据端口信息确定接收服务探针的目标端口。
步骤207:创建包括至少两个网络通信协程的网络通信协程池。
步骤208:通过网络通信协程池,并行向目标服务器的目标端口发送探测任务。
步骤209:目标服务器的目标端口响应接收到探测任务,返回至少两个探测结果。
这里,目标端口接收到探测任务中的服务探针后,会针对该服务探针回复应答数据(即探测结果),探测结果中包括用于响应服务探针的服务特征。其中探测结果的数量与服务探针的数量一致,即目标端口针对每个服务指针进行应答。
步骤210:探测服务器通过至少两个网络通信协程,将各探测结果以及与探测结果对应的探测任务进行打包,得到各探测结果相对应的匹配任务。
这里,匹配任务包括探测结果,以及与探测结果对应的探测任务进行打包,其中匹配任务的数量与探测结果的数量一致。
步骤211:创建包括至少两个特征匹配协程的特征匹配协程池。
这里,创建特征匹配协程池是为了通过池化技术提高特征匹配效率,进而提高整体探测执行效率。
步骤212:通过特征匹配协程池,并行将各探测结果中的服务特征与服务指纹的服务特征字段中的内容进行匹配,得到相应的匹配结果。
这里,采用池化技术执行匹配任务,将探测结果中的服务特征与每个服务指纹中的服务特征字段进行一一匹配,得到匹配结果。
在实际实施时,服务指纹中的服务特征字段多以正则表达式的形式存在,探测结果中的服务特征与正则表达式进行匹配,若能匹配上就表示属于该正则表达式对应的服务。
步骤213:对目标端口所提供的服务进行安全审计,得到安全审计信息。
这里,对目标端口所提供的服务进行安全审计,进一步判断该目标端口所提供的服务是否是高危服务或者存在漏洞风险。
步骤214:向管理终端输出端口服务信息和安全审计信息。
综上所述,本申请实施例,针对指纹数目扩充带来的探测时间变长的问题,提出了分批次并发探测调度架构,即一个探测任务就将所有服务指纹中的服务探针一起发送给目标端口,解决了传统串行探测带来的线性时间延长的问题。同时,本申请实施例通过创建具有并行处理能力的任务调度协程组、网络通信协程池以及特征匹配协程池实现了池化技术,进一步提高了整体探测执行效率,缩短了探测时间;针对指纹存储格式,本申请实施例提出了基于YAML的结构化指纹格式,该服务指纹格式结构清晰,可读性高,方便修改、扩展和管理。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。以实施例提供的端口服务探测方法为由探测服务器实施进行说明。
参见图13,图13是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,参见图14,图14是本申请实施例提供的端口服务探测方法的一个可选的流程示意图,将结合图13示出的步骤进行说明。
步骤301:探测服务器获取目标服务器的开放端口信息。
这里,至少一个目标服务器是指一批需要探测的目标设备,每个服务器对应对一个IP,探测目标服务器实际上是探测每个目标IP实际开放的端口。
步骤302:针对每个目标IP+目标端口所组成的组合,创建对应的任务调度协程。
这里,每个任务调度协程负责探测一个端口,任务调度协程与目标端口是一一对应的。即任务调度协程的数量与目标端口的数量一致。多个任务调度协程组成任务调度协程组(图14的任务调度协程组),任务调度协程负责探测目标端口所提供服务的具体信息,还提供解析服务指纹文件、管理探测流程、获取探测结果等功能。
步骤303:任务调度协程将服务探针和任务信息打包组成探测任务,并将探测任务分批次发送至探测任务队列,等待执行。
这里,任务信息至少包括目标端口信息以及任务标识(任务ID),目标端口信息至少包括目标IP地址、端口号等,服务探针用于表示需要向目标端口发送的探针内容,服务探针与任务信息组成一个完整的探测任务,由任务调度协程分批次发送至通道,此处通道可以理解成是由探测任务组成的探测任务队列,任务调度协程将打包好的探测任务源源不断的输入至探测任务队列(图14的探测任务队列)。
由于整个端口服务探测过程是由进程执行,即整个过程是在内存中执行,端口探测开始前,会把指纹文件目录下的所有服务指纹全部加载到内存中。任务调度协程解析服务指纹,获取对应的服务探针,探测任务在内存中以结构体(struct)的形式存储。
其中服务指纹是基于YAML的格式化服务指纹格式,基于YAML的格式化服务指纹格式具有可读性强,容易编辑和管理的优点。
示例性地,参见图4,其中probeindex代表服务指纹的优先级,qcontent代表服务探针内容,而allmatches就是特征列表,每个特征里包含几个字段,用来描述特定服务的特征信息。如servicename就是该特征对应的服务名,mcontent是要命中该特征的条件,是正则表达式描述的。pcremod是匹配模式,version和information是特征服务的其他额外信息。
步骤304:通过网络通信协程池并发执行探测任务。
步骤305:判断是否接收到目标端口的应答数据,接收成功执行步骤306。
这里,网络通信协程从探测任务队列中获取探测任务,解析探测任务中的任务信息,用于确定接收探测任务的目标端口,然后将探测任务中的服务探针发送给确定的目标端口。目标端口接收到服务探针后,会针对该服务探针回复应答数据(即返回探测结果)。
网络通信协程执行完当前的探测任务后,会不停的尝试从探测任务队列中获取新的探测任务执行。网络通信协程池(图14的网络通信协程池)中的各网络通信协程之间相互独立、互不干扰。
若网络通信协程未接收到目标端口的应答数据,网络通信协程向任务调度协程发送探测失败消息,任务调度协程接收到探测任务响应失败结果后,直接将结果输出,探测过程结束。
步骤306:网络通信协程根据目标端口返回的探测结果,创建特征匹配任务,并将特征匹配任务输出至匹配任务队列。
这里,通信网络协程获取目标端口的应答数据,并将应答数据以及发送给目标端口的探测任务打包,创建与该目标端口对应的特征匹配任务。然后将该特征匹配任务输出至匹配任务队列(图14的匹配任务队列),等待特征匹配协程处理。
可以理解的是,目标端口在接收到网络通信协程发送的探测任务后,会回复相应的应答数据,该应答数据中携带能够表明目标端口所提供服务的特征信息。
步骤307:通过特征匹配协程池并发执行匹配任务队列中的特征匹配任务,获取特征匹配任务的执行结果。
步骤308:,判断特征匹配任务中目标端口的应答数据是否与服务指纹的特征字段中的某个服务特征匹配,若匹配成功,执行步骤309。
这里,特征匹配协程池(图14的特征匹配协程池)中的特征匹配协程从通道(即匹配任务队列)中获取要执行的特征匹配任务,然后加载特征匹配任务中服务探针对应的特征字段(特征字段一般是多个服务特征组成的集合),并遍历特征字段中的所有服务特征,判断目标端口的应答数据是否与某个特征匹配。
若匹配不成功,直接将匹配失败信息发送向任务调度协程。
步骤309:确定目标端口提供的服务信息,并将目标端口提供的服务信息发送至任务调度协程。
步骤310:任务调度协程对获得的目标端口的服务进行安全审计。
这里,任务调度协程根据确定的目标端口的服务,对目标端口提供的服务进行安全审计(图14的安全审计),进一步判定该目标端口对应的服务是否存在漏洞,或者该目标端口提供的服务是否为高危服务。
其中,针对目标端口服务进行安全审计,需要设置指定的安全策略。判断某个端口服务是否高危或有漏洞,首先设置安全策略,安全策略用于判断目标端口提供的服务是否有漏洞或者是否为高危服务的一种手段,例如,将探测得到目标端口所提供的服务的版本信息、名称、标识等信息与预设的关键字进行匹配,其中预设的关键字用于表示端口提供的服务存在漏洞或者是高危服务,若端口所提供的服务的相关信息包含预设的关键字就认为该端口提供的服务存在漏洞,那么这些预设的关键字就可认定为一种安全策略。
进一步地,可以将安全策略理解为一个漏洞集合,目标端口所提供的服务信息属于这个漏洞集合的话,判断这个目标端口提供的服务是高危服务或存在漏洞,该漏洞集合也相当于一个安全策略。
步骤311:输出目标端口的服务信息和安全审计信息。
图15A-15D是本申请实施例提供的端口服务探测方法的执行效率对比图,参见图15A,主流开源工具(nmap工具)在实际探测中速度,编号1为nmap的端口探测的相关指令,编号2为执行指令后输出的探测结果,编号3为指令执行一次所需要的执行时间,参见15B是本申请实施例实现的工具在实际探测中速度,编号1为本申请实施例实现的工具进行端口探测的相关指令,编号2为执行指令后输出的探测结果,编号3为指令执行一次所需要的执行时间由图15A和图15B可知,本申请实施例实现的工具在实际探测中速度快于主流开源工具(nmap工具);参见图15C是在服务指纹未覆盖服务探测的场景下,本申请实施例实现的工具的端口服务探测时间,参见图15D是在服务指纹未覆盖服务探测的场景下,主流开源工具(nmap工具)的端口服务探测执行时间,由图15C和图15D可知,在服务指纹未覆盖服务探测的场景下,本申请实施例端口服务探测时间远快于开源方案。
综上所述,本申请实施例中不同目标端口可以同时探测,而且单个目标端口可以同时接收多个服务探针,在获取到一批探针结果后,调度协程根据服务指纹的优先级选择优先级高的探针结果。这种分批次并发发送服务探针的方式可以缩短探测时间,提升程序性能;另外,本申请实施例通过设计网络通信协程池和特征匹配协程池等池化技术抽象端口服务探测流程,网络通信协程池、特征匹配协程池里包含相同的处理协程,协程池的大小可以自由设置,进而可以将资源利用最大化;再者,为了解决传统服务指纹格式乱的问题,本申请实施例提供基于YAML的格式化指纹格式,YAML格式的服务指纹结构清晰、可读性强,方便修改和管理。
下面继续说明本申请实施例提供的端口服务探测装置455的实施为软件模块的示例性结构,在一些实施例中,参见图2,图2是本申请实施例提供的端口服务探测装置的一个可选的示意图,所示,存储在存储器440的端口服务探测装置455中的软件模块可以包括:
第一创建模块4551,用于分别创建与服务器的各目标端口相对应的探测任务,所述探测任务用于指示向相应的目标端口发送服务探针;
探测模块4552,用于采用至少部分探测任务并行的处理方式,执行各所述探测任务,得到至少两个探测结果,所述探测结果包括用于响应所述服务探针的服务特征;
第二创建模块4553,用于分别创建与各所述探测结果相对应的匹配任务,所述匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;
匹配模块4554,用于采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,得到相应的匹配结果;
确定模块4555,用于基于所述匹配结果确定相应的目标端口所提供的服务。
在一些实施例中,所述第一创建模块,还用于获取目标服务器的各开放端口作为目标端口;
创建与各所述目标端口相对应的任务调度协程,得到任务调度协程组;
通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务。
其中,通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务,包括:
所述任务调度协程组中各任务调度协程独立执行以下操作:
所述任务调度协程获取相应目标端口的端口信息;
将所述端口信息与所述服务探针进行打包,得到与所述目标端口相对应的探测任务。
在一些实施例中,所述探测模块,还用于创建网络通信协程池,所述网络通信协程池包括至少两个网络通信协程;
通过所述至少两个网络通信协程,并行执行各所述探测任务。在一些实施例中,所述第二创建模块,还用于通过所述至少两个网络通信协程,将各所述探测结果以及与所述探测结果对应的探测任务进行打包,得到各所述探测结果相对应的匹配任务。
在一些实施例中,所述匹配模块,还用于创建特征匹配协程池,所述特征匹配协程池包括至少两个特征匹配协程;
通过所述至少两个特征匹配协程,并行执行各所述匹配任务。
在一些实施例中,所述装置还包括审计模块,所述审计模块用于在通过匹配模块基于匹配结果确定目标端口所提供的服务之后,
对所述目标端口所提供的服务进行安全审计,得到安全审计信息,所述安全审计信息,用于指示所述目标端口所提供的服务的安全性;
在一些实施例中,所述装置还包括输出模块,用于输出所述审计模块得到的安全审计信息和端口服务信息。
在一些实施例中,所述装置还包括加载模块,在通过第一创建模块创建与目标服务器的各目标端口对应的探测任务之前,
所述加载模块用于构建结构化格式的服务指纹,所述结构化格式的服务指纹包括:服务探针字段、服务特征字段;
相应的,所述匹配模块在执行各所述匹配认为,得到相应的匹配结果,包括:
将各所述探测结果中的服务特征与所述服务指纹的服务特征字段中的内容进行匹配,得到相应的匹配结果。
在一些实施例中,所述装置还包括限速模块,所述限速模块用于在通过所述至少两个网络通信协程,并行执行各所述探测任务的过程中,分别获取各所述网络通信协程的任务执行频率;
其中,所述任务执行频率,为向相应的目标端口发送服务探针的频率;
当所述任务执行频率达到任务执行频率阈值时,对相应的网络通信协程的任务执行频率进行控制。
需要说明的是,本申请实施例端口服务探测装置的描述,与上述端口服务探测方法实施例的描述是类似的,具有同端口服务探测方法实施例相似的有益效果,因此不做赘述。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的端口服务探测方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的端口服务探测方法。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的端口服务探测方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的端口服务探测方法,例如,如图3示出的端口服务探测方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够缩短端口服务探测时间,提升程序性能,通过池化技术实现资源利用最大化。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种端口服务探测方法,其特征在于,所述方法包括:
分别创建与目标服务器的各目标端口相对应的探测任务,所述探测任务用于指示向相应的目标端口发送服务探针;
采用至少部分探测任务并行的处理方式,执行各所述探测任务,得到至少两个探测结果,所述探测结果包括用于响应所述服务探针的服务特征;
分别创建与各所述探测结果相对应的匹配任务,所述匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;
采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,得到相应的匹配结果;
基于所述匹配结果确定相应的目标端口所提供的服务。
2.如权利要求1所述的方法,其特征在于,所述分别创建与目标服务器的各目标端口相对应的探测任务,包括:
获取目标服务器的各开放端口作为目标端口;
创建与各所述目标端口相对应的任务调度协程,得到任务调度协程组;
通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务。
3.如权利要求2所述的方法,其特征在于,所述通过所述任务调度协程组,创建与各所述目标端口相对应的探测任务,包括:
所述任务调度协程组中各任务调度协程独立执行以下操作:
所述任务调度协程获取相应目标端口的端口信息;
将所述端口信息与所述服务探针进行打包,得到与所述目标端口相对应的探测任务。
4.如权利要求2所述的方法,其特征在于,所述采用至少部分探测任务并行的处理方式,执行各所述探测任务,包括:
创建网络通信协程池,所述网络通信协程池包括至少两个网络通信协程;
通过所述至少两个网络通信协程,并行执行各所述探测任务。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
在通过所述至少两个网络通信协程,并行执行各所述探测任务的过程中,分别获取各所述网络通信协程的任务执行频率;
其中,所述任务执行频率,为向相应的目标端口发送服务探针的频率;
当所述任务执行频率达到任务执行频率阈值时,对相应的网络通信协程的任务执行频率进行控制。
6.如权利要求4所述的方法,其特征在于,所述分别创建与各所述探测结果相对应的匹配任务,包括:
通过所述至少两个网络通信协程,将各所述探测结果以及与所述探测结果对应的探测任务进行打包,得到各所述探测结果相对应的匹配任务。
7.如权利要求1所述的方法,其特征在于,所述采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,包括:
创建特征匹配协程池,所述特征匹配协程池包括至少两个特征匹配协程;
通过所述至少两个特征匹配协程,并行执行各所述匹配任务。
8.如权利要求1所述的方法,其特征在于,在所述基于所述匹配结果确定相应的目标端口所提供的服务之后,所述方法还包括:
对所述目标端口所提供的服务进行安全审计,得到安全审计信息,所述安全审计信息,用于指示所述目标端口所提供的服务的安全性;
输出所述安全审计信息。
9.如权利要求1所述的方法,其特征在于,所述分别创建与目标服务器的各目标端口相对应的探测任务之前,所述方法还包括:
构建结构化格式的服务指纹,所述结构化格式的服务指纹包括:服务探针字段、服务特征字段;
相应的,所述执行各所述匹配任务,得到相应的匹配结果,包括:
将各所述探测结果中的服务特征与所述服务指纹的服务特征字段中的内容进行匹配,得到相应的匹配结果。
10.一种端口服务探测装置,其特征在于,所述装置包括:
第一创建模块,用于分别创建与目标服务器的各目标端口相对应的探测任务,所述探测任务用于指示向相应的目标端口发送服务探针;
探测模块,用于采用至少部分探测任务并行的处理方式,执行各所述探测任务,得到至少两个探测结果,所述探测结果包括用于响应所述服务探针的服务特征;
第二创建模块,用于分别创建与各所述探测结果相对应的匹配任务,所述匹配任务用于指示将所述探测结果中的服务特征与预设的服务特征进行匹配;
匹配模块,用于采用至少部分匹配任务并行的处理方式,执行各所述匹配任务,得到相应的匹配结果;
确定模块,用于基于所述匹配结果确定相应的目标端口所提供的服务。
CN202110121236.0A 2021-01-28 2021-01-28 端口服务探测方法、装置、设备及计算机可读存储介质 Pending CN114826635A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110121236.0A CN114826635A (zh) 2021-01-28 2021-01-28 端口服务探测方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110121236.0A CN114826635A (zh) 2021-01-28 2021-01-28 端口服务探测方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114826635A true CN114826635A (zh) 2022-07-29

Family

ID=82526958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110121236.0A Pending CN114826635A (zh) 2021-01-28 2021-01-28 端口服务探测方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114826635A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116823162A (zh) * 2023-06-27 2023-09-29 上海螣龙科技有限公司 一种网络资产扫描任务管理方法、系统及计算机设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116823162A (zh) * 2023-06-27 2023-09-29 上海螣龙科技有限公司 一种网络资产扫描任务管理方法、系统及计算机设备
CN116823162B (zh) * 2023-06-27 2024-04-09 上海螣龙科技有限公司 一种网络资产扫描任务管理方法、系统及计算机设备

Similar Documents

Publication Publication Date Title
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
CN108897691B (zh) 基于接口模拟服务的数据处理方法、装置、服务器和介质
CN110442524B (zh) 一种针对带有认证授权的web服务接口测试方法和装置
CN111045756B (zh) 生成接口服务的方法、装置、计算设备和介质
US7287190B2 (en) Simultaneous execution of test suites on different platforms
US20150347305A1 (en) Method and apparatus for outputting log information
US8856935B2 (en) Automatic synthesis of unit tests for security testing
CN108399132A (zh) 一种调度测试方法、装置及存储介质
CN108228444B (zh) 一种测试方法和装置
US11163552B2 (en) Federated framework for container management
CN112148610A (zh) 测试用例执行方法、装置、计算机设备和存储介质
CN111897724A (zh) 一种适用于云平台的自动化测试方法及装置
US11294740B2 (en) Event to serverless function workflow instance mapping mechanism
CN112559525B (zh) 数据检查系统、方法、装置和服务器
CN112463588A (zh) 一种自动化测试系统及方法、存储介质、计算设备
CN114356521A (zh) 任务调度方法、装置、电子设备及存储介质
CN114116078A (zh) 基于微前端的应用数据处理方法、装置、设备及介质
CN110457132B (zh) 一种功能对象的创建方法、装置和终端设备
CN114826635A (zh) 端口服务探测方法、装置、设备及计算机可读存储介质
CN108900482B (zh) 脚本的执行方法、服务器管理系统及存储介质
CN114357029A (zh) 业务数据的处理方法、装置、设备、介质及程序产品
CN109788251A (zh) 视频处理方法、装置及存储介质
CN111930625A (zh) 基于云服务平台的日志获取方法、装置及系统
US20230118838A1 (en) Advanced agent instrumentation for opentelemetry implementations
CN110880990A (zh) 一种大数据集群组件的配置核查方法、装置及计算设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination