赵 兆
(江苏省电子信息产品质量监督检验研究院(江苏省信息安全测评中心),江苏 无锡 214073)
随着网络新技术的飞速发展和各类信息系统的广泛应用,信息安全已成为国家安全重要组成部分,信息安全形势十分严峻,国内外信息安全事件频繁发生,如:CSDN、天涯社区等数据库泄露,造成数百万条个人信息泄露。在《信息系统安全等级保护测评要求》中规定,对于三级以上的信息系统应进行渗透测试,通过渗透测试,可以验证信息系统是否存在明显漏洞,是否达到等级保护要求,有效地督促相关单位进行整改。
因渗透测试是扮演恶意攻击者,攻击系统的安全性,本文主要阐述如何采用有效的方法保证测试的实施,减少对业务系统产业的影响[1]。
渗透测试主要依据安全专家已经掌握的安全漏洞,模拟黑客的攻击方法对系统进行非破坏性的攻击性测试。渗透测试可以提供安全防御的有价值的信息。此外有些单位需要提供有说服力的论据说明不充分的安全可能导致重大损失,执行情况良好的渗透测试就可以证明。
人工测试利用漏洞扫描器和富有安全经验的安全工程师的人作经验对网络中的核心服务器及重要的网络设备,包括防火墙、交换机、服务器等进行非破坏性质的模拟黑客攻击,目的是入侵系统并获取密感信息并将入侵的过程和细节产生报告给用户[2]。
人工测试与工具扫描可以很好地互相补充。工具扫描有很好的效率,但是存在一定的误报率,不能发现复杂性、高层次的安全问题;人工测试需要投入的人力资源较大,对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业机能),但是非常准确,能发现逻辑性更强、更深层次的漏洞[3]。
为保证渗透测试流程可控制的、非破坏性质的进行,应严格依照下图执行,并在执行过程中把握好每一个步骤的信息输入/输出,控制好风险(见图1)。
渗透测试包含以下方法但不局限于以下方法:
(1)信息收集:信息收集是渗透攻击的前提,通过信息收集可以获得测试目标的架构、指纹、类型等信息,测试人员可对信息收集初步了解,建立渗透测试计划。
(2)端口扫描:通过对目标地址的TCP/UDP端口扫描,确定目标系统所开放的服务的数量和类型,结合渗透测试人员的经验发现可能存在或被利用的漏洞。
图1 渗透测试流程
(3)口令猜解:渗透测试人员通过人工或者利用工作方式对目标系统的口令进行暴力尝试,找出目标系统存在的弱口令。猜解成功后可登录目标系统进行深入挖掘。口令猜解的对象有:Web登录、FTP、数据库、远程管理等。
(4)缓冲区溢出攻击:缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、重新启动、系统宕机等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
(5)SQL注入:渗透人员将SQL命令插入Web表单,递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,获得系统管理员用户名和密码。SQL注入是B/S应用系统最常见一种攻击之一。
(6)上传漏洞攻击:应用系统对需要上传文件模块未进行严格的上传文件类型限制,导致渗透测试人员突破上传文件的限制将恶意文件上传至服务器,并成功执行。
(7)本地提权:本地提权漏洞就是渗透测试人员可以通过一个本来非常低权限、受限制的用户,提升到系统至高无上的权限。
渗透测试人员测试的目标系统生产环境复杂,信息系统在网运行,一旦发生信息安全问题,将会对被测评方的系统带来严重的损害,有可能会造成系统中断、数据丢失等问题。严重的可能带来经济方面的损失。因此测试过程中风险的规避应该得到重视,从而减少对业务系统的影响[4]。
为了规避渗透测试人员操作的不规范性和测试的可追溯性,应建立渗透测试小组,小组由测试人员和审计人员两部分组成(见图2)。
图2 渗透测试小组组成
测试人员负责具体的测试工作,审计人员负责对测试人员进行审计监督工作,两种角色不能由同一自然人承担。
3.2.1 渗透人员工具的控制
在渗透测试过程中应对测试人员测试过程中发现的漏洞使用的工具进行有效的监督,测试中应提供测试工具一览表(见表1),杜绝因工具选择不当造成的将病毒和木马植入的情况发生。
3.2.2 渗透测试人员测试流程控制
渗透测试人员在测试过程中应按渗透测试流程进行,并提供相应流程的测试时间,以便审计人员准确获取测试人员的行为日志。渗透测试人员将测试时间和测试获得的漏洞信息记录在原始记录内(见表2)。
表1 测试工具一览
表2 测试流程控制
审计人员按测试人员审计服务器如:IPS、上网行为审计等设备上获得测试人员的行为日志,将其记录在审计记录中,提交给客户(见表3)。
表3 审计流程控制
为了减少渗透测试对目标系统压力的影响,测试应安排在不影响正常业务运作的时间段进行。
针对测试过程中产生的不可预知的风险,相关管理人员应对系统或关键数据进行备份,确保相关的日志审计功能正常开启,在出现问题时,可以及时地恢复运转。
渗透测试模仿企图利用目标系统中潜在漏洞的攻击者,发现的任何安全问题都要报告,并对安全问题造成的影响进行评估。在渗透测试过程中应避免采用分散的方式,应用采用效率高的可以针对很多种不同种类漏洞的方式。渗透测试人员要不断跟踪新的漏洞,并对最新的阻力进行追踪。