admin管理员组

文章数量:1533070

2024年3月23日发(作者:)

维普资讯

C 43-1258/TP 

计算机工程与科学 

2002年第24卷第2期 

tSS 1007.】30X 

COM ̄L'TER ENGlNEERlNG&SCIENCE 

V0l 24.No.2.2002 

文章编号:1007.1 30X{2o02)o2.0029 03 

基于Windows 2000的端口扫描系统设计和实现 

Design and Implementation of Port Scanners Based 

on Windows 2000 

黄昆,张大方 

HUANG Kun.ZHANG Da-fang 

c湖南大学计算机与通信学院,湖南长沙410082) 

School of Computers and Communications.Hanan Universi ̄",Changslm 410082,China) 

摘要:本文介绍了端口扫描的原理,并用Visual C++6.0实现了基于Windows 2000操作系统 

的端口扫描程序 该程序的功能有TCP SYT ̄"端口扫描、UDP端口扫描、简单网络攻击以及捕获本地 

主机流入流出的IP数据包。 

Abstract:This paper presents the principle of port scanning,and the implementation of a port scanning pro— 

graininVisual C++6.0 onfile plaffoara ofWindows 2000.hTis progrmn hasthefunctions such as TCP SYNport 

csanning,UDP port scanning,sin ̄e neBvork attack an3 capturing IP data packets passing by the local host. 

关键词:端口扫描;『玛络攻击;捕获【P数据包;原始套接卒 

Key words:port scanning;network atatck;capturing IP data packets;raw socket 

中图分类号:"tT393.O8 文献标识码:A 

运行状况。国外在这方面的实际产品研究主要集 

1引言 

中在NAI公司(Network Associates h|10l0 , 

Inc.)和ISS公司(Interact Security System)。下面 

漏洞扫描是自动检测远端或本地主机安垒漏 

介绍基于Windo ̄2000操作系统的端口扫描的设 

洞的技术,其中端口扫描是漏洞扫描的基础部 

计和实现方法。 

分,通过查询TCP/IP端口,记录目标的响应, 

探测远端或本地主机服务端口的打开状态和所提 

供的服务,收集关于某些特定项目的有用信息。 

2端口扫描的原理 

端口扫描的基本原理是向目标主机的服务端口发 

端口扫描的方法分为被动扫描和主动扫描。 

送探测数据包,记录目标主机的响应,并通过分 

被动扫描的方法主要有:TCP eoD/l ̄et()端口扫 

析响应来判断服务端口的打开和关闭,通过分析 

描、TCP SYN端口扫描 TCP FIN端口扫描和 

端口提供的服务(或信息),来检测是否存在网 

络安全漏洞;另外捕获本地主机(或服务器)的 

UDP端口扫描;主动扫描的方法主要有:SYN 

流人流出IP数据包也可以用来监视本地主机的 

湮没攻击、Echo湮没攻击和UDP湮没攻击。 

*收稿日期:2001-06-30 ̄修订日期:2001.11-15 

喜蓄异 赛奁 197科8 毫 贸: ?。 向为日信目络;张大方,教授,博士生导师,研究方向为日信 

署裳趣址:4

^ddr瞄:sd 

10。 湖南省长沙市湖南大学计算机与通情学院;1

ofc唧 t唧and Comnmtif ̄tions,Hmmn University (1+

 :

an 

(o731)88

Hunan410 ̄2,P R.Chf

2】57o;E.n瑚1:qu甓nhu蛐 

in ̄ 

蛔】63.。硼 

29 

维普资讯

2.1 TCP ̄otmgct()端口扫描 

信息及时接收到,则说明目标端口是关闭的;如 

这是最基本的TCP端口扫描 一般操作系 

统都提供了connect()函数的系统调用。运行扫 

描程序的主机调用conncl()函数与目标主机的目 

标端口进行TCP连接。若corlllc('l()调用成功,说 

明目标端口打开;否则,目标端口关闭。 

2.2 TCP SYN端口扫描 

果超时,未接收到端口不可达ICMP信息,则说 

明目标端口可能是打开的 

2.5 s、 湮没攻击 

SYN湮没攻击是攻击主机发送源IP地址为 

欺骗IP地址的SYN请求数据包给被攻击主机, 

使它发送sYN I ACK响应数据包给欺骗IP地址。 

攻击者故意不完成三次握手,其目的是使被攻击 

主机系统的等待建立连接的数量超过它的限制数 

量(阈值),消耗其系统资源 

2.6 Echo湮没攻击 

这又称为“半开放”TCP端口扫描。众所周 

知,建立一个TCP连接需要三次握手,而在请 

求一个TCP连接时,1℃P S't3N端口扫描程序不必 

完成三次握手。 

TCP SYN端口扫描程序发送s、 数据包给 

目标主机的目标端口,如果目标主机的目标端口 

打开,即处于侦听状态,目标主机将发送SYNI 

ACK响应数据包给扫描程序;如果目标端口关 

闭,即不处于侦听状态,目标主机将发送ACKI 

RST数据包给扫描程序。固此,扫描程序依据接 

收到的数据包是SYNlACK数据包还是ACKI RST 

数据包来判断目标端口是否打开。 

2.3 TCP FIN端口扫描 

UDP 7号端口提供回显服务(Echo service)。 

攻击者发送源IP地址为梭攻击主机的IP地址, 

源端口和目标端口都为7的UDP数据包。被攻 

击主机的7号端口响应此数据包,又发送回显响 

应数据包给自己的UDP 7号端口,如此循环下 

去,最终消耗梭攻击主机的资源,使其崩溃。 

2,7 UDP湮没攻击 

攻击者发送海量的UDP数据包,阻塞被攻 

击主机的知名UDP端口的等待队列,使其拒绝 

其他的合法服务请求。 

有时TCP SYN端口扫描可能不够“秘密”. 

因为一些防火墙和信息包过滤器设置在重要的端 

口,能够检测到SYN端口扫描。TCP FIN扫描又 

称为“秘密”扫描,它可能会很顺利地通过这些 

装置,并且扫描时也不必建立TCP连接。 

3原始套接字编程的支持 

众所周知,Windows Sockets规范支持流套接 

字(TCP套接字)和数据报套接字(UDP套接 

字)。Windows Sccke ̄s规范也支持原始套接字 

(rdw socket)。原始套接字包含两种类型:一种类 

型是系统提供的默认协议(比如ICNP和IGMP) 

的套接字;另一种类型是用户自定义协议(比如 

TCP和UDP)的套接字。原始套接字支持应用程 

序开发者对IP数据包的操作,可以构造自己的 

IP数据包。 

TCP FIN端口扫描程序发送SYNI FIN数据包 

给目标主机的目标端口,如果目标主机的目标端 

口打开,目标主机将发送SYNI ACK响应数据包 

给扫描程序或者不响应sYNI FIN数据包;如果 

目标端口关闭,目标主机将发送ACKI RST数据 

包给扫描程序。因此,扫描程序依据目标主机响 

应的不同来判断目标端口是否打开。 

2.4 UDP端口扫描 

UDP是无连接不可靠的协议,因此,UDP端 

口扫描也是不可靠的。我们可以采用两种方法进 

行端口扫描: 

(1)发送UDP数据包给目标主机的目标 

UDP端口,等待目标端口的响应。如果响应及 

尽管UNIX和unux操作系统构造自己的IP 

数据包很容易,但是由于Windows 9X和windo ̄ 

N1’的 ̄'insoek库不支持选项I HDRINCL,难于实 

现。目前仅Win&vs 2000支持选项IP.HDRINCL, 

可以构造自己的『P数据包,包括TCP数据包和 

UDP数据包。 

时接收到,则说明目标端口是打开的;如果超 

时,未接收到响应,则说明目标端口可能是关闭 

的。 

4程序设计的总体框架 

本端口扫描程序是在Windows 200o Server操 

作系统平台上,利用Visual C++6.0开发工具 

(2)发送UDP数据包给目标主机的目标 

UDP端口,等待目标端口的端口不可达(P0n 

Unreached)的ICMP信息。如果端口不可达ICMP 

30 

维普资讯

开发实现的。它主要完成的功能有: (1)TCP 

S'TN端口扫描;(2)UDP端口扫描;(3)SYN湮 

I口£目E■■■■●■■■■■■●■●■雕 

…r———————一 

 l

没攻击;(4)Echo湮没攻击;(5)UDP湮没攻 

…r———————一 

…扯r —i——百_ 

 l一--r r 1r ir 

~ ——一一 

击;(6)捕获流人本地主机的JP数据包;(7) 

l—a i——一 

… 一

L LI 

 —一 

捕获流出本地主机的IP数据包 如图】所示。 

~H『一— _J 

l…

 l1 ——一 

l㈣『—一 

 l口口 

一 

j ~ 

i5 1 TⅡ j ————一 

f ir目 i:————一 

馏::: ;1 

I…t I 

j胁 

} I 

j I 

I 

图2程序扫描结果图 

圈。程序总体框架图 

5程序设计的思想方法 

由于MFC提供的Af

誊 

7 结束语 

本文就端口扫描的原理和编程设计实现的思 

路和方法等作了分析和概括。随着黑客技术的发 

kGetlnstm ̄ce()函数在程序 

展,端口扫描技术面ll缶新的问题要解决,比如分 

开始时静态实例化套接字,而本程序需要动态实 

布式扫描,对新出现的木马后门的扫描和识别等 

例化套接字。因此本程序采用面向对象的程序设 

等。我们要不断地研究黑客技术,“知己知彼” 

计方法,编写自己的基类和子类。 

才能在与黑客的斗争中取得优势。 

被动扫描的程序设计大概思路: (1)启动 

Winscck rill;(2)创建原始套接字;(3)设置选 

参考文献 

项LP.HDRINCL,获取构造1P数据包的权限;(4) 

[1]李首杰^慢检删币¨ 日橙测系统[ .4t4ag- ̄l世界,2oto一∞一27 

绑定源JP地址;(5)发送自定义的特殊IP数据 

[2]许桔生.吴海燕,毕学尧网络信息安全的关键技术[ ]计 

包;(6)设置超时;(7)设置运行扫描程序的主 

算机世界,_2-00o一05一】5. 

机的I/0控制模式为接收本地主机流人流出的IP 

[3]Slepl ̄n Northmlt.网络^侵检删分析员手册[M]北京:人民 

邮电出版杜,∞。0 

数据包;(8)接收响应的『P数据包或超时处理; 

[4] Secu6 ̄M+mager+ ̄rl, j卅盯 (SMI)for nda啪311"Getling Start— 

(9)关闭原始套接字;(10)关闭Winsoek.dll。 

ed C ̄ide.Versim】~

z] }帅rk A.ssc ̄atesTeclmdq ̄Ine.2001 

主动扫描的程序设计主要步骤:(I)启动 

[5]]nle ̄l sc_dn『H u Guide Versa 6 1[z].[ntcnle/Sccmity 

Winsoek.dll;(2)创建原始套接字;(3)设置选 

sv毗ms Inc.2001 

项IP—HDR ̄'CL,获取构造JP数据包的权限; 

[6]sv Scanner User’s Guide Ve ̄on 4.】[z].Inmmel s 

svs Tns Inc.2OOO 

(3)绑定源JP地址:(4)发送海量自定义的特 

[7]Database s( r L…Gid 

Versi ̄4.0[z].Int,m',el s 

殊IP数据包;(5)关闭原始套接字;(6)关闭 

 ̄lem¥ln ̄,2OOO 

Winsock.dl1 

[8_防范网络入侵[N 启明星辰公司编译计算机世界,1999 

10—18 

6程序的实现和运行结果 

[9 贾颖和^侵检删与预营[N .计葬机世界,2OOO一3—27 

[1O]李江使用移动代理技术的网络攻击拉测系统[ ].计葬 

机世界,2OO0—03—27 

本程序运行扫描了湖南大学Web服务器(域 

[11]李江入侵检铡代理同的信息交换与系统实现[ ].计葬 

名: hunu.edu.oIq,IP地址:202.197.96.34)的 

机I 界,2OO0一∞一02 

TCP端口和UDP端口。如图2所示,该服务器的 

[12]糸渡,典型的入侵拉测系统[N]计算机世界,2000—03—27 

TCP端口135、139打开,uDP端口135、137、138 

[】3] Bell n s.secu ” 曲l哪in the TCp/IP Protood Suite[】]l 

Comfmter … Revi ̄",1989.19(2):32—48. 

打开。其中TCP端口139是保留的端口,提供 

[】4]1)ou6] ̄E Comer用TCP/IP进行同际互连第一卷:原理、协 

NETBIOS会话服务,它容易被入侵者利用来获取 

议和体系结构(第三版)[m北京:电子工业出版杜,1998. 

服务器的系统信息,是一个网络安全漏洞。 

[15]Kate c 删 s C十十6开发手册[M].北京:机械工业 

版社.1 . 

本文标签: 目标端口扫描数据包程序