渗透测试与风险评估
定义
渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
渗透测试一方面可以从攻击者的角度,检验业务系统的安全防护措施是否有效,各项安全策略是否得到贯彻落实;另一方面可以将潜在的安全风险以真实事件的方式凸现出来,从而有助于提高相关人员对安全问题的认识水平。渗透测试结束后,立即进行安全加固,解决测试发现的安全问题,从而有效地防止真实安全事件的发生。
方法
黑箱测试
黑箱测试又被称为所谓的“Zero-Knowledge Testing”,渗透者完全处于对系统一无所知的状态,通常这类型测试,最初的信息获取来自于DNS、Web、Email及各种公开对外的服务器。
白盒测试
白盒测试与黑箱测试恰恰相反,测试者可以通过正常渠道向被测单位取得各种资料,包括网络拓扑、员工资料甚至网站或其它程序的代码片断,也能够与单位的其它员工(销售、程序员、管理者……)进行面对面的沟通。这类测试的目的是模拟企业内部雇员的越权操作。
隐秘测试 灰盒子(Gray Box)
隐秘测试是对被测单位而言的,通常情况下,接受渗透测试的单位网络管理部门会收到通知:在某些时段进行测试。因此能够监测网络中出现的变化。但隐秘测试则被测单位也仅有极少数人知晓测试的存在,因此能够有效地检验单位中的信息安全事件监控、响应、恢复做得是否到位。
目标
主机操作系统渗透
对Windows、Linux等操作系统本身进行渗透测试。
数据库系统渗透
对MS-SQL、Oracle、MySQL等数据库应用系统进行渗透测试。
应用系统渗透
对渗透目标提供的各种应用,如ASP、JSP、PHP等组成的WWW应用进行渗透测试。
网络设备渗透
对各种防火墙、入侵检测系统、网络设备进行渗透测试。
渗透测试的手段
内网测试
内网测试指的是渗透测试人员由内部网络发起测试,这类测试能够模拟企业内部违规操作者的行为。最主要的“优势”是绕过了防火墙的保护。内部主要可能采用的渗透方式:远程缓冲区溢出,口令猜测,以及B/S或C/S应用程序测试(如果涉及C/S程序测试,需要提前准备相关客户端软件供测试使用)。
外网测试
外网测试指的是渗透测试人员完全处于外部网络(例如拨号、ADSL或外部光纤),模拟对内部状态一无所知的外部攻击者的行为。包括对网络设备的远程攻击,口令管理安全性测试,防火墙规则试探、规避,Web及其它开放应用服务的安全性测试。
不同网段/Vlan之间的渗透
这种渗透方式是从某内/外部网段,尝试对另一网段/Vlan进行渗透。这类测试通常可能用到的技术包括:对网络设备的远程攻击;对防火墙的远程攻击或规则探测、规避尝试。
信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤又有三个组成部分:操作、响应和结果分析。
端口扫描
通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合安全工程师的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。
远程溢出
这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个具有一般网络知识的入侵者就可以在很短的时间内利用现成的工具实现远程溢出攻击。
对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。
口令猜测
口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以猜测口令。
对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。
本地溢出
所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。使用本地溢出的前提是首先要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。
多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。
脚本及应用测试
Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的技术统计,脚本安全弱点为当前Web系统,尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是必不可少的一个环节。在Web脚本及应用测试中,可能需要检查的部份包括:
◆检查应用系统架构,防止用户绕过系统直接修改数据库;
◆检查身份认证模块,用以防止非法用户绕过身份认证;
◆检查数据库接口模块,用以防止用户获取系统权限;
◆检查文件接口模块,防止用户获取系统文件;
◆检查其他安全威胁;
无线测试
中国的无线网络还处于建设时期,但是由于无线网络的部署简易,在一些大城市的普及率已经很高了。通过对无线网络的测试,可以判断企业局域网安全性,已经成为越来越重要的渗透测试环节。
除了上述的测试手段外,还有一些可能会在渗透测试过程中使用的技术,包括:社交工程学、拒绝服务攻击,以及中间人攻击。
渗透测试的流程
渗透测试的实施
撰写渗透测试报告
渗透测试报告是提交给用户的最终成果,渗透测试报告将渗透过程中发现的问题和采用的方法进行说明,即漏洞的危害--> 漏洞的利用 --> 获取权限 --> 权限的提升等。报告的最后将给出漏洞的加固建议。
渗透测试的必要性
渗透测试利用网络安全扫描器、专用安全测试工具和富有经验的安全工程师的人工经验对网络中的核心服务器及重要的网络设备,包括服务器、网络设备、防火墙等进行非破坏性质的模拟黑客攻击,目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。
渗透测试和工具扫描可以很好的互相补充。工具扫描具有很好的效率和速度,但是存在一定的误报率和漏报率,并且不能发现高层次、复杂、并且相互关联的安全问题;渗透测试需要投入的人力资源较大、对测试者的专业技能要求很高(渗透测试报告的价值直接依赖于测试者的专业技能),但是非常准确,可以发现逻辑性更强、更深层次的弱点。
渗透测试策略
时间选择
为减轻渗透测试对网络和主机的影响,渗透测试时间尽量安排在业务量不大的时段或晚上。
策略选择
为防止渗透测试造成网络和主机的业务中断,在渗透测试中不使用含有拒绝服务的测试策略。
授权渗透测试的监测手段
在评估过程中,由于渗透测试的特殊性,用户可以要求对整体测试流程进行监控(可能提高渗透测试的成本)。
测试方自控
由渗透测试方对本次测透测试过程中的三方面数据进行完整记录:操作、响应、分析,最终形成完整有效的渗透测试报告提交给用户。
用户监控
用户监控有四种形式,其一全程监控:采用类似Ethereal的嗅探软件进行全程抓包嗅探;其二择要监控:对扫描过程不进行录制,仅仅在安全工程师分析数据后,准备发起渗透前才开启软件进行嗅探;其三主机监控:仅监控受测主机的存活状态,避免意外情况发生;其四指定攻击源:用户指定由特定攻击源地址进行攻击,该源地址的主机由用户进行进程、网络连接、数据传输等多方监控。
保守策略选择
对于不能接受任何可能风险的主机系统,如银行票据核查系统,电力调度系统等,可选择如下保守策略:
1)复制一份目标环境,包括硬件平台,操作系统,数据库管理系统,应用软件等。
2)对目标的副本进行渗透测试。
第二篇:渗透测试、风险评估技术方案
一、渗透测试
1.1、概述
渗透测试主要依据已经发现的安全漏洞,模拟黑客的攻击方法对系统和网络进行非破坏性质的攻击性测试,本次将作为评估重点对浙江省水利厅的应用网站系统每月一次进行全面的渗透测试,从而从深层次发现浙江省水利厅应用系统存在的安全问题。
1.2、渗透测试的方法
黑客的攻击入侵需要利用目标网络的安全弱点,渗透测试也是同样的道理。它模拟真正的黑客入侵攻击方法,以人工渗透为主,辅助以攻击工具的使用,这样保证了整个渗透测试过程都在可以控制和调整的范围之内。
1.3、渗透测试前后系统的状态
由于采用可控制的、非破坏性质的渗透测试,因此不会对被评估的系统造成严重的影响。在渗透测试结束后,系统将基本保持一致。
1.4、渗透测试过程
渗透测试流程图如下图所示:
渗透测试流程图
●预攻击阶段操作简述
1)踩点获取目标基本信息
踩点可以了解目标主机和网络的一些基本的安全信息,主要有:
◆管理员联系信息,电话号,传真号;
◆IP地址范围;
◆DNS服务器;
◆邮件服务器。
相关搜索方法:
搜索网页
确定目标信息,为以后发动字典和木马入侵做准备;寻找网页源代码找注释和隐藏域,寻找隐藏域中的"FORM"标记。例如:
<FORM action=/Poll/poll.asp method=post>
<input type=hidden name=vice value=vice>
</FORM>
可以发起SQL注入攻击,为以后入侵数据库做准备。
相关工具:UNIX下的Wget,Windows下的Teleport等。
链接搜索
目标网站所在的服务器可能有其他具有弱点的网站,可以进行迂回入侵,而且可以发现某些隐含的信息。
搜索方法介绍:通过各种搜索引擎:如GOOGLE。
2)查点
确定目标的域名和相关的网络信息
Whois查询,通过Whois数据库查询可以得到以下的信息:
1,注册机构:显示相关的注册信息和相关的Whois服务器;
2,机构本身:显示与某个特定机构相关的所有信息;
3,域名:显示与某个特定域名相关的所有信息
4,网络:显示与某个特定网络或单个IP地址相关的所有信息;
5,联系点:显示与某位特定人员相关的所有信息
利用ARIN数据库查询某个域名所对应的网络地址分配信息
知道了目标所在的网络,可以进行迂回渗透,寻找薄弱点,进入目标网络,然后再攻击目标。
DNS信息查询
域名系统允许把一个DNS命名空间分割成多个区,各个去分别保存一个或多个DNS域的名字信息。
区复制和区传送:DNS服务器之间是采用区传送的机制来同步和复制区内数据的。区传送的安全问题不在于所传输的域名信息,而在于其配置是否正确。因为有些域名信息当中包含了不应该公开的内部主机和服务器的域名信息。
3)网络扫描
通过使用漏洞扫描工具和定制的脚本工具这些自动化工具对浙江省水利厅应用系统进行扫描,发现存在的明显安全漏洞。大多数网络攻击者就是使用这种简便快捷的方式来收集被攻击系统的相关信息,从而有针对性对系统进行攻击。
4)获取进一步信息
从这一步可以得到比之前更多更具体的有用信息,例如:帐户信息等。
Windows系统查点技术
利用NetBIOS规则,首先介绍NetBIOS,NetBOIS位于TCP/IP之上,定义了多个TCP和UDP端口。
TCP方式
(1),139:nbsession:NetBOIS会话。
例如:net use \\IP\ipc$ " " /user:" ".
(2),42:WINS:Windows Internet名字系统(UDP端口也是42)。
UDP方式
(1)137:nbname:名字查询。
例如:nbtstat -A IP //03中显示的不是计算机名就是用户名
(2)138:nbdatagram:UDP数据报服务
例如:net send /d:domain-name "Hello"
●渗透攻击阶段
1)WEB注入
现在的入侵事件,攻击WWW居多,原因也很简单,那就是程序员在编写
WEB脚本程序时根本不注重安全因素,导致了上传shell,提升权限之类的严重后果,入侵渗透测试主要通过以下几个方面进行测试:
搜索SQL注入点;
搜索特定目录和文件,例如:上传程序文件;
寻找管理员登陆网页,进行字典或者SQL饶过入侵;
寻找WEB程序的源代码,进行漏洞挖掘,主要涉及的漏洞类型有:SQL注入,
跨站脚本,文件包含漏洞,目录跳转漏洞,以脚本文件格式保存错误日志漏
洞,上传漏洞;
2)远程溢出
这是当前出现的频率最高、威胁最严重,同时又是最容易实现的一种渗透方法,一个具有一般网络知识的入侵者就可以在很短的时间内利用现成的工具实现远程溢出攻击。
对于防火墙内的系统同样存在这样的风险,只要对跨接防火墙内外的一台主机攻击成功,那么通过这台主机对防火墙内的主机进行攻击就易如反掌。
3)口令猜测
口令猜测也是一种出现概率很高的风险,几乎不需要任何攻击工具,利用一个简单的暴力攻击程序和一个比较完善的字典,就可以猜测口令。
对一个系统账号的猜测通常包括两个方面:首先是对用户名的猜测,其次是对密码的猜测。
4)本地溢出
所谓本地溢出是指在拥有了一个普通用户的账号之后,通过一段特殊的指令代码获得管理员权限的方法。使用本地溢出的前提是首先要获得一个普通用户密码。也就是说由于导致本地溢出的一个关键条件是设置不当的密码策略。
多年的实践证明,在经过前期的口令猜测阶段获取的普通账号登录系统之后,对系统实施本地溢出攻击,就能获取不进行主动安全防御的系统的控制管理权限。
1.5、渗透测试计划
制定渗透测试计划将使得安全扫描将在浙江省水利厅的授权和监督下进行,避免攻击意味和恶意攻击者的乘势利用。同时渗透计划在确定后应控制在一定范围。
渗透测试可以分为黑盒和白盒渗透。黑盒渗透是浙江省水利厅只告诉被渗透目标的域名(或IP),然后由渗透测试方去进行安全渗透测试,白盒渗透是浙江省水利厅提供被渗透目标的域名、IP、系统版本、数据库版本、测试帐号等一系列信息,然后由渗透测试方去进行安全渗透测试。
渗透测试也可以分为外部渗透和内部渗透。外部渗透是渗透测试方在互联网上模拟入侵者对浙江省水利厅网站系统进行安全渗透测试,内部渗透是渗透测试方在中浙江省水利厅内部网模拟入侵者和内部人员进行渗透测试。
本次测试按照浙江省水利厅的要求,可以用白盒或者黑盒,外部或者内部的形式进行渗透测试。
1.6、渗透测试结果输出
渗透测试的结果将以报告(《渗透测试报告》)的形式(word)作为风险评估报告的一部分提交给浙江省水利厅,渗透测试可以作为安全威胁分析的一个重要数据来源。
渗透测试报告详细描述了渗透测试的结果和过程,并使用文字和抓图的形式来描述渗透测试过程。
1.7、系统备份与恢复措施
为防止在渗透测试过程中出现的异常的情况,所有被评估系统均应在被评估之前作一次完整的系统备份或者关闭正在进行的操作,以便在系统发生灾难后及时恢复。
数据备份后进行恢复演习,检测备份数据和应急恢复流程的有效性。
●操作系统类:制作系统应急盘,根据不同系统对系统信息,注册表,sam文件,/etc中的配置文件以及其他含有重要系统配置信息和用户信息的目录和文件进行备份,并应该确保备份的自身安全。
●数据库系统类:对数据库系统进行数据转储,并妥善保护好备份数据。同时对数据库系统的配置信息和用户信息进行备份。
●网络应用系统类:对网络应用服务系统及其配置、用户信息、数据库等进行备份。
1.8、风险与应对措施
渗透测试过程的最大的风险在于测试过程中对业务产生影响,为此我们在本项目采取以下措施来减小风险:
●在渗透测试中不使用含有拒绝服务的测试策略;
●渗透测试时间尽量安排在业务量不大的时段或者晚上;
●渗透测试在实施过程中,会增加被渗透网络和主机的负载(5%以下),对系
统性能不会造成影响。但是如果网站程序不够健壮,可能会造成链接耗尽等
影响正常业务的情况。在渗透测试过程中如果出现被评估系统没有响应或其
他明显错误的情况,应当立即停止测试工作,与浙江省水利厅配合人员一起
分析情况,在确定原因后,并正确恢复系统,采取必要的预防措施(比如调
整测试策略等)之后,才可以继续进行如果被渗透测试的主机上除了有被渗透测试的网站,还有其他网站,其他网站同样会受到上述影响,请相关人员做好备份等工作;
●实施人员在实施过程中,当渗透工作有进展的时候,应及时通知浙江省水利
厅相关人员
●当执行对系统影响较大的操作的时候(如:向数据库添加表),应先向浙江省水利厅相关人员申请,得到授权许可后再实施
●测试者和浙江省水利厅管理员保持良好沟通,随时协商解决出现的各种难题;
二、风险评估
2.1、风险评估范围
此次风险评估的范围为省社保“金保”业务专网,包括对公众以及对内提供服务的73个业务系统和其所依托的物理环境、网络环境、主机操作系统和数据库系统,以及安全管理情况。
2.2、风险评估分析
在安全评估服务中,参照GB/T20984-2007安全模型,确定如下的风险评估方法,如下图所示:
风险评估模型
风险分析中要涉及资产、威胁、脆弱性等基本要素。每个要素有各自的属性,资产的属性是资产价值;威胁的属性是威胁出现的频率;脆弱性的属性是资产弱点的严重程度。风险分析主要内容为:
●对资产进行识别,并对资产的重要性进行赋值;
●对威胁进行识别,描述威胁的属性,并对威胁出现的频率赋值;
●对资产的脆弱性进行识别,并对具体资产的脆弱性的严重程度赋值;
●根据威胁和脆弱性的识别结果判断安全事件发生的可能性;
●根据脆弱性的严重程度及安全事件所作用资产的重要性计算安全事件的损失;
●根据安全事件发生的可能性以及安全事件的损失,计算安全事件一旦发生对组织的影响,即风险值。
2.3、风险管理规划
风险评估流程
风险评估的准备是整个风险评估过程有效性的保证。组织实施风险评估是一种战略性的考虑,其结果将受到组织业务战略、业务流程、安全需求、系统规模和结构等方面的影响。因此,在风险评估实施前,应做好以下工作准备:
确定风险评估的范围:明确风险评估对象是正式进行风险评估的前提,否则无法全面、重点的发现问题;
组建适当的评估管理与实施团队:针对本次项目要求指定协调接口人和专人,由省社保和安全评估服务商的顾问团队共同组成风险评估管理和实施团队;
选择与组织相适应的具体的风险判断方法:根据本次项目要求,选择并确定风险分析方法;
获得最高管理者对风险评估工作的支持:通过启动会议、沟通会和汇报会等方式不断加强和提升领导对于此项工作的关注和重视。
2.4、风险报告的出具
我们采用下面的矩阵方法来得到安全风险级别:
1.通过以下矩阵定义了威胁可能性和脆弱性等级的对应关系。
威胁-脆弱性对应矩阵
2.通过以下矩阵提供了资产的风险确定方法。
风险等级矩阵
风险评估模型中,主要是以保护省社保信息资产为核心,因此风险的计算也是围绕信息资产进行的。主要分为两类风险:安全管理类风险、安全技术类风险。其中安全技术类风险又分为物理安全类风险、网络安全类风险、主机安全类风险、应用安全类风险和数据安全类风险。安全管理风险评估是以等级保护为标准,从整个宏观管理层面上对安全风险进行的,和具体的信息资产关联度不高,只对弱点和威胁进行评估,归纳出风险,而不单独和资产进行风险计算。
网络安全风险主要对现有的网络安全构架的进行分析,通过网络安全整体构架、安全域的划分、网络可用性、安全设备的监控及信息审计等几个方面评估。根据网络安全构架类风险普遍存在于信息资产中这一特点,因此在这两方面只进行弱点和威胁的评估,归纳出风险,而不单独和信息资产进行风险计算。
主机安全风险评估主要是对主机平台进行安全性检查,评估设备所面临风险。考虑到各个平台设备的安全配置管理将统一标准,因此对设备类的风险赋值是以系统平台为对象,对设备存在的威胁和弱点进行风险赋值。根据设备平台类风险普遍存在于信息资产中这一特点,因此在这两方面只进行弱点和威胁的评估,归纳出风险,而不单独和信息资产进行风险计算。
应用系统是信息资产主要的载体及表现形式,同时它也是和信息资产结合最紧密的。对应用系统风险评估主要体现为信息资产的评估,通过信息资产的等级、其存在的弱点和面临的威胁,计算出信息资产的风险级别。
综合上述对网络、主机、应用等相关资产的评估,最终形成省社保“金保”业务专网的《信息安全风险评估报告》。