一、漏洞及漏洞发掘方法
漏洞,是指在硬件、软件、协议实现或系统安全策略上存在缺陷,攻击者能够在未授权的情况下对系统进行访问或破坏。它会成为入侵者侵入系统和植入恶意软件的入口,影响系统用户的切身利益。漏洞与目标系统的操作系统版本、软件版本以及服务设置密切相关。研究漏洞必须要了解当前计算机系统及其安全问题的最新发展动态。常见的漏洞包括缓冲区溢出漏洞、跨站脚本漏洞(XSS)、SQL注入漏洞、数据库漏洞以及WEB应用漏洞等。
常见的漏洞发掘方法分为以下几种。
· 黑盒攻击(Fuzzing):即通过注入数据进行自动化测试。
· 获取攻击对象的源代码进行审计:网络上有很多源代码审计工具可供使用,如Fortify。
· 反汇编审计:如果无法获取到源代码,可以基于汇编码进行反汇编审计。IDA是一款常用的反汇编软件。
· 动态跟踪分析:通过记录程序在不同条件下执行操作(如文件操作),分析这些操作序列是否存在问题。
目前,针对常用的漏洞发掘方法已经开发出了很多漏洞扫描工具。漏洞扫描工具是一种能在计算机、信息系统、网络及应用软件中查找安全弱点的程序。通过对目标系统进行探测,向目标系统发送数据,并将反馈结果与漏洞特征库进行匹配,分析出目标系统上存在的安全漏洞。比较常用的漏洞扫描工具有Metasploit、Nmap、NeXpose、Nessus、Xscan等。
二、Metasploit Framework工具简介
Metasploit Framework是一个强大的开源平台,为渗透测试、shellcode 编写和漏洞研究提供了一个可靠环境。它集成了各种常见的溢出漏洞和shellcode ,并且不断更新。当前版本收集了上千个实用的溢出攻击程序及一些辅助工具,操作简单,易用性好。当然,它不只是一个简单的收集工具,还提供了所有的类和方法,以便开发人员使用这些代码方便快速的进行二次开发。漏洞扫描只是Metasploit Framewotk众多功能中的一种,本文只介绍它的漏洞扫描功能。
Metasploit Framework的总体架构如图1所示,它包含Exploit、Auxiliary、Payload等多个模块:
· Exploit是攻击模块,基本上目前所有的操作系统在Metasploit Framework上均有对应的攻击模块;
· Auxiliary是辅助模块,用途非常广泛,它可以作为扫描器、拒绝服务攻击工具、Fuzz测试器,以及其他类型的工具;
· 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扫描出的数量有明显的差异。通过对不同工具的扫描结果进行对比分析,对了解扫描工具本身,和更精确地确定目标系统存在的漏洞都是非常有帮助的。