290 likes | 408 Views
信息安全综合实验. 张焕杰 中国科学技术大学网络信息中心 james@ustc.edu.cn http://202.38.64.40/~james/nms Tel: 3601897(O). 第二章端口扫描技术原理与实践. 课程目的 学习端口扫描基本原理 理解端口扫描技术在网络攻防中的作用 熟练掌握网络扫描工具 Nmap 的使用. 2.1 TCP 基本协议. TCP 面向连接的字节流传输层服务 4元组识别一个连接 本地 IP 本地端口 远端 IP 远端端口 建立连接、传输数据、断开连接. TCP 报头标志位. 6个比特标志位 SYN
E N D
信息安全综合实验 张焕杰 中国科学技术大学网络信息中心 james@ustc.edu.cn http://202.38.64.40/~james/nms Tel: 3601897(O)
第二章端口扫描技术原理与实践 • 课程目的 • 学习端口扫描基本原理 • 理解端口扫描技术在网络攻防中的作用 • 熟练掌握网络扫描工具Nmap的使用
2.1 TCP基本协议 • TCP • 面向连接的字节流传输层服务 • 4元组识别一个连接 • 本地IP • 本地端口 • 远端IP • 远端端口 • 建立连接、传输数据、断开连接
TCP 报头标志位 • 6个比特标志位 • SYN • 用来建立连接,同步双方的序列号。 • SYN=1 & ACK=0, 连接请求包 • SYN=1 & ACK=1, 接受请求 • FIN • 释放连接包 • RST • 复位一个连接 • 如果收到一个分段不属于该主机的任何一个连接,发送RST包
TCP 报头标志位(2) • URG • 紧急数据。表示数据包中包含紧急数据。 • ACK • 确认标志位。表示数据包中的确认号有效。 • PSH • PUSH,如果为1,接受端应尽快把数据传送给应用层。
TCP 可靠性 • 通过校验和、定时器、数据序号、应答号来实现数据的可靠传输
TCP中的序列号 • 为每个发送的字节分配一个序号,用来保证数据的顺序,剔除重复的数据 • 一个TCP连接包含两个流(分别代表每个方向的数据) • 建立连接时流的发送方选择一个初始序号ISN(initial sequence number) • ISN必须随机选取才安全
三次握手 的过程 • 建立TCP连接时需要3个数据包 Client Server SYN SYN ACK ACK
1 CS SYN SEQ=104 ACK=0
2 SC SYN ACK SEQ=319 ACK=105
3 CS ACK SEQ=105 ACK=320
4 SC PSH ACK SEQ=320 ACK=105 Data 15bytes
5 CS PSH ACK SEQ=105 ACK=335 Data 15bytes
6 SC ACK SEQ=335 ACK=120 Data 15bytes
RFC 793规定的处理 • SYN或FIN到达关闭的端口,丢弃数据包并返回RST • RST到达监听的端口,RST被丢弃 • RST到达关闭的端口,RST被丢弃 • ACK到达监听的端口,丢弃数据包并返回RST • SYN=0的数据包到达监听的端口,丢弃数据包 • SYN=1的数据包到达监听的端口,进行3次握手 • FIN的数据包到达监听的端口,丢弃数据包
2.2 端口扫描技术 • 端口扫描 Port scan • A port scan is a series of messages sent by someone attempting to break into a computer to learn which computer network services, each associated with a "well-known" port number, the computer provides. • 确定目标系统正在运行的TCP/UDP服务 • 在扫描时希望隐藏自己
端口扫描分类 • 按照行为 • Vanilla (香草) 扫描所有端口 • Strobe 扫描部分端口(如仅仅扫描21/23/25) • Sweep 扫描很多机器的一个端口 • 按照技术 • 比较简单的 • 隐藏自身的
TCP connect扫描 • 直接用connect连接对方的端口 • 连接成功,说明对方端口是开放的 • 优点 • 简单,不需要特权用户 • 缺点 • 容易被察觉 • 在应用日志中会有记录下来一些没有任何动作的连接
TCP SYN扫描 • Half open scan 在3次握手完成前终止连接 • 方法 • 发SYN • 如果收到RST,说明端口关闭 • 如果收到SYN ACK,说明端口开放,发送RST • 优点 • 应用程序日志没有记录 • 缺点 • 复杂,需要自己构造数据包 • 很多系统要超级用户才能进行 • 容易被发现
FIN Xmas Null扫描 • FIN扫描 • FIN对一个关闭的端口,会触发RST包 • FIN对一个打开的端口,不会触发RST包(对某些OS) • Xmas/Null扫描 • 发送带/不带FIN URG PSH的包 • 优点 • 能通过仅仅检查SYN的包过滤防火墙 • 缺点 • 不是所有系统都支持
FTP Bounce Scan • 利用FTP的2个通道中的数据通道 • 发送假的PORT命令,让ftp server连接到要扫描的端口 • 优点 • 隐藏自己 • 缺点 • 复杂
Ping 扫描 • 确定哪些机器是up的 • 2种方式 • ICMP • 类似于ping,发送icmp消息给目标,看是否有返回 • TCP ping • 给目标特定的tcp端口(如常用的80)发送ack消息,如果返回rst,说明机器up。
UDP 端口扫描 • UDP是无连接的 • 向某个端口发送UDP数据 • 如果该端口关闭,会触发ICMP port unreachable • 缺点 • 有的系统限制了ICMP的发送速率
2.3 nmap工具 • http://www.insecure.org/nmap/ • 介绍port scan和nmap的文章 • http://www.insecure.org/nmap/nmap_doc.html • Man pages • http://www.insecure.org/nmap/data/nmap_manpage.html
Nmap使用 • 在使用nmap的同时,在另一个terminal中用tcpdump察看nmap发送和接收的数据包 • Ping扫描:了解哪些机器是up的 • namp –sP 202.38.64.1 • 缺省时同时使用发送icmp和对80端口发送ack来探测 • 可以用nmap –sP –P0 不发送icmp消息 • 实验: • 用tcpdump看2种方式的异同
Nmap使用 • TCP connect扫描: • namp –sT 202.38.64.1 • 实验: • 用tcpdump看扫描过程
Nmap使用 • TCP FIN, XMAS, NULL扫描: • namp –sF 202.38.64.1 • namp –sX 202.38.64.1 • namp –sN 202.38.64.1 • 实验: • 用tcpdump看扫描过程
Nmap使用 • UDP扫描: • namp –sU 202.38.64.1 • 实验: • 用tcpdump看扫描过程
Nmap使用 • idle扫描: • http://www.insecure.org/nmap/idlescan.html • 实验: • 用tcpdump看扫描过程