freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Nmap渗透扫描工具使用技巧分享
2023-03-09 16:53:01
所属地 上海

一、工具介绍:

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客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者