端口介绍

​ 如果把IP地址比作一间房子,端口就是出入这间房子的门。一个IP地址的端口可以有65536(2^16),端口就是通过端口号来标记的,端口号只是有数,范围是从0到65535(2 ^16-1)。计算机之间的通信实际上就是端口之间的通信。通过IP地址找到主机地址,再根据端口找到具体进程。

其他端口扫描器介绍

​ 许多传统的端口扫描器只列出所有端口是开放还是关闭。如:masscan(在kali中安装masscan 命令:apt install masscan)

Nmap端口扫描介绍

​ Nmap的信息粒度更细,且将端口状态分成了六种状态:open(开放的), closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的), opesx|filtered(开放或者被过滤的),或者closed|filtered(关闭或者被过滤的)。

  • open: 应用程序正在该端口接收TCP连接或者UDP报文。发现这一点常常是端口扫描的主要目标。安全意识强的人们知道每个开放的端口都是进入的入口。访问者或者测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。安全扫描对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。
  • closed: 关闭的端口对于Nwap也是可访问的(它接受Nwap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示该IP地址上的主机正在运行。也对部分操作系统探测有所帮助。因为关闭的端口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态,下面讨论。
  • filtered(被过滤的): 由于包过滤阻止探测报文到达端口,Nwap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让访问者感觉很挫败,因为它们几乎不提供任何信息。有时候它们响应ICMP错误消息如类型3代码13(无法到达目标:通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。这迫使Nwap重试若干次以访万一探测包是由于网络阻塞丢弃的。这使得扫描速度明显变慢。
  • unfiltered(未被过滤的): 未被过滤状态意味着端口可访问,但Nwap不能确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。
  • open|filtered(开放或者被过滤的): 当无法确定端口是开放还是被过滤的,Nwmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nwap无法确定该端口是开放的还是被过滤的。UDP,IP协议,FIN,Null,和Xmas扫描可能把端口归入此类。
  • closed|filtered(关闭或者被过滤的): 该状态用于Nwap不能确定端口是关闭的还是被过滤的。它只可能出现在ldle扫描中。

Nmap 端口SYN探测技术

SYN探测介绍

​ 因为在SYN扫描中客户端和服务端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会在主机上留下任何痕迹,但是这种扫描需要root权限。

Nmap 端口SYN探测

​ 使用命令: nmap -sS -p80 IP地址

Nmap 端口TCP探测技术

TCP探测介绍

​ 这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现。运行的原理:通过建立完整TCP的三次握手来进行信息的传递,在建立完成后通过一个ACK-RST来复位服务器状态。

Nmap 端口TCP探测

​ 使用命令: nmap -sT -p80 IP地址

Nmap 端口

UDP探测介绍

​ UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回ICMP不可到达错误(类型3,代码3),该端口是closed(关闭的)。其他ICMP不可到达错误(类型3,代码1、2、9、10,或者13)表明该端口是filtered(被过滤的)。偶尔地,某服务响应一个UDP报文,证明该端口是open(开放的)。如果几次重试后还没有响应,该端口被认为是open|filtered(开放|被过滤的)。这意味着该端口可能是开放的,也可能是包过滤器正在封锁信道。

Nmap 端口UDP探测

​ 使用命令: nmap -sU -p端口号 目标

Nmap UDP探测加速

​ Linux 2.4.20 内核限制一秒钟只发送一条目标不可到达消息,Linux一秒钟一个报文的限制使65536个端口的扫描要花18小时以上。从防火墙后面扫,使用--host-timeout跳过慢速主机。 修改文件调整时间:/proc/system/net/IPv4 Linux系统中该路径下的icmp_ratelimit文件。(单位是毫秒) echo 100 > 路径(porc/system/net/IPv4/icmp_ratelimit) 修改文件 icmp_msgs_per_sec 每秒钟发送的数据包

Nmap 端口NULL探测技术

NULL探测介绍

​ NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比SYN、TCP、UDP这些方法都要隐蔽很多,但是这种方法的准确度也是较低的,主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭都能返回RST-ACK。

Nmap NULL探测

​ 使用命令:nmap -sN -p80 IP地址 :NULL方法的精确度不高,端口的状态返回的不是很准确,且NULL容易被过滤。

Nmap 端口FIN探测技术

FIN探测介绍

​ FIN表示关闭连接,RST表示连接重置。如果端口关闭,则返回RST;如果端口开放,则不做任何响应。

Nmap FIN探测

​ 使用命令: nmap -sF -p80 IP地址

缺点:方法精确度不高,端口的状态返回不是很准确。FIN扫描容易被过滤。

Nmap 端口Xmas探测技术

Xmas探测介绍

​ 设置FIN、PSH和URG标志位。除了探测报文的标志位不同,这三种扫描在行为上完全一致。如果收到一个RST报文,该端口被认为是closed(关闭的),而没有响应则意味着端口是open|filtered(开放或者被过滤的)。如果收到ICMP不可到达错误(类型3,代号1、2、3、9、10或者13),该端口就被标记为被过滤的。PSH表示有DATA数据传输、URG(紧急位):设置为1时,首部中的紧急指针有效;为0时,紧急指针没有意义。 这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。

Nmap XMas探测

​ 使用命令: nmap -sX -p80 目标

ip.addr==目标IP地址(wireshark筛选)

Nmap 端口ACK探测技术

ACK探测介绍

​ 这种扫描的特点在于不能确定open(开放的)或者open|filtered(开放或者过滤的)端口。它用于发现防火墙规则,哪些端口是被过滤的。 ACK扫描探测报文只设置ACK标志位(除非使用 --scanflags,手动设置标志位)。当扫描未被过滤的系统时,开放的和关闭的端口都会返回RST报文。Nmap把它们标记为unfiltered(未被过滤的),意思是ACK报文不能到达,但至于它们是open(开放的)或者closed(关闭的)无法确定。不响应的端口或者发送特定的ICMP错误消息(类型3,代号1、2、3、9、10,或者13)的端口,标记为filtere(被过滤的)。

Nmap ACK探测

​ 使用命令: nmap -sA -p端口号 目标

Nmap 端口TCP窗口探测技术

TCP窗口探测

​ 窗口扫描和ACK扫描完全一样。它通过检查返回的RST报文的TCP窗口域做到这一点。在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文)而关闭端口的窗口大小为0.因此,当收到RST时,窗口扫描不总是把端口标记为filtered,而是根据TCP窗口值是正数还是0,分别把端口标记为open或者closed。 该扫描依赖于互联网上少数系统的实现细节,因此不能永远相信它。不支持它的系统会通常返回所有端口closed(一台机器没有开放端口也是又可能的)。如果大部分被扫描的端口是closed,而一些常见的端口(22、25、53)是filtered,该系统就非常可疑。偶尔地,系统甚至会显示恰恰相反的行为。如扫描显示1000个开放的端口和3个关闭的或者被过滤的端口,那么那三个很有可能也是开放的端口。

Nmap TCP窗口探测

​ 使用命令: nmap -sW -p端口号 目标

Nmap 端口TCPflag探测技术

TCP flag探测介绍

​ Nmap现成的扫描类型十分鸡肋,要想正真用好Nmap就要脱离现有的扫描类型。--scanflags选项允许通过指定任意TCP标志位来设定扫描策略。在收集一定的信息后,进行更加有针对性、准确性的扫描。 --scanflags 参数可以是一个数字标记值 (如:9-->表示PSH和FIN),但使用字符名更容易些。只要是URG、ACK、PSH、RST、SYN、FIN的任何组合就行。例如:--scanflags URGACKPSHRSTSYNFIN ,这就设置了所有的标志位,这个标志位间的顺序没有影响,也并不重要。 除了设置需要的标志位,也还可以设置TCP扫描类型(如:-sA或者-sF)。那个基本类型告诉Nmap怎样解释响应。例如:SYN扫描认为没有响应意味着filtered端口,而FIN扫描则认为是open|filtered。除了使用指定的TCP标记位,Nmap会和基本扫描类型一样工作,如果不指定基本类型,就默认使用SYN扫描。

Nmap TCP自定义Flag探测

​ 使用命令: nmap --scanflag ACKUAG(标志位设置) -p端口号 目标

Nmap TCPMaimon探测技术

TCPMaimon探测介绍

​ Maimon扫描是用它的发现者Uriel Maimon命名的。这项技术和NULL、FIN,以及Xmas扫描完全一样,除了探测报文时FIN/ACK。根据RFC 793(TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文。然而如果端口开放,许多基于BSD的系统只是丢弃该探测报文。

Nmap TCPMaimon探测

​ 使用命令: nmap -sM -p端口号 目标

Nmap 端口IP协议探测技术

IP协议探测介绍

​ 协议扫描和UDP扫描的工作方式类似。它不是在UDP报文的端口域上循环,而是在IP协议域的8位上循环,发送IP报文头。报文头通常是空的,不包含数据,甚至不包含所申明的协议的正确报文头TCP、UDP和ICMP是三个例外。它们三个会使用正常的协议头,因为如果是不正常的协议头,系统会拒绝发送,而且Nmap有函数创建它们。协议扫描不是注意ICMP端口不可到达消息,而是ICMP协议不可到达消息。如果Nmap从目标主机收到任何协议的任何响应,Nmap就把那个协议标记位open。ICMP协议不可到达错误(类型3,代号2)导致协议被标记位closed。其它ICMP不可到达协议(类型3,代号1、3、9、10,或者13)导致协议被标记为filtered(虽然同时他们证明ICMP是open)。如果重试之后仍没有收到响应,该协议就被标记为open|filtered。

Nmap IP协议扫描探测

​ 使用命令: nmap -sO -p端口号 目标

Nmap端口僵尸机探测技术

僵尸机探测介绍

​ 该方法不会有报文从我们真实机上发送到目标ip,它是通过僵尸机作为跳板来进行探测,隐蔽性很高。