端口扫描程序的设计与实现(ASP.NET2.0 )
摘要
计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。
端口扫描技术包括主动扫描和被动扫描技术,其中主动扫描技术一般为攻击扫描,主要以使目标机网络瘫痪为目的;被动扫描为辅助扫描技术,借此发现各个端口的开放状态,以便对目标端口进行操作。
本论文首先对常用端口及其协议以及其工作状态进行阐述,对几种常用端口扫描技术进行比较描述。其次,在Windows XP下以C#语言开发出一个端口扫描程序。其中涉及TCP/IP编程和线程研究。(所有权: 毕业设计网 ) [来源:http://www.doc163.com]
【关键词】端口扫描;开发;线程;TCP/IP编程
Design and Implement of Port Scan Program
Abstract
Computer information network to accelerate the development of the information era. However, with the degree of social networks increase, On the computer network has become increasingly dependent on, Network security has become increasingly obvious. And Port Scanning technology is the security issues found one of the important means;
Port scanning technologies, including active and passive scanning scanning technology, Active scanning technology which normally attack scan, So that the main goal of a computer network for the purpose of paralyzing; Passive scanning associate scanning technology, To the discovery of all the ports open state. On the target port to operate.
First, this paper and its port of common agreement and its elaborate state, Several pairs of port scanning techniques described earlier. Secondly , In Windows XP to C # language to develop a port scan procedure . Involving the TCP / IP programming and research threads. [资料来源:https://www.doc163.com]
【Key Words】port scan;develop;thread;TCP/IP program
网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?
在网络中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的;
判断目标主机上开放了哪些服务
判断目标主机的操作系统
如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用响应手段实现入侵。(所有权: 毕业设计网 )
常用端口描述
1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器
2 compressnet Management Utility compressnet 管理实用程序
3 compressnet Compression Process 压缩进程
5 rje Remote Job Entry 远程作业登录
7 echo Echo 回显
9 discard Discard 丢弃
11 systat Active Users 在线用户
13 daytime Daytime 时间 [资料来源:Doc163.com]
17 qotd Quote of the Day 每日引用
18 msp Message Send Protocol 消息发送协议
19 chargen Character Generator 字符发生器
20 ftp-data File Transfer [Default Data] 文件传输协议(默认数据口)
21 ftp File Transfer [Control] 文件传输协议(控制)
22 ssh SSH Remote Login Protocol SSH远程登录协议
23 telnet Telnet 终端仿真协议
24 ? any private mail system 预留给个人用邮件系统
25 smtp Simple Mail Transfer 简单邮件发送协议
27 nsw-fe NSW User System FE NSW 用户系统现场工程师
29 msg-icp MSG ICP MSG ICP
31 msg-auth MSG Authentication MSG验证
33 dsp Display Support Protocol 显示支持协议
35 ? any private printer server 预留给个人打印机服务
37 time Time 时间
38 rap Route Access Protocol 路由访问协议
39 rlp Resource Location Protocol 资源定位协议
[来源:http://www.doc163.com]
41 graphics Graphics 图形
42 nameserver WINS Host Name Server WINS 主机名服务
43 nicname Who Is "绰号" who is服务
44 mpm-flags MPM FLAGS Protocol MPM(消息处理模块)标志协议
45 mpm Message Processing Module [recv] 消息处理模块
46 mpm-snd MPM [default send] 消息处理模块(默认发送口)
47 ni-ftp NI FTP NI FTP
48 auditd Digital Audit Daemon 数码音频后台服务
49 tacacs Login Host Protocol (TACACS) TACACS登录主机协议
50 re-mail-ck Remote Mail Checking Protocol 远程邮件检查协议
51 la-maint IMP Logical Address Maintenance IMP(接口信息处理机)逻辑地址维护
52 xns-time XNS Time Protocol 施乐网络服务系统时间协议
53 domain Domain Name Server 域名服务器
54 xns-ch XNS Clearinghouse 施乐网络服务系统票据交换
55 isi-gl ISI Graphics Language ISI图形语言
56 xns-auth XNS Authentication 施乐网络服务系统验证 [资料来源:www.doc163.com]
57 ? any private terminal access 预留个人用终端访问
58 xns-mail XNS Mail 施乐网络服务系统邮件
59 ? any private file service 预留个人文件服务
60 ? Unassigned 未定义
61 ni-mail NI MAIL NI邮件?
62 acas ACA Services 异步通讯适配器服务
63 whois+ whois+ WHOIS+
64 covia Communications Integrator (CI) 通讯接口
65 tacacs-ds TACACS-Database Service TACACS数据库服务
66 sql*net Oracle SQL*NET Oracle SQL*NET
67 bootps Bootstrap Protocol Server 引导程序协议服务端
68 bootpc Bootstrap Protocol Client 引导程序协议客户端
69 tftp Trivial File Transfer 小型文件传输协议
70 gopher Gopher 信息检索协议
71 netrjs-1 Remote Job Service 远程作业服务
72 netrjs-2 Remote Job Service 远程作业服务
73 netrjs-3 Remote Job Service 远程作业服务 [资料来源:Doc163.com]
74 netrjs-4 Remote Job Service 远程作业服务
75 ? any private dial out service 预留给个人拨出服务
76 deos Distributed External Object Store 分布式外部对象存储
77 ? any private RJE service 预留给个人远程作业输入服务
78 vettcp vettcp 修正TCP?
79 finger Finger FINGER(查询远程主机在线用户等信息)
80 http World Wide Web HTTP 全球信息网超文本传输协议
81 hosts2-ns HOSTS2 Name Server HOST2名称服务
82 xfer XFER Utility 传输实用程序
83 mit-ml-dev MIT ML Device 模块化智能终端ML设备
84 ctf Common Trace Facility 公用追踪设备
85 mit-ml-dev MIT ML Device 模块化智能终端ML设备
86 mfcobol Micro Focus Cobol Micro Focus Cobol编程语言
87 ? any private terminal link 预留给个人终端连接
88 kerberos Kerberos Kerberros安全认证系统
89 su-mit-tg SU/MIT Telnet Gateway SU/MIT终端仿真网关 [版权所有:http://DOC163.com]
90 dnsix DNSIX Securit Attribute Token Map DNSIX 安全属性标记图
91 mit-dov MIT Dover Spooler MIT Dover假脱机
92 npp Network Printing Protocol 网络打印协议
93 dcp Device Control Protocol 设备控制协议
94 objcall Tivoli Object Dispatcher Tivoli对象调度
95 supdup SUPDUP
96 dixie DIXIE Protocol Specification DIXIE协议规范
97 swift-rvf Swift Remote Virtural File Protocol 快速远程虚拟文件协议
98 tacnews TAC News TAC(东京大学自动计算机?)新闻协议
端口扫描原理
入侵如果想要探测目标主机都开放了哪些端口,提供了哪些服务就要先与目标端口建立TCP连接,这也就是扫描的出发点。
①端口扫描原理
尝试与目标机的某些端口建立连接,如果目标主机端口有回复,则说明端口开放,即为活动端口。
②端口扫描分类
A、TCP Connect()端口扫描:
这是最基本的TCP端口扫描。一般操作系统提供connect()函数的系统调用。运行扫描程序的主机调用connect()函数与目标主机端口进行TCP连接。Connect()调用成功,说明端口开放,否则,说明端口关闭。 [资料来源:http://www.doc163.com]
B、TCP SYN端口扫描:
这又称为“半开放” TCP端口扫描。扫描程序发送的是SYN数据包,好象准备打开一个实际的连接并等待反映一样。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于 侦听状态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。
C、TCP FIN端口扫描:
这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。因此,如果受到RST回复表示端口没有开放,反之则端口是开放的。
D、UDP端口扫描:
UDP是无连接的协议,是不可靠的。因此UDP端口扫描也是不可靠的。我们以以下两种判断方法进行端口扫描:
1.发送UDP数据包给目标主机的UDP端口,扫描程序等待目标端口的响应。如果响应及时接收到,说明目标端口是打开的;如果时间超时,未接收到响应,说明目标端口可能是关闭的。
2.发送UDP数据包给目标主机的UDP端口,扫描程序等待扫描端口的端口不可达的ICMP信息。如果端口不可达ICMP信息即使接收到,则说明目标端口是关闭的;如果时间超时,未接收到端口不达ICMP信息,则说明目标端口可能是打开的。
E、SYN湮没攻击:
SYN湮没攻击是攻击主机发送源地址IP是欺骗IP地址的SYN请求数据包给被攻主机,被攻击主机发送SYN|ACK响应数据包。攻击者故意不完成三次握手,目的是让等待 [来源:http://www.doc163.com]
建立特定服务的连接数量超过被攻击主机的系统限制数量,使被攻击主机无法建立该服务的新的连接,直到等待建立连接的数量底于系统的阀值。
F、Echo湮没攻击:
UDP端口7提供回应服务(Echo server)。攻击者构造特殊的UDP数据包,使UDP数据包源地址为被攻击主机的IP 地址,源端口和目标端口都为7,这样发送到被攻击主机的端口7。被攻击主机端口7响应此数据包,发送回应应答数据包给接收到的数据包中的源IP地址的源端口,既是被攻击主机的端口7。被攻击主机的端口7又发送回应应答给被攻击主机的端口7。这样无限循环,消耗主机资源,最终使其崩溃。
G、UDP湮没攻击:
攻击主机发送海量的UDP数据包,堵塞被攻击主机的等待队列。一般选择特殊服务的UDP端口,比如域名服务器Domain server端口53。简单文件传输TFTP端口69等。
本系统是一个基于Windows XP操作系统,以Microsoft Visual Studio 2005为开发环境,C#为开发语言的端口扫描程序。
作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程IP的系统服务端口进行扫描。
有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。所以,对于选择性地对端口进行扫描也非常重要。这当然也是扫描程序需要实现的功能之一。 [来源:http://www.doc163.com]
在对大量端口进行扫描的时候,往往不是几秒钟所能够扫描完成的。用户需要一定的时间来等待扫描的完成。当用户认为没有必要再去进行扫描,而急切需要去完成自己的另外的工作时,用户应该能够终止扫描。当然用户可以直接关闭扫描程序。但是这样往往会浪费大量的系统资源,甚至会由于资源不足而导致系统死机。终止扫描过程,使得程序进入等待工作状态,这样退出程序的可以使系统比较稳定地运行。因此终止扫描也是必须要实现的功能。
扫描结束,其结果显示后,若用户需要进行下一次扫描,清空显示后再进行扫描能更好看清楚扫描结果。
用户在等待扫描的时候,往往希望知道它的工作进度。这样用户可以更好地控制自己的操作。站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。如果系统完成扫描,进度条初始到起点。为了能更好地显示扫描进度,可以显示当前扫描端口。
系统必须提供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下:
扫描功能;
地址选择功能;
端口选择功能;
停止扫描功能;
进度显示功能;
清空结果功能;
[版权所有:http://DOC163.com]
目 录
第一章 引言 1
1.1问题的提出 1
1.2本文的研究路线 1
第二章 概述 2
2.1端口的基本概念 2
2.2端口的分类 2
2.3端口在入侵中的作用 3
2.4常用端口描述 3
2.5端口扫描原理 5
第三章 可行性分析 7
3.1技术可行性分析 7
3.2操作可行性分析 8
第四章 扫描程序分析与设计 9
4.1功能需求描述 9
4.2非功能需求分析 10
4.3目标系统要求 11
4.4工作流程分析 11
4.5程序基于的环境分析 12
4.6系统功能实现分析 13
第五章 系统功能实现与相关代码分析 15
5.1用户界面设计 15
5.2线程实现 16
5.3事件响应 19
5.4线程调用方法实现 24
5.4.1线程调用 25
(所有权: 毕业设计网 )
5.4.2多线程调用 26
5.5输出设计 26
5.6测试 27
5.6.1本机测试 28
5.6.2局域网内测试 29
5.6.3 远程测试 30
小结 31
谢辞 32
参考文献 33
附录A 34
附录B. 外文翻译 -译文部分 37 [资料来源:http://www.doc163.com]
上一篇:基于ASP.NET技术的电子产品销售网站的设计与实现 (ASP.NET2
下一篇:C2C型电子商务系统的设计与实现(ASP.NET2.0)