首页 > 范文大全 > 正文

使用WinPcap的远程主机扫描系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇使用WinPcap的远程主机扫描系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:通过研究了大量的TCP SYN 扫描,利用WinPcap构造和捕获数据包,发现扫描在远程主机的活动。该方法提供了一种通用的解决SYN扫描(半开发式扫描)扫描的方案。同时对现存的端口扫描方案进行了分析和评估,并讨论了该方向上尚未解决的问题和发展趋势。

关键词:WinPcap;端口扫描;主机扫描;TCP 同步序列号扫描

中图分类号:TP316 文献标识码:A DoI: 10.3969/j.issn.1003-6970.2012.05.024

Survey on WinPcap for Remote Host Scan System

YaNG Jian, cHeN Peng-fei

( Institute of computer and software, Nanjing University of Posts and Telecommunciations, Nanjing 210003, China)

【Abstract】This paper first analyzed TCP SYN Scanning, where by using the scan characteristics, we identify anomalies and scan activities in a network or host. The proposed method provides a generic solution to SYN scan (half scan), which is based on connect scan. results obtained from our method prove the detection capabilities and accuracy. at last,it discussed the unresolved topics and development trends in this field.

【Key words】winPcap; Port scanning; Host scanning; tcP SYN scan

0 引 言

通过网络来测试主机安全性,它可以检测主机当前可用的服务及其开放端口,查找可能被远程试图恶意访问者攻击的大量众所周知的漏洞,隐患及安全脆弱点。“端口扫描”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。“端口扫描”行为的一个重要特征是:在短时期内有很多来自相同的信源地址传向不同的目的地端口的包。我们要研究的是在一台单独的主机上利用检测TCP数据包进行TCP SYN

扫描的效果[1-12]。

1 研究背景与历史

随着Internet技术的飞速发展使网络用户规模增大,众多的企业、组织、政府部门与机构都在组建和发展自己的网络并连接到Internet上,以充分共享、利用网络的信息和资源。伴随着网络的发展,也产生了各种各样的问题:如何知道自己的计算机是否安全?如何知道计算机是否被入侵?黑客是如何收集目标主机基本的信息?WinPcap则是Windows平台上为数不多的功能强大且可免费获得的包捕获接口软件之一,适用于广大的Windows平台下的网络分析。本文研究的远程主机扫描系统利用WinPcap其提供的Windows平台下分组捕获机制捕获数据包后进行数据分析,通过捕获本地主机或服务器的流入流出数据包来监视本地IP主机运行情况。

2 WinPcap

2.1 WinPcap简介

WinPcap(Windows Packet Capture)是由意大利人Fulvio Risso和Loris Degioanni提出并实现的①,其主要思想源于Unix系统中著名的BSD包捕获架构LibPcap,是为LibPcap在Windows平台下进行数据包的捕获而开发的。WinPcap由一系列开源的网络数据包捕获函数构成,其设计上参照了LibPcap,使用方法与LibPcap极其类似[13-14]。

winpcap是Windows平台下一个免费的网络驱动开发包,是第一个在Win32平台下支持包捕获的开放系统,提供了Windows平台下功能强大的分组捕获机制。该系统性能稳定而且效率极高,利用它提供的丰富而且功能强大的网络数据包处理函数,广泛应用于对数据包有严格要求的应用中。

2.2 WinPcap体系结构

基于UNIX的Libpcap 是一个与系统无关的、采用分组捕获机制的捕获函数库,用于访问数据链路层。Libpcap 隐藏了应用进程与操作系统内核之间交互的细节,在安装了Libpcap

能够自由地跨平台使用,大多数的网络监听程序都使用它和内核部分进行通信。Winpcap是Libpcap 的Windows 版本,它由内核级的网络组包过滤器(NPF)、低级动态链接库packet.dll、高级系统无关库WPcap.dll三个模块构成[2,15-16]。

模块一NPF(Netgroup Packet Filter,NPF),是一个虚拟的设备驱动程序,工作在网卡驱动的上面,是Winpcap架构的核心。其主要功能是在底层过滤原始数据包,并把这些数据包原封不动地上传给用户级模块,并且对用户级提供可捕获、发送和分析性能。

模块二Packet.dll是用户级动态链接,在Win32平台上为数据包驱动程序提供一个公共的接口,用来解决不同版本的Windows操作系统的差异,使得基于Winpcap开发的应用程序能运行在不同版本的Windows平台上。

模块三Wpcap.dll也是用户级动态链接,与操作系统无关的,工作在Packet.dll之上,为用户提供功能强大、高层和抽象的函数库。

3 远程主机扫描系统的实现

3.1 网络扫描过程

网络扫描分为三个阶段:

1)发现目标主机或网络。可以通过PING扫射(Ping Sweep)来识别系统是否处于活动状态,通过扫描(例如发送ICMP请求包给目标IP)和TCP PING(例如发送特殊的TCP数据包给通常打开且没有过滤的端口)来实现;

2)进一步搜集目标信息,包括操作系统类型、运行的服务和服务软件等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由器信息和各主机的信息;

3)一步测试系统是否存在安全漏洞。

3.2 端口扫描原理

攻击者总是想做到在获得扫描结果的同时很难被逆向寻踪。隐藏源地址的方法是发送大量的欺骗性的端口扫描数据包,其中只有一个是从真正的源地址来的[17][18][19]。这样即使全部数据包都被察觉,也无法追踪到真正的信源地址。

目前主要采用的端口扫描软件被称为“端口扫描器”,可以对目标主机的端口进行连接并纪录目标端口的应答[10],通过选用远程TCP/IP协议不同的端口的服务,可以搜集到有价值的信息(如,是否有端口在侦听,是否允许匿名登录,是否有可写的FTP目录,是否能用TELNET等)。端口扫描可以提供以下几个用途:

1)识别目标主机上有哪些端口是开放的;

2)识别目标系统的操作系统类型;

3)识别某个应用程序或某个特定服务的版本号;

4)识别日标系统的系统漏洞。

端口扫描时发送的数据根据不同的网络协议而构造,即各种不同的网络协议数据。如,基于TCP协议的端口扫描,则利用TCP协议来产生相应的数据。为了获知目标主机有哪些端口打开,就要发送数据到目标端口,等待接收目标返回的数据,同时分情况对返回的信息进行仔细分析。返回的协议数据,网络协议分析模块负责分析,根据数据内容判断端口是否打开⑤。

本文的创新主要体现在:

1)对传统的扫描技术进行了改进,使得扫描速度有提高,不易被过滤同时可以应用多线程技术;

2)基于WinPcap的数据包的构造,根据系统的设计需要研究了TCP数据包和IP数据包的构造,以及在网络上捕获数据包进行的数据分析;

3)改进后的扫描不需要完成Connect系统调用所封装的建立连接的整个过程。即使扫描过程中出错也不会显示连接和连接出错的服务信息,达到数据报可信传输的目的。

虽然在扫描过程中,使用TCP SYN 扫描不容易被发现,扫描速度也很快,但在使用多线程会出现串位现象等问题上需要做进一步的改进。

本文针对端口扫描和主机扫描的特点,在TCP Connect扫描的基础上实现TCP SYN扫描。利用WinPcap这款Windows平台上功能强大的包捕获接口软件构造和捕获数据包并进行分析。端口扫描不仅对于本地主机,对于网络上(共享介质)的主机也同样适用。通过选用远程TCP/IP协议不同的端口服务,记录目标计算机端口给予回答的方法,可以搜集到很多关于目标计算机的各种有用的信息(比如:是否有端口在侦听,是否有可写的FTP目录等)。同时根据扫描的结果分析可以识别目标主机上哪些端口是开放的,识别目标系统的操作系统类型[23],甚至可以识别应用程序或特定服务版本号。

系统的测试结果表明本文实现了远程主机扫描的预期目标,该检测系统主要关注TCP SYN扫描,但其他类型的扫描如connect连接扫描,FIN扫描和null扫描的方案也可以在此检测基础上进行改进。