代理服务器ip在哪
网内资产探测和确认对于网络安全具有重大意义。通过对企业内部网络资产的扫描,网络管理员可以整体了解企业网络的运行情况,监测网络拓扑结构的变化,检测未授权终端的接入,甚至可以检查网络设备是否按照预期运行,是否存在安全漏洞,这将有利于企业进行网络规划和优化管理。网络扫描器是具有代表性和普遍性的主流的网络扫描工具之一,其功能强大,可以完成几乎所有网络协议的扫描探测。为了提高扫描性能、提升主机发现效率,对网络扫描软件进行改进,提出了内嵌交换机端口信息的扫描方案。此方案在网络扫描软件的准备阶段和工作阶段增加对网内交换机端口数据的远程分析,精确定位存活主机,大幅度提高主机发现的效率。
随着万物互联时代的到来,网络空间日益复杂,网络对抗加剧,使网络空间探测在网络对抗认知中变得越发重要,只有了解和掌握空间中各类资产才能在对抗中占得先机。然而,网络空间中的资产类型和数量急剧增长,资产结构规模日益壮大,使得组织内的网络管理员实施网络空间安全管控愈发困难,针对网络安全的态势感知问题逐渐受到重视。
网络资产面临应用场景范围广、涉及用户多、网络连接环境复杂、子网搭建难等问题,给企业的信息安全带来了隐患。为解决这一系列问题,网络安全维护人员需要借助扫描工具及时了解各子网内的资产情况,确保设备及系统的可靠、稳定运行。通过扫描工具能够按需探测和发现局域网内部的各种互联网协议(Internet Protocol,IP)资产信息(包括主机、服务器和专用设备等),也可通过完善特征库的方式增加对自定义资产类型的支持,并进行资产展示和综合统计。
目前广泛使用的扫描工具有网络扫描器(Network Mapper,Nmap)、快速互联网测绘工具(Zmap)和高速网络扫描工具(Masscan)等,其中使用较多为Nmap。Nmap主要具有存活主机发现、网络端口扫描、系统服务和版本确认、操作系统检查、漏洞扫描分析5项功能。
由于Nmap主要采用传输控制协议同步(Transmission Control Protocol Synchronization,TCP SYN)扫描方式,因此,在扫描耗时方面明显高于Zmap和Masscan,然而部分IP地址段耗时并不稳定,这与其采用的等待扫描结果反馈机制有关。
本文针对与网络交换设备联动的信息采集技术进行研究,提出了一种提升Nmap扫描性能的改进方法,旨在进一步提升Nmap扫描性能,为实时掌握网内资产信息提供技术支撑。
Nmap是Linux下的网络扫描和嗅探工具包。它是一款开源的网络探索和安全审计工具,完整源代码对公众开放。经过多年的发展,Nmap已成为评估网络系统安全的重要软件,但与大多数被用于网络安全的工具一样,Nmap也成了黑客们常用的工具之一,用以搜集目标主机的资产信息,从而达到攻击的目的。
(1)存活主机和设备发现。帮助网络管理员和安全专业人员发现网络中的在线)服务检测。识别远程主机或者设备开放端口及运行服务。这对了解运行什么服务、使用什么版本以及需要解决的潜在漏洞很重要。
(3)漏洞评估。利用 Nmap监测出网络系统中的漏洞,通过识别设备开放端口及运行服务可以确定哪些系统易受攻击,并采取相应措施加强防护。
(4)网络映射。Nmap可以创建可视化的网络拓扑信息,包括交换机、路由器、防火墙和连接设备,这有助于网络设计和文档记录。
(6)故障排除。可以使用Nmap诊断网络问题和连接性问题,通过扫描网络和检查运行的服务,快速识别问题源头。
(7)Nmap是开源软件,可以根据组织或个人用户的特定需求进行定制,其拥有大量的用户和开发者社区。
Nmap软件目前常见的版本为Nmap7.x,软件工程目录包含约3 500个文件。核心功能的实现主要由C/C++语言完成,前端图形界面绘制工作主要由 100多个Python脚本文件实现,用于辅助日常脚本搭建或辅助描述的 Lua、Nmap脚本引擎(Nmap Scripting Engine,NSE)、可扩展标记语言(eXtensible Markup Language,XML)等800多个文件。Nmap软件工作的执行流程如图1所示,执行的入口在nmap_main()处 。各个功能模块按顺序依次执行,逻辑简单清晰。
该阶段也称为初始化阶段,主要执行运行参数解析、目标主机列举、程序资源分配、基本扫描信息的输出、端口与地址列表的初始化以及初始扫描脚本的加载等基本的准备操作。
该阶段最主要的流程是主循环,每次循环对指定的一组目标地址进行主机发现、端口扫描、服务与版本确认、操作系统探查及脚本扫描等操作,直到所有的目标地址都被扫描完毕才退出主循环。主机发现、端口扫描、服务与版本确认、操作系统探查及脚本扫描4项功能之间,存在大致的依赖关系,即首先需要完成主机发现,即使用地址解析协议(Address Resolution Protocol,ARP)探测、ping命令探测等技术来探测局域网中的主机,在主机发现(主要是获取IP地址)的基础上,通过使用TCP SYN、传输控制协议确认(Transmission Control Protocol Acknowledgment,TCP ACK)、用户数据报协议(User Datagram Protocol,UDP)等技术扫描发现的主机开放端口,并据此确定具体应用程序和服务版本信息,完成操作系统类型、版本的最终确认。
在完成上述多轮扫描操作后,调用清除扫描脚本完成资源回收、环境清理等操作,释放分配的资源,并打印出扫描的最终结果,扫描结果输出支持文本或XML格式报告。
改进思路分析Nmap在进行资产的全面定位之前,需要先确定网络资产(即目标主机)是否在线,以免发送大量无用探测报文给实际不存在的主机,浪费网络带宽,这个过程叫作主机发现。主机发现是网络扫描的基础,在此基础上,才能进行针对端口、服务等的深度扫描。
在Nmap代码的主循环中,要先扫描发现存活主机,并对存活主机进行端口扫描、服务扫描等操作。如果扫描地址的范围比较大,那么扫描产生的额外流量就会占用大量的带宽,此外,针对大量IP地址的扫描需要消耗大量的时间才能完成。
存活主机探测的原理是构造出某种探测报文,并将其发送给目标主机的特定端口,分析并记录该目标主机对探测报文的响应数据,以判断目标主机是否存活。目前,Nmap软件提供互联网控制报文协议(Internet Control MessageProtocol,ICMP) 发现、ARP发现、TCP发 现和UDP发现等十多种主机发现方式。这些常用的主机发现方式均存在一定局限性。例如,当采用ICMP发现方式时,防火墙的策略配置可能会限制ICMP Ping报文探测,存在无法达到目标主机的风险,所以此种方法存在一定限制性;当采用ARP发现方式时,必须要求目标主机与扫描设备在同一网段,因为扫描设备无法发现跨网段主机;当采用TCP发现方式时,相关报文的构造和发送必须有管理员权限;当采用UDP发现方式时,UDP主要针对一些不常用的端口进行扫描,同时,完全依赖网络协议扫描来发现主机,跟当前网络质量、网络负荷、网络拓扑划分、网络安全设备使用等有密切关系,不受控因素较多。本文提出一种Nmap主机发现性能改进方法,即在主机发现这一过程中引入交换机端口识别过程,通过获取管理信息库(Management Information Base,MIB)中交换机端口状态和连接情况,过滤关闭端口,聚焦开放端口,实现快速定位存活主机,提升Nmap扫描性能。
目前,主流的交换机都支持简单网络管理协议(Simple Network Management Protocol,SNMP),扫描工具可以直接获取到实际存在的某一物理位置的资产信息,并通过SNMP协议获取交换机的媒体访问控制地址(Media Access Control Address,MAC)信息,以及MAC地址与交换机端口的对应关系,减少主机发现时间,节约成本。
在Nmap初始化阶段,通过SNMP协议,提取交换机上的ARP、MAC、端口索引等信息,并对其进行格式化保存处理。通过以上步骤获取的网络存活主机基本信息,可以作为Nmap工作阶段待扫描主机的输入,进行后续主机存活性扫描、操作系统扫描、漏洞扫描等操作,减少网络扫描的时间成本;同时还可以比对补充Nmap扫描的主机结果信息,包括终端的MAC地址信息,接入的交换机管理地址及交换机端口号等信息。
根据改进方案,在主机发现阶段引入交换机端口信息分析、过滤功能,快速发现主机。改进后的Nmap工作流程如图2所示。
增加交换机配置参数获取、网络主机及网络交换设备信息获取、获取信息的解析及保存3个步骤。获取的网络主机地址根据Nmap参数规则,拼接为Nmap待扫描的目标终端,进入工作阶段。MIB定义了网络设备上可供网络管理系统查询或者设置的管理对象及其属性。
在准备阶段,首先,需要获取保存在系统数据库中的待扫描网络核心交换设备的基本信息,包括交换设备SNMP相关的配置参数及待扫描终端信息相关的对象标识符(Object Identifier,OID)信息;其次,在Nmap中对上述参数信息进行处理后,通过SNMPWALK命令获取网络交换设备上保存的有效存活终端的IP、MAC信息及终端在网络交换设备上的接口索引等信息;最后,解析获取到的终端相关信息,获取到的终端即为当前网络中可能有效的存活终端,这些存活终端信息可以作为工作阶段扫描任务的终端输入。
对准备阶段获取的存活终端进行网络主机扫描,即资产发现,可以实现主机存活性判断、主机操作系统扫描、主机端口扫描、漏洞扫描等功能。资产扫描功能结构如图3所示,其主要由任务调度模块、主动探测模块、周期性探测模块组成。
即系统驻留进程,该进程无须与用户直接交互,以服务模式的方式运行。通过解析数据库中配置的任务信息,执行主动探测任务及周期性探测任务,并对任务全过程生命周期进行管理。
由管理员在管理界面进行配置后,任务调度模块启动主动探测任务。按照配置的任务进行资产的发现以及资产详细指纹信息的识别,将最终扫描资产的结果保存在数据库中。
从实用角度出发,按照探测需要花费的时间,可以将周期性探测模块分为3个子模块,且3个子模块相互独立。一是指定网段主机发现子模块。该子模块的任务是对管理员在页面上配置的周期性探测网段进行主机存活性探测。由于管理员配置的探测IP通常是一个IP地址段,因此只进行主机存活性探测,从而快速发现IP地址段中存活的主机,并将探测到的存活主机信息补充到数据库。二是现有主机指纹探测子模块。该子模块的任务是在存活主机的基础上进行深入扫描,获取该资产的开放端口、厂家信息及操作系统信息等。该模块扫描周期较长,因此只针对已发现的存活主机进行扫描。三是现有存活主机存活性探测子模块。该子模块的任务是对现有存活主机进行快速周期性存活性探测。该模块扫描的方式与指定网段主机发现子模块相同,但针对的扫描对象不同。通过对现有存活主机进行存活性探测,可以上报终端离线或上线事件,便于管理员进行处置。本次修改,准备阶段通过交换机获取到的存活主机信息,在图3“指定网段主机发现子模块”中进行梳理和记录后,进入下一步主机指纹扫描流程,减少了全网存活主机发现时间。
将工作阶段扫描的结果,结合准备阶段从网络中交换机上提取的终端MAC信息及交换机端口信息进行数据结果的整合清洗处理。在善后阶段,由于工作阶段资产扫描功能无法在跨网段情况下获取待探测终端的MAC地址信息,因此在准备阶段需要通过SNMP命令的方式,以及在网络交换设备中获取终端MAC地址等信息的方式,补全数据库中探测资产的信息。进而管理员可以在管理界面中获取资产的MAC、接入交换机的端口及接入交换机的IP等属性。
对于同一网段的内网应用环境,修改代码前,使用ping命令进行主机发现,发现一台存活主机大约需要0.001s;设置响应超时1s时,判定该主机为离线内网网络环境中,如果同一网段下存在200台在线主机,那么使用单线程探测整个内网主机发现时间约为55s,使用8个独立线程探测整个内网主机发现时间约为8s。修改代码后,直接获取交换机端口数据,获取IP及MAC信息,仅使用单线程探测整个内网主机发现时间约为2s。内网主机发现效率得到较大提升。
对于不同网段的跨网段应用环境,修改代码前,使用ping命令进行主机发现,发现一台存活主机大约需要0.003s;设置响应超2s时,判定该主机为离线跨网段网络环境中,如果8个网段下分别存在200台在线主机,那么使用单线程探测跨网段主机发现时间约为869s,使用8个独立线程探测跨网段主机发现时间约为109s。修改代码后,直接获取交换机端口数据,获取IP及MAC信息,使用单线程探测跨网段主机发现时间约为8s,使用8个独立线程探测跨网段主机发现时间约为3s。跨网段主机发现效率得到极大提升。
改进前,主机发现阶段常采用ICMP发现方法,即利用ping命令发送回应请求报文和traceroute探测包进行拓扑发现。该方法虽然易于实现,但是网络开销大、耗时长 。
改进后,使用SNMP协议功能,在主机发现阶段将网络层拓扑发现下沉到链路层拓扑发现中,针对开放系统互联(Open Systems Interconnection,OSI)模型的第二层,即数据链路层的链路关系进行发现,通过获取交换机物理端口的使用状态,获取到真实设备之间实际的物理连接。
SNMP协议将各设备运行情况(包括运行状态、异常数据等)自动保存于设备自身的MIB信息库中,这是一个虚拟的信息存储库。在MIB信息库中,信息保存类型分为以树形结构组织查看的静态记录和动态记录两种,并将树中的各个节点称为OID。MIB树清晰而有层次,在进行网络设备数据检测和收集时,只需要调用MIB信息库中的相关信息,就可以实现数据的快速获取和展现代理服务器ip在哪。
在SNMP的工作流程中, 管理端周期性地向各个代理端设备发送请求报文,获取各个MIB中的管理信息,同时,管理端还接收各个代理端设备发来的SNMP陷阱报文,并记录在一个数据文件中。此次改进方法中,在Nmap主机发现阶段,可以直接使用原有MIB信息库的网络主机信息,将其作为下一轮扫描的直接输入,进一步完成系统、端口、服务等扫描过程;在此基础上,再沿用原有流程,使用ICMP协议发现等方式发现未及时刷新进入MIB数据库的新主机,很大程度上减少了主机发现的时间开销。
Nmap是具有代表性和普遍性的主流的网络扫描工具之一,其功能强大,可以完成几乎所有网络协议的扫描探测,但在扫描耗时方面开销较大。本文通过分析Nmap的常用主机发现方式,提出了内嵌交换机端口信息的Nmap扫描方案,通过分析改进思路,完成代码设计与实现。通过SNMP函数完成对交换机有效接口、接口物理地址、接口IP地址、接口类型等的分析,可以从MIB数据库获取存活主机信息,实现主机发现功能,减少网络探测时间成本。