决胜金融安全3.0时代:新金融+新科技+新安全
上QQ阅读APP看书,第一时间看更新

3.1 风险及威胁分析

3.1.1 扫描攻击

对于位于网络中的计算机系统来说,一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,甚至可以发现系统的安全漏洞。通过端口扫描,系统用户可以了解系统目前向外界提供了哪些服务,这也为管理网络提供了一种参考手段。同时,端口扫描也是黑客对目标发动攻击的一种方式。

从技术原理上来说,端口扫描是向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入/流出IP数据包来监视本地主机的运行情况,它不仅能对接收到的数据进行分析,而且能够帮助用户发现目标主机某些内在的弱点,而不会提供进入一个系统的详细步骤。一般说来,端口扫描通常用于如下目的。

发现开放端口:发现目标系统上开放的TCP或UDP端口。

了解主机操作系统信息:端口扫描可以通过操作系统的“指纹”来推测被扫描操作系统或者应用程序的版本等信息。

了解软件或者服务版本:软件或服务版本可以通过“标志获取”或者应用程序的指纹来识别获得。

发现脆弱的软件版本:识别软件和服务的缺陷,从而有助于发起针对漏洞的攻击。

端口扫描主要有经典的扫描器(全连接)以及所谓的SYN(半连接)扫描器,此外还有间接扫描和秘密扫描等。TCP扫描方式是通过与被扫描主机建立标准的TCP连接进行的,因此这种方式最准确,很少漏报、误报,但是也容易被目标主机察觉、记录。SYN方式是通过与目标主机建立半打开连接,这样就不容易被目标主机记录,但是扫描结果会出现漏报,而且在网络状况不好的情况下这种漏报很严重。

1.TCP全连接扫描

全连接扫描是TCP端口扫描的基础,现有的全连接扫描有TCP connect扫描和TCP反向ident扫描等。

其中TCP connect扫描的实现原理为:扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连接由系统调用connect开始。如果端口开放,则连接将建立成功;否则返回-1,表示端口关闭。如果成功建立连接,则响应扫描主机的SYN/ACK连接请求,这一响应表明目标端口处于监听(打开)的状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送RST的响应。

反向ident扫描允许看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。比如,连接到HTTP端口,然后用identd程序来发现服务器是否正在以root权限运行。这种方法的明显缺点是只有在和目标端口建立了一个完整的TCP连接后,才能看到进程拥有者的名字。

2.TCP半连接(SYN)扫描

若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的指定端口建立连接时只完成了前两次握手,在第三步时扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。

SYN扫描的优点在于即使日志中对扫描行为有所记录,但是尝试进行连接的记录也要比全扫描少得多。缺点是在大部分操作系统下,发送主机需构造适用于这种扫描的IP包。通常情况下,超级用户或者授权用户需要访问专门的系统调用,才能构造SYN数据包。

3.UDP扫描

UDP扫描中不使用工具来设定特定的状态标志。如果源UDP包的响应为ICMP端口不可达消息,则说明端口已经“关闭”。UDP扫描的过程比较长,速度比较慢。

4.标志获取扫描

标志获取扫描是指连接到系统的特定端口,检查监听该端口的应用软件的标志的过程。它可以利用TCP端口连接来获得特定系统上运行的软件和程序版本信息。在实际的应对过程中,系统管理员可能会更改或者删除相关标志,从而隐藏被监听的应用程序。

5.包分片

许多端口扫描器都支持包分片功能。这个功能有助于包穿透包过滤设备并逃避入侵检测系统的监测。包分片技术将TCP或者UDP包头分成多个包,从而增加访问控制设备检测端口扫描信息的难度。当前大多数防火墙和IDS都能够在评估原始IP包前先对其进行重组,这可以阻挡包分片的企图。但一些旧的防火墙和IDS设备缺乏这种功能。

6.欺骗扫描

Nmap和其他一些端口扫描工具都有“欺骗”功能,能够在直接扫描的同时进行一个或者多个欺骗性的扫描。由于这种欺骗性通常掩盖了真实源地址,并与真实的扫描同时进行,所以目标系统追踪扫描来源的难度大大增加。

7.标识扫描

标识扫描能够用来识别与特定TCP连接绑定的用户账户,它可以通过与113号TCP端口进行通信来完成。该端口会返回该连接所有者的身份信息。这种扫描仅仅对于运行ident服务的系统有效,也可以用于识别使用特权账号(例如root)的服务。

8.FTP反弹扫描

FTP(File Transfer Protocol,文件传输协议)反弹扫描利用FTP服务器进行欺骗扫描,它利用的是“FTP协议对代理FTP连接的支持”这一特性。利用FTP服务器作为反弹“代理”,黑客能够隐藏源扫描器的原始地址。

9.源端口扫描

端口扫描工具中的源端口扫描允许扫描者设置静态的TCP或者UDP源扫描端口,以避开包过滤访问控制设备。用于扫描的源端口通常与常用服务的端口相关联(比如HTTP、DNS、SMTP、FTP等),这些端口经常处于访问控制设备的许可范围之内。

10.主机扫描

主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。主机扫描主要包括如下几类:

❍ ICMP Echo扫描;

❍ ICMP Sweep扫描;

❍ Broadcast ICMP扫描;

❍ Non-Echo ICMP扫描。

ICMP Echo和ICMP Sweep扫描

它们在判断一个网络上的主机是否开机时非常有用。ICMP Echo扫描的机制是向目标主机发送ICMP Echo Request(Type 8)数据包,然后等待回复的ICMP Echo Reply包(Type 0)。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包已被对方的设备过滤掉。该机制的优点是简单且系统支持;缺点是很容易被防火墙限制。在实际使用过程中,可以通过并行发送,同时探测多个目标主机,以提高探测效率(ICMP Sweep扫描)。

Broadcast ICMP扫描

该扫描机制将ICMP请求包的目标地址设为广播地址或网络地址,可以探测广播域或整个网络范围内的主机。该机制明显的缺点是只适合于UNIX/Linux系统,Windows操作系统会忽略这种请求包。并且这种扫描方式容易引起广播风暴,从而占用大量的网络资源。

Non-Echo ICMP扫描

该扫描机制指的是除上述3种扫描之外的一些其他的ICMP类型包,它们也可以用于探测主机或网络设备,具体如下:

❍ Stamp Request(Type 13);

❍ Reply(Type 14);

❍ Information Request(Type 15);

❍ Reply(Type 16);

❍ Address Mask Request(Type 17);

❍ Reply(Type 18)。

11.操作系统“指纹”扫描

是指根据各个操作系统在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成的识别指纹(footprint),进而识别目标主机运行的操作系统。根据采集指纹信息的方式,又可以分为被动扫描和主动扫描两种方式。

被动扫描

通过抓包程序(tcpdump、Sniffer、Wireshark等)收集数据包,再对数据包的不同特征(TCP Window Size、IP TTL、IP ToS、DF位等参数)进行分析,来识别操作系统。被动扫描基本不具备攻击特征,具有很好的隐蔽性,但其实现严格依赖于扫描主机所处的网络拓扑结构;与主动探测相比较,具有速度慢、可靠性不高等缺点。

主动扫描

采用向目标系统发送构造的特殊包并监控其应答的方式来识别操作系统的类型。主动扫描具有速度快、可靠性高等优点,但同样严重依赖于目标系统网络拓扑结构和过滤规则。

主动扫描主要包括以下几种技术。

FIN探测:发送一个FIN包给一个打开的端口,这个打开的端口一般不进行响应。

BOGUS标记探测:在SYN包的TCP头中设置一个未定义的TCP“标记”(64或128)。

TCP ISN取样:原理是在操作系统对连接请求的回应中寻找TCP连接初始化序列号的特征。

不分段位:许多操作系统开始在送出的一些包中设置IP的Don't Fragment(不分段)位。

TCP初始化窗口:检查返回包的窗口大小,比如使用Queso和Nmap保持对窗口的精确跟踪,因为窗口大小对于特定OS基本上是常数。

ACK值:在不同实现中ACK的值是不同的。如果发送了FIN/PSH/URG到一个关闭的TCP端口,大多数实现会为发送的初始序列数设置ACK,而Windows会回送序列数加1。

ICMP错误信息终结:一些操作系统跟踪限制各种错误信息的发送率。例如,Linux内核以80个/秒的速率限制目的不可达消息的生成。一种测试办法是,发送一串包到随机的高UDP端口并统计收到的不可达消息的数量。

ICMP消息引用:ICMP错误消息可以引用一部分引起错误的源消息。对于端口不可达消息,几乎所有实现只回送IP请求头外加8个字节。然而,Solaris回送的稍多,Linux回送的更多。

SYN洪水限度:如果收到过多伪造的SYN数据包,一些操作系统会停止新的连接尝试。许多操作系统只能处理8个包。