浅谈端口扫描

浅谈端⼝扫描
⽆意中看到的,算是科普类型的⽂章吧。简单收藏⼀下
按照⽬前的协议类型,我们⼤致可以知道有:
⼀个IP地址可以有65535(2^16)个端⼝,范围则是从0到65535(2^16-1),每个端⼝按照协议⼜可以分为两种类型:⼀种是TCP端⼝;另⼀种是UDP端⼝。
TCP、UDP都是IP层的传输协议,其中TCP是⾯向连接、可靠的字节流服务;UDP则是不可靠的,⾯向数据报的服务。每⼀个端⼝都会⽀持这两种协议,因此可以基于这两种协议进⾏端⼝扫描。
以及现在还有通过在 TCP/IP 模型中的⽹络层 ICMP 协议来探测端⼝的扫描技术。
TCP
TCP报⽂这⾥就不再细讲了,也不是重点,放⼀张TCP数据报⽂的图,具体可以去百度百科了解:
TCP三次握⼿:
TCP CONNECT SCAN
原理很简单,与⽬标端⼝建⽴3次握⼿,如果成功建⽴则为open,收到RST则为close
usage
MSF 模块:
1use auxiliary/scanner/portscan/tcp
Nmap 选项参数:
1nmap -ap.org
TCP SYN SCAN
也称为TCP半连接扫描,只发送三次握⼿的第⼀次SYN报⽂段,如果收到ACK+SYN则为open,收到RST则为close,这种好处是不必等待三次握⼿完全完成,速度快且不容易被防⽕墙记录进⽇志。
Nmap 处理⽅式:
Probe Response Assigned State
TCP SYN/ACK response open
TCP RST response closed
No response received (even after retransmissions)filtered
ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)filtered
usage
MSF 模块:
1use auxiliary/scanner/portscan/syn
Nmap 参数
1nmap -ap.org
TCP Xmas Tree SCAN
客户端向服务端发送带有PSH,FIN,URG标识的数据包(即不含有ACK SYN RST),被称为TCP Xmas Tree扫描。其利⽤的是RFC的规定:
如果不设置SYN,RST,或者ACK位的报⽂发送到开放端⼝,理论上,这不应该发⽣,如果您确实收到了,丢弃该报⽂,返回。
那么就有:
如果扫描系统遵循该RFC,当端⼝关闭时,任何不包含SYN,RST,或者ACK位的报⽂会导致⼀个RST返回⽽当端⼝开放时,
应该没有任何响应。只要不包含SYN,RST,或者ACK, 任何其它三种(FIN,PSH,and URG)的组合都⾏。Nmap 对 NULL, FIN, or Xmas 扫描的处理:
Probe Response Assigned State
No response received (even after retransmissions)open or filtered
TCP RST packet closed四川的眼泪
ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)filtered
usage
MSF 模块:
1use auxiliary/scanner/portscan/xmas
Nmap 选项参数:
1 2 3 4 5 6 7 8 9 10 11Null scan (`-sN`)
Does not set any bits (TCP flag header is 0)
激发各类市场主体活力FIN scan (`-sF`)
Sets just the TCP FIN bit.
Xmas scan (`-sX`)
Sets the FIN, PSH, and URG flags, lighting the packet up like a Christmas tree.
TCP NULL SCAN
空扫描即flag位全 0 ,如果没有回复则为open,收到RST则为close
TCP ACK SCAN
使⽤TCP ACK扫描不能够确定端⼝的关闭或者开放,因为当发送给对⽅⼀个含有 ACK 表⽰的TCP报⽂的时候,都返回含有RST标志的报⽂,⽆论端⼝是开放或者关闭。所以,不能使⽤TCP ACK扫描来确定端⼝是否开放或者关闭。但是可以利⽤它来扫描防⽕墙的配置,⽤它来发现防⽕墙规则,确定它们是有状态的还是⽆状态的,哪些端⼝是被过滤的。
向服务端发送⼀个带有 ACK 标识的数据包,如果收到带有 RST 标识的响应,则说明服务端没有过滤,不存在状态防⽕墙。
usage
可以使⽤ msf 的模块
1use auxiliary/scanner/portscan/ack
Nmap 可以⽤以下命令
1nmap -ap.org
TCP WINDOW SCAN税收征管法
TCP 窗⼝扫描的流程类似于 ACK 扫描,都是向服务端发送带有 ACK 标识的数据包,不同的在于 TCP 窗⼝扫描会检查收到的 RST 数据包中的窗⼝⼤⼩,如果 RST 数据包中的窗⼝⼤⼩不为零,则说明⽬标端⼝是开放的。
如果 RST 数据包中的窗⼝⼤⼩为零,则说明⽬标端⼝处于关闭状态。
船舶机械
Nmap 对 TCP Window 扫描的处理:
Probe Response Assigned State
TCP RST response with non-zero window field open
TCP RST response with zero window field closed
No response received (even after retransmissions)filtered
ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)filtered
usage
Nmap 扫描参数:
1nmap -sW
TCP Idle Scan
1998年,安全研究员Antirez(曾参与编辑nmap中有关hping2⼯具的相关⽂章)在Bugtraq邮件列表中发布了⼀篇关于新的端⼝扫描技术的⽂章。Idle Scan,也就慢慢的为众⼈所了解,它允许进⾏完全盲⽬的端⼝扫描。事实上,攻击者可以不⽤向⽬标发送数据包就完成扫描⼯作!相反,⽤猥琐的边信道攻击是能够让扫描映射到⼀个Zombie 主机上的。除了极其隐蔽的情况,这种扫描⽅式允许挖掘机器之间基于IP 的信任关系。
虽然 Idle Scan ⽐⽬前讨论的任何技术都复杂,但您⽆需成为TCP / IP专家就能理解它。你只需要知道这些就够了:
确定TCP端⼝是否打开的⼀种⽅法是向端⼝发送SYN(会话建⽴)数据包。如果端⼝打开,⽬标机器将响应SYN / ACK(会话请求确认)数据包,如果端⼝关闭,则响应RST(重置)。这是前⾯讨论的SYN扫描的基础。
接收未经请求的SYN / ACK数据包的计算机将使⽤RST进⾏响应。未经请求的RST将被忽略。
Internet上的每个IP数据包都有⼀个⽚段标识号(IP ID)。由于许多操作系统只是为它们发送的每个数
据包递增此数字,因此探测IPID 可以告诉攻击者⾃上次探测以来已发送了多少数据包。
结合以上特征,就可以伪造⾝份去扫描⽬标⽹络,所以看起来就像是⽆辜的 Zombie 主机在扫描。
Idle Scan Step by Step
从本质上来看,Idle Scan 只需要重复3个步骤就ok了。
1. 探查Zombie的IP ID并记录下来。
2. 在Zombie主机上伪造⼀个包,然后把包发送给⽬标主机端⼝。根据端⼝的状态,⽬标主机可能会也有可能不会导致Zombie主机IPID值
增加。
3. 再探查Zombie主机的IP ID。⽐较两次得到IPID值
经过这样⼀个流程,Zombie主机的 IP ID 应该会增加1~2。如果只是增加了1,那么就可以说明Zombie主机还没有发出任何包,当然,响应攻击者的探查请求除外。没有发送包也就意味着⽬标端⼝没有被打开(也可能是⽬标主机向Zombie主机发送了⼀个RST包,导致请求被忽略,或者是根本就是
什么都没有做)。增加的如果是2,那就表明Zombie主机成功在两个探测器之间发送了包。这种情况⼀般情况都意味着⽬标端⼝是开着的(⽬标⼤概会向Zombie主机发送⼀个SYN/ACK包去响应攻击者伪造的SYN,从Zombie主机诱导RST包)。如果是增加了⼀个⽐2还⼤的数字,那么就说明Zombie主机太糟糕了!它可能不能胜任预测IPID数值,也可能是正在忙于其他与Idle Scan⽆关的事情。
虽然关闭了端⼝和被过滤的端⼝会发⽣的事情稍微有点点不同,但是攻击者处理的⽅法都⼀样,IPID都只是增加1。所以,在Idel Scan中⽆法区别端⼝到底是关闭的还是已经过滤了。当Nmap记录的IPID增加了1,也就被标记成了close⼁filterred。
以下三张图⼤略可以说明端⼝被打开,关闭,过滤的情况。
端⼝开放:
端⼝关闭:
端⼝被过滤:
Idel Scan根本上来讲就是⼀个隐性扫描,Nmap提供了decoy scanning (-D),帮助使⽤者保护⾃⼰的⾝份。如果不是使⽤的(类似Idel Scan 扫描⽅式)仍然需要攻击者通过⾃⾝真实IP向⽬标发送数据包以获取扫描结果。Idel Scan扫描结果其中之⼀就有⼊侵检测系统通常会发送⼀个Zombie主机已经开始
扫描的通知。所以它可以作为⼀个框架去扫描另外⼀个⽬标,当你查阅⼊侵检测系统(IDS)时,请记住这种可能性。
Idel Scan的⼀个独特优势便是,它可以绕开某些过滤防⽕墙和路由器。IP源地址过滤,是⼀种常见的(虽然很弱)⽤于限制机器连接到敏感主机或者说⽹络上的安全机制。举个例⼦,⼀个公司数据库服务器,只允许公共⽹络连接。或者,家庭⽤户只允许SSH连接到⼯作机上⾯。Idel Scanning有时也可以被⽤来映射信任关系,关键在于Idel Scan最终会从Zombie主机获取开放端⼝列表。⼀个正常的扫描对于上述数据库服务器可能会显⽰没有端⼝开放,但是当将Zombie主机作为Web Sever的IP,使⽤Idel Scan就可能将数据库相关开放端⼝暴露出来。
映射出的这些信任关系就可能作为攻击者优先考虑的⽬标,上⾯所讨论的⽅式⼿法很猥琐哇!
Idel Scan有⼀个缺点就是它⽐其他⼀些扫描⽅式所花费的时间更长。尽管在《》章节中有对Idel Scan的优化算法,⼀个只需要15秒就可以完成的SYN,Idel Scan或许需要15分钟才能够完成。另⼀个问题就是你必须能够发送欺骗包,伪装成好像他们来⾃Zombie主机⼀般,让他们到达⽬标主机。许多ISP服务商(特别是拨号和住宅宽带供应商)⽬前执⾏出⼝过滤来防⽌这类数据包欺骗。⾼端供应商(⽐如说主机托管,T1-Services)就不太可能这么做。如果实际存在这个过滤,Nmap会在你尝试的每⼀个Zombie主机上显⽰⼀个快速错误消息。如果不能够更换ISP服务商,那么最好尝试在让ISP服务商
给你更换⼀个IP。有时候这个过滤仅仅只是阻⽌了客户使⽤范围之外的欺骗IP地址。Idel Scan另外⼀个难点就是你必须寻⼀个正在⼯作的Zombie主机。
上述描述的是Idel Scan的基础⽔平。在Nmap上实现却是有些复杂,最关键的差异在于Nmap能够同时执⾏,⽽且误报少。
Parallelizing idle scan由于是间接推导出端⼝所以,他⽐其他扫描⽅式要更加的猥琐。如果Nmap探测⽬标主机上的多个端⼝,然后检测Zombie主机上新的IP ID值,IP ID的值增加了多少就显⽰出⽬标开放了多少个端⼝。实际上这并不是⼀个和严重的问题,绝⼤多数端⼝在⼤型扫描结果中基本上都是被关闭或者被过滤。由于只有开放端⼝才可以让IP ID值增加,Nmap会认为没有增加量,然后整个组的端⼝就被标
记成了关闭或者被过滤。Nmap可以并⾏扫描⼀百组端⼝。如果Nmap在探测⼀组端⼝的时候Zombie主机IP ID同时也增加了,就说明在这⼀组端⼝中⼀定有开放的端⼝。Nmap继⽽使⽤⼆进制搜索发现开放的端⼝。它将数据组分成两份,分别发送探测信息,如果⼀个数据组显⽰没有开放端⼝,那么这⼀数据组的端⼝都将被标记为被关闭或者被过滤。如果⼀个数据组显⽰有开放端⼝,那么在把这个数据组分成两份,重复以上步骤,直到最终将开放端⼝都出来。虽然这种⽅式更复杂,但是这种⽅式可以节约扫描时间。
可靠性是Idel Scan的另⼀个问题。如果Zombie主机在扫描时向任何不相⼲的机器发送数据包,其IP ID会增加。这就会让Nmap误以为已经寻到开放的端⼝了。幸运的是,并⾏扫描在这⾥也是有很⼤作⽤的。如果Nmap在⼀个组中扫描100个端⼝,那么IP ID就会增加标识两个开放端⼝,Nmap将这组数据分成50端⼝⼀个⼩组。当Nmap同时在两个⼩组中进⾏IP ID扫描时,Zombie主机IP ID总的增加量就在加了⼀次。另外,Nmap如果探测到不⼀致,那么它会重新探测。基于检测可靠的Zombie主机,Nmap还会修改组⼤⼩以及扫描时间。如果Nmap 发现有⼤量不⼀致的结果,它将退出,并提⽰⽤户选择更好的Zombie主机。
具体操作可以参考
TCP Maimon Scan
Maimon Scan 以其发现者 Uriel Maimon 命名。他在 Phrack 杂志第49期(1996年11⽉)中描述了这种技术。除了探测器是FIN / ACK之外,此技术与NULL,FIN和Xmas扫描完全相同。根据RFC 793(TCP),响应于这样的探测,应该⽣成RST分组,⽆论端⼝是打开还是关闭。但是,如果端⼝打开,许多BSD派⽣系统只会丢弃数据包。 Nmap利⽤这⼀点来确定开放端⼝,如下表所⽰:
Nmap 对 TCP Maimon Scan 的处理:
Probe Response Assigned State
No response received (even after retransmissions)open or filtered
TCP RST packet closed
ICMP unreachable error (type 3, code 1, 2, 3, 9, 10, or 13)filtered
北京贵宾犬usage
1 2 3 4 5 6 7nmap -sM para
Starting Nmap (  )
All 1000 scanned ports on para (192.168.10.191) are: closed MAC Address: 00:60:1D:38:32:90 (Lucent Technologies) Nmap done: 1 IP address (1 host up) scanned in 4.19 seconds
TCP FTP Bounce Scan
FTP协议(RFC 959)的⼀个有趣特性是⽀持代理FTP连接。这允许⽤户连接到⼀个FTP服务器,然后要求将⽂件发送到第三⽅服务器。这样的功能在很多层⾯上被滥⽤,因此⼤多数服务器已停⽌⽀持它。此功能允许的滥⽤功能之⼀是通过 FTP 服务器进⾏扫描其他主机端⼝。只需要求 FTP 服务器依
次将⽂件发送到⽬标主机的每个端⼝就可以了。回显消息将描述端⼝是否打开。这是绕过防⽕墙的好⽅法,因为内部的 FTP 服务器通常放置在⽐旧的 Internet 主机都能访问到的其他主机的位置上。
Nmap⽀持使⽤-b选项进⾏FTP反弹扫描。它采⽤<username>:<password>@<server>:<port>形式的参数。<Server>是易受攻击的FTP服务器的名称或IP地址。与普通URL⼀样,您可以省略<username>:<password>,在这种情况下,将使⽤匿名登录凭据(user:anonymous password:-
wwwuser@)。端⼝号(和前⾯的冒号)也可以省略,在这种情况下,使⽤<server>上的默认FTP端⼝(21)。
使⽤ FTP Bounce Scan 较为频繁的⽤户更好地习惯了对回显消息的处理。这个漏洞在1997年Nmap发布时很普遍,但已在很⼤程度上得到修复。易受攻击的服务器仍然存在,所以当其他所有服务器都失败时,这个⽅法值得⼀试。如果您的⽬标是绕过防⽕墙,请扫描⽬标⽹络以查开放的21端⼝(如果使⽤版本检测扫描所有端⼝,则扫描任何FTP服务),然后尝试使⽤每个端⼝进⾏ Bounce Scan。 Nmap会告诉您主机是否容易受到攻击。如果您只是试图掩盖您的曲⽬,您不需要(事实上,不应该)限制⽬标⽹络上的主机。在为易受攻击的FTP服务器扫描随机Internet地址之前,请考虑系统管理员可能不会允许这样滥⽤其服务器。
usage
Nmap 扫描⽅式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15nmap -p 22,25,135 -Pn -v -b XXX.YY.111.ap.org
Starting Nmap (  )
Attempting connection to ftp://anonymous:-wwwuser@@XXX.YY.111.2:21 Connected:220 JD FTP Server Ready
Login credentials accepted by ftp server!
Initiating TCP ftp bounce scan ap.org (64.13.134.52) Adding open port 22/tcp
Adding open port 25/tcp
Scanned 3 ports in 12 seconds via the Bounce scan.
Nmap scan report ap.org (64.13.134.52)
PORT    STATE    SERVICE
22/tcp  open    ssh
25/tcp  open    smtp
135/tcp filtered msrpc
16
17Nmap done: 1 IP address (1 host up) scanned in 21.79 seconds
UDP
在TCP/IP模型中,UDP为⽹络层以上和应⽤层以下提供了⼀个简单的接⼝。UDP只提供数据的不可靠传递,它⼀旦把应⽤程序发给⽹络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加⼊了复⽤和数据校验字段。
UDP适⽤于不需要或在程序中执⾏错误检查和纠正的应⽤,它避免了协议栈中此类处理的开销。对时间有较⾼要求的应⽤程序通常使⽤UDP,因为丢弃数据包⽐等待或重传导致延迟更可取。
UDP SCAN
UDP扫描⽐较简单,⼀般如果返回ICMP port unreachable说明端⼝是关闭的,⽽如果没有回应或有回
应(有些UDP服务是有回应的但不常见)则认为是open,但由于UDP的不可靠性,⽆法判断报⽂段是丢了还是没有回应,所以⼀般扫描器会发送多次,然后根据结果再判断。这也是为什么UDP扫描这么慢的原因。
虽然因特⽹上最流⾏的服务运⾏在TCP协议上,但UDP服务被⼴泛部署。 DNS,SNMP和DHCP(注册端⼝53,161 / 162和67/68)是最常见的三种。由于UDP扫描通常⽐TCP更慢且更困难,因此某些安全审核员会忽略这些端⼝。这是⼀个错误,因为可利⽤的UDP服务⾮常普遍,攻击者肯定不会忽略整个协议。
UDP扫描通过向每个⽬标端⼝发送UDP数据包来⼯作。对于⼤多数端⼝,此数据包将为空(⽆有效负载),但对于⼀些更常见的端⼝,将发送特定于协议的有效负载。根据响应或缺少响应,端⼝被分配给四种状态之⼀,如下表所⽰:
Nmap 对 UDP Scan 的处理:
Probe Response Assigned State
Any UDP response from target port (unusual)open
No response received (even after retransmissions)open or filtered
ICMP port unreachable error (type 3, code 3)closed
Other ICMP unreachable errors (type 3, code 1, 2, 9, 10, or 13)filtered
usage
Nmap 选项参数:
1nmap -ap.org
Nmap 有很多选项可以提升 UDP Scan 的准确性与速度,这⾥不再深⼊讲解,具体可以参考
ICMP
ICMP 格式:
根据⽹络协议,如果按照协议出现了错误,那么接收端将产⽣⼀个icmp的错误报⽂。这些错误报⽂并不是主动发送的,⽽是由于错误,根据协议⾃动产⽣。
ICMP 相关类型解释:
⼀般如果数据包被防⽕墙过滤的话,会收到⼀个 ICMP 数据包,其中类型为3,代码为1,2,3,9,10或13。
ICMP SCAN
常见的利⽤:
gpu集
SCTP
这⾥我们简单介绍⼀下 SCTP 协议。
流控制传输协议(英语:Stream Control Transmission Protocol,缩写:SCTP)是在2000年由IETF的SIGTRAN⼯作组定义的⼀个传输层协议。RFC 4960详细地定义了SCTP,介绍性的⽂档是RFC 3286。
作为⼀个传输层协议,SCTP可以理解为和TCP及UDP相类似的。它提供的服务有点像TCP,⼜同时将UDP的⼀些优点相结合。
是⼀种提供了可靠、⾼效、有序的数据传输协议。相⽐之下TCP是⾯向字节的,⽽SCTP是针对成帧的消息。

本文发布于:2024-09-23 01:26:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/13617.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:扫描   发送   开放
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议