俗话说得好:“千里之堤,毁于蚁穴。”一个小小的漏洞造成一旦被攻击者发现,最终后果有可能是整个网络的瘫痪。而怎么来发现企业网络的安全漏洞呢?需要掌握和采用一些什么关键技术?有什么比较流行和高效的工具可以用来辅助系统管理员来进行漏洞的扫描和发现呢?
企业端口扫描策略
1、端口扫描的目的
对于位于网络中的计算机系统来说,一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息从而发现系统的安全漏洞。通过其可以使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种参考的手段。
从技术原理上来说,端口扫描向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入流出IP数据包来监视本地主机的运行情况,不仅能对接收到的数据进行分析,而且能够帮助用户发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。一般说来,端口扫描的目的通常是如下的一项或者多项:
1)发现开放端口:发现目标系统上开放的TCP或UDP端口;
2)了解主机操作系统信息:端口扫描可以通过操作系统的“指纹”来推测被扫描操作系统或者应用程序的版本等信息;
3)了解软件或者服务版本:软件或服务版本可以通过“标志获取”或者应用程序的指纹来识别获得;
4)发现脆弱的软件版本:识别软件和服务的缺陷,从而有助于发起针对漏洞的攻击。
端口扫描主要有经典的扫描器(全连接)以及所谓的SYN(半连接)扫描器。此外还有间接扫描和秘密扫描等。TCP扫描方式是通过与被扫描主机建立标准的TCP连接,因此这种方式最准确,很少漏报、误报,但是容易被目标主机察觉、记录。SYN方式是通过与目标主机建立半打开连接,这样就不容易被目标主机记录,但是扫描结果会出现漏报,在网络状况不好的情况下这种漏报是严重的。
2、快速安装nmap进行企业端口扫描
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
为了提高nmap在non-root状态下的性能,软件的设计者付出了很大的努力。很不幸,一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。
● open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接;
● filtered状态表示防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止 nmap探测其是否打开。
● unfiltered表示这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
在使用之前,我们需要下载该软件的源码包进行安装。下载完成后,以作者下载到的版本为例:nmap-5.00.tgz,用户执行如下安装命令即可:
(1)解压缩软件包
tar –xzvf nmap-5.00.tgz
(2)切换到安装目录
cd nmap-5.00
(3)使用configure命令生成make文件
./configure
(4)编译源代码
make
(5)安装相关模块
make install
3、四步骤使用nmap确定企业网络开放端口
(1)扫描实施第一步:发现活动主机
使用nmap扫描整个网络寻找目标,已确定目标机是否处于连通状态。通过使用“-sP”命令,进行ping扫描。缺省情况下,nmap给每个扫描到的主机发送一个ICMP echo和一个TCP ACK,主机对任何一种的响应都会被nmap得到,扫描速度非常快,在很短的时间内可以扫描一个很大的网络。该命令使用如下所示:
[root@localhost ~]# nmap -sP 10.1.4.0/24
Nmap finished: 256 IP addresses (125 hosts up) scanned in 7.852 seconds
通过该扫描,可以发现该公司网络中有125台主机是活跃的,也就是说有机可趁,下一步就是要进行更详细的扫描,来扫描这些主机到底有些什么活动端口。
(2)扫描实施第二步:扫描端口扫描
通常情况下,当nmap的使用者确定了网络上运行的主机处于连通状态,下一步的工作就是进行端口扫描,端口扫描使用-sT参数。如下面结果如示:
[root@localhost ~]# nmap -v -sT 10.1.4.0/24
Host 10.1.4.11 appears to be up ... good.
Interesting ports on 10.1.4.11:
Not shown: 1673 closed ports
PORT STATE SERVICE
80/tcp open http
MAC Address: 00:1E:65:F0:78:CA (Unknown)
可以清楚地看到,端口扫描采用多种方式对网络中主机的TCP活动端口进行了全面的扫描,由于扫描的主机数太多(125台),上面仅仅给出了2台主机的TCP端口情况,也就是主机10.1.4.1和10.1.4.11,并且,主机10.1.4.1打开的端口非常多,网络服务也相对比较丰富,并且从IP地址的构成来看,该主机极有可能是网关(一般网关的IP地址设定为X.X.X.1),我们于是就锁定了这台主机进行后续的扫描。
最新内容请见作者的GitHub页:http://qaseven.github.io/