Linux的企业端口扫描及实战

安全 网站安全
端口与漏洞发现及扫描也是对企业进行风险评估和管理的必要手段。俗话说得好:“千里之堤,毁于蚁穴。”一个小小的漏洞造成一旦被攻击者发现,最终后果有可能是整个网络的瘫痪。而怎么来发现企业网络的安全漏洞呢?需要掌握和采用一些什么关键技术?

端口与漏洞发现及扫描也是对企业进行风险评估和管理的必要手段。俗话说得好:“千里之堤,毁于蚁穴。”一个小小的漏洞造成一旦被攻击者发现,最终后果有可能是整个网络的瘫痪。而怎么来发现企业网络的安全漏洞呢?需要掌握和采用一些什么关键技术?有什么比较流行和高效的工具可以用来辅助系统管理员来进行漏洞的扫描和发现呢?

企业端口扫描策略

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名、主机地址是否是欺骗地址、以及其它一些东西。

在使用之前,我们需要下载该软件的源码包进行安装。下载网址为:http://linux.softpedia.com/get/System/Networking/Nmap-184.shtml。下载完成后,以作者下载到的版本为例: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

#p#

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),我们于是就锁定了这台主机进行后续的扫描。

(3)扫描实施第三步:主机操作系统识别

通常一个入侵者可能对某个操作系统的漏洞很熟悉,能很轻易地进入此操作系统的机器。一个常见的选项是TCP/IP上的指纹,带有"-O"选项决定远程操作系统的类型。这可以和一个端口扫描结合使用,但不能和ping扫描结合使用。nmap通过向主机发送不同类型的探测信号,缩小查找的操作系统的范围。如下面的扫描结果所示:

[root@localhost ~]# nmap -O 10.1.4.1

Interesting ports on 10.1.4.1:

。。。

MAC Address: 00:0B:CD:B9:EE:A8 (Compaq (HP))

Device type: general purpose

Running: Microsoft Windows 95/98/ME|NT/2K/XP

OS details: Microsoft Windows Millennium Edition (Me), Windows 2000 Professional or Advanced Server, or Windows XP

Nmap finished: 1 IP address (1 host up) scanned in 68.749 seconds

通过上述扫描结果可以看到,10.1.4.1这台机器运行的是Windows系列的操作系统,并且提供了一些比较常用的网络服务。

(4)扫描实施第四步:扫描总结归纳

通过上述3步的扫描实施,可以逐步总结得出了如下几点结论和经验:

端口扫描的步骤是先发现活动主机,然后发现活动主机的活动端口,从而确定需要重点关注或者需要供给的主机,一般这些主机是服务端口开得多的主机;再然后对重点关注的主机实行操作系统扫描,从而确定操作系统类型,以便从操作系统层面来寻找突破口;一般情况下,如果是Windows操作系统的话,那么就有比较大的攻击或者是安全维护的空间。

除了上述几个常用的扫描选项外,在扫描过程中还需要综合采用其他-T之类的选项,以保证扫描不被对方发现,否则对于具有丰富管理经验的管理员来说,很容易发现这种扫描行为,引起反追踪甚至是报复性的攻击等。当然,对于内网的网管性的维护工作来说,就没有这个风险。

另外,通常nmap在运行时,能够很好地根据网络特点进行调整。扫描时,nmap会尽量减少被目标检测到的机会,同时尽可能加快扫描速度。然而,nmap默认的适时策略有时候不太适合用户的目标。使用下面这些选项,可以有效地控制nmap的扫描时间。

1)-T

设置nmap的扫描策略,主要有如下几种:

Paranoid:为了避开IDS的检测使扫描速度极慢,nmap串行所有的扫描,每隔至少5分钟发送一个包;

Sneaky:和Paranoid差不多,只是数据包的发送间隔是15秒;

Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4 秒种的间隔;

Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;

Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;

Insane:只适合快速的网络或者用户不在意丢失某些信息,每台主机的超时限制是75秒,对每次探测只等待0.3秒钟。

用户也可以使用数字来代替上述这些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。并且,上述这些模式不能和下面的选项组合使用。

2)--host_timeout

设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。

3)--max_rtt_timeout

设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。

4)--min_rtt_timeout

当目标主机的响应很快时,nmap就缩短每次探测的超时时间。这样会提高扫描的速度,但是可能丢失某些响应时间比较长的包。使用这个选项,可以让nmap对每次探测至少等待用户指定的时间,以毫秒为单位。

5)--initial_rtt_timeout

设置初始探测的超时值。一般这个选项只在使用-P0选项扫描有防火墙保护的主机才有用。默认值是6000毫秒。

6)--max_parallelism

设置最大的并行扫描数量。--max_parallelism 1表示同时只扫描一个端口。这个选项对其它的并行扫描也有效,例如ping sweep, RPC scan。

7)--scan_delay

设置在两次探测之间,nmap必须等待的时间。这个选项主要用于降低网络的负载。

责任编辑:蓝雨泪 来源: TechTarget中国
相关推荐

2013-03-22 10:07:38

2009-09-28 11:05:29

Ruby端口扫描

2022-06-15 13:40:38

端口扫描工具开源工具

2020-12-14 10:32:28

Web安全工具多线程

2010-09-17 09:40:16

2021-05-31 08:54:30

RustScanRust端口扫描器

2015-12-14 16:03:45

LinuxUnix端口扫描

2009-11-18 09:59:41

2009-01-15 09:52:00

2023-10-16 18:51:04

Masscan网络安全

2010-09-13 15:55:43

制作端口扫描器

2010-12-22 21:57:00

Angry IP Sc

2010-09-15 15:12:49

2014-03-18 15:42:46

2023-04-04 12:24:10

2023-01-13 23:21:29

netcat命令Linux

2012-08-09 09:52:50

LIDSLinux入侵检测

2018-11-12 08:04:15

2023-09-06 07:23:32

2021-01-10 08:14:01

Go语言TCP扫描器
点赞
收藏

51CTO技术栈公众号