网络安全审计之Nmap

2016-03-13 10:24
网络安全和信息化 2016年5期
关键词:端口号脚本报文

引言:Nmap(网络映射器)是由Gordon Lyon设计,用来探测计算机网络上的主机和服务的一种安全扫描器.常用在网络安全审计之中,通过对设备或者防火墙的探测来审计它的安全性。很多好莱坞黑客大片中都有Nmap的身影,例如:虎胆龙威4、黑客帝国等。

Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核的工具。Nmap的设计目标是为了快速地扫描大型网络,当然用它也是可以扫描单个主机的。Nmap使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(例如Telnt、FTP等),服务运行在什么操作系统之上(例如 windows XP、windows 2008 R2等),它们使用什么类型的报文过滤器/防火墙,以及一堆其他功能。

虽然Nmap通常用于安全审核,但许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。

Windows环境下安装Nmap

Nmap可以运行Windows XP、Windows 7等常见的Windows系统上。Nmap官方下载地址是: https://nmap.org/dist/nmap-6.49BETA6-win32.zip这是一个绿色版,直接下载下来解压缩,然后把解压后目录里面的vcredist_x86、redist2008_x86、winpcap-nmap-4.13安装一下,接着点开始菜单-运行输入CMD,打开命令提示符,用CD命令切换到nmap-6.49BETA6-win32.zip解压后的目录里面,这时就能正常执行Nmap命令了。

端口基础

端口是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口不可见。例如计算机中的80端口、21端口、3389端口等。物理端口又称为接口,是可见端口,例如计算机网卡上面的RJ45口,文中我们主要讨论的是虚拟端口。虚拟端口是通过端口号来标记的,端口号只有整数,范围是从0到65535(2^16-1)。虚拟端口可以通过端口号的范围分为3大类。

1.公认端口:

从0到1023,它们都绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯,23端口Telnet服务。

2.注册端口:

从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。

3.动态端口:

从 49152到 65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。

虚拟端口也可以通过传输协议分为TCP端口和UDP端口。

TCP:(Transmission Control Protocol)传输控制协议TCP是一种面向连接的、可靠的、基于字节流的传输层(OSI参考模型中的第四层)通信协议。

UDP:UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

常见端口号介绍

1.80号端口/8080号端口

端口说明:80号端口和8080号端口,是被用于WEB服务的,通俗的说也就是我们网页浏览所使用的端口。黑客可以通过这个端口判断目标主机是否开启WEB服务,然后在通过常见的WEB攻击手段来攻击,如:XSS(跨站脚本攻击)、SQL注入攻击。

2.23号端口

端口说明:23端口是被用于Telnet服务的。Telnet远程登录服务,通常一些网络设备都开启23号端口,例如:交换机、路由器等。黑客可以通过社会工程学结合穷举口令来攻击。

3.21号端口

端口说明:21号端口是被用于FTP(文件传输协议)服务的。

很多服务器也开启FTP服务,甚至有些摄像头也开启着这个服务。黑客可以通过暴力破解来攻击。

4.3389端口

端口说明:3389端口被用于远程终端桌面访问服务,很多服务器开启这个端口,方便网络管理员远程维护服务器。一些低版本的服务器黑客可以通过输入法漏洞绕过登录界面。

Nmap扫描结果中有6种端口状态,可以根据这些端口状态来大概判断的目标系统中运行着什么服务。只通过端口的状态判断是否开启服务是片面的,一般来说公认端口是紧密绑定一些服务的例如:23(Telnet端口)80(http端口)但这些端口也可以人为改变的。如果网络管理员把服务的默认端口号改了,那么在通过端口的状态来判断服务的开启显然就不准确了。

Nmap常用的扫描方式

前面把Nmap的安装和一些端口基本知识介绍了,下面就开始实战Nmap扫描。Nmap也有很多种扫描方式,这里就简单介绍几种常用的。在网络扫描中合理的利用不同的扫描方式往往能达到事半功倍的效果。

1.TCP Open扫描

TCP Open扫描是基于TCP连接扫描的,TCP扫描是一种稳定的扫描方式,基本不会对目标主机产生很大的影响(例如:主机崩溃什么的)这种扫描基于TCP的3次握手,在扫描的过程会在目标主机留下日志记录,并且这种扫描的速度很慢。

具体的扫描命令:"Nmap-sT iP地 址 ",例 如:"Nmap-sT 192.168.1.1"。(注:Nmap命令不带"")

TCP Open扫描原理:首先攻击者向目标主机发送一个TCP SYN数据包,如果目标主机服务端口是开放状态,那么目标主机回应SYN+ACK数据包后再发送一个ACK包,如果目标主机服务端口是关闭状态,那么目标主机就回应RST+ACK数据包。TCP Open扫描通过目标主机回应不同的数据包来判断端口是否开启或关闭。

2.TCP Half Open扫描

TCP Half Open扫描的扫描速度比较快,而且也比较隐蔽,很难被防火墙或网络管理员发现。TCP Half Open扫描是基于SYN扫描的,可以很明确地判断出端口的开放或关闭,是一种高效并且常用的扫描方式。

具体的扫描命令:"Nmap-sS ip地 址 ",例 如:"Nmap-sS 192.168.1.1"。

TCP Half Open扫描原理:首先攻击者向目标主机发送一个TCP SYN数据包,如果目标主机服务的端口是开放状态,那么目标主机就会回应一个SYN+ACK的数据包,然后在发送一个RST数据包。如果目标主机服务端口是关闭状态,那么目标主机就会回应一个RST+ACK数据包。因为TCP Half Open扫描方式是在不建立完整的会话的前提下查看端口的状态的,所以在扫描的时候不会在目标主机留下日志记录。

3.TCP FIN扫描

TCP FIN扫描是一种隐蔽的扫描方式,对防火墙有很好的穿透效果,TCP FIN扫描是通过向目标主机发送FIN包,然后通过目标主机返回的信息来判断目标主机的服务端口是否开放。

具体的扫描命令:"Nmap-sF ip地 址 ",例 如:"Nmap-sF 192.168.1.1"。

TCP FIN扫描原理:首先攻击者向目标主机发送一个TCP FIN数据包,如果目标主机的服务端口是开放状态,那么目标主机没有任何回应。如果目标主机的服务端口是关闭状态,那么目标主机就返回一个RST数据包。

4.TCP NULL扫描

TCP NULL扫描和TCP FIN扫描一样,也是一种比较隐蔽的扫描方式,这种扫描是向目标主机发送一个特殊的TCP通信包来对目标主机探测。

具体的扫描命令:"Nmap-sN ip地 址 ",例 如:"Nmap-sN 192.168.1.1"。

TCP NULL扫描原理:首先攻击者向目标主机发送一个TCP NULL数据包,如果目标主机的服务端口是开放状态,那么目标主机不会返回消息。如果目标主机的服务端口是关闭状态,那么目标主机就会返回一个RST数据包。

5.TCP Xmas扫描

TCP Xmas扫描是利用 FIN、PSH、URG数 据包扫描的,同样和TCP FIN扫描一样也是一种隐藏的扫描方式。

具体的扫描命令:"Nmap-sX ip地 址 ",例 如:"Nmap-sX 192.168.1.1"。

TCP Xmas扫描扫描原理:首先攻击者向目标主机发送TCP FIN、PSH、URG数据包,如果目标主机的服务处于开放状态,那么目标主机不会有回应。如果目标主机处于关闭状态,那么目标主机就会回应RST数据包。

6.Ping扫描

Ping扫描不会返回太多的的信息造成对结果的分析。这种扫描在目标主机禁用Ping之后就失效了。

具体的扫描命令:"Nmap-sP ip地 址 ",例 如:"Nmap-sP 192.168.1.1"

Ping扫描原理:Ping扫描是通过Ping来查看目标主机激活状态的。

7.UDP端口扫描

UDP端口扫描是基于UDP扫描的,UDP扫描速度比较慢,可以结合-p选项来指定需要扫描的端口。

具体的扫描命令:"Nmap-sU ip地 址 ",例 如:"Nmap-sU 192.168.1.1"

还有很多扫描方式还没有介绍,感兴趣的话可以去https://nmap.org查找。

服务识别与系统探测

上文中介绍端口的时候说过如果只是通过判断目标端口是否开放来来判断服务是否开启,这种判断方法是片面的,因为有些服务网络管理员可能更改了默认的端口,例如我把Telent服务的默认端口改成FTP服务的默认端口21,那么用Nmap探测到目标21端口开放着,以此来判断目标主机上面运行着FTP服务,这样显示判断是错误的。Nmap不止能扫描端口,还能对目标主机的服务和版本号进行识别和探测。通过对目标主机服务识别这种扫描方式来判断目标主机是否运行指定的服务,这种方式比基于端口的判断准确多了。

Nmap之所以可以识别出相关的服务及版本,是因为Nmap-service。Nmap-service中包括很多不同服务的报文。Nmap通过和Nmapservice里面的报文匹配来识别服务的。

Nmap版本探测命令:"Nmap-sV IP地址",例如:"NmapsV 192.168.1.1"。

Nmap是根据服务的指纹识别出服务和相应的版本的。Nmap的系统探测也是通过指纹来判断系统的,要启动Nmap的系统探测功能只用在后面加一个-O选项就行。例如:"Nmap-O 192.168.1.1"。在渗透测试中只有准确判断出目标系统中运行的是什么操作系统,才能根据相应的操作系统来指定不同的渗透方式。所以系统探测是Nmap中一个实用的功能。

防火墙/IDS规避

用Nmap扫描有时候会被目标网络中的防火墙或IDS(入侵检测系统)阻止了。那么如何规避开网络中的防火墙和IDS那,下面简单介绍两种规避防火墙和IDS的方法。

1.报文分段

将可以的探测包进行分片处理,例如:将TCP包拆分成多个IP包发动过去。因为简单的防火墙为了加快处理速度没有进行重组检查,所以这种方法可以绕过一些简单的防火墙或IDS。

报文分段的选项是-f,Nmap 通过–f选项将TCP头分段在几个包中,使IDS等检查更加困难。

报文分段扫描命令:"Nmap-sX-v-F 192.168.1.1"

2.IP欺骗

在进行扫描时,将真实的IP地址和其他主机的IP地址混用,这样会使目标主机误认为是在利用诱饵进行扫描,而不是一个真实的扫描,这样可以规避一些防火墙和IDS。

Nmap IP欺骗可以使用=D选项来指定多个IP地址,或者利用RND随机生成几个地址。

IP欺骗扫描命令:"Nmap-DRND:11 192.168.1.1"

关于防火墙和IDS的规避方法就介绍到这,要想了解更多可以参考Nmap官网的参考手册。

NSE脚本

NSE脚本引擎是Nmap中一个很强大的功能,用户可以自己编写脚本来执行自动化的操作或扩展Nmap的功能。

NSE使用了Lua脚本语言编写,目前包含14个类别的350多个脚本。这14个类别主要有auth、broadcat、brute、default、discovery、dos、exploit、e x t e r n a l、f u z z e r、intrusice、malware、safe、version、vnln。使 用 类别的时候是不区分大小写的。下面以ftp-brute为例介绍一下NSE脚本的 使 用。ftp-brute是Nmap中一个审计FTP安全的一个NSE脚本,可以检测自己的FTP服务器是否存在弱口令。详细的破解命令和使用方法是:"Nmap--scriptftp-brute--s c r i p targs userdb=user.txt,passdb=password.txt-p 21 IP地址"其中user.txt是指定的用户名字典,password.txt是指定的密码字典,21是FTP对应的端口号。更多的关于NSE脚本的介绍请参考“nmapscript使用帮助”下载地 址: http://pan.baidu.com/s/1pJvijsJ这是我网上找的一个不错的Nmap脚本参考资料,这里分享给大家。

凡事都有利和弊对于黑客来说可以利用Nmap来扫描远程主机存在什么漏洞,然后实施入侵。而对于网络管理员来说,可以利用Nmap对自己的网络进行安全审计检测,来对自己的网络加固。关于Nmap的叙述并不是一篇文章就能叙述完的,毕竟Nmap也算网络安全圈里很牛的一款工具。Nmap还有很多脚本,如:telnet-brute脚本用来检测Telnet服务弱口令、ms-sql-brute脚本用来检测MSSQL数据库的弱口令。要想熟练的掌握Nmap脚本只有通过自己的不断的学习和不断的练习才行。

猜你喜欢
端口号脚本报文
酒驾
基于J1939 协议多包报文的时序研究及应用
安奇奇与小cool 龙(第二回)
CTCS-2级报文数据管理需求分析和实现
在Docker容器中安装应用程序
浅析反驳类报文要点
快乐假期
浅谈以java为基础的Socket通信简介及实现
小编的新年愿望
ATS与列车通信报文分析