nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。 Nmap 常被跟评估系统漏洞软件 Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
Nmap介绍
NMap(Network Mapper),是linux下的网络扫描
和嗅探工具包
基本功能有三个:
- 扫描主机端口,嗅探所提供的网络服务。
- 是嗅探一组主机是否在线。
- 还可以推断主机所使用的的操作系统,到达主机经过的路由,系统以开放端口的软件版本。
端口状态解析
open : 应用程序在该端口接收 TCP 连接或者 UDP 报文。
closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
unfiltered :未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。
closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
安装命令
yum install nmap -y
-sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描 (half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要 root 权限来定制 SYN 数据包。
-sF,-sX,-sN 秘密 FIN 数据包扫描、圣诞树 (Xmas Tree)、空 (Null) 扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应 RST 包,而打开的端口必需忽略有问题的包(参考 RFC 793 第 64 页)。
-sP ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是 ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU UDP 的数据包进行扫描,如果你想知道在某台主机上提供哪些 UDP(用户数据报协议,RFC768) 服务,可以使用此选项。
-sA ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW 滑动窗口扫描,非常类似于 ACK 的扫描。
-sR RPC 扫描,和其它不同的端口扫描方法结合使用。
-b FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口扫描。
-P0 在扫描之前,不 ping 主机。
-PT 扫描之前,使用 TCP ping 确定哪些主机正在运行。
-PS 对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
-PI 设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。
-PB 这是默认的 ping 扫描选项。它使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O 这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的标志,也就是操作系统类型。
-I 打开 nmap 的反向标志扫描功能。
-f 使用碎片 IP 数据包发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP> 在一些情况下,nmap 可能无法确定你的源地址 (nmap 会告诉你)。在这种情况使用这个选项给出你的 IP 地址。
-g port 设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为 DNS(53) 或者 FTP-DATA(20) 的包通过和实现连接。显然,如果攻击者把源端口修改为 20 或者 53,就可以摧毁防火墙的防护。
-oN 把扫描结果重定向到一个可读的文件 logfilename 中。
-oS 扫描结果输出到标准输出。
--host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
--max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约 9000 毫秒。
--min_rtt_timeout 设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位。
-M count 置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描。
实战演练
-sP 扫描一个网段主机存活数
nmap -sP 10.69.66.128/27
-sP
: ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是 ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-P0 跳过Ping探测
有些主机关闭了ping检测,所以可以使用-P0跳过ping的探测,可以加快扫描速度
nmap -PO 10.12.120.41
-PS 探测开放端口(SYN)
探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
nmap -PS22,80,443 192.168.56.7
-PS
: 对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
-PU 探测开放端口(UDP)
探测:开放端口、MAC地址 探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
-sS SYN半开放扫描
nmap -sS 192.168.56.7
-sS
: TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描 (half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要 root 权限来定制 SYN 数据包。
Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-23 02:02 EDT
Nmap scan report for 10.12.120.41
Host is up (0.0028s latency).
Not shown: 990 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
808/tcp open ccproxy-http
902/tcp open iss-realsecure
912/tcp open apex-mesh
1433/tcp open ms-sql-s
2383/tcp open ms-olap4
9001/tcp open tor-orport
Nmap done: 1 IP address (1 host up) scanned in 4.82 seconds
-sT 扫描开放TCP端口的设备
扫描开放了TCP端口的设备 指定主机:
nmap -sT 192.168.56.7
全网段
nmap -sT 192.168.56.0/24
-sU 扫描目标主机开放了哪些UDP端口
nmap -sU 192.168.56.7
-sU
: UDP 的数据包进行扫描,如果你想知道在某台主机上提供哪些 UDP(用户数据报协议,RFC768) 服务,可以使用此选项。
-s0 探测 目标主机支持哪些 IP协议
nmap -sO 192.168.56.7
Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-23 02:12 EDT
Nmap scan report for 10.12.120.41
Host is up (0.00018s latency).
Not shown: 252 filtered protocols
PROTOCOL STATE SERVICE
1 open icmp
6 open tcp
17 open|filtered udp
47 open|filtered gre
Nmap done: 1 IP address (1 host up) scanned in 1.42 seconds
-0 扫描探测 目标主机 操作系统
nmap -O 192.168.56.7
-sV 扫描目标主机服务版本号
nmap -sV 192.168.56.7
-iL 导入扫描文件
cat ip.log
10.12.120.41
www.lgch.xyz
nmap -iL ip.log
-f 绕过防火墙
在扫描时通过使用-f参数以及使用–mtu 4/8/16使用分片、指定数据包的MTU,来绕过防火墙
nmap -f 192.168.56.7
Starting Nmap 7.80 ( https://nmap.org ) at 2020-10-23 02:36 EDT
Nmap scan report for 10.12.120.41
Host is up (0.00094s latency).
Not shown: 991 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
808/tcp open ccproxy-http
902/tcp open iss-realsecure
1433/tcp open ms-sql-s
2383/tcp open ms-olap4
9001/tcp open tor-orport
Nmap done: 1 IP address (1 host up) scanned in 4.86 seconds
Nmap扫描脚本
Nmap不仅用于端口扫描,服务检测,其还具有强大的脚本功能,利用Nmap Script可以快速探测服务器,一般情况下,常用的扫描脚本会放在/usr/share/nmap/script目录下,并且脚本扩招名为*.nse后缀的,接下来将介绍最常用的扫描脚本
扫描WEB敏感目录
nmap -p 80 --script=http-enum.nse 192.168.56.7
DC-3扫描:
扫描C站与旁站
nmap -p 80,8080 --open ip或域名/24
扫描端口开放情况
nmap -sV -sS -p- -A -v 192.168.56.12
No Comments