nmap的使用
nmap使用
简介
Nmap (网络映射器)是Gordon Lyon最初编写的一种安全扫描器,用于发现计算机网络上的主机和服务,从而创建网络的“映射”。为了实现其目标,Nmap将特定数据包发送到目标主机,然后分析响应.NMAP强大的网络工具,用于枚举和测试网络。
NMAP的功能包括:
· 主机发现 - 识别网络上的主机。例如,列出响应TCP和/或ICMP请求或打开特定端口的主机。
· 端口扫描 - 枚举目标主机上的开放端口。
· 版本检测 - 询问远程设备上的网络服务以确定应用程序名称和版本号。
· OS检测 - 确定网络设备的操作系统和硬件特性。
· 可与脚本进行脚本交互 - 使用Nmap脚本引擎(NSE)和Lua编程语言。
NMAP可以提供有关目标的更多信息,包括反向DNS名称,设备类型和MAC地址.Nmap的典型用途:
通过识别可以进行的或通过它的网络连接来审计设备或防火墙的安全性。
识别目标主机上的开放端口以准备审计。
网络库存,网络映射,维护和资产管理。
通过识别新服务器来审计网络的安全性。
为网络上的主机生成流量。
Nmap的基础知识
命令 举例 解释
nmap localhost nmap localhost 查看主机当前开放的端口
nmap ip地址 nmap 192.168.13.13 查看192.168.13.13 的开放端口
nmap 192.168.1.1/24 ~ 扫描整个子网
nmap 192.168.1.2 192.168.1.5 ~ 扫描多个目标
nmap 192.168.1.1-100 ~ 扫描IP地址为192.168.1.1-192.168.1.100内的所有主机
nmap -iL target.txt ~ 扫描在namp同一目录下target.txt文件内的所有主机
nmap -sL 192.168.1.1/24 ~ 扫描的所有主机的列表
nmap 192.168.1.1/24 -exclude 192.168.1.1 ~ 扫描除了某一个ip外的所有子网主机
nmap 192.168.1.1/24 -exclude file xxx.txt ~ xxx.txt中的文件将会从扫描的主机中排除
nmap -p 端口范围 localhost nmap -p 1024-65535 localhost 查看主机端口(1024-65535)中开放的端口
nmap -PS ip地址 nmap -PS 192.168.21.163 探测目标主机开放的端口
nmap -PS端口列表 ip地址 nmap -PS22,80,3306 192.168.21.163 探测所列出的目标主机端口
nmap -O ip地址 nmap -O 192.168.21.163 探测目标主机操作系统类型
nmap -A ip地址 nmap -A 192.168.21.163 探测目标主机操作系统类型
nmap扫描技术
nmap -sS ip地址
nmap -sS 192.168.1.1
这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限.
nmap -sT ip地址
nmap -sT 192.168.1.1
如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.
nmap -sU ip地址
nmap -sU 192.168.1.1
这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.
nmap -sV ip地址
nmap -sV 192.168.1.1
版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口.
nmap -sL ip地址1 ip地址2
nmap -sL 192.168.1.6 192.168.1.1
Idle scan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.Idle scan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口
Nmap的OS检测(O)
Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。
nmap -O 192.168.1.1
Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O)
Nmap的操作系统指纹识别技术:
设备类型(路由器,工作组等)
运行(运行的操作系统)
操作系统的详细信息(操作系统的名称和版本)
网络距离(目标和攻击者之间的距离跳)
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。
nmap -O -PN 192.168.1.1/24
使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现.
nmap -O --osscan_limit 192.168.1.1
这种情况是非常不理想的,应该是远程主机做了针对操作系统检测的防范。如果Nmap不能检测到远程操作系统类型,那么就没有必要使用-osscan_limit检测。
想好通过Nmap准确的检测到远程操作系统是比较困难的,需要使用到Nmap的猜测功能选项, –osscan-guess 猜测认为最接近目标的匹配操作系统类型。
nmap -0 --osscan-guess 192.168.1.1
nmap常用的扫描
半开扫描:nmap -sS 192.168.152.130
全开扫描:nmap -sT 192.168.152.130
nmap -vv10.1.1.254 其中:-vv =切换以激活日志所需的非常详细的设置
nmap -p80,443,22,21,8080,25,53 10.1.1.254 端口扫描
nmap -traceroute 8.8.8.8 跟踪路由
nmap高级用法
防火墙扫描
SYN扫描
首先可以利用基本的SYN扫描方式探测其端口开放状态。
nmap -sS -T4 -p 网站
FIN扫描
然后可以利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态
nmap -sF -T4 网站
ACK扫描
然后利用ACK扫描判断端口是否被过滤。针对ACK探测包,未被过滤的端口(无论打开、关闭)会回复RST包。
nmap -sA -T4 网站
Window扫描
当然也可以利用Window扫描方式,得出一些端口信息,可以与之前扫描分析的结果相互补充。Window扫描方式只对某些TCPIP协议栈才有效
window扫描原理与ACK类似,发送ACK包探测目标端口,对回复的RST包中的Window size进行解析。在某些TCPIP协议栈实现中,关闭的端口在RST中会将Window size设置为0;而开放的端口将Window size设置成非0的值。
nmap -sW -p- -T4 网站
扫描互联网
发现互联网上web服务器
nmap -iR 100000 -sS -PS80 -p 80 -oG nmap.txt
随机地产生10万个IP地址,对其80端口进行扫描。将扫描结果以greppable(可用grep命令提取)格式输出到nmap.txt文件。
优化主机发现
map -sP -PE -PP -PS21,22,23,25,80,113,31339-PA80,113,443,10042 –source-port 53 -T4 -iL tcp-allports-1M-IPs
上述命令进行主机发现:使用产生的IP地址(-iL tcp-allports-1M-IPs),指定发送包的源端口为53(–source-port 53,该端口是DNS查询端口,一般的防火墙都允许来自此端口的数据包),时序级别为4(-T4,探测速度比较快),以TCP SYN包方式探测目标机的21,22,23,25,80,113,31339端口,以TCP ACK包方式探测对方80,113,443,10042端口,另外也发送ICMP ECHO/ICMP TIMESTAMP包探测对方主机。只要上述的探测包中得到一个回复,就可以证明目标主机在线。
扫描Web站点
nmap -sV -p 80 -T4 –script http*,defaultscanme.nmap.org
nmap扫描web站点.png