端口探测,发现脆弱站点

Nmap端口扫描

1. 端口扫描的作用

Nmap(“网络映射器”)是免费开放源代码(许可证)实用程序,用于网络发现和安全审核。许多系统和网络管理员还发现它对于诸如网络清单,管理服务升级计划以及监视主机或服务正常运行时间之类的任务很有用。Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机,这些主机提供的服务(应用程序名称和版本),它们正在运行的操作系统(和OS版本),包过滤器/防火墙的类型。正在使用中,还有许多其他特性。它旨在快速扫描大型网络,但可以在单个主机上正常运行。Nmap可在所有主要的计算机操作系统上运行,并且官方二进制程序包可用于Linux,Windows和Mac OSX。除了经典的命令行Nmap可执行文件之外,Zenmap),灵活的数据传输,重定向和调试工具(Ncat),用于比较扫描结果的实用程序(Ndiff)以及数据包生成和响应分析工具(Nping)。

官网:[https://nmap.org(https://nmap.org/)

Namp的一些功能

  1. 检测存活在网络上的主机(主机发现)
  2. 检测主机上开放的端口(端口发现或枚举)
  3. 检测相应的端口(服务发现)的软件和版本
  4. 检测操作系统,硬件地址,以及软件版本
  5. 检测脆弱性的漏洞(Nmap的脚本)

2. Nmap的常用指令,了解端口的六种状态

  • -sS: TCP SYN扫描
  • -p:指定端口号扫描
  • -v:显示扫描过程
  • -F:快速扫描
  • -Pn:禁止ping后扫描:跳过主机发现的过程进行端口扫描
  • -A:全面的系统扫描:包括打开操作系统探测、版本探测、脚本扫描、路径跟踪

扫描指定IP开放端口

命令:nmap -sS -p 端口号 -v 192.168.1.2

使用半开扫描,,指定端口号1-65535,显示扫描过程

穿透防火墙扫描

命令:nmap -Pn -A 192.168.221.12

服务器禁止ping命令,试试-Pn,nmap参数配合使用

端口扫描的状态

  • Opened:端口开启
  • Closed:端口关闭
  • Filtered:端口被过滤,数据没有到达主机,返回的结果为空,数据被防火墙拦截
  • Unfiltered:未被过滤,数据有到达主机但是不能识别端口的当前状态
  • Open|filtered:开放或者被过滤,端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中
  • Closed|filtered:关闭或者被过滤,只发生在IP ID idle扫描

3. 了解nmap扫描的模式

TCP SYN scanning -sS

这种扫描方式又被称为tcp半开放扫描。顾名思义,这种扫描不需要建立完整的tcp连接,即可扫描端口的状态。发送tcp syn数据包,这个也是tcp握手的第一个包。如果端口开放,则会返回 tcp syn+ack数据包。如果端口关闭,则返回 tcp rst数据包。这样我们就不用进行tcp 握手的第三步,也可以探测端口的状态。这种扫描需要构建raw socket。所以需要root权限

TCP FIN scanning

有些时候防火墙绘过滤tcp syn数据包,有些时候会记录syn数据包并检测时候有nmap扫描。这时候可以使用TCP FIN scanning。这种方式很简单。发送tcp FIN数据包到待测端口。如果返回RST数据包,则说明该端口关闭,如果无返回则说明该端口开放。这时tcp协议的一个BUG,所以这种扫描方式不一定百分之百可靠(例如windows),但是这种扫描方式适合大部分 *NIX 系统

TCP NULL, FIN, and Xmas scans

在RFC 793的第65页写到,如果目的端口的是关闭的,并且接受到的tcp数据包如果可能会导致系统错误,则返回RST。如果开放的端口接受到诸如SYN RST ACK,则丢弃或者不做任何处理。根据此RFC描述,我们可以发送不包含SYN RST或者ACK标志的数据包,如果返回RST则说明端口是关闭状态,如果什么都没有返回则说明端口是开放状态。

  • Null scan
    tcp flag headers 全为0
  • FIN scan
    只设置tcp FIN标志
  • xmas scan
    同时设置FIN PSH URG标志位。
    上面这三种扫描的结果都是一致的,如果接受到到RST,则说明端口是关闭的。如果无响应,则端口可能是开放或者filteted状态。如果返回icmp unreachable error(type 3, code 0, 1, 2, 3, 9, 10, 13),则说明端口一定是filtered的。
TCP ACK scan

这种扫描只设置tcp ack标志位。这种扫描一般来探测防火墙是否过滤被扫描的端口。如果扫描的端口未被防火墙保护,那么无论是开放或者是关闭,都会返回RST。nmap将该端口标记为未被封锁的(unfiltered),但是不能确定该端口是开放或者关闭状态。如果无响应,或者返货icmp error,则该端口一定被防火墙封锁了

TCP Window scan

tcp窗口扫描,如果接收到RST,则说明端口封锁了。在某些操作系统,开放的端口会返回一个正数的tcp窗口值,如果端口关闭,则返回tcp窗口值为0或者负数。但是这种扫描不是很靠谱

TCP Maimon scan

这种扫描为发送同时设置FIN/ACK的数据包。如果返回RST,则说明端口是开放的,如果无响应,则是关闭状态的。

IP protocol scan

这种是专门扫描ip协议的。扫描类似于udp扫描,如果IP协议号不存在,返回 icmp错误。具体没用过,不太好写

UDP ICMP port unreachable scanning

如果udp端口开放,则无响应。如果udp端口关闭,则会返回icmp unreachable error错误。这种扫描需要root权限,因为需要构建raw socket。

UDP connect扫描

这种直接一个一个建立udp连接,如果能建立,则说明端口开放,不能建立则端口关闭。

  1. 使用Nmap探测目标开放端口

用Nmap扫描特定的IP地址 //nmap

用-v对结果进行详细输出 //nmap -v

自行设置端口范围进行扫描 //nmap -p 1-998

指定端口号进行扫描 //nmap -p 80,3000,22

对目标进行Ping扫描 //nmap -sP

帮助文档 //nmap -help

扫描多台主机 :
在Nmap命令后假设多个IP地址或主机名来扫描多台主机

nmap ip ip ip

扫描整个子网:
使用*通配符来扫描整个子网或某个范围的IP地址

nmap 192.168.0.*

从一个文件中扫描主机列表:
创建一个名为“nmaptest.txt“的文本文件,并定义所以你想要扫描的服务器IP地址或主机名

nmap -iL nmaptest.txt

扫描一个IP地址范围:
在nmap执行扫描时指定IP范围

nmap 192.168.0.101-110

协议探测

Nmap -sO ip

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章