您好,欢迎访问三七文档
计算机网络与攻防技术InfoSecLabofCIT@BJTU扫描器基本工作原理网络扫描器有三种最基本的功能发现一个主机和网络的能力发现什么服务正运行在主机上的能力通过测试这些服务,有发现这些漏洞的能力。端口扫描通过连接到目标系统的TCP或UDP端口,来确定什么服务正在运行。识别目标系统上正在运行的TCP和UDP服务识别目标系统的操作系统类型识别某个应用程序或某个特定服务的版本号。端口扫描技术TCPconnect()扫描TCPSYN扫描(半开连接扫描,halfopen)TCPFin扫描(秘密扫描,stealth)Idle扫描TCPftpproxy扫描(bounceattack)UDPrecvfrom扫描UDPICMP端口不可达扫描TCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前回顾:TCP连接的建立和终止时序图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数据包到达一个监听端口时,数据包被丢弃TCPconnect()扫描做法扫描器调用socket的connect()函数发起一个正常的连接如果端口是打开的,则连接成功否则,连接失败优点缺点服务器可以记录下客户的连接行为,如果同一个客户轮流对每一个端口发起连接,则一定是在扫描TCPSYN扫描做法向目标主机的特定端口发送一个SYN包如果应答包为RST包,则说明该端口是关闭的否则,会收到一个SYN|ACK包。于是,发送一个RST,停止建立连接由于连接没有完全建立,所以称为“半开连接扫描”优点缺点需要超级用户权限才可以建立这样的SYN数据包TCPFin扫描(秘密扫描)做法扫描器发送一个FIN数据包如果端口关闭的,则远程主机丢弃该包,并送回一个RST包否则的话,远程主机丢弃该包,不回送组合其他的标记TCPXmasTCPNull优点不是TCP建立连接的过程,所以比较隐蔽缺点与SYN扫描类似,也需要构造专门的数据包在Windows平台无效,总是发送RST包TCPXmas(圣诞树扫描)和TCPNull(空扫描)XMAS扫描打开FIN,URG,PUSH标记NULL扫描关闭所有标记当一个这种数据包达到一个关闭的端口,数据包会被丢掉并且返回一个RST数据包。如果是打开的端口则只是丢掉数据包不返回RST包。缺点跟上面的类似,都是需要自己构造数据包,只适用于UNIX主机。间接扫描利用第三方的IP(伪装主机)来隐藏真正扫描者的IP由于扫描主机会对伪装主机发送回应信息,所以必须监控欺骗主机的行为,从而获得原始扫描的结果攻击主机、伪装主机、目标主机伪装主机是一个非常特殊的角色,在扫描机扫描目的机的时候,它不能发送除了与扫描有关包以外的任何数据包。间接扫描Idle扫描的特点优点比以上扫描技术更加秘密可以确定基于IP的信任关系,并借此穿过一些包过滤防火墙或路由器缺点需要伪造IP包,因此需要root权限必须要有合适的伪装主机才能进行,而这样的主机并不是随处可见的速度比较慢Idle扫描的特点UDPICMP端口不可达扫描利用UDP协议做法开放的UDP端口并不需要送回ACK包,而关闭的端口也不要求送回错误包,所以利用UDP包进行扫描非常困难有些协议栈实现的时候,对于关闭的UDP端口,会送回一个ICMPPortUnreach错误缺点速度慢,而且UDP包和ICMP包都不是可靠的需要root权限,才能读取ICMPPortUnreach消息UDPrecvfrom()&write()扫描非root用户不能直接读取ICMPPortUnreach消息,但是Linux提供了一种方法可以间接通知到做法第二次对一个关闭的UDP端口调用write()总是会失败经验:在ICMP错误到达之前,在UDP端口上调用recvfrom()会返回EAGAIN(重试),否则会返回ECONNREFUSED(连接拒绝)
本文标题:端口扫描
链接地址:https://www.777doc.com/doc-3567137 .html