目录
一、Nmap是什么
nmap - 名称:网络探测工具和安全/端口扫描器
描述:Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。
二、Nmap对于端口6种状态的定义
这6种状态的定义只存在于namp中,不能保证一定是准确的。为什么介绍nmap因为它对端口划分的粒度可以说是最细的,对渗透和安全审计人员来说具有较高的参考价值。
Open(端口处于开放状态)这种状态可以理解为该端口上有服务正在进行监听,所以它需要开放这个端口用来建立连接或是数据传输。对黑客和系统管理员来说这样的端口都是重点关注的对象。
Closed(端口处于关闭状态)这种状态只能证明该端口上没有服务在监听,但这个端口我们其实是可以访问到的,并且它随时有可能进入到开放的状态
Filtered(被过滤的)这种状态一般就是发出的报文无法到达目的主机的端口,往往都是中间防火墙或者各种包过滤的应用进行了拦截或者流量的筛选。此时nmap无法确定端口的具体状态,如果能绕过防火墙之类的安全设备再次进行探测说不定会有收获。
Unfiltered(未被过滤的)这种状态可以理解为此时发出的报文实际是到达了目的主机端口的,但仅仅通过返回的报文nmap无法判断这个端口是否处于开放的状态。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来
扫描未被过滤的端口可以帮助确定 端口是否开放
Open | Filtered (开放或被过滤的)当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是其中一种情况。UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类
Closed | Filtered (关闭或者被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。
三、Nmap常用请求方式的流量报文分析
攻击机:192.168.46.1
靶机:192.168.46.253/24
第一种TCP全连接:-sT (TCP connect()扫描)
扫描命令如下:
nmap -sT -v 192.168.46.253
wireshark数据流分析
我的攻击机要达到目标主机需要将流量从46.1这张网卡发出,连接类型是TCP请求,发起SYN请求扫描了253的8888端口,seq是请求序列号932238546,如果对方回包过来就会在这个序列号的基础上加1
接着我们看253的回包
ack是932238547,这就可以确定这个包是用来响应上一个包的。返回的标志位是(RST,ACK)这是重置连接并确认请求。怎么理解它呢,就是目标机该端口其实没有开放,但客户端却请求了它的这个端口。
此时nmap扫描8888这个端口得出的结果就是closed
现在我用开放的22端口做测试命令如下:
nmap -sT -p 22 -v 192.168.46.253
wireshark数据流分析如下:
区别来了,22是一个开放的端口。从报文中可以看出前三个报文就是传统的TCP三次握手的报文。
经典的SYN,【SYN,ACK】,ACK 。再看最后一个报文
攻击机主动发的RST重置断开连接的报文,刚一建立连接后,要重置断开。此时目标机的日志中会建立起三次握手的日志并被保存下来,溯源之后就能找到攻击机。当然没人傻到用自己的电脑做攻击机。此时nmap扫描22端口得到的结果就是open
第二种TCP半连接扫描:-sS (TCP SYN扫描)
扫描命令如下:
nmap -sS -p 22 -v 192.168.46.253
直接去测22端口,因为关闭的端口用半开连接结果与上面的一致。不再赘述。
报文如下:
前2个报文第一个就是客户端发起SYN建立连接请求,第二个SYN+ACK先确认客户端请求,同时服务器发起与客户端建立连接的请求。正常来说看到第二个报文就已经能证明22这个端口是OPEN的。再看第3个报文TCP Retransmission 这个就是TCP重传包。因为TCP是可靠连接,为什么说它是可靠的呢,主要是因为TCP的重传机制,如果对端设备没有响应我的TCP SYN请求,发起连接端会认为有可能是网络堵塞,丢包,或者服务器连接队列已满等情况再次发出相同的SYN报文,来等待客户端的回应。之后就是连续的TCP重传,相当于我跟一个人打电话,我先说了声“喂,你好”对方马上回了一句“喂,你好。什么事” 然后我没回话,对方连续问了几句在的,什么事。最后对方把电话挂了。这就是TCP半开连接,一般不会被记录到访问日志中,因为始终没有建立TCP会话。DOS原理也是如此,它的攻击原理就是占满服务器的SYN连接,产生大量的TCP重传包,最终就使服务器无法再为正常的请求做出回应。但DOS很容易防御,因为它的攻击来源是密集的,就那些出口IP很好锁定。但DDOS就是分布式的攻击,无法精准定位攻击面。
一般判断网络质量好坏就是判断网络中黑红数据包的占比,占比越高网络质量越差。
第三种UDP扫描: -sU
扫描命令如下:
nmap -sU -v 192.168.46.253
扫描udp500端口的报文如下:
udp500端口一般是给ipsec vpn中第一阶段ike协商用的,用了主模式来建立密钥交换。具体太深请自行百度。接下来展示一下它模拟构造的攻击载荷,通过payload模块实现攻击代码
大概解读一下它这个报文是模拟了思科设备去建立ipsec vpn隧道中ike协商,所以去扫了udp500端口的报文,看着挺合理的。
扫描结果:
第四种:扫描操作系统及版本号 -O -sV
命令如下:
nmap -sV -O -v 192.168.46.253
报文种类比较杂,以SYN扫描为主。直接看扫描效果
实际系统版本与内核:
有偏差,但大差不差。
还有许多扫描手法,如Null扫描 (-sN),FIN扫描 (-sF), Xmas扫描 (-sX),-sA (TCP ACK扫描)等等。
如果看到这不妨给我点个赞,创作不易,且行且珍惜。