« | July 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |
|
公告 |
My blog is about my major : network security.the most papers are talk about it ,I like my major ,i wish you could find what's you need in it. |
统计 |
blog名称:我的IT人生 日志总数:78 评论数量:185 留言数量:-1 访问次数:523292 建立时间:2006年4月5日 |
| 
|
本站首页 管理页面 写新日志 退出
[network security]扫描方法详细 |
一,端口扫描技术 基本的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禁止这种特性
500)this.width=500'>
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(连接拒绝)
|
阅读全文(6028) | 回复(1) | 编辑 | 精华 |
回复:扫描方法详细 |
qiang(游客)发表评论于2010/11/16 16:56:09 | 了解了解
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
» 1 »
|