前言
学习nmap工具前需要准备好哪些环境呢,这是很多友友会忽略的。
kali_Linux(虚拟机环境)
Wireshark(抓包工具)
VMware(创建虚拟机)
Windows10(虚拟机)
Centos 7(虚拟机)
需要环境工具或者镜像的友友可以在官网上下载哦,也可以三连私信栖栖,我分享给你们喔!!!
笔记标注:
红色字体:一级重点
蓝色字体:二级重点
紫色字体:三级重点
黄色背景:值得注意
目录
1.简介
1.1概念
Nmap(网络映射器)是Gordon Lyon最初编写的一种安全扫描器,用于发现计算机网络上的主机和服务,从而创建网络的”映射“。为了实现其目标,Nmap将特定数据包发送到目标主机,然后分析响应。
NMAP具有强大的网络工具,用于枚举和测试网络,功能灵活强大,支持多种目标,大量计算机的同时扫描。
nmap官网:(很推荐初学者多去看看官网,可能刚开始不熟悉,看不懂,但是在边学的过程中就可以收获很多,再反过来看就很好建立学习框架啦)
下载适用于 Linux/Mac/Windows 的免费 Nmap 安全扫描程序
nmap支持windows,macos,linux等系统
1.2nmap的下载和使用
在此处是采用在kali_Linux上使用apt命令下载,这样更便捷;当然也可以下载安装包啦。
1.2.1步骤
1.下载nmap
apt install nmap
2.扫描192.168.65.0/24网段
说明:我的虚拟机网卡是VMnet8:192.168.65.0/24 ,所以扫描一下自己这个网段有多少台设备。
nmap 192.168.65.0/24
3.没有扫描到windows10虚拟机(IP地址为192.168.65.178)
为什么呢,因为win10虚拟机没有开机,也验证了哪些nmap能够探测主机是否启用。
win10虚拟机开机,能够扫描到,但是没有端口信息,为什么呢?
是因为win10虚拟机开启了防火墙,禁用防火墙即可
4.禁用防火墙后,再次扫描
2.主机发现
2.1原理
原理与ping命令相似,但手段不限于ping。
发送探测包到目标主机,如果收到回复,说明主机开启。
2.2探测方式
用户可以根据不同的条件来选择不同的探测方式
ICMP echo
ICMP timestamp
ICMP netmask
TCP ACK
TCP SYN
SCTP INIT
SCTP COOKIE-ECHO
2.3功能
2.3.1-sL
说明:List Scan 列表扫描,只将指定的目标的IP列举出来,不进行主机发现。
2.3.2-sn
说明:ping scan 只进行主机发现,不进行端口扫描。
IP地址说明:
192.168.65.180为Centos虚拟机
192.168.65.182为Kali_Linux虚拟机
2.3.3-Pn
说明:将所有指定的主机视作开启的,跳过主机发现过程(可以快速查询端口)。
2.3.4-PS/PA/PU/PY
说明:只有TCP SYN/ACK或者SCTP INIF/ECHO方式进行发现。
-PS:只发SYN,称为半连接扫描,半连接容易被发现
wireshark抓包:有182主机向180主机发送TCP_SYN
-PA:发送ACK扫描
wireshark抓包:
2.3.5-PE/PP/PM
说明:使用ICMP echo/timestamp/netmask 请求包发现主机。
2.3.6-Po
说明:使用IP协议包探测对方主机是否开启
备注:
sn隐蔽扫描
默认的端口扫描都会先进行主机发现,再进行端口扫描,因为主机发现容易被安全设备检测,所有用-Pn跳过主机发现。
3.端口扫描
3.0常用端口
ftp:21 ssh:22 telnet:23 dns:56 smb:TCP端口139是SMB over NETBIOS,而TCP端口445是SMB over TCP/IP https:443 http:80 apache:80 iis:80 mysql:3306 tomcat:8080 jboss:8080;管理EJB的容器和服务器 redis:6379 rdp:3389 weblogic:7001 oracle:1521 msssql:143
备注:windows端口查询:netstat -ano
3.1原理
端口扫描时nmap最基本最核心的功能,用于确定目标主机的TCP/IP端口的开放情况。
默认nmap会扫描1000个可能开放的tcp端口。
3.2端口状态
- open:开放
- closed:关闭
- filtered:被防火墙/IDS/IPS屏蔽
- unfitered:端口未被屏蔽,但是否开放需要进一步确认
- open|filtered:开发或被屏蔽
- closed|filtered:关闭或被屏蔽
3.3探测方式
- TCP SYN scanning
- TCP connect scanning
- TCP ACK scanning
- TCP FIN/Xmas/NULL scanning
- UDP scanning
- 其他
3.4分类
- 开放扫描:产生大量审计数据,容易被安全设备发现,但可靠性高,如:tcp connect类
- 隐蔽扫描:能有效避免安全设备的检测,但扫描使数据包容易被对其从而产生错误的探测信息,如:tcp fin类
- 半开放扫描:隐蔽性和可靠性介于前两者之间,如:TCP SYN类
3.5功能
3.5.1-sS/sT/sA/sW/sM
说明:使用TCP SYN/Connect()/ACK/Windows/Maimon scans的方式来对目标主机进行扫描。
特点:
-sS:比较隐蔽,效率高
-sT:建立完整的TCP的连接会在靶机上留下记录 ,不隐蔽
-sA:只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
3.5.2-sU
说明:使用UDP扫描方式来确定目标主机的UDP端口状况。
特点:
收到恢复说明端口关闭,没有回复则UDP端口可能开发
3.5.3-sN/sF/sX
说明:使用TCP Null,FIN,Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
特点:
-sF:到达关闭的端口,数据包会被丢弃,并且返回一个RST数据包,到达打开的端口则没返回RST
3.5.4其他参数
-p:指定端口扫描
-F:扫描比默认更少的端口
--top-posts<number>:扫描<number>数量的最常见的端口,tcp和udp分别有<number>个端口
-T:优化时间控制选项,有6个级别
paranoid(0):躲避IDS检测
sneaky(1):躲避IDS检测
polite(2):降低了扫描扫描速度已经使用更少的带宽和目标主机资源
normal(3):默认为此级别
aggressive(4):假设用户具有合适已可靠的网络从而加速扫描
insane(5):假设用户具有特别快的网络或者愿意牺牲准确度
3.5.5演示
演示一:内网主机
nmap -sS -sU -T4 -top-ports 300 192.168.65.180
备注:扫描相对比较慢用了292秒,而且也能看到哪些udp端口开放。
演示二:外网主机
nmap -sS -sU -T4 -top-ports 300 152.136.221.160
3.5.6常用端口漏洞
我们找到了端口列表,再去搜索对应漏洞的详细使用过程
学习链接:常见端口漏洞 - 木捏牛 - 博客园 (cnblogs.com)
4.版本侦测
4.1侦测原理
1.首先检查open与open/filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
2.如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL ql|对应的tota1waitms)。通常在等待时间内,会接收到目标机发送的“welcomeBanner"信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
3.如果通过"welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
4.如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
5.如果探测到应用程序是SSL,那么调用openssL进一步的侦查运行在sSL之上的具体的应用类型。
6.如果探测到应用程序是SunRPC,那么调用brute-force RPc grinder进一步探测具体服务。
4.2功能
4.2.1-sV
说明:进行版本侦测
nmap -sV 192.168.65.180
4.2.2--version-intensity<level>
说明:指定版本侦测强度(0-9),默认为7。数值越大越准确,时间越长
nmap -sV -version-intensity 9 192.168.65.180
4.2.3--version-trace
说明:显示出详细的版本侦测过程信息
nmap -sV -version-intensity 9 -version-trace 192.168.65.180
4.3隐藏版本号
首先我们要知道我们为什么要去找版本号,因为我要从应用的版本从找漏洞。为了不让别人知道我们的版本号是什么,就要隐藏起来。
隐藏版本号学习链接:nginx版本号隐藏详解笔记大全设计学院 (python100.com)
nginx官网公布的漏洞:nginx安全公告
5.OS侦测
5.1原理
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
具体实现方式如下: Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
5.2功能
5.2.1-O
说明:OS侦测
nmap -O 192.168.65.180
5.2.2-Osscan-Limit
说明:限制nmap只对确定的主机进行OS侦测
5.2.3-Osscan-guess
说明:猜测对方的OS
6.漏洞扫描
6.1特点
nmap的漏洞库其实很小,没有多少能扫出来的漏洞,但是它也提供了漏洞扫描功能。
6.2功能
nmap 192.168.65.180 --script=auth,vuln
结尾
这篇nmap的命令主要是基于linux操作系统的,本篇文章只供大家学习哦,切不可用于他事。有需要环境,工具的友友,可以三连支持一下栖栖,私聊栖栖哦。如果还有哪里做得不够好,希望宝子们能够指出,我再做修改哦,一起学习,一起加油!!!关注栖栖故人,不定时更新各类学习工具呀!!!