渗透性测试技术及方法研究
2015-06-28田立军
田立军
(西安铁路局 信息化处,西安 710054)
渗透性测试技术及方法研究
田立军
(西安铁路局 信息化处,西安 710054)
随着企业对信息系统安全性需求的增强,对渗透测试方法和技术的研究也越来越重要。本文对安全渗透测试工程师经常采用的方法和技术进行了综述类研究,总结了若干方法和技术及渗透测试流程,在此基础上结合等级保护测评基本要求中对于渗透测试的要求提出了渗透测试方法。
渗透测试;测试技术;渗透测试流程;等级保护
渗透测试通常指模拟黑客采用的漏洞发掘技术及攻击方法,测试工程师对被测试单位的网络、主机、应用及数据是否存在安全问题进行检测的过程,这种活动主要是发现系统的脆弱性,评估信息系统是否安全,从攻击者角度发现分析系统的缺陷及漏洞,并利用这些漏洞实现主动攻击。渗透测试是一个逐渐深入信息系统内部的过程,有可能影响业务信息系统的正常运行,所以一般选择对业务最少影响的通用方法测试。
1 渗透测试概述
1.1 渗透测试方法
(1)信息收集。通常被称作“踩点”,是进行攻击入侵的首要任务。收集信息系统的网络信息,主要是为了制定有目的性和针对性的渗透测试计划和方案,来减小被发现的概率、提高测试的成功率、减小漏报率。“踩点”的主要内容有扫描主机域名和IP地址、判断操作系统类型、发现系统开放的端口及该端口对应的应用程序、扫描系统账号列表、收集系统配置信息等。信息收集常用的工具有BT5、nmap、X-Scan、Appscan等。
(2)端口扫描。端口扫描是通过扫描目标地址的开放端口,发现其所开放的所有服务来确定系统的基本特征,这是进行渗透测试的基础步骤,安全测试者通过扫描结果并结合经验发现系统可被利用的安全缺陷,为进一步的渗透提供依据。
(3)远程溢出。远程溢出攻击是通过远程终端对信息系统实现溢出攻击的方式,它由于较易掌握和实施,导致成为出现频率最高、威胁最严重的渗透测试方式,通常只要攻击者具备基础网络常识就能通过利用现成的远程溢出攻击工具实现这种攻击。
(4)本地溢出。本地溢出是指本地计算机因程序数据溢出而关闭或无法执行。本地溢出攻击是指在本地执行一段特定的代码指令导致本地计算机程序溢出从而获得管理员权限的方法,使用该攻击方法的前提是需要经过口令猜测或暴力破解获得普通用户的密码口令。由于本地计算机设置了弱口令的不当密码策略导致了本地溢出,在使用普通用户登录到系统后对未部署主动安全防御的系统实施本地溢出攻击,达到获得完全控制管理权限的目的。
(5)网络嗅探。嗅探是进行信息收集的一种方法,主要是用来捕捉网络中像明文密码这样的传输数据的方法,同时也能够抓取特定计算机之间的完整会话信息。要强调的是为了达到捕获网络中所有传输数据的目的,通常要求计算机的网卡模式在嗅探时设置为混合模式,嗅探器或计算机需要直连到网络来获取大量数据信息,所以嗅探常被用在内部测试。
(6)SQL注入攻击。SQL注入是指在网站中的Web表单、字符查询输入框中,通过提交某些特殊SQL语句达到篡改网站后端采用数据库中内容的方式。SQL注入攻击是黑客攻击数据库的常用技术手段之一,由于网站没有详细的过滤用户输入的数据导致存在SQL注入漏洞,这也是非法数据侵入数据库系统的主要原因。
(7)跨站脚本攻击。跨站脚本攻击是指攻击者将具有恶意目的的数据潜入到远程用户信任的WEB页面的HTML代码中,当该页面被浏览器下载运行时嵌入的脚本将被执行,用户页面被跳转到攻击者精心编织的其他页面,用户毫无顾及的填写各种敏感信息,殊不知已被攻击者盗取或被站点挂马控制。
(8)暴力破解。暴力攻击的主要目的是通过尝试各种密码字典和穷举法查出合法的用户名和口令,所采用的字典比较庞大,比如最常使用的彩虹表有100 G以上,这种字典由大量的字母、数字、符号等组合而成的,虽比较完善但这种破解用户口令的方法是很耗时的,并且可能会造成系统过载而无法响应合法的请求。另外若系统开启了帐户锁定策略,这种口令尝试攻击会关闭合法登录帐户。
(9)漏洞扫描。漏洞扫描是针对目标系统的穷举检查发现系统是否存在漏洞的一种方法。扫描的目标范围包括网络设备、主机操作系统、数据库管理系统及应用系统,它通常是使用自动化工具执行的,如绿盟漏洞扫描设备,这些工具能够测试目标范围内已知漏洞方面的大量潜在弱点,并出具漏洞扫描报告,罗列系统潜在的安全问题并提供整改方案。
(10)代码审查。代码审查主要是通过手工或审查工具对被测业务信息系统进行安全代码审查,发现可能会导致安全问题的不安全编码规范、编码技术和代码漏洞。代码审查测试工作包括:审查代码中的XSS脚本漏洞;审查代码中的SQL注入漏洞;审查代码中的缓冲区溢出漏洞;审查不规范的编码技术;另外也包括发现软件代码编写错误及其他潜在漏洞的审查。
1.2 渗透测试技术
渗透测试按照渗透的对象不同可分为操作系统渗透、数据库系统渗透、应用系统渗透和网络设备渗透。对于不同的渗透目标或对象,采用不同的渗透测试技术,主要分为内网测试技术和外网测试技术。
1.2.1 内网测试
内网测试通常指渗透测试执行者从信息系统内部网络绕过防火墙直接进行的测试,这种测试能够模拟内部员工的违规操作。进行这种测试主要可能采用的渗透方法包括:缓冲区溢出攻击、口令破解、应用程序测试、漏洞扫描、端口扫描等,其中对C/S模式的应用程序进行测试之前需准备好有关客户端软件。内网测试也称为白盒测试,测试者可以通过与被测单位的程序员、维护人员、管理人员面对面交流取得各种资料,包括网络拓扑、操作系统和数据库类型、员工资料甚至网站或其他程序的代码片段。
1.2.2 外网测试
外网测试指的是在公司网络的外部进行的测试,测试人员在对内部网络状态完全不知道的情况下,模拟外部攻击者的一种行为[1]。其中包括防火墙规则的规避、试探,远程攻击网络设备,对口令管理的安全性测试,其它开放应用服务及相关Web的安全性测试等。外网测试通常也被称为黑盒测试,所以,外网测试最初获取的信息大多通过搜索引擎、单位论坛或单位公开对外的服务器。
1.2.3 渗透测试实例
下面以主机渗透测试为例,阐述针对主机身份鉴别如何开展渗透测试。
等级保护《基本要求》中对第3、第4级系统要求如下:
(1)针对服务器的操作系统进行渗透性测试,可以通过应用口令破解等相关工具,针对具体服务器的操作系统强度检测其相关的用户口令,查看是否能够有针对性地对用户口令进行破解,其用户口令被破解后是否能够登录进入服务器的操作系统[3]。
(2)针对服务器的操作系统进行渗透性测试,主要是指检查是否真正存在着一种能够绕过用户认证方式而进行操作系统登录的方法[3]。
针对要求点(1)指出的通过破解服务器用户口令的工具对系统进行较高强度检测,主要采用的工具有绿盟漏洞扫描设备中的口令破解模块以及BT5工具中在线密码破解工具hydra的图形化界面hydragtk,这里用到了用户字典和密码字典,口令是否破解成功与字典是否强大有直接关联[5]。
渗透测试实例如下:
(1)Windows服务器口令破解实例
对于Windows服务器操作系统主要版本有Winnt 4.0 Server、Win2000/Advanced Server、Win2003/ Advanced Server、Windows Server 2008。首先采用Windows(SMB)常见用户名口令组合字典,字典中包含Administrator:123/1234/123123/111111等的弱口令账户,新建任务输入要扫描的IP地址,选择字典模板进行弱口令账户的扫描,扫描结果,该服务器操作系统类型为Windows Server 2008 R2 Enterprise 7601 Service Pack 1,运行的应用程序MySQL存在弱口令账户root/root。
采用hydra-gtk工具对Windows XP 系统进行简单的实验,实验截图如图1~图3所示。
图1 渗透第一步
图2 填写渗透测试目标IP
图3 渗透测试结果
(2)绕过操作系统认证方式进入系统
采用U盘启动Win PE系统,开机时按F12进入Win PE系统USB模式,打开程序,选择密码修改或密码恢复,对密码进行重置,修改成功后重启电脑,输入新密码即可登录系统。
当Windows系统用户列表中有除Administrator管理员用户(用户密码为空)之外的普通用户如aa,可以进入带命令行模式的安全模式下通过net user aa 1234/add来重新设置aa的密码,也可以通过net localgroup administrators aa/add来提升其权限为管理员,重启电脑后即可采用aa登录系统。
使用Windows安装光盘,选择用“恢复控制台”修复Windows XP 安装,跳过管理员密码输入步骤,随后进入System32文件夹:cd system32,并重命名该目录下的文件sfcfiles.dll :ren sfcfiles.dll sfcfiles. lld。接着从光盘中I386目录下复制文件pinball.ex_到system32文件夹中,并命名为sfcfiles.dll:copy d:i386pinball.ex_ sfcfiles.dll.至此前期工作全部做完,把光盘拿出,输入exit命令退回控制台,重启电脑。
利用发现的操作系统漏洞对操作系统进行渗透测试,获取操作系统权限。主要可利用系统缓冲区的溢出漏洞、远程代码执行漏洞、系统拒绝服务的漏洞、内存破坏漏洞等。下面举例采用Windows Server 操作系统的服务RPC请求其系统缓冲区溢出的一个漏洞(ms08-067),即针对Windows操作系统的Server服务,在进行处理特制的一种RPC请求时,存在着这种关于缓冲区溢出的系统漏洞[4],使用BT5中的metasploit工具攻陷XP系统获取系统权限,流程如图4所示。
图4 获取系统权限流程
至此攻击成功,获取了服务器操作系统的shell,也即获取了系统的控制权限,进行新建管理员用户及口令即可成功绕过认证方式登录系统。
2 渗透测试流程
渗透测试流程如图5所示。
2.1 准备阶段
图5 渗透测试流程图
项目经理根据从客户收集到的文档资料及调查数据,编制《信息系统渗透测试方案》,主要目的是确定具体日期及双方配合人员名单,并要求被测评单位签订《信息系统渗透测试用户授权单》。
2.2 预攻击阶段
主要确定进一步攻击策略,目的为收集信息,包括获得域名及IP分布,获得网络拓扑和操作系统,获得服务器端口和服务,获得应用系统情况,跟踪新漏洞发布,主要包括以下几个方面。
(1)获取基本网络信息
a.使用Ping命令得到网络IP和ttl等信息;
b.使用Tcptraceroute和traceroute查看路由结果;
c.使用Curl域名方式获取目标Web基本信息;
d.使用Nmap命令进行端口扫描并判断操作系统类型;
e.谷歌、百度搜索引擎获取目标信息;
f.使用hping3工具进行防火墙规则探测。
(2)漏洞扫描
a.采用Xscan、nessus、绿盟漏洞扫描等商用或免费的扫描工具进行漏扫扫描;
b.采用绿盟漏洞扫描对网络设备、Web应用程序、数据库进行扫描分析。
(3)对Web应用进行分析
a.采用Webscarab工具对Web进行分析;
b.用Ethereal、wireshark抓包协助分析;
教师在智慧职教云上安排了课后拓展阶段,提出思考问题,进行头脑风暴,拓展知识视野,进一步提升学生专业技能学习的广度和深度。学生利用课余时间,通过移动终端和PC终端访问智慧职教云平台,学习任课教师构建的一体化教学资源。这样既培养学生进行持续学习,提升学生自我学习能力,又对已学知识进行检测。
c.用Webscan、appscan进行SQL注入和XSS漏洞初步分析。
分析应用时为防止直接绕过系统修改数据库文件需检查应用系统架构;为防止非法绕过身份认证需检查身份认证模块;为防止用户获得系统权限需检查数据库接口模块;为防止用户获取系统文件需检查文件接口模块。
2.3 攻击阶段
攻击获得系统的权限。主要有获得远程权限进入系统,提升本地权限,进一步扩展权限,进行实质性操作。攻击主要针对通用设备、数据库、操作系统和应用展开。
(1)Web脚本攻击:SQL注入攻击、跨站脚本攻击、文件上传攻击、cookie欺骗等。
(2)木马攻击:木马伪装、木马免杀、网页木马伪装、网页木马免杀。
(3)缓冲区溢出:系统服务缓冲区溢出等。
(5)网络设备渗透:防火墙攻击、路由器攻击等。
(6)账户口令攻击:内存截获账户数据、口令暴力破解、克隆账户等。
(7)管理缺陷利用:远程终端入侵通道、FTP弱口令破解与入侵利用等。
(8)嗅探欺骗技术:“广播型”网络环境的嗅探、ARP欺骗、DNS欺骗劫持等。
2.4 后攻击阶段
消除痕迹并维持一段长期的权限。主要包括删除渗透日志,修补漏洞,植入后门,进一步渗透,进入潜伏状态。
(1)键盘记录与口令嗅探:使用木马植入、键盘记录、嗅探等相关功能简单的入侵软件,但需要不被杀毒软件和防火墙发觉,所以通常需要进行部分修改完善或完全自行开发。
(2)口令破解:借助如Cain、L0phtCrack等破解用户操作系统口令的相关软件进行日志清除,为避免入侵痕迹被系统管理员发现,通常删除系统或应用日志需要技巧。
2.5 渗透测试报告编写阶段
项目组和客户沟通核对测试结果,编制渗透测试报告,在必要时可召开报告评审会,如果客户要求复测,则要被测评单位在整改完毕后提交信息系统整改报告,开展复测工作。复测结束后,测评方出具《信息系统渗透测试复测报告》。
3 结束语
社会网络化不断发展和各类信息系统在商业、政府、军事领域的广泛使用,系统的安全问题也日益被重视。为了能够有效地检测系统的安全性,提升其防御能力,降低系统被攻击的风险,渗透测试作为一种能全面检测系统可能存在的安全漏洞的手段被广泛使用,由于需要测试的对象比较复杂,所以渗透测试的技术和方法多种多样。本文主要对渗透测试的技术、方法和测试流程进行了探讨和总结,并结合等级保护基本要求对主机安全身份鉴别测试项的渗透要求进行了测试方法的介绍及测试实验,为后续的网络安全、应用安全等渗透提供借鉴的思路。
[1]王晓聪,张 冉. 渗透测试技术浅析[J]. 计算机科学,2012(6).
[2]唐秀存,杜德慧. 渗透测试技术与模型研究[J]. 计算机与信息技术,2007(5).
[3] 中华人民共和国国家质量监督检验检疫总局,中国国家标准化管理委员会. GB/T 22239-2008,信息安全技术—信息系统安全等级保护基本要求[S].北京:中国标准出版社, 2008.
[4] David Kennedy,Jim O'Gorman,Devon Kearns,Mati Aharoni. Metasploit渗透测试指南[M].北京:电子工业出版社,2013.
[5]卞峥嵘.back track5从入门到精通[M].北京:国防工业出版社,2012.
责任编辑 方 圆
Techniques and methods for penetration testing
TIAN Lijun
( Department of Information Technology, Xi’an Railway Administration, Xi’an 710054, China )
With the increased demand of information system security for enterprise, the research of penetration testing methods and techniques became more and more important. This paper mainly researched on the methods and technologies which were often used by penetration testing engineer, and summarized these methods, skills and penetration testing process. Based on these researches and basic requirements of classified protection, the paper
proposed the penetration testing methods.
penetration testing; testing techniques; penetration testing process; level protection
U29-39
A
1005-8451(2015)02-0008-05
2014-10-08
田立军,高级工程师。