NMAP网络扫描软件使用手册
工具简介
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定那些服务在那些连接端,并且推断计算机运行那个操作系统。是一款网络安全管理工具,可用于评估网络系统安全。
nmap可用于探测工作环境中未经批准使用的服务器,可用于收集目标电脑的网络设定,并且nmap以隐秘的方式,避开闯入检测系统的监视,并且不影响目标系统的日常操作。
NMAP工具三个基本功能
1、探测活跃主机
2、扫描主机端口、嗅探所提供的网络服务
3、可推断主机所用的操作系统
nmap扫描活跃主机的过程中可能会缓冲比较满需要耐心等待,可敲回车键查看扫描进度。
发现活跃主机
使用ICMP、IP、UDP、SCTP、TCP(SYN、ACK)协议探测活跃主机
以下是一些常见扫描,后面会逐步介绍:
基于ICMP协议发现活跃主机扫描方式:(通过发送ping包)nmap -sP 192.168.1.0/24
基于IP协议发现活跃主机扫描方式:nmap -PO 192.168.1.0/24
基于UDP协议发现活跃主机扫描方式:nmap -PU 192.168.1.0/24
基于SCTP协议发现活跃主机扫描方式:nmap -PY 192.168.1.0/24
基于TCP SYN发现活跃主机:nmap -PS 192.168.1.0/24
基于TCP ACK发现活跃主机:nmap -PA 192.168.1.0/24
基于网段扫描端口
以192.168.1.0/24作为目标网段
nmap -PS21,22,23,25,53,80,101,443,8080,9000 192.168.1.0/24
基于某个目标主机扫描端口
以192.168.1.25作为目标主机
nmap -PS21,22,23,25,54,80,101,443,8080,9000 192.168.1.25
端口分类
1、公认端口(well-known port):从0至1024,最常用端口,通常与协议绑定
2、注册端口(registered port):从1025至49151,这些端口已经注册到服务器协议上
3、动态或私有端口(dynamic/private port):从49152至65535
同时端口与协议也有相关的联系
UDP端口53通常用于DNS查询
TCP端口53通常用于DNS记录迁移
端口状态
open:目标端口开启
closed:目标端口关闭
filtered:端口被防火墙或IDS/IPS屏蔽
unfiltered:目标端口可以访问,但是否开放需要进行确认
open | filtered:端口是开放或被屏蔽
closed | filtered:端口是关闭或屏蔽
端口扫描常见的几种方式:
半开放扫描【Tcp SYN Scan】
命令:nmap -sS 目标IP或者目标网段(192.168.1.1或者192.168.1.0/24)
仅发送TCP连接中的SYN进行扫描
判断SYN/ACK应答,表示端口开启,返回RST应答,表示端口关闭。
扫描的特点:不需要建立完整的TCP三次握手,速度快,是最常用的端口探测方法之一。
扫描过程:半开放扫描,不需要通过完整的握手,就能获得远程主机的信息。
Nmap发送SYN包到远程主机,它不会产生任何对话,因此不会在目标主机上产生任何日志记录,因此没有形成会话
如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN,但是它需要root/administrator最高权限
TCP ACK扫描
扫描流程:扫描通过向目标主机发送ACK包,若收到目标主机返回RST包,则说明该
端口没有被屏蔽,相反则端口被屏蔽。
扫描的特点:ACK扫描只能用于确认防火墙是否屏蔽端口。
开放扫描【Tcp connect() scan(sT)】
命令:nmap -sT 目标IP或者目标网段
完成TCP的三次握手阶段进行扫描
建立TCP连接、表示端口开启、否则、表示端口关闭。
特点:这种扫描方式需要建立完整的TCP三次握手、探测准确率高、但是扫描速度慢,容易暴露扫描者
扫描过程:如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式,不同于Tcp SYN扫描,Tcp connect()扫描需要通过三次握手,并且要求调用系统connect(),Tcp connect()扫描技术只使用于找出TCP与UDP端口
UDP扫描【scan(sU)】
nmap -sU 192.168.1.0/24
使用UDP方式进行扫描
无应答、表示端口开启;返回Port Unreachable(端口无法抵达)信息,表示端口关闭
扫描流程:这种扫描技术用来寻找目标主机打开的UDP端口,它不需要发送任何的SYN包,这种扫描针对UDP端口。UDP扫描通过发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的。
【FIN扫描(FINscan)sF】
nmap -sF 192.168.1.0/24
在TCP数据包中置FIN标志位、然后发送数据包、进行扫描。
判断:无应答、表示端口开启;返回RST应答,表示端口关闭
特点:该扫描方式隐秘性高,不会被记录到目标主机的日志中,但是扫描出的结果可能不太完善
扫描流程:当目标主机有防火墙的情况下,或者目标主机存在IDS和IPS系统的时候,防火墙会阻止SYN数据包。为了应对此类情况,我们可以利用FIN标志的数据报不需要完成TCP的握手。并且FIN扫描也不会在目标主机上创建日志。
并且在此提及一下(个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包。)
NULL扫描
nmap -sN 192.168.1.0/24
在TCP数据包中包含任何标志、然后发送数据包、进行扫描。
判断:无应答、表示端口开启;返回RST应答,表示端口关闭。
Xmas扫描
nmap -sX 192.168.1.0/24
在TCP数据包中置FIN、RST、PUSH标志位、然后发送数包、进行扫描。
无应答、表示端口开启;返回RST应答,表示端口关闭
【idlescan(sL)扫描】
假设僵尸机是192.168.121.2,namp -sI 192.168.121.2 192.168.1.0/24
利用僵尸机进行跳转完成对目标的扫描
当僵尸返回序列ID增加数量是2时、表示端口开启;当僵尸机返回序列ID增加数量是1时,表示都那口关闭
扫描流程:此类扫描通过匿名扫描技术,通过目标网络中的其它主机向目标主机发送数据,来获取目标主机的开放端口。
在此提及一下其它扫描技术:如FTPbounce(FTP反弹)、fragmentationscan(碎片扫描)IPprotocolscan(IP协议扫描)
Nmap的OS检测(O)
Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以已知的漏洞。Nmap有一个名为nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息,Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。
指定端口扫描
nmap -p 端口号 192.168.1.0/24
nmap -p 80 192.168.1.0/24,nmap -p 80 192.168.1.0/24
扫描常用端口
nmap --top-port 端口数量 192.168.1.0/24
nmap --top-port 10 192.168.1.0/24
扫描所有端口(效率低,不建议使用)
nmap -p * 192.168.1.0/24
操作系统、服务判断
判断操作系统:nmap -O 目标主机或者目标网段
判断服务版本:nmap -sV 目标主机的IP/或者目标网段
综合判断:nmap -A 192.168.1.0/24
使用脚本
nmap --script 脚本名称 192.168.1.0/24
nmap --script http-methods 192.168.1.0/24