网络安全审计之Nmap

2016-03-13 09:55:19
网络安全和信息化 2016年3期
关键词:网络管理员端口号命令

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。虚拟端口可以通过端口号的范围分为以下三大类。

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扫描结果中有六种端口状态,可以根据这些端口状态来大致判断目标系统中运行着什么服务。只通过端口的状态判断是否开启服务是片面的,一般来说公认端口是紧密绑定一些服务的,例如:23(Telnet端口)80(http端口),但这些端口也可以人为改变。如果网络管理员把服务的默认端口号改了,那么再通过端口的状态来判断服务的开启显然就不准确了。那么,如何更准确地判断服务是否开启,就要用到Nmap服务识别,稍后会具体介绍Nmap服务识别。下面先介绍一下Nmap的六种端口状态。

1.Open[开放的]

当我们用Nmap扫描出端口状态为Open,说明这个端口所在的应用程序正在该端口接收TCP或UDP报文,发现这一点常常是端口扫描的主要目标。安全意识强的网络管理员知道每多开放一个端口就意味着多一种黑客攻击的入口,黑客或者入侵测试者想要发现开放的端口来攻击系统,而网络管理员则试图关闭它们或者用防火墙保护它们,以免被黑客入侵。

2.Closed[关闭的]

当端口关闭的时候Nmap也可以检测出来(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。

3.Filtered[被过滤的]

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自硬件防火墙,路由器规则或者主机上的软件防火墙。

4.Unfiltered[未被过滤的]

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放的还是关闭的。

5.open|filtered[开放或者被过滤的]

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成这种状态。

6.closed|filtered[关闭或者被过滤的]

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地 址 ",例 如:"N m a p-s X 192.168.1.1"。

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

6.Ping扫描

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

具体的扫描命令:"Nmap-sP ip地 址 ",例 如:"N m a p-s P 192.168.1.1"

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

7.UDP端口扫描

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

具体的扫描命令:"Nmap-sU ip地 址 ",例 如:"N m a p-s U 192.168.1.1"

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

服务识别与系统探测

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

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

Nmap版本探测命令:"Nmap-sV IP地址",例如:"Nmap-sV 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欺骗扫描命令:"N m a p-D R N D:1 1 192.168.1.1"

NSE脚本

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

NSE使用了Lua脚本语言编写,目前包含14个类别的350多个脚本。使用类别的时候是不区分大小写的,下面以ftp-brute为例介绍一下NSE脚本的使用。

ftp-brute是Nmap中一个审计FTP安全的NSE脚本,可以检测自己的FTP服务器是否存在弱口令。详细的破解命令和使用方法是:"Nmap--script ftp-brute--script-args userdb=user.txt,passdb=password.txt-p21 IP地址"其中user.txt是指定的用户名字典,password.txt是指定的密码字典,21是FTP对应的端口号。

猜你喜欢
网络管理员端口号命令
只听主人的命令
院校网络管理员基本素质与技能探讨
在Docker容器中安装应用程序
提高图书馆网络管理员技术服务水平的途径
卷宗(2018年21期)2018-10-19 03:39:56
移防命令下达后
浅谈以java为基础的Socket通信简介及实现
青春岁月(2017年5期)2017-04-20 18:34:23
这是人民的命令
信息安全防范下高校网络管理员队伍建设研究
求知导刊(2015年20期)2015-05-30 10:33:05
Winsock编程在《计算机网络基础》教学中的应用
基于Android系统的互动展示APP的研究与设计