Nmap 扫描教程

简介:nmap 是一个开源的扫描工具软件,主要用来扫描目标主机或网段的主机是否在线和开放的端口以及开启的服务等信息。

一:下载安装 nmap

Windows 版本下载网址:

图片[1]|Nmap 扫描教程|KALI·文献

在首页里找到要使用的版本,点击 download 即可进行下载页,在下载页里找到 windows 版本的资源,点击蓝色的链接即可下载到本地。


图片[2]|Nmap 扫描教程|KALI·文献

下载后,双击安装。


Linux 系统

yum install nmap
apt-get install nmap

打开 Nmap 程序

在桌面上找到 Nmap Zenmap GUI 的图标,它是 nmap 的可视化外壳,双击运行。

图片[3]|Nmap 扫描教程|KALI·文献
图片[4]|Nmap 扫描教程|KALI·文献

上图就是 zenmap 的主界面了,可以在 Target:后输入目标 ip 或网段,在 Profile:后选择扫描类型,点击 Scan,就可以进行扫描。不过这个 Profile 扫描类型有限,也不够灵活,

命令行的操作,操作方法是 在 Command:后输入命令,按下回车即可。
如果是 Linux 系统,直接在 console 命令行里输入命令,回车即可
(有些扫描类型需要管理员权限)


命令说明:

nmap -sS 等扫描参数 目标 ip

第一个单词 nmap 表示调用 nmap 这个程序,后面的参数和目标是传给这个 nmap 程序的,回车后执行命令。参数可带多个,自由组合,不过有的命令不能同时使用。


Nmap 扫描参数

nmap -V //查看 nmap 版本(大写的 V),也可用 --version
nmap -sP 目标 ip //Ping 扫描,发送 icmp echo request 确认主机是否开机
//也可用 -sn 表示仅 ping 扫描,不扫描端口
nmap -sn 目标网段/子网掩码位数 //扫描整个网段开机的主机
nmap -sT 目标 ip //TCP connect()扫描,使用完整的三次握手来确定开放的端口
//如果没有指定端口范围,则默认只扫描 Nmap 定义的常用端口
//在端口时,默认是先进行 ping 扫描,ping 通主机才会进行下一步的
//端口扫描,所以当主机不允许被 ping 时,端口扫描就不会进行。
nmap -sT -p 1-10000 -Pn 目标 ip //-p 指定扫描的端口或端口范围
//-Pn 表示不进行 ping 扫描,不管是否 ping 得通
//都会进行端口扫描,也可用-P0 表示不 ping 目标
nmap -sS 目标 ip //SYN 半开扫描,只发送 syn 置位的 tcp 连接请求包,对方回
//复 syn-ack 则表示端口有监听,回复 rst 则不监听,无回复则
//表示被防火墙阻塞了
nmap -sA 目标 ip //ACK 扫描,只发送 ack 置位的 tcp 确认包,对方有回复 rst 包
//则说明防火墙没有阻塞此端口,无回复则不清楚是否开放此端口
nmap -sS -sV -p 80 -Pn 103.133.176.168 //-sV 表示探测端口对应的服务和版本
nmap -sn -PS 10.18.195.2 //-PS 表示先用 SYN 扫描确定主机是否开机,再进行端口
//扫描,此 syn 扫描只是扫常用的端口号,一旦有一个有回复
//则确定主机开机。若只想确认主机是否开机而不想再扫描其他
//端口,可以使用 -sn 参数。
nmap -sn -PA 10.18.195.2 //-PA 表示先用 ACK 扫描确定主机是否开机,再进行端口
//扫描,此 ack 扫描只是扫常用的端口号,一旦有一个有回复
//则确定主机开机。若只想确认主机是否开机而不想再扫描其他
//端口,可以使用 -sn 参数。
nmap -sn -PE 10.18.195.2 //-PE 表示先用 icmp Echo request 扫描确定主机是否开机
//再进行端口扫描
//若只想确认主机是否开机而不想再扫描其他端口,
//可以使用 -sn 参数。
nmap -A 目标 ip //-A 表示在端口扫描时获取目标主机的操作系统信息
//必须进行端口扫描 nmap 才能判断出相应的系统信息

nmap -v 目标 ip //-v 参数表示在扫描过程中显示较为详细的信息
nmap -d 目标 ip //-d 参数表示在扫描过程中显示最详细的信息
nmap -n 目标 ip //-n 参数表示在扫描开始前不对目标 ip 进行 dns 解析

其他三个不常用的端口扫描类型:

snmp -sF 目标 ip //FIN 扫描(秘密 FIN 数据包扫描),发送 fin 置位的 tcp 数据包,
//响应 RST 则表示防火墙没有阻塞此端口,但主机上关闭此端口
//无回复则不确定,显示(open|filtered)
snmp -sX 目标 ip //XMAS 扫描(圣诞树 Xmas Tree 扫描)发送 fin,urg,push 置位的
// tcp 数据包,有响应则说明开放此端口,无响应则不确定
snmp -sN 目标 ip //Null 扫描(空扫描),发送没有标志位的 tcp 数据包

以上三种端口扫描在大多数系统中都没有响应,效果不是很好,一般也不使用

默认的扫描都是对 TCP 端口的扫描


UDP 的扫描非常慢,因为操作系统对入站的 UDP 包会有限制,达到若干条,就会阻止一段时间,再允许我们继续发送 udp 探测包。所以 UDP 的话一次扫描不要扫太多的端口.

snmp -sU -p 1-2000 目标 ip //-U 表示进行 UDP 端口扫描

其他的参数可以使用命令 nmap –help 查看。

扫描参数/释义/注意
-h 查看帮助
-V 查看 nmap 版本
-sP 只进行 Ping 扫描,发送 icmp echo request 包进行探测
-sn 同-sP
-Pn 不进行 Ping 扫描,在端口扫描时默认是先 ping 的,可以关闭
-P0 同-Pn
-F 快速扫描,缺省的。默认情况下只扫描常用的一些 tcp 端口
-sT TCP connect()扫描,进行一次完整的 tcp 连接
这 6 种 tcp 端口
扫描不能同时
使用,一次只能
用一种
-sS SYN 半开扫描,不完整的 tcp 连接
-sA ACK 扫描,发送 ack 置位的包,因为防火墙一般会阻塞 syn 包
入站,而不会阻塞 ack 包入站
-sF FIN 扫描,发送 Fin 置位的包
-sX Xmas 扫描,发送 Fin,Urg,Push 三个标志位置位的包
-sN NULL 扫描,发送不设标志位的 tcp 包
-PE 扫描之前先用 icmp echo request 进行确认主机是否开机 这三个扫描,若确认
主机开机后默认是会
进行端口扫描的。
-PA 扫描之前先用 ACK 扫描常用端口进行确认主机是否开机
-PS 扫描之前先用 SYN 扫描常用端口进行确认主机是否开机
-sV 探测端口对应的服务和服务版本
-A 端口扫描时进行探测分析操作系统的信息
-p 80
-p 80,81
-p 1-99
端口扫描时指定要扫描的 端口或端口范围
-sU 进行 UDP 端口扫描,可以和 TCP 端口扫描同时进行
-v 扫描时显示较为详细的信息
-d 扫描时显示最详细的信息
-n 不对主机的 ip 进行 dns 解析
-oN x.txt 扫描的结果输出到文件中,文件名为 x.txt

© 版权声明
THE END
喜欢就支持一下吧
点赞298赞赏
分享
评论 抢沙发