Chinaunix

标题: 端口扫描方法[转] [打印本页]

作者: meshmore    时间: 2009-12-22 21:02
标题: 端口扫描方法[转]

一,端口扫描技术
基本的TCP connect()扫描
TCP SYN扫描(半开连接扫描, half open)
TCP Fin扫描(秘密扫描,stealth)
TCP ftp proxy扫描(bounce attack)
用IP分片进行SYN/FIN扫描(躲开包过滤防火墙)
UDP recvfrom扫描
UDP ICMP端口不可达扫描
Reverse-ident扫描
二,TCP连接常识
TCP数据包6个标志位
URG: 紧急数据包
ACK: 确认
PSH: 请求急迫操作
RST: 连接复位
SYN: 连接请求
FIN: 结束
TCP/IP的一些实现原则
当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包
当一个RST数据包到达一个监听端口,RST被丢弃  当一个RST数据包到达一个关闭的端口,RST被丢弃
当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包
当一个不包含SYN位的数据包到达一个监听端口时,数据包被丢弃
当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN|ACK数据包
当一个FIN数据包到达一个监听端口时,数据包被丢弃
三,各种扫描方式详细
1, TCP connect()扫描
做法
扫描器调用socket的connect()函数发起一个正常的连接
如果端口是打开的,则连接成功
否则,连接失败
优点
简单,不需要特殊的权限
缺点
服务器可以记录下客户的连接行为,如果同一个客户轮流对每一个端口发起连接,则一定是在扫描
2, TCP SYN扫描
做法
向目标主机的特定端口发送一个SYN包
如果应答包为RST包,则说明该端口是关闭的
否则,会收到一个SYN|ACK包。于是,发送一个RST,停止建立连接
由于连接没有完全建立,所以称为“半开连接扫描”
优点
很少有系统会记录这样的行为
缺点
在UNIX平台上,需要root权限才可以建立这样的SYN数据包
3, TCP FIN扫描
做法
向目标主机的特定端口发送一个TCP FIN包
如果应答包为RST包,则说明该端口是关闭的
若未收到,表示端口是打开的。
4, 分片扫描
它本身并不是一种新的扫描方法,而是其他扫描技术的变种,特别是SYN扫描和FIN扫描
思想是,把TCP包分成很小的分片,从而让它们能够通过包过滤防火墙
注意,有些防火墙会丢弃太小的包
而有些服务程序在处理这样的包的时候会出现异常,或者性能下降,或者出现错误
5, reverse-ident扫描
Ident协议使得可以发现任何一个通过TCP连接的进程的所有者的用户名,即使该进程并没有发起该连接
只有在TCP全连接之后才有效
TCP端口113
例如
可以先连接到80端口,然后通过identd来发现服务器是否在root下运行
建议关闭ident服务,或者在防火墙上禁止,除非是为了审计的目的
6, TCP FTP proxy扫描
FTP bounce attack
做法
在ftp协议中,数据连接可以与控制连接位于不同的机器上
让ftp server与目标主机建立连接,而且目标主机的端口可以指定
如果端口打开,则可以传输否则,返回"425 Can't build data connection: Connection refused."
Ftp这个缺陷还可以被用来向目标(邮件,新闻)传送匿名信息
优点:这种技术可以用来穿透防火墙
缺点:慢,且有些ftp server禁止这种特性

7, UDP ICMP端口不可达扫描
利用UDP协议
做法
开放的UDP端口并不需要送回ACK包,而关闭的端口也不要求送回错误包,所以利用UDP包进行扫描非常困难
有些协议栈实现的时候,对于关闭的UDP端口,会送回一个ICMP Port Unreach错误
缺点
速度慢,而且UDP包和ICMP包都不是可靠的
需要root权限,才能读取ICMP Port Unreach消息
一个应用例子
Solaris的rpcbind端口(UDP)位于32770之上,这时可以通过这种技术来探测
8, UDP recvfrom()&write()扫描
非root用户不能直接读取ICMP Port Unreach消息,但是Linux提供了一种方法可以间接通知到
做法
第二次对一个关闭的UDP端口调用write()总是会失败
经验:在ICMP错误到达之前,在UDP端口上调用recvfrom()会返回EAGAIN(重试),否则会返回ECONNREFUSED(连接拒绝)
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108378/showart_2128352.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2