荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: playboy (冷冷的太阳), 信区: Program
标  题: [转载] 常用端口扫描技术
发信站: BBS 荔园晨风站 (Fri Mar 17 21:12:18 2000), 转信

【 以下文字转载自 Hacker 讨论区 】
【 原文由 bstone 所发表 】
发信人: hansd (淘气蓝皮鼠), 信区: Security
标  题: 常用端口扫描技术
发信站: 武汉白云黄鹤站 (Thu Mar  9 09:33:17 2000), 站内信件

  TCP connect()扫描
  这是最基本的TCP扫描。操作系统提供的connect()系统调用,用
来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听
状态,那么connect()就能成功。否则,这个端口是不能用的,即没
有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系
统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果
对每个目标端口以线性的方式,使用单独的connect()调用,那么将
会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫
描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多
个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标
计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并
且能很快的使它关闭。

  TCP SYN扫描
  这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要
打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准
备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一
个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态
。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,
。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,
则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫
描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的
一个缺点是,必须要有root权限才能建立自己的SYN数据包。

  TCP FIN扫描
  有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会
对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN
数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端
口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN
数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管
端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且
这种方法在区分Unix和NT时,是十分有用的。

  IP段扫描
  这种不能算是新方法,只是其它技术的变化。它并不是直接发送TCP
探测数据包,是将数据包分成两个较小的IP段。这样就将一个TCP头
分成好几个数据包,从而过滤器就很难探测到。但必须小心。一些程
序在处理这些小数据包时会有些麻烦。

  TCP反向ident扫描
  ident协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者
的用户名,即使这个连接不是由这个进程开始的。因此你能,举个例
的用户名,即使这个连接不是由这个进程开始的。因此你能,举个例
子,连接到http端口,然后用identd来发现服务器是否正在以root权
限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才
能看到。

  FTP返回攻击
  FTP协议的一个有趣的特点是它支持代理(proxy)FTP连接。即
入侵者可以从自己的计算机a.com和目标主机target.com的FTP server-PI(
协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI
激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方
发送文件。对于一个User-DTP,这是个推测,尽管RFC明确地定义请求
一个服务器发送文件到另一个服务器是可以的。但现在这个方法好象
不行了。这个协议的缺点是“能用来发送不能跟踪的邮件和新闻,给
许多服务器造成打击,用尽磁盘,企图越过防火墙”。
  我们利用这个的目的是从一个代理的FTP服务器来扫描TCP端口。
这样,你能在一个防火墙后面连接到一个FTP服务器,然后扫描端口
(这些原来有可能被阻塞)。如果FTP服务器允许从一个目录读写数
据,你就能发送任意的数据到发现的打开的端口。
  对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP
正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出
当前目录,结果通过Server-DTP发送出去。如果目标主机正在某个端
口侦听,传输就会成功(产生一个150或226的回应)。否则,会出现"425
Can't build data connection: Connection refused."。然后,
Can't build data connection: Connection refused."。然后,
使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的
优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP
服务器最终能得到一些线索,关闭代理功能。

  UDP ICMP端口不能到达扫描
  这种方法与上面几种方法的不同之处在于使用的是UDP协议。由
于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端
口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错
误数据包。幸运的是,许多主机在你向一个未打开的UDP端口发送一
个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现
哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描
器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方
法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。同样,
这种扫描方法需要具有root权限。

  UDP recvfrom()和write()扫描
  当非root用户不能直接读到端口不能到达错误时,Linux能间接
地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()
调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP
出错还没有到达时回返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-
连接被拒绝。这就是用来查看端口是否打开的技术。

调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP
  ICMP echo扫描
  这并不是真正意义上的扫描。但有时通过ping,在判断在一个网
络上主机是否开机时非常有用。
  评说:扫描的意义是广泛的不限于一般的安全漏洞扫描,他可以
是一种服务扫描,协议扫描,网段扫描,乃至内部扫描。但是最终目
的可能是一样的-----发现网络本身客观存在的安全弱点。应该告诉
大家的是如果当我要试图发现一个网络的薄弱点的话我首先考虑的是
进行扫描虽然他可能一无所获但是我可以告诉大家所有的分析报告都
是来自扫描后的分析,至于同样一个扫描的结果可能出于扫描者的经
验会大大的不同,在这我重声一下(一个真正的网络安全狂热爱好者
不会仅仅满足在那些早以被人知道的漏洞下的,他们会不断尝试新的
方法在无数次的失败后他们其中的一个或几个可能会又一次的发现新
的而不为人知的漏洞。)——goodwell

--
欢迎光临蓝皮鼠的ftp://202.114.14.148
煤燃烧实验室ftp://202.114.14.137

※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 202.114.14.148]

--
☆ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: bbs@192.168.28.23]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店