Nmap是一个免费的开源用于网络发现和安全审计的实用程序。它甚至出现在12部电影中,包括 The Matrix Reloaded,Die Hard 4等还有之前国内比较火的《亲爱的xxx》,最厉害的就是nmap localhost了,最高境界就是扫自己让别人无路可扫hhh。
Nmap的四大功能
nmap -sn -v ip (同-sP)
nmap -Pn- v ip (同 -P0 -PN)
nmap -PS -v ip
nmap -PA -v ip
nmap -PU -v ip
nmap -PO -v ip
其他的一些选项
--disable-arp-ping 没有ARP或ND Ping
--traceroute 跟踪主机的路径
-n 没有DNS解析
-R 所有目标的DNS解析
--resolve-all 扫描每个已解析的地址
--system-dns 使用系统DNS解析器
--dns-servers [,[,...]] 用于反向DNS查询的服务器
Nmap扫描中有6种端口状态。
敏感端口汇总*
21 ftp 弱口令探测/溢出
22 ssh 弱口令探测
23 telnet 弱口令探测
25 smtp 溢出
53 dns 溢出
79 finger 远程主机用户信息
80-89 web web可利用漏洞
110 pop3 溢出
135 Rpc IPC入侵
443 web 心脏滴血等其他漏洞
445 SMB IPC入侵
873 Rysnc 未授权访问
1025 Rpc NFS匿名访问
1433 MSSQL 弱口令/溢出
1521 Oracle 弱口令/溢出
2601 zebra 路由默认密码zebra
2604 zebra 路由默认密码zebra
3306 Mysql 弱口令
3389 RDP 远程桌面 弱口令
5432 PostgreSQL 弱口令
5900 vnc 弱口令
6379 redis 未授权访问
7001-7002 weblogic 弱口令
8080 tomcat/jboss 弱口令
9000 fcgi 命令执行
9200/9200 elasticsearch 代码执行
27017-27018 Mongodb 未授权访问
50060/50030 hadoop 未授权访问
以下是端口扫描的方式
除了探测包中设置的TCP标志外,这三种扫描类型的行为完全相同。如果收到RST数据包,则考虑端口closed,而没有响应意味着它open|filtered。filtered如果收到ICMP不可达错误(类型3,代码0,1,2,3,9,10或13),则标记端口 。
nmap -p 端口号
这里的端口号可以是单个端口,也可以是多个端口也可以是一个范围
nmap -p 21 ip
nmap -p 21,25,3389 ip
nmap -p 21-30 ip
nmap -p 要扫描的端口 --exclude-ports 要排除的端口 ip
nmap -F ip
通常,Nmap会扫描每个扫描协议的最常见1,000个端口。使用快速扫描的话,扫描数量会减少到100个。这100个端口是互联网出现概率最高的100个端口。
nmap -r ip
默认情况下,Nmap会随机化扫描的端口顺序(但出于效率原因,某些常用端口会比较靠前)。这种随机化通常是可取的,但可以指定 -r 顺序(从最低到最高排序)端口扫描。
下面是正常随机化扫描和-r顺序扫描的对比图
nmap是根据nmap-services这个文件,以便知道哪些端口最常见,里面存放的是端口在互联网出现的概率
nmap -sS --top-ports 数量 ip
nmap --port-ratio 概率 ip (此处的概率介于0到1之间)
这里是此ip出现概率大于0.1的端口扫描情况,具体的概率情况要参照nmap-services这个文件
nmap -A ip
全面扫描不仅会显示端口号、服务类型、状态等信息,还会显示出服务的具体版本。
nmap -sV ip
只了解到端口号和服务名是不足以确定可以利用什么漏洞,拥有准确的版本号有助于确定服务器易受攻击的漏洞
原理:Nmap最着名的功能之一是使用TCP / IP堆栈指纹识别进行远程操作系统检测。Nmap将一系列TCP和UDP数据包发送到远程主机,并检查响应其中的每一位。在执行了TCP ISN采样,TCP选项支持和排序,IP ID采样以及初始窗口大小检查等数十项测试后,Nmap将结果与其进行比较 nmap-os-db 超过2,600个已知操作系统指纹的数据库,如果匹配则输出操作系统详细信息。
nmap -O ip
–osscan-limit (将OS检测限制为有希望的目标)
设置此选项,Nmap甚至不会针对不符合此条件的主机尝试操作系统检测。这可以节省大量时间,特别是在-Pn针对许多主机的扫描时。
–osscan-guess; --fuzzy(猜测OS检测结果)
当Nmap无法检测到完美的OS匹配时,它有时会提供近似匹配作为可能性。Nmap默认情况下匹配必须非常接近。这个概率会比较低,但是种类多一点。
–max-os-tries (设置针对目标的OS检测尝试的最大数量)
指定较低的 --max-os-tries值(例如1)可以加快Nmap的速度,但是错过了可能识别操作系统的重试次数。或者,可以设置高值以在条件有利时允许甚至更多次重试。除了生成更好的指纹以提交和集成到Nmap OS数据库之外,很少这样做。
切片
-f(片段包); --mtu(使用指定的MTU)
原理是将TCP标头分成几个数据包,以使数据包过滤器,入侵检测系统和其他手段更难以检测。
Nmap在IP标头之后将数据包拆分为8个字节或更少。因此,一个20字节的TCP报头将被分成三个数据包。两个带有八个字节的TCP标头,另一个带有最后四个字节。当然每个片段也有一个IP头。可以使用–mtu选项指定自己的偏移大小,偏移量必须是8的倍数。
诱饵
-D [,][,ME][,…]
decoy 是诱饵ip,ME填上真实ip,用逗号分隔每个诱饵主机ip。如果你把 ME放在第六个位置或以后,一些常见的端口扫描探测器根本不可能找到你的真实IP地址。
欺骗源地址
-S
使用-S加上希望通过其发送数据包的接口的IP地址。
其他的还没怎么用过,如下
-e 接口 (指定接口)
--source-port 端口号 (指定源端口)
--data (将自定义二进制数据追加到发送的数据包中)
--data-string (将自定义字符串附加到发送的数据包)
--data-length (将随即数据追加到数据包中)
--ttl (设置IP生存时间字段)
--randomize-hosts (随机化目标主机顺序)
--spoof-mac (欺骗MAC地址)
参考链接
https://nmap.org
https://blog.csdn.net/qq_36119192/article/details/82079150