nmap是扫描IP和端口的,相当于攻击前的索敌步骤。不止网络安全方面会用到,平时运维的时候也会用到nmap
1 下载nmap
nmap官网 https://nmap.org/
点击下载,然后点你用的平台就行了
往下滚可以看到不同平台的安装方法
在kali中nmap是装好了的,执行map可以出现下面这些东西
2 扫描指定域名(IP)所有端口 nmap [域名或IP]
如果是域名会帮你把域名解析成IP,其中45.33.32.156就是接卸出来的IP
linux一般能扫到,windows开防火墙在默认情况下nmap扫不到
扫不到就是这样的
3 指定DNS服务器 --dns-servers
可以用--dns-servers参数自己指定dns服务器
4 查看扫描进度
扫描过程中每按一次回车都可以看到扫描的进度
5 越过防火墙扫描 -Pn
使用-Pn参数可以越过防火墙,目前(2024.5.4 windows10更新到最新版)还是可以用的
6 指定端口范围 -p
6.1 端口号范围
比如只想找200-500之间的端口,这样其他的信息就被过滤掉了
- 上面也可以写成 nmap -Pn -p [200-500] 192.168.247.1
也可以指定探测某一个端口
或是某几个
6.2 端口协议与端口号范围
比如我现在想看100-200端口号中TCP协议的端口
如果把T换成U就代表UDP协议,我没有UDP协议端口我就不试了
也可以指定协议和端口
也可以扫描指定服务名的端口,比如我想找smtp协议的端口
如果只知道协议的一部分,可以用*替代
- 只能扫描到STATE未open状态的端口
7 端口状态
探测到的端口一般有如下状态:
- open 端口处于开放状态
- closed 端口处于关闭状态
- filterd 服务端把nmap请求的包过滤掉了,nmap无法确定有没有这个端口
- UnFilterd 不知道服务端有没有把nmap请求的包过滤掉,并且响应信息有问题,nmap无法确定有没有这个端口
- Opend/UnFilterd 开发或为过滤
- Closed/UnFilterd 关闭或未过滤
8 帮助信息 nmap -h
9 识别目标机器上的服务指纹 -sV
服务指纹包括 服务端口、服务名、服务版本等
执行 nmap -sV [IP地址]
相比于下面的结果,多了一些信息,比如服务版本,服务平台(windows)
我们再做一个例子
10 侵略性探测
- -A是启动操作系统检测、版本检测、脚本扫描和路由跟踪
- -v是持续输出到终端
- T4可以理解为加速,T后面的取值范围1到5。选4代表快的意思
上面提到的PS-12是我windows电脑网络中的名字,不是用户名
nmap -Pn -sC -sV -O -T4 [IP地址] 与上面命令效果相似
- -sC使用默认脚本
- -O启用操作系统检测
11 寻找局域网内所有存活主机 -sP
192.168.1.1/24是CIDR。CIDR(Classless inter-Domain Routing)是用来表示网络用的,比如192.168.1.1/24的意思是192.168.1.1-192.168.1.255之间所有的IP地址
根据上图的结果现实在247这个网段中有2和131这两个IP是存活的
如果你的实体机连接的wifi,你的虚拟机也想连接wifi,那就需要设置一下网络
选择桥接模式
点击确定后虚拟机会连不上网络,这个时候点 编辑->虚拟网络编辑器
然后就行了,网段换成了我真实网络的1点多
在相同的网络中,我们可以对该网络进行扫描从而查看现实存在的设备
- 扫描的结果中没有承载当前kali虚拟机中的实体机,原因是上面的网络设置
也可以用-sn,扫描的结果一样
12 将扫描结果保存为xml文件 -oX
我们可以通过-oX将扫描的结果保存为xml文件
13 NSE
NSE(Nmap Script Engine)是Nmap的脚本引擎,作用是加强Nmap的功能。默认安装在Nmap安装路径下的script文件夹下。kali Linux的NSE存储在/usr/share/namp/script下
13.1 基本使用
用的时候加上 --script 参数就行了,比如我线下想用 http-title 这个脚本,获得http的title
这样就能获得到了
访问一下发现与获得到的一致
每一个脚本都有特殊的功能,我们也可以同时用多个脚本,比如
- namp -sV --script "(http*) and not (http-slowlors and http-burte)"
上面这个命令的意思就是使用 除了http-slowlors与http-burte之外的所有名字为http开头的脚本
13.2 常用脚本
- auth 绕开鉴权
- broadcast 局域网内探查更多服务开启情况
- brute 暴力破解
- default 默认的脚本,我们如果不加--script参数用的就都是默认的脚本
- discovery 对网络获取更多的信息
- dos 高频访问攻击
- exploit 利用已知漏洞入侵系统
- external 利用第三方数据库或资源
- fuzzer 探测潜在漏洞
- intrusive 入侵性脚本
- malware 探测目标机器是否感染病毒
- safe 安全性脚本
- version 版本扫描脚本
- vuln 检查常见漏洞
详细的功能可以直接看官方文档 https://nmap.org/nsedoc/scripts/
13.3 其余参数
比如 nmap -sV --script exploit -d 3 --script-trace -Pn 192.168.1.6
- -d代表debug,范围0-9,依次代表下面这些内容
- --script-trace是显示脚本使用过程,就是截图中十六进制的部分
比如 namp -sV --script http-title --script-args http.useragent="Mozilla 999" https://scanme.nmap.org/
- --script-args脚本中的参数。在上面的命令中http.useragent是参数名 "Mozilla 999"是参数值
13.4 更新NSE
sudo nmap --script-updatedb
14 使用特定网络 -e
网络名称可以通过ifconfig查看
比如我现在想扫描eth0中的所有设备,所有端口
15 对比扫描结果的工具ndiff
ndiff可以比较两个nmap xml文件的不同点
15.1 安装
在kali中使用ndiff需要先安装
如果出现了上面的问题就更新一下
然后再安装
15.2 使用
我现在有保存下来的test.xml和test1.xml
可以找到三个不同点
第一个是扫描时间不同
其余两个是设备不同,在test.xml中的anonymous与sujingde-ipad这两个设备在test1.xml中没有了
16 可视化nmap
zenmap是可视化版的map,用UI代替执行命令,相比于终端执行的nmap,zenmap没有功能上的增加
在kali中下载zenmap下载不了
更新之后也下载不了
文章评论