APP下载

IP及端口扫描体系的逻辑处理设计

2017-10-12裴志斌李斌勇王星程

网络安全技术与应用 2017年10期
关键词:线程局域网列表

◆裴志斌 李斌勇 王星程

(成都信息工程大学网络空间安全学院 四川 610225)

IP及端口扫描体系的逻辑处理设计

◆裴志斌 李斌勇 王星程

(成都信息工程大学网络空间安全学院 四川 610225)

本文针对检测网络安全问题,深入分析了与网络端口相关的漏洞。围绕这些漏洞,分析并设计了将IP和端口扫描工具结合起来,实现对计算机安全问题识别技术的完善。在此基础上实现了利用TCP和UDP端口扫描来识别安全问题。程序通过查询端口和端口状态,分析其提供的服务;程序分析运行环境,获得所在的操作系统版本。安全人员可以通过逻辑处理程序分析得到的结果,对客户主机可能存在的程序或系统漏洞提供相应解决方案。

端口扫描;TCP/UDP;网络安全

0 引言

随着信息技术的广泛应用,计算机和网络的发展已经渗透到各个角落,其开放的性质和网络的连接性能也在逐渐加强。而其中潜在的网络安全问题,逐渐引起了社会的广泛关注。端口扫描器在检测网络安全问题时发挥着关键性的作用。通过向目的主机的TCP/IP端口发送TCP或UDP探针,进而把检测对象所做出的反应记录下来,以此来明确目的主机服务端口的状态和提供的服务,之后再进行网络安全问题的分析。相关技术人员通过检测到的状态,在黑客发现和利用网络存在的隐患之前解决问题,防止网络安全遭到破坏。

在我国目前,已经有一些专门开发相关工具和技术的公司。例如:启明星辰、绿盟科技等公司。其设计的技术通常将硬件作为主要内容,设计的技术的功能执行速度比较快,不会受主机性能的影响。但是这个特点与软件不同,简单、方便使用、功能稳定才是大部分用于主机的端口扫描器所应具备的能力。

未来,由于防火墙的广泛使用和人们安全意识的提高,端口扫描技术会更加复杂和完善。目前基于主机的扫描技术(一种针对操作系统的扫描技术,采用了被动的、非破坏性的方法对目标的系统进行检测)将可能不再适用于未来大规模、集成式的网络环境。而基于网络的扫描技术(一种采用积极的、非破坏性的方法对系统进行检测,该技术可发现多个平台漏洞,同时方便安装和使用,但是会占用大量带宽)可能会随着网络带宽的不断扩大而更显其优势。

1 程序功能模块总体设计

Winsock是 VC里面本身自带的极其重要的控件,利用Winsock使用各种Internet协议在VC程序里显得轻而易举。控件是设计端口指定扫描工具不可或缺的,利用UDP协议或TCP协议进行信息的相互交换并产生连接。这种做法能够直截了当地确认目标机器端口是否开启或是关闭。TCP connect()由 WINSOCK函数中的connect()调用,用于实现和特定对象间的连接,并通过端口的不同状态模式来连接结果。若要实现connect(),端口必须保持特定的运行状态,即监听模式,否则其服务将无法完成。

程序VC在系统中有着极其重要的职能,其中Winsock更是其中一大亮点,对Internet协议而言,它是其有效使用的前提和基础。另外它的运用还可以实现远程操控,利用 UDP协议等实现和目标主机的数据传递职能。这样就能确认远程计算机的端口开放情况。由于TCP协议判断远程计算机的信息比UDP协议准确,所以本文使用Winsock控件的TCP协议来开发扫描器。

针对程序的功能和性能需求分析,以及程序总体流程设计,对程序的功能模块进行了详细的划分和设计,程序总体功能模块划分细节如图1所示。

图1 程序总体功能模块设计

2 程序流程总体设计

2.1 IP及端口扫描体系流程设计

扫描体系界面简单明了,操作方便。程序运行后,运行界面上以功能列表的形式,提示用户工具所含具体功能并按顺序进行相关操作。

如图2所示为具体流程设计关系图。

图2 IP及端口扫描体系流程设计

首先是扫描数据设置模块的设计,用户根据功能列表,先后对扫描目标 IP地址、开始和结束端口数目、具体超时、线程数和TCP或UDP扫描进行设置。作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。在本模块中,对扫描所需要的主要数据进行设置,为程序执行扫描指令奠定基础。设置完成后,程序依据用户设置的具体数据开始执行,若用户并未对有关数据进行设置或是设置有误,程序以默认数据执行。

然后是端口扫描模块设计,扫描器通过选用远程 TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。端口扫描模块被细分为三个子功能模块,分别为“TCPUDP扫描”子模块、“端口所对应服务分析”子模块以及“操作系统判断”子模块。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器可以不留痕迹地发现远程服务器的各种 TCP端口的分配及提供的服务和它们的软件版本。

“TCP/UDP扫描”子模块按照用户最初的设置数据,对目标端口进行扫描,并显示扫描结果。若用户最初并未设置扫描数据,那么程序按系统默认数据进行处理;“端口所对应服务分析”子模块对端口所对应的服务进行分析和判断,并为用户分析判断网络安全漏洞提供建议;“操作系统判断”子模块通过查询系统自带资源列表对所扫描的目标IP的主机操作系统版本进行判断。

在“TCPUDP扫描”子模块中,用户对TCP或者UDP扫描进行选择,用户选择完毕后程序首先创建工作线程StartThread,对客户在扫描数据设计模块时设置的数据进行判断,判断正确则按照设置数据进行下一步操作,判断错误则按照系统默认数据进行下一步操作,通过SetThreadHandleFunc()创建线程,判断比较用户设置端口数与系统设置线程数大小,系统默认设置最大线程数为64。若用户设置端口数小与系统设置线程数,那么程序以一组线程由ThreadHandFunc()进行下一步线程处理操作;若用户设置端口数大于系统设置线程数,那么程序将其分别创建为N组,由ThreadHandFunc()循环处理,直至最后一组线程处理完毕。程序通过ThreadFunc()进行端口扫描具体过程,并由消息机制 OnGetthreadmessage()更新列表信息,直至创建的工作线程结束,程序显示最后的扫描结果,扫程序描结束。

在“端口所对应服务分析”模块中界面线程OnBnCliskedOK2接收由工作线程Startthread发来的THREADINFO结构体中的消息,THREADINFO结构体中主要包含线程句柄、IP地址、端口号、端口状态等信息,通过查询系统的列表中端口所对应的相关服务,分析端口所对应的服务类型,并以列表形式显示结果。

“操作系统判断”模块在界面线程OnBnCliskedOK2接收结构体THREADINFO中消息后,通过查询系统的列表中相关信息,分析判断目标 IP地址主机操作系统版本,并以列表形式显示结果。

2.2 局域网内所有主机扫描流程设计

图3 局域网所有主机扫描流程设计

程序运行后,在运行界面中以功能选项键的方式,提示用户工具含有扫描局域网内所有主机扫描的功能,用户根据需要选择使用此功能,点击功能选项键后,程序开始执行用户指令,并以列表的形式将扫描结果显示出来,简洁实用。用户点击“局域网内主机扫描”,通过NETRESOURCE结构体返回枚举网络资源列表信息,对枚举网络资源信息的启动通过WNETOPENENUM()实现,随后建立WSAData列表,WsaStart进行判断,若无相关信息,则遍历结束,显示扫描结果,若有相关信息,则获取计算机名称及 IP地址,对所获取的信息进行处理分析,最后以列表的形式将结果显示。如图所示3为局域网内主机扫描流程设计图。

3 IP及端口扫描体系的实现

3.1 TCP/UDP端口扫描实现

几秒之后程序弹出窗口提示“扫描结束”,右边列表中显示了使用TCP协议的端口号和其他信息。

在最终的运行结果中,程序发现了当前 IP地址的主机,使用TCP协议的端口号有:135、445、443号,分别对应的服务为:远程过程调用服务、共享服务、网页浏览服务。使用 UDP协议的端口号有:134、139等,其中139号端口为NetBIOS服务。

图4 分别使用TCP/UDP扫描后的结果

3.2 局域网主机扫描实现

点击程序主界面的“局域网所有主机扫描”,弹出窗口中点击“扫描”按钮。等待一段时间后,程序列表中显示了当前局域网中,开启了网络共享的或者没有在网络中隐藏的计算机名和对应的IP地址。扫描结果如图5所示。

图 5 局域网内主机扫描结果

程序完成了IP、端口、端口状态、主机操作系统版本、对应服务、计算机名等的扫描,这些信息为后续的渗透测试奠定了基础。

4 结束语

端口扫描是扫描的奠基石,也是电脑中毒、黑客攻击的最基本手段,了解此种扫描技术能够在一定程度上为计算机安全防范提供参考,通过这种技术也能够掌握系统的开放端口数量,同时还能够根据相关的系统反馈数据掌握系统的运行情况。不同操作系统安装和设置的网络协议有所差别,因此在不同的系统中进行扫描,结果可能不尽相似。本文主要通过对端口扫描技术原理进行分析,能够获得当前主机IP地址和局域网内主机IP地址,能够通过对这些 IP地址进行端口扫描,获得对应主机开放的服务端口。经过多次实验数据显示,现有的扫描器在局域网中的应用成果显著,但是对运行不甚稳定的广域网还无法完全适用,因此应该在下一步着重进行研究,争取尽早实现稳定、高效的端口扫描技术。

[1]黄友俊,李星,吴建平等.一种端口扫描IP网址活跃度统计系统及方法, CN105471676A[P],2016.

[2]黄炜.详解端口扫描和物理网络测试命令[J].课程教育研究,2012.

[3]肖征.基于网络爬虫的网络漏洞扫描检测系统的设计与实现[D].吉林大学,2014.

[4]陈珊珊.网络安全扫描系统的设计与实现[D].大连理工大学,2014.

[5]王晓博,张亚东,徐刚.Linux防火墙远程控制系统的开发[J].郑州轻工业学院学报自然科学版,2015.

[6]郭雨龙.基于 HTML5应用的 Chrome浏览器安全支付插件设计[D].西安电子科技大学,2015.

[7]杨宁.基于 WinPcap的内网监控系统的设计与实现[D].中国人民解放军信息工程大学, 解放军信息工程大学,2013.

[8]山蕊,蒋林,孟李林.PTN芯片中IP组播输出端口扫描电路: CN103838685A[P],2014.

[9]周迪,赵晖.防御端口扫描入侵的方法及装置:CN105681353A[P],2016.

[10]程光,吴桦.基于自适应的网络端口快速扫描方法:CN103685279A[P],2014

猜你喜欢

线程局域网列表
基于C#线程实验探究
学习运用列表法
轨道交通车-地通信无线局域网技术应用
扩列吧
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
基于VPN的机房局域网远程控制系统
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
列表画树状图各有所长