tcp端口扫描及tcp服务器搭建
1. 课程设计简介
1.1扫描原理
网络扫描,是对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统 漏洞。但是,网络扫描软件事实上也是一把双刃剑:入侵者利用它来寻找对系统发起攻击的 途径,而系统管理员则利用它来有效防范黑客入侵。通过网络扫描,扫描者能够发现远端网 络或主机的配置信息、TCP/UDP 端口的分配、提供的网络服务、服务器的具体信息等。 网络扫描可以划分为 ping 扫描、端口扫描、操作系统探测、弱点探测、防火墙规则探测五 种主要技术,运用的原理各不相同。
端口扫描是探测主机所开放的端口。因为端口扫描通常只做最简单的端口联通性测试, 不进行更进一步的数据分析,因此比较适合进行大范围的扫描:对指定 IP 地址进行某个端 口值段的扫描;或者指定端口值对某个 IP 地址段进行扫描。然后基于端口扫描的结果,进 行操作系统探测和弱点扫描。端口扫描大体上分为 TCP 扫描和 UDP扫描两类。
1.2设计要求
1.2.1至少建立TCP/UDP两台服务器,服务器端口和服务必须有公开和保密两类。完成TCP/UDP协议客户端扫描程序;
1.2.2可以扫描出公开和保密的全部端口号,确定全部公开的服务,甚少可以确定一种保密的服务。
1.3实现简介
我的课程设计主要以TCP端口扫描为主,设计中建立一台TCP服务器及一台TCP客户端&扫描器,通过对需要实现的功能进行分析并构建流程图,此外,通过调用一些具体的函数来具体的实现相应的服务和功能,最后,课程设计中还从多方面对TCP与UDP作了比较,比较两者之间的共同点和不同之处,以此更为全面的认识安全扫描技术这门课程。
2. 常用端口扫描技术
2.1 TCP connect()扫描
这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么 connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用 这个调用。另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开 多个套接字来加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被察觉,并且被防火墙将扫描信息 包过滤掉。目标计算机的logs文件会显示一连串的连接和连接出错消息,并且能很快使它关闭。
2.2 TCP SYN扫描