Nmap专题笔记
- 介绍网络扫描相关概念和Nmap的作用。
- 介绍Nmap相关概念、演示简单的安装过程。
- 列举Nmap的主要参数,介绍相关参数。
- 实例演示Nmap的常用扫描技巧。
- 介绍使用Nmap的脚本扫描。
建议学习方法
1.熟记Nmap的主要参数命令。
2.学习OSI七层模型的相关知识,理解扫描的真正含义和原理。
3.在允许和有限的条件下应当多做扫描练习,并且记录下结果以便分析。
什么是网络扫描?
针对目标网络主动发送特定的具有特殊功能的数据包,通过目标网路反馈的信息,用以确认网络目标的相关特征,使用什么操作系统,运行了什么样的服务,打开了哪些端口,等等做好记录。
为什么要做网络扫描?
在所有的安全测试中信息收集都属于测试的第一部分,而网络扫描属于其中之一,主动的探测和扫描目标主机,可以分析目标信息有哪些漏铜,做好分析记录,为后续漏洞分析做准备。
Nmap在网络扫描中具备了哪些常用的作用:
1、查看存活主机。
解:扫描目标网络主机IP地址下哪些主机是开启状态,哪些是关闭状态。
2、扫描目标主机开放的端口
解:知道了某个目标的端口(服务)开放关闭状态,才能通过某些端口更好的进行漏洞利用。
3、鉴别安全过滤机制。
解:扫描主机后,通过反馈会知道当前主机是否有IDS,IBS安全设备以及防御系统,或者防止扫描,防止发送特定的数据包和过滤数据包的功能。
4、识别目标主机的操作系统。
解:要对目标主机进行测试和漏洞利用,最起码要知道目标主机用的是什么操作系统,以及版本和特征,针对不同的特征可以找出操作系统原有的漏洞以并分析。
5、查看目标主机服务的版本信息。
解:扫描的主机如果是台目标服务器,通过扫描可以知道该服务器运行的是IIS还是Apache,他的MySQL是什么样的版本,在后续的漏洞利用当中有针对的去进行利用工作。
6、利用脚本扫描漏洞
解:Nmap事先编好了一些漏洞利用的脚本,可以用这些脚本去做简单的扫漏分析。
Nmap简介:
Nmap也称Network Mapper,是一款多平台的网络连接扫描软件,可以探测计算机网络上我主机服务情况,端口打开情况,操作系统情况,运行的机制情况。在渗透初期为了绘制目标网络拓展图,需用到Nmap对目标网络发送特定的数据包,对返回的数据包进行分析。
Nmap的主要适用平台:
Windows系统、MAC OS X系统、Linux系统
Nmap常见的运行方式:
Zenmap GUI方式(图形化界面)
命令行方式
Nmap的安装方式
去官网找到windows下载的安装包或者exe。
下载后组建全选就可以了,找到对应的目录最好在C盘里
Nmap打开方式
图形化界面直接点击桌面图标就行。
命令行有两种打开方式:
1、打开cmd:nmap
2、打开cmd把解压缩后的nmap.exe拖动到cmd命令行里
其他操作系统安装
其他才做系统就按照官网里的文件去下载后直接安装就可以了。Kaili里预置的有Nmap的软件参数都是通用的。
提示:Linux里面的Nmap区分大小写很严格,Windows里不是很严格
Nmap主要参数介绍
Nmap的功能参数主要分为以下几个大类
1、主机说明
2、主机发现
3、端口扫描
4、端口说明和描述顺序
5、服务与版本探测
6、脚本扫描
7、操作系统探测
8、时间和性能
9、防火墙/IDS规避和欺骗
10、输出选项
1、TARGET SPECIFITION 目标说明
-iL 从主机地址列表文件中导入扫描地址*
解:打开记事本逐行输入你需要扫描的IP地址保存到C盘命名1.txt,在打开CMD:
nmap -iL c:\1.txt
可以看到开放了哪些端口以及服务,最下面可以看到扫描了两个地址,几个地址开启成功几个地址未开启
-iR随机选择目标地址进行扫描,num hosts表示数目,设置为0则表示无休止扫描
–exclude 排除某个主机地址
–excludefile 排除主机地址列表文件中的地址
HOST DISCOVERY 主机发现
sL 列表扫描,仅将指令的目标IP列举出来,不进行主机发现
解:用网址能扫出他的ip
nmap -sL baidu.com
-sn 和-sP一样,只用Ping扫描主机发现,不扫描目标主机的端口
解:只会看到该主机是否在线,不会去看端口
-Pn将所有指定主机视为已开启状态,跳过主机发现过程
解:也就是说对一个网段或者网络进行扫描的时候, 不管该主机是否开启,都会去扫描,不一样的地方就是跳过主机发现。
-PS TCP SYN ping ,发送一个设置了SYN标志位的空TCP报文,默认端口为80,也可指定端口
-PA TCP ACK ping ,发送了一个设置ACK标志位的TCP报文,默认端口为80,也可制定端口
PU UDP ping ,发送一个空的UDO报文到指定端口,可穿透只过滤TCP的防火墙
-P0 使用IP协议ping
-PR 使用ARP ping
解:两种ping返回的数值是一样的,但是在特定的情况下,两个ping对目标造成影响却不同
-n/-R 不用域名解析 ,加速扫描, -R为目标IP做反向域名解析,扫描较慢- -些
-dns -servers 自定义 域名解析服务器地址
-traceroute 目标主机路由追踪
3、SCAN TECHNIQUES 端口扫描
Nmap将目标端口分为6种状态:
-open(开放的)
closed(关闭的)
-filtered(被过滤的)
-unfiltered(未被过滤)可访问但不确定开放情况
-open|filtered (开放或者被过滤)无法确定端口是开放的还是被过滤的’
Nmap产生的结果是基于目标机器的响应报文的,而这些主机可能是不可信任的,会产生迷惑或者误导Nmap的报文
端口扫描的命令
-sS TCP SYN扫描 ,半开放扫描,速度快隐蔽性好(不完成TCP的握手连接),能够明确区分端口状态
-sT TCP连接扫描,容易产生记录,效率低,不推荐
-sA TCP ACK扫描,只设置ACK标志位,区别被过滤与未被过滤的。
-sU UDP服务扫描,例如DNS/DHCP等,低效率
sN;-sF;-sX TCP Null,Fin,Xmas扫描,从RFC挖掘微妙方法来区分开放关闭端口
-sI 利用僵尸主机上已知IP分段ID序列生产算法来探测目标上开放端口的信息,极端隐蔽
sO IP协议扫描,可以确定目标主机支持哪些IP协议,例如TCP/ICMP等
4、PORT SPECIFICATION AND SCAN ORDER 端口说明和扫描顺序
-p 指定扫描的端口,可以是单个端口,也可以是端口范围,可以指定UDP或TCP协议扫描特定端口
-p指定扫描协议,例如-p http 即可扫描http协议的端口状态
–exclude-ports 排除指定端口不扫描
-F 快速模式,仅扫描100个常用端口
5、SERVICE/VERSION DETECTION 服务与版本探测
Nmap-services 包含大量服务数据库,Nmap通过查询数据库可以报告哪些端口可能对应什么服务,但不一定正确
-sV 进行服务版本探测
–version-intensity设置版本扫描强度,范围0-9,默认是7,强度越高,时间越长,服务越可能被正确的识别
6、SCRIPT SCAN 脚本扫描
**允许用户自己编写脚本来执行自动化的操作或者扩展Nmap的功能,使用Lua脚本语言。
7、操作系统探测
用TCP/IP协议栈fingerprinting进行探测, Nmap发送一系列TCP和UDP报文到远程主机, 检查响应中的每一 个比特。 测试后Nmap把结果和数据库中超过1500个已知的fingerprints比较,如匹配则输出结果。
-0 启用操作系统探测
解,可同时扫描操作系统和端口开放情况
-A 同时启用操作系统探测和服务版本探测(万能开关)
–osscan-limit 针对指定的 目标进行操作系统检测
–osscan-guess 当Nmap无法确定所检测的操作系统时 ,会尽可能地提供最相近的匹配
8、时间和性能
Nmap开发的最高优先级是性能,但实际应用中很多因素会增加扫描时间,比如特定的扫描选项,防火墙配置以及版本扫描等。
*-T<0-5> 设置时间模板级数,在0- 5中选择。T0、T1用于IDS规避, T2降低了扫描速度以使用更少的带宽和资源。默认为T3 ,未做任何优化。T4假设具有合适及可靠的网络从而加速扫描。T5假设具有特别快的网络或者愿为速度牺牲准确性。
-host-timeout
9、防火墙/IDS规避和欺骗
-f (报文分段); --mtu (使用指定的MTU )将TCP头分段在几个包中,使得包过滤器、IDS以及其它工具的检测更加困难
-D <decoy1 [, decoy2] [, ME.]…>隐蔽扫描 ;使用逗号分隔每个诱饵主机,用自己真实IP作为诱饵使用ME选项。如在6号或更后的位置使用ME选项, - - -些检测器就不报告真实IP。如不使用ME ,真实IP将随机放置
-S 伪造数据包的源地址
-source-port < portnumber>/-g < portnumber>伪造源端口
10、输出选项
-ON标准输出
-oX XML输出写入指定的文件
-oS 脚本小子输出,类似于交互工具输出
-0GGrep输出
-0A输出至所有格式
-V 提高输出信息的详细度
-resume <filename )继续中断的扫描
Nmap常用扫描技巧
1、扫描单一目标主机
nmap 39.156.69.79
nmap baidu.com
2、扫描整个子网
nmap 39.156.69.79/24
解也可以用-sP来扫描跳过端口
3、扫描多个目标
nmap 39.156.69.79 baidu.com等等无限延伸
4、扫描一个范围内的目标
nmap 39.156.69.79-200
解:该扫描会从79-200的所有地址扫描,可以配合使用例如-sP
5、导入IP列表进行扫描
nmap -iL ip.txt (要求在Nmap目录)
解:之前写过批量扫描可以去看看
6、列举目标地址,但不进行扫描
nmap -sL 39.156.69.79/24
解:只列举处所有子网的IP地址,但不进行扫描过程
7.排除某IP进行扫描
nmap 39.156.69.79/24 -exclude 39.156.69.79
解:之前已经演示过了可以去上面看看。排除单个不扫描
nmap 39.156.69.79/24 -exclude file ip.txt
解:同理,排除文件列表中的IP,注意格式和C,D盘
8、扫描特定主机的端口
nmap -p80,21,8080,135 39.156.69.79
nmap -p50-900 39.156.69.79
解:注意格式。
9、简单扫描,详细输出返回结果
nmap -vv 39.156.69.79
解:-vv有很多种用法不单单只有这一种
10、简单扫描并进行路由跟踪
nmap -traceroute baidu.com
11、ping扫描,不端口扫描(linux下使用需要ROOT权限)
nmap -sP 39.156.69.79
nmap -sn 39.156.69.79
12.探测操作系统类型
nmap -O 39.156.69.79
13、Nmap万能开关-A参数
-A包含1-10000端口的扫描,操作系统扫描,脚本扫描,路由跟追,服务探测。
14、混合命令扫描(重要)
nmap -vv -p1-1000 -O 196.254.223.216/24 -exclude 196.254.223.216
解:nmap扫描39.156.69.79的子网范围,和1-1000的端口范围,每个系统的桉树,并且去除掉39.156.69.79不扫描
15、半开放TCP SYN端口扫描
nmap -sS 39.156.69.79
16、扫描UDP 服务端口
nmap -sU 39.156.69.79
17、TCP链接端口扫描
nmap -sT 39.156.69.79
由于IDS/IPS系统的存在,防火墙可能会阻止掉SYN数据包,此时可发送设置了FIN标志的数据包,不需要完成TCP握手,不会再目标产生日志记录(重要)
nmap -sF baidu.com
在你不知道对方开启了什么系统和服务的时候,就要尝试用多种参数去扫描,并且做记录,因为你不敢保证返回过来的信息有没有骗你。记录下,可以取最多值来信任
19.服务版本探测
nmap -sV 39.156.69.79
**20、图形化界面
根据界面可以做调整
Nmap 脚本扫描
Nmap允许用户自己编写脚本进行自动化扫描操作,或者扩展Nmap现有的功能脚本文件的默认目录为: /usr/share/nmap/scripts,如图大概近600个不同分类不同功能的脚本
-sC参数等价于-sC=default使用默认类别的脚本进行扫描,可更换其他脚本类别。
脚本部分参数
–script-args= <n1=v1,[n2=v2…]>为脚本提供默认参数
–sCript- args-file=filename使用文件来为脚本提供参数
– script-updated更新脚本数据库
–script-trace显示脚本执行过程中所有数据的发送与接收
–script-help= 显示脚本的帮助信息
Nmap的脚本功能主要分为以下几类
扫描过程中可以使用-script=类别名称这种方式进行扫描:
auth:负责处理鉴权证书(绕开鉴权)的脚本
broadcast:在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute:提供暴力破解方式,针对常见的应用如http/snmp等
default:使用-sC或- A选项拦描时候默认的脚本,提供基本脚本扫描能力
discovery:对网络进行更多的信息,如SMB枚举、SNMP查询等
dos:用于进行拒绝服务攻击
exploit:利用已知的漏洞入侵系统
external:利用第三方的数据库或资源,例如进行whois解析
fuzzer:模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
intrusive:入侵性的脚本,此类脚本可能弓|发对方的IDS/IPS的记录或屏蔽
malware:探测目标机是否感染了病毒、开启了后门]等信息
safe:此类与intrusive相反,属于安全性脚本
version:负责增强服务与版本扫描( Version Detection )功能的脚本
vuln:负责检查目标机是否有常见的漏洞( Vulnerability ) , 如是否有MS08_ 067
扫描实例:
默认脚本扫描
nmap -sC IP
使用auth类脚本进行扫描,处理及安全证书方面的脚本,也可以作为部分弱口令的检查
’Nmap --script=auth IP
剩下的,按照格式去了解和测试,不方便公开。