5.3 网络扫描
网络扫描的主要目的是收集目标的信息,并发现目标漏洞。网络扫描主要包括预攻击探测和漏洞扫描。
5.3.1 预攻击探测
预攻击探测的主要目的是探测目标主机是否“活着”,并且查看目标主机的一些属性,如哪些端口开放,有什么服务等。预攻击探测主要有以下方法。
1.ping扫描
ping是测试网络连接状况以及信息包发送和接收状况非常有用的工具,是网络测试最常用的命令。ping向目标主机(地址)发送一个回送请求数据包,要求目标主机收到请求后给予答复,从而判断网络的响应时间和本机是否与目标主机(地址)联通。
前面介绍过在DOS下面如何用ping命令来扫描,它使用的是网络层的ICMP协议。实际应用中常用很多类似的工具进行扫描,如图5-4所示为使用pinger工具进行扫描,图5-5所示为使用ping sweep进行扫描。这两个工具都非常专业,可以扫描一个地址段。
图5-4 pinger扫描工具
图5-5 ping sweep扫描工具
2.端口扫描(portscan)
端口是网络应用中很重要的东西,相当于“门”。端口扫描的主要目的是寻找存活主机的开放端口或服务。端口扫描的原理是尝试与目标主机建立连接,如果目标主机有回复则说明端口开放。常用的端口扫描方法如下。
(1)全TCP连接。这种方法使用三次握手与目标主机建立标准的tcp连接,如图5-6所示。但是这种方法很容易被发现并被目标主机记录。
图5-6 使用三次握手建立连接
(2)SYN扫描。扫描主机自动向目标主机的指定端口发送SYN数据段,表示发送建立连接请求。如果目标主机的回应报文SYN=1,ACK=1,则说明该端口是活动的,接着扫描主机发送回一个RST给目标主机拒绝连接,导致三次握手失败。如果目标主机回应是RST,则端口是“死的”。
(3)FIN扫描。发送一个FIN=1的报文到一个关闭的端口,该报文将丢失并返回一个RST。如果该FIN报文发送到活动窗口则报文丢失,不会有任何反应。
(4)代理扫描。即把别的计算机当中间代理,去扫描目标主机。这种扫描方法通过扫描器来自动完成。例如HTTP Proxy Scanner是一种应用程序代理扫描器,每秒可以扫描10000个IP地址。
有许多专业的端口扫描工具如NetScanTools、WinScan、SuperScan、NTOScanner、WUPS、NmapNT等。如图5-7所示为端口扫描工具SuperScan,图5-8为端口扫描工具NetScanTools,图5-9为端口扫描工具WinScan,图5-10为端口扫描工具NTOScanner。
图5-7 端口扫描工具SuperScan
图5-8 端口扫描工具NetScanTools
图5-9 端口扫描工具WinScan
图5-10 端口扫描工具NTOScanner
下面是一些常用的服务对应的端口号。也可以反过来,看到端口号找对应的服务。
●HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080。
●SOCKS代理协议服务器常用端口号:1080。
●Telnet(远程登录)协议代理服务器常用端口号:23。
●HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口)。
●HTTPS服务器,默认的端口号为443/tcp 443/udp。
●Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口)。
●FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)。
●TFTP(Trivial File Transfer Protocol),默认的端口号为69/udp。
●SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp。
●SMTP(Simple Mail Transfer Protocol,E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)。
●POP3(Post Office Protocol,E-mail),默认的端口号为110/tcp。
●WebLogic,默认的端口号为7001。
●Webshpere应用程序,默认的端口号为9080。
●Webshpere管理工具,默认的端口号为9090。
●JBOSS,默认的端口号为8080。
●TOMCAT,默认的端口号为8080。
●WIN2003远程登录,默认的端口号为3389。
●Symantec AV/Filter for MSE,默认的端口号为8081。
●Oracle数据库,默认的端口号为1521。
●ORACLE EMCTL,默认的端口号为1158。
●Oracle XDB(XML数据库),默认的端口号为8080。
●Oracle XDB FTP服务,默认的端口号为2100。
●MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp。
●MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp。
●QQ,默认的端口号为1080/udp。
3.操作系统识别(OS fingerprint)
识别目标主机的操作系统,首先可以帮助攻击者进一步探测操作系统级别的漏洞,从而可以从这一级别进行渗透测试。其次,操作系统和运行在本系统之上的应用一般是成套出现的。操作系统的版本也有助于准确定位服务程序或者软件的版本,比如Windows server 2003搭载的IIS为6.0,Windows server 2008 R2搭载的是IIS7.5。操作系统指纹识别技术多种多样,这里简要介绍几种常用技术。
(1)抓取计算机的标志(Banner),通过它来查看操作系统型号。Banner抓取是最基础、最简单的指纹识别技术,而且在不需要其他专门工具的情况下就可以做。操作简单,通常获取的信息也相对准确。严格地讲,Banner抓取是应用程序指纹识别而不是操作系统指纹识别。Banner信息是由应用程序自动返回的,比如apache、exchange。而且很多时候并不会直接返回操作系统信息,幸运的话,可能会看到服务程序本身的版本信息,并以此进行推断。凡事皆有利弊,越是简单的方法越容易被防御,这种方法奏效的成功率也越来越低了。先来看一个Banner抓取的例子。
在图5-11中,连接telnet 80端口,在返回的服务器banner信息中,看到“Server: Microsoft-HTTPAPI/2.0”的字样。在IIS中使用ISAPI扩展后,经常会看到这样的Banner。
图5-11 通过Banner查看操作系统类型
表5-1为Banner服务标志所对应的操作系统类型。
表5-1 Banner对应的操作系统类型
(2)通过工具来判断操作系统类型。通过工具来判断操作系统类型无疑是最专业的方法了,如图5-12所示为使用Winfingerprint专业工具来判断对方操作系统的类型。
图5-12 Winfingerprint判断操作系统类型
4.资源和用户信息扫描
除前面介绍的ping扫描、端口扫描和操作类型扫描外,还有一类扫描和探测也非常重要,这就是资源扫描和用户扫描。资源扫描网络资源和共享资源,如目标网络计算机名、域名和共享文件等;而用户扫描则扫描目标系统上合法用户的用户名和用户组名。
这些扫描都是攻击目标系统的很有价值的信息,而Windows系统在这些方面存在着严重的漏洞,很容易让入侵者获取有用信息,如共享资源、Netbios名和用户组等。下面介绍一些常用的扫描方法。
(1)使用net view。在DOS命令行中输入“net view/domain”命令,可以获取网络上可用的域,如图5-13所示。
图5-13 获取网络上可用的域
在命令行中输入“net view/domain:domain_name”命令,可以获取某一域中的计算机列表,其中domain_name为域名,如图5-14所示。
图5-14 获取某一域中的计算机列表
在命令行中输入“net view\\computer_name”命令,可以获取网络中某一计算机的共享资源列表,其中computer_name为计算机名,如图5-15所示。
图5-15 获取计算机的共享信息
(2)使用netviewx。使用netviewx NCS列出domain域中的服务器列表,如图5-16所示。
图5-16 列出domain域中的服务器列表
使用netviewx NCS nt printq-server-x用于列出域NCS中所有运行NT和共享打印机的服务器,如图5-17所示。
图5-17 列出域中所有运行NT和共享打印机的服务器
(3)使用nbtstat。nbtstat(NetBIOS over TCP/IP)是Windows操作系统内置的命令行工具,利用它可以查询涉及NetBIOS信息的网络机器。另外,它还可以用来消除NetBIOS高速缓存器和预加载LMHOSTS文件等。这个命令在进行安全检查时非常有用。
下面是利用nbtstat查看目标系统NetBIOS列表,如图5-18所示。
图5-18 利用nbtstat查看目标系统NetBIOS列表
5.3.2 漏洞扫描
1.网络漏洞扫描的三个阶段
(1)寻找目标主机或网络。
(2)进一步搜集目标信息,包括OS类型、运行的服务以及服务软件的版本等。
(3)判断或进一步检测系统是否存在安全漏洞。
2.漏洞扫描的两种策略
(1)被动式策略。被动式策略就是基于主机,对系统中不合适的设置、脆弱的口令以及其他与安全规则抵触的对象进行检查,又称为系统安全扫描。
(2)主动式策略。主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞,又称为网络安全扫描。
3.漏洞扫描技术的原理
漏洞扫描技术是建立在端口扫描技术的基础之上的,从对黑客的攻击行为的分析和收集的漏洞来看,绝大多数都是针对某一个特定的端口的,所以漏洞扫描技术以与端口扫描技术同样的思路来开展扫描。漏洞扫描技术的原理是检查目标主机是否存在漏洞,在端口扫描后得知目标主机开启的端口以及端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否存在满足匹配条件的漏洞,通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,若模拟攻击成功,则表明目标主机系统存在安全漏洞。
(1)漏洞库的特征匹配方法。基于网络系统漏洞库的漏洞扫描的关键部分就是它所使用的漏洞库。通过采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统的安全配置的实际经验,可以形成一套标准的网络系统漏洞库,然后在此基础上构成相应的匹配规则,由扫描程序自动进行漏洞扫描工作。若没有被匹配的规则,系统的网络连接是禁止的。
工作原理:扫描客户端提供良好的界面,对扫描目标的范围、方法等进行设置,向扫描引擎(服务器端)发出扫描命令。服务器根据客户端的选项进行安全检查,并调用规则匹配库检测主机,在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的系统漏洞库进行匹配,如果满足条件,则视为存在漏洞。服务器的检测完成后将结果返回到客户端,并生成直观的报告。在服务器端的规则匹配库是许多共享程序的集合,存储各种扫描攻击方法。漏洞数据从扫描代码中分离,使用户能自行对扫描引擎进行更新。因此,漏洞库信息的完整性和有效性决定了漏洞扫描的性能,漏洞库的修订和更新的性能也会影响漏洞扫描系统运行的时间。
(2)功能模块(插件)技术。插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,扫描出更多的漏洞。插件编写规范化后,用户自己都可以编写插件来扩充漏洞扫描软件的功能,这种技术使漏洞扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的工作,使漏洞扫描软件具有强的扩展性。
工作原理:它的前端工作原理和基于网络系统漏洞库的漏洞扫描工作原理基本相同,不同的就是将系统漏洞库和规则匹配库换成了扫描插件库和脆弱性数据库。扫描插件库包含各种脆弱性扫描插件,每个插件对一个或多个脆弱点进行检查和测试。插件之间相对独立,这部分应该随着新脆弱性的发现而及时更新。脆弱性数据库收集了国际上公开发布的脆弱性数据,用于检查检测的完备性。它与扫描插件库之间是一对一或一对多的关系,即一个插件可以进行一个或多个脆弱点的检测。因此,扫描插件库和脆弱性数据库可以及时更新,具有很强的扩展性。
4.常用的漏洞扫描工具
常用的网络扫描工具有很多,如ISS Internet Scanner、Nessus、XScan等。
个人计算机系统漏洞扫描比较常用的是360安全卫士,如图5-19所示,打开360安全卫士,选择“系统修复”标签,开始扫描即可。扫描结果如图5-20所示,可以看到本机有65个安全漏洞需要修复。如果要修复,选择“一键修复”就可以自动修复了。
图5-19 使用360安全卫士进行系统扫描
图5-20 使用360安全卫士检测出的漏洞
在网络综合漏洞扫描方面应用比较广泛的是X-Scan扫描软件,如图5-21所示。
在网站扫描方面,目前360出品的网站扫描产品比较好用,直接在网站http://webscan. 360.cn/输入网站的URL就可以扫描了,如图5-22所示。
图5-21 X-Scan扫描工具
图5-22 360网站扫描