KaliLinux-nmap(众神之眼)超详解端口扫描

觉得看字非常费事儿的同学可以点我查看nmap的详解思维导图(含高级应用篇-高清免费)

简介

Nmap是一款网络连接扫描软件,用来扫描网上计算机设备开放的网络连接端口。确定哪些服务运行在计算机连接端,并推断出该计算机的运行操作系统。

作为当今最顶尖的网络审计攻击之一,Nmap在国内外基本上已经成为了世界恶魔图测试·渗透测试人员必备工具。黑客往往也会利用Nmap对目标电脑进行网络设定的信息采集,从而制定可行的攻击方案。

目前Nmap已经具备了设备发现、端口扫描、服务和版本检测、操作系统检测检测功能。除了这些基本功能之外,Nmap还可以实现一些高级的审计技术,比如伪造发起扫描者的身份IP地址、进行隐蔽式扫描、IDS规避(如防火墙等)、对目标系统进行安全漏洞检测、提供扫描报告,(实际上攻击模块只是Nmap的附属功能,扫描Nmap的核心功能,毕竟“众神之眼”的名头不是白瞎的),随着近几年的发展,通过Nmap推出的NSE脚本引擎,大家也可以自己向Nmap中添加新的功能模块。

实际应用场景

  • 通过对设备或者防火墙的探测审计目标主机的安全性
  • 探测网络上的主机
  • 识别目标主机所开放的端口、对应的服务及主机操作系统
  • 通过识别新的服务器审计网络的安全性

基本功能介绍及依赖关系

  • 主机发现(Host Discovery)
  • 端口扫描(Port Scaning)
  • 版本侦测(Version detecion)
  • 操作系统系统侦测(Operating System Detection)

该四项基本功能之间存在着一定的依赖关系(通常是顺序关系,特殊情况下除外);先是主机发现,紧接着确定端口状态,然后确定端口上运行的具体应用程序和版本信息,然后根据操作系统侦测。除此之外,Nmap还提供了IDS、防火墙规避等高级技巧可以应用在该四项基本功能上,除此之之外,Nmap提供的NSE(Nmap Scriping Language)脚本引擎功能可以对基本功能进行扩展。

关于主机发现

主机发现的原理与ping原理类似,即通过发送检测数据包至目标主机,根据数据包响应判断主机存活。

Nmap支持是多种不同的主机探测方式,用户可以根据自己的条件进行不同的灵活选用进行主机发现。(一般情况下为了提高扫描的效率,我们可以先通过masscan扫描端口,在通过nmap针对端口进行进一步的详细扫描。)

常用的主机发现命令如下

命令参数参数详解
-A全面进攻性扫描,检测端口、对应的服务及版本等全方位的详细信息
-T4扫描级别(0-5),级别越高速度越快,也容易被IDS或防火墙检测到,一般4
-F快速扫描TOP100
–top -ports 1000扫描开放概率最高的1000歌端口
-v显示详细的扫描信息
-O进行系统版本扫描
-sV进行端口服务版本扫描
-p指定扫描的端口,可以是“0-1000”,也可以是“21,22,80,443”
-oX将扫描结果生成xml格式文件(需指定文件名),扫描中途中断,则不保存
-oA将扫描结果生成xml格式文件(需指定文件名),扫描中途中断,也可保存
-oG将扫描结果生成txt文件(需指定文件名)
-sn只进行主机发现,不进行端口扫描
-sS/sT/sA/sU详见下方端口扫描板块
-PE/PP/PM使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机。
-PS/PA/PU/PY使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现。
-iL-iL test.txt 批量扫描“test.txt”文件中的IP地址
-sL列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-Pn将所有指定的主机视作开启的,跳过主机发现的过程。
-PO使用IP协议包探测对方主机是否开启。
-n/-R-n表示不进行DNS解析;-R表示总是进行DNS解析。
–dns-servers指定DNS服务器
–system-dns指定使用系统的DNS服务器
–traceroute追踪每个路由节点

关于端口扫描

端口扫描状态

前文我们提到Nmap最核心的功能就是扫描,扫描的目的就是确认目标主机的端口开放状态。

在为指定端口及范围的情况下,Nmap会扫描1000个最有可能开放的端口。

端口检测状态如下

open端口处于开放状态
closed端口处于关闭状态
filtered端口处于IPS/IDS屏蔽状态,无法确定其是否开放
unfiltered端口没有屏蔽,但需要进一步确定其是否开放
open|filtered端口可能开放或者被屏蔽,无法识别
close|filtered端口可能关闭或者被屏蔽,无法识别

端口扫描原理及常用方式

命令扫描方式原理
-sS TCP SYN Nmap默认扫描方式(同步扫描),也被称为半开放扫描。该扫描方式是通过发送SYN数据包到目标端口,如果收到SYN/ACK的返回回复,则判断该端口为开放状态。如果收到RST包,则说明该端口是关闭状态。如果是没有收到回复,则判断该端口处于被屏蔽状态。因为是发送SYN数据包到目标的端口,不建立完整的TCP链接,所以相对其他扫描方式而言,较为隐蔽,是目前效率比较高,适用范围比较广的一种扫描方式。
-sTTCP connent使用系统网络TCP connect 向目标主机的端口发起链接,如果无法链接,则表示该端口关闭。该扫描方式速度比较慢,而且因为是建立完整的TCP链接,会在目标主机上留下大批的链接请求和错误信息,不够隐蔽。一般情况下在 TCP SYN 扫描无法使用的情况下才会使用该扫描方式。
-sAACK向目标主机发送ACK包,如果收到RST包,表示该端口没有被防火墙屏蔽。没有收到RST包,则说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,一般情况下会辅助 TCP SYN 的扫描方式来判断目标主机防火墙的状态,也通常用来穿透防火墙。
-sPping利用ping扫描方式检测网络上哪些主机处于运行状态。当主机阻塞ICMP eth0 请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sUUDP利用向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。
-sF/-sN/-sXFIN/NULL/Xmass该三种扫描方式,一般也被称为隐蔽扫描。这些扫描的理论依据是:关闭的端口需要对检测的数据包进行RST回应,而打开的端口则需要忽略掉有问题的数据包。
-sWTCP window滑动窗口扫描,非常类似ACK扫描
-sRRPCRPC扫描,和其他不同的端口扫描方法相结合
-bFTPFTP反弹攻击(bounce attack),链接到防火墙后面的一台FTP服务器做代理,然后进行端口扫描

端口扫描的一些常用实例

# nmap -sP 192.168.1.0/24       #进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测)

# nmap -sL 192.168.1.0/24       #仅列出指定网络上的每台主机,不发送任何报文到目标主机

# nmap -PS 192.168.1.234		#探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80)

# nmap -PU 192.168.1.0/24		#使用UDP ping探测主机

# nmap -sS 192.168.1.0/24		#使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快

# nmap -sT 192.168.1.0/24		#当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描

# nmap -sU 192.168.1.0/24		#UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口

# nmap -sO 192.168.1.19			#确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等)

# nmap -O 192.168.1.19			#探测目标主机的操作系统
# nmap -A 192.168.1.19			#探测目标主机的操作系统

# nmap -v scanme.nmap.org		#这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口。选项-v启用细节模式。

# nmap -sS -O scanme.nmap.org/24  	#进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。

# nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127      #进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

# nmap -v -iR 100000 -P0 -p 80		#随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。

# nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20		#扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

# host -l company.com | cut -d -f 4 | nmap -v -iL -			#进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哥撩编程

多点...少点...多少给点?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值