Nmap(上帝之眼)
简介
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务在哪些连接端,并且判断计算机运行哪个操作系统。
基本功能有探测目标主机是否在线;扫描主机端口和网络服务;判断主机的操作系统类型。
扫描原理
1.TCP SYN扫描(-sS)
Nmap默认扫描方式,通常被称为半开放式扫描。不建立完整的TCP链接,相对比较隐蔽,效率较高,适用范围广。
2.TCP CONNECT扫描(-sT)
使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明端口关闭。扫描速度较慢。建立完整的TC不隐蔽。
3.TCP ACK扫描(-sA)
该方式只适用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的情况。
4.TCP FIN/Xmas/Null扫描(-sN/sF/sX)
这三种方式比较隐蔽,所以称为秘密扫描。
FIN扫描向目标主机的端口发送的TCP FIN包括Xmas tree包或Null包,如果收到RST回复包,则端口是关闭的;没收到RST包,则端口可能是开放的或背屏蔽了。其中的Xmas tree包是指flags中FIN URG PUSH被设置为1的TCP包;Null包是指所有的flags都是0的tcp包。
5.UDP扫描(-sU)
UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复就说明该端口关闭;如果没有收到回复,说明端口开放或屏蔽。
……
使用
1.目标规格
nmap ip 扫描单个ip
nmap ip1 ip2 … ipn 扫描多个ip
nmap 192.168.1.1-254 扫描一个范围
nmap nmap.org 扫描一个域名
nmap 192.168.1.0/24 使用CIDR表示法扫描
nmap -iL target.txt 扫描文件中的目标
nmap -iR 100 扫描100个随机主机
nmap --exclude ip 排除列出的主机
2.扫描手法
nmap ip -sS TCP SYN端口扫描(有root权限默认)
nmap ip -sT TCP连接端口扫描(没有root权限默认)
nmap ip -sU UDP端口扫描
nmap ip -sA TCP ACK端口扫描
nmap ip -sW 滑动窗口扫描
nmap ip -sM TCP Maimon扫描
nmap 192.168.1.1-3 -sL 不扫描,仅列出目标
nmap 192.168.1.1/24 -sn 只进行主机发现,禁用端口扫描
nmap 192.168.1.1-5 -Pn 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -PS22-25,80端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PA22-25,80 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PU53 端口X上的UDP发现,默认40125
nmap 192.168.1.1/24 -PR 本地网络上的ARP发现
nmap ip -n 不做DNS解析
3.端口规格
nmap ip -p 21 扫描特定端口
nmap ip -p 21-100 扫描端口范围
nmap ip -p U:53,T:21-25,80 扫描多个TCP和UDP端口
nmap ip -p- 扫描所有端口
nmap ip -p http,https 基于服务名称的端口扫描
nmap ip -F 快速扫描(100个端口)
nmap ip --top-ports 2000 扫描前2000个端口
nmap ip -p-65535 从端口1开始扫描
4.时间和性能
nmap 192.168.1.1 -T0 妄想症,非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T1 猥琐的,相当慢,用于IDS逃逸
nmap 192.168.1.1 -T2 礼貌的,降低速度以消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T3 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T4野蛮的,在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T5疯狂的,很可能会淹没目标端口或是漏掉一些开放端口
5.NSE脚本
nmap ip -sC 使用默认的NSE脚本进行扫描
nmap ip --script=banner 使用单个脚本扫描,banner示例
nmap ip --script=http,banner使用两个脚本扫描,示例http,banner
nmap ip --script=http* 使用通配符扫描,http示例
nmap ip --script "not intrusive" 扫描默认值,删除侵入性脚本
nmap ip --script=smb-vuln* 扫描所有smb漏洞
nmap ip --script=vuln 扫描常见漏洞
6.输出
nmap ip -v 增加详细程度,-vv效果更好
nmap ip -oN test.txt 标准输出写入到指定文件中
nmap ip -oX test.xml 将输入写成xml的形式
nmap ip -oG grep.txt 将输出写成特殊格式
nmap ip -oA results 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap ip --open 仅显示开放的端口
nmap ip -T4 --packet-trace 显示所有发送和接收的数据包
nmap --resume test.txt 恢复扫描,配合-oG等命令使用
扫描结果端口状态
1)open:开放的
2)closed:关闭的
3)filtered:被防火墙过滤
4)unfiltered:为被过滤
5)open|filtered:开放的或被过滤
6)closed|filtered:关闭的或被过滤