一、工具介绍:
Nmap(Network Mapper),诸神之眼,扫描之王,主机扫描工具,网络扫描和嗅探工具包,图形化界面是zenmap,分布式框架为Dnamp,最早是 Linux下的网络扫描和嗅探工具包。
二、功能介绍:
Nmap主要功能:主机探测、端口扫描、版本检测、系统检测(硬件地址MAC)并支持探测脚本的编写。
Nmap在实际中应用场合如下:
1)通过对设备或者防火墙的探测来审计它的安全性;
2)探测目标主机所开放的端口;
3)通过识别新的服务器审计网络的安全性;
4)探测网络上的主机;
三、工具使用说明(Linux):
帮助说明:nmap --help、nmap -h
******************* 扫描 IP *******************
· -sP * Ping扫描* · -n *禁止DNS反向解析*
· -P0 *无Ping扫描* · -R *反向解析域名*
· -PS * TCP SYN Ping扫描* ·-system-dns*使用系统域名解析器
· -PA *TCP ACK Ping扫描* · -sL *列表扫描*
· -PU * UDP ping扫描 · -6 *扫描IPv6地址
· -PE/PM/PP * ICMP Ping Types扫描 · -traceroute *路由跟踪
· -PR *ARP Ping扫描 · -PY * SCTP INIT Ping扫描
nmap 192.168.31.43 # 最简单的扫描探测方式,扫描一台机器查看它打开的端口及详细信息
nmap 192.168.31.43 192.168.31.1 192.168.31.132 # 对多个不连续的主机进行扫描 ,不同ip之间使用空格分开
nmap 192.168.31.100-200 # 对多个连续的主机进行扫描 扫描出有哪些主机是在线的以及开放的端口
nmap 192.168.31.1-255 # 对整个子网主机进行扫描
nmap 192.168.31.0/24 # 对整个子网主机进行扫描
nmap -v 192.168.31.43 # 扫描这台主机的详细信息,默认扫描1000个端口,端口范围:1-65535
nmap -v -p 80 139, 445 192.168.31.43-100 # 大写 V 与 小写 v 是有区别的
nmap -sV 192.168.31.43 # 识别出版本号(sV 探测的是版本 Version),扫描速度会比较慢
nmap -O 192.168.31.43 # 扫描系统版本,需要root权限 Runing OS CPE 这里的 O 要大写,小写不行
nmap -sn 192.168.31.43 # -sn 表示只进行ping扫描,不进行端口扫描,只是确认这台主机在不在线
nmap -sn 192.168.31.0/24 # 该网段内存活的主机,-sn 表示只进行ping扫描,不进行端口扫描
nmap -sn 192.168.1-254 (与上等价) # Host is up 表示在线的,存活的 -A 显示更多的信息
nmap -Pn 192.168.1-10 # 慢
nmap -PS 192.168.1.10
nmap -sP 192.168.31.* # 探测该网段内存活的主机,
nmap -p 1-65535 192.168.1.54 # 扫描这台设备的所有端口,445文件共享端口
nmap -p 1-100,135,139,445 192.168.1.54 # 扫描部分端口
nmap -sV -pN 192.168.31.43 # 查看目标主机开放端口【推荐】 “永恒之蓝等”
nmap扫描类型主要有:TCP的全连接扫描(会在被扫描机器留下记录),半连接扫描(不会留下记录)
nmap -sS 101.200.128.35 -p 80,81,21,25,22,110,443,500-600 # -sS表示使用SYN进行半连接扫描(不加-sS默认会是全扫描),port 指定端口、端口段也可以
nmap 192.168.31.43 -sS -O
nmap 192.168.31.0/24 -sS -O # 扫描这个网段内的主机 是什么操作系统
nmap -sS -O 192.168.1.14 # -O:开启OS检测,显示出操作系统的类型,每一种操作系统都有一个指纹
nmap -sS -O 192.168.1.0/24 # 扫描一个网段内的主机
nmap -v -p 80 192.168.1.56-90 # 扫描这个网段的主机开启的80端口,所有TCP端口范围:1-65535
nmap -sS 101.200.128.35 -p 80,81,21,25,22,110,443,500-600 # -sS表示使用SYN进行半连接扫描(不加-sS默认会是全扫描),port 指定端口、端口段也可以
nmap -p 445 22 3306 -sC -sV -A 192.168.31.198
******************* 扫描端口 *******************
端口状态
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况,默认情况下,Nmap默认会扫描1000个最有可能开放的TCP/UDP端口。
Nmap通过探测将端口划分为6个状态:
1) open:端口是开放的
2) closed:端口是关闭的
3) filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
4) unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
5) open|filtered:端口是开放的或被屏蔽
6) closed|filtered:端口是关闭的或被屏蔽
优点:
SYN扫描要比TCP Connect()扫描隐蔽一些(没有进行TCP三次握手,否则容易被防火墙和 IDS 检测到)
SYN仅仅需要发送初始的SYN数据包给目标主机,如果端口开放,则相应SYN-ACK数据包;如果关闭,则响应RST数据包;
-sS (TCP SYN扫描): 半开放扫描,它只发送一个SYN报文然后等待回应,若SYN/ACK表示端口在监听(开放),而RST(复位)表示没有监听者。
如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。
-sT (TCP connect()扫描): CPConnect()扫描是默认的TCP扫描,Nmap通过创建connect()系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。
-sU(UDP扫描):UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回ICMP端口不可到达错误(类型3,代码3),该端口是closed(关闭的)。
其它ICMP不可到达错误(类型3,代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。
偶尔地,某服务会响应一个UDP报文,证明该端奥是open(开放的)。如果几次重试后还没有响应,该端口就被认为是open|filtered(开放|被过滤的)。
-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描):用来区分open(开放的)和closed(关闭的)端口。利用了当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致一个RST返回,而当端口开放时,应该没有任何响应。-sA (TCP ACK扫描): ACK扫描探测报文只设置ACK标志位(除非您使用--scanflags)。当扫描未被过滤的系统时,open(开放的)和closed(关闭的)端口都会返回RST报文。
Nmap把它们标记为unfiltered(未被过滤的),意思是ACK报文不能到达,但至于它们是open(开放的)或者closed(关闭的)无法确定。
不响应的端口或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10,或者13)的端口,标记为filtered(被过滤的)。
-sW (TCP窗口扫描): 利用了某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文)而关闭端口的窗口大小为0,区分开放端口和关闭端口。
--scanflags(定制的TCP扫描):可以通过指定任意TCP标志位来设计自己的扫描。
-sO(IP协议扫描):确定囱标机支持哪些IP协议(TCP,ICMP,IGMP,等等)。遍历的是IP协议号而不是TCP或者UDP端口号。
nmap -p 445 192.168.31.43 # 扫描这台主机的指定端口(port),445文件共享端口
nmap -p 1-100,135,139,445 192.168.1.43 # 扫描部分端口 PORT:端口 STATE:状态 SERVICE:开放的服务
nmap -p 1-65535 192.168.31.43 # 扫描这台设备的所有端口 Not shown: 65525 filtered tcp ports (no-response) 表示65525个端口是关闭的
nmap -p 22 www.wbdy.tv
nmap -p 22,80,443 www.wbdy.tv
nmap -sT 192.168.31.43 # 扫描TCP端口 sT:scan TCP
nmap -sU 192.168.31.43 # 扫描UDP端口 sT:scan UDP U、T 一定要大写 UDP 扫描会比较慢
nmap -p- 192.168.31.164 # 扫描该 IP 所有端口 【推荐】
nmap -p- ce.mianshiya.com # 扫描该域名所有端口 (跑不出结果)
nmap -p U:53,111,T:21-25,80 scanme.nmap.org # 扫描UDP、TCP指定端口
nmap -F scanme.nmap.org # 快速扫描
nmap --top--ports 22 scanme.nmap.org # 需要加端口号,否则报错
******************* 扫描域名 *******************
nmap www.wbdy.tv # 能够扫描出这个网站哪些端口是开放的
nmap deelmind.com -p 22 -sS
nmap deelmind.com -A -sS # 【这种比较好】
nmap -sS -O www.wbdy.tv # 扫描一台机器:查看此服务器开放的端口号和操作系统类型
nmap -sS -O wbdy.tv # 与上等价 -sS:半开扫描(half-open) -O:显示出操作系统的类型,每一种操作系统都有一个指纹。
nmap wbdy.tv -sS -O # 与上等价 参数可以放在后面
nmap -p 4444 deelmind.com -ss -sV # 可以扫描4444端口是否打开在线
***************** 躲避防火墙扫描 ****************
nmap -f -v 192.168.139.132
nmap --mtu 16 192.168.139.132
nmap -D 192.168.139.129 ME 192.168.139.132 # -D 指诱饵 ME后面跟的是目的地址
nmap -sI www.baidu.com:80 192.168.139.132
nmap --source-port 88 192.168.139.132
nmap --data-length 30 192.168.139.132
nmap -sT -PN --spoof-mac 0 192.168.139.132
*********** 探测服务器、网站指纹信息 ***********
nmap -sV -A 192.168.139.132
nmap -sV --allports 192.168.139.132
nmap -sV --version-intensity 1 192.168.139.132
nmap -sV --version-all 1 192.168.139.132
nmap -O 192.168.139.132
nmap -O --osscan-limit 1 192.168.139.1/24
nmap -O --osscan-guess 192.168.139.132
******************* 高级使用技巧 *******************
nmap -iflist # 查看网卡清单
nmap deelmind.com --script=./vulscan/vulscan.nse -oN rr.txt # 利用写好的脚本进行扫描,生成 rr.txt 文件
# 回车显示扫描进度
nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse > a.txt # 扫描结果保存到 a.txt文件中
-iR 表示随机扫描 -iR 100 后面数字100表示次数 -iR 0 后面数字0表示一直扫描下去
vim a.txt
如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定IP地址。
--randomize_hosts #随机扫描,对目标主机的顺序随机划分
--scan-delay #延时扫描,单位秒,调整探针之间的延迟
nmap -v --randomize-hosts -p 80 192.168.31.62-169 # 随机扫描,多次扫描顺序结果不一样
随机扫描+延时扫描,默认单位秒:
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.31.62-69
使用通配符指定IP地址:
nmap -v --randomize-hosts --scan-delay 30 -p 80 1.*.2.3-8 # 这里 *:1-254,总计扫描IP:254x6个 扫描延时30秒
nmap --script ip-geolocation-* www.0day.cn # 路径:/usr/share/nmap/scripts
nmap --script whois-domain www.0day.cn
nmap deelmind.com -sS -A -oN ./r.txt # 扫描输出的文件(r.txt)保存在桌面
nmap deelmind.com --script=./vulscan/vulscan.nse -oN rr.txt # 利用写好的脚本进行扫描 生成 rr.txt文件 【回车才显示扫描进度】
nmap --script ipidseq iR 10000 -oN ipidseq.txt
nmap 8.8.8.8 -n -T3 -sT -A -e eth0 # 指定网卡扫描
nmap 8.8.8.8 -sS -F -Pn -A
nmap 8.8.8.8 -F -O -D1.1.1.1,2.2.2.2 -g996 -n
-n 不做DNS查询
-g 指定一个源端口
-0 做操作系统的探测
-F 100个端口的快速扫描
-D 后面跟着的IP地址是假的
nmap -iL 1.txt # 跑这个列表文件
nmap -iR 3 # 这样将会从公网上随机扫描三台主机
nmap -T4 -A -v 192.168.31.164 # 【全面扫描】 不加后面 A 扫描速度会更快,为了躲避WAF、IPS等设备检测,可以使用T0、T1速度扫描 -T<0-5>
nmap -P0 192.168.31.164 # *IP协议Ping扫描* (如果防火墙禁掉PING)
nmap --script=vuln 192.168.178.128 # 漏洞扫描模式,扫描这台主机上存在的漏洞
***************************** 系统banner提取 *****************************
简单来说,banner信息就是指服务器返回响应头的相关信息,如:软件开发商,软件名称、版本、服务类型等信息,通过这些信息可以使用相对应的工具和exp去攻击。
获取banner信息的意义: 通过这些信息可以使用相对应的工具和exp去进行攻击。
nmap --script=banner ce.mianshiya.com # 利用里面自带的脚本
nmap -sT --script=banner ce.mianshiya.com
nmap -sS -p22 -vv --script=banner ce.mianshiya.com
请登录/注册后在FreeBuf发布内容哦