维普资讯 http://www.cqvip.com MicrocomputerApplications Vo1.24,No.5,2008 文章编号:1007 757X(2008)5 0056~03 一技术交流 微型电脑应用 2008年第24卷第5期 种基于Web漏洞威胁模型的网站安全分析技术 张亮朱磊明王康 摘要:网站日益受到黑客的青昧,针对Web应用程序的攻击事例屡见不鲜。如何全面、准确地分析网站面临的最大 威胁成为专业信息安全公司和网站管理员的不可回避的难题。本论文借鉴攻击图的基本思想设计了漏洞威胁测试模型 (V兀1M),并以SQL注入漏洞为例对其进行建模,并利用两种算法分别计算了网站的最大威胁值及最优测试序列。 关键词:渗透测试攻击图SQL注入贪婪算法动态规划 中图法分类号:TP309.2 文献标识码:A 利用SQL注入攻击技术入侵服务器、利用跨站脚本漏洞威胁 引言 网络的普及标志着信息时代的来临,形形色色的网站使 “足不出户,办天下事”成为可能。便利的网络服务唾手可 得,在吸引众多Internet用户同时也招来了不坏好意的目 光。越来越多的网络黑客将网站视为免费的蛋糕,刚站安全 受到严重威胁。 渗透测试(Penetration Test)的主要目的是对网站进 行安全评估,它可以使用专用漏洞扫描工具对网站的安全状 态进行检查,也可以雇用具有丰富网络攻击经验的专业技术 客户端、利用服务器提供的其他辅助服务进行入侵等。进行 渗透测试时要涵盖这些纷繁复杂的环节,因此需要对各类型 的Web漏洞进行建模,发现网站存在的最大威胁。 攻击图(Attack Graph)作为表现攻击条件、过程和结 果的模型在渗透测试中具有不可替代的作用。为了降低工具 和技术人员对渗透测试的影响,本论文将根据攻击图的基本 思想设计漏洞威胁测试模型(Vulnerabi1ity Threats Testing Model,VTTM),并通过求解模型全面、准确地发现 网站的最大威胁。 人员扮演“黑客”的角色,从内网、外网以及不同网段对网 站进行模拟攻击,以便能够模拟企业内部的违规操作和对企 业内部状态一无所知的外部攻击。然而,这种安全测试方式 2 VTTM的设计与建立 攻击图以有向图为表现形式,顶点代表网站的安全状 态,有向边代表状态的转换,包含了各种转换条件。本论文 的效果过分依赖于工具和技术人员的能力,并且通常以离散 状态分布在企业各处对网站进行渗透,不能充分模拟黑客攻 击的流程,而一个漏洞可能要具有一定前提条件才可能被发 将根据攻击图的基本思想对 站的Web漏洞测试过程建立 VTTM模型,模型将使用加权有向图来表示。 VTTM模型有五个基本要素:网站安伞状态集合s、初时 现,因此这种“各自为政”的状态容易片面地估计漏洞威胁, 从而隐藏了漏洞的存在。 常见的Web漏洞存在于用户认证、用户授权、用户输入 验证、Web程序管理和客户端访问等环节上,具体形式有使 状态集合s。、目标状态集合s 、安全状态转换集合 和价 值代价比集合 ,详细描述见表1 用Cookies、会话ID欺骗或密码破解绕过用户验证或提权、 表1 VTTM模型要素 簪尊芳 篓磐嚣黪 掰毒 髻|善 ; 螂一 掣 “尊薯 糍≯ii誊 。 菪 奢蔓 j 一 。孝 0| 蔓 S So s是在测试过程中不断改变的网站安全状态,在模型中处于项点位置。 SO∈Soc s,是有向图中入度为0的顶点。 S s ∈st 5,是有向图中出度为0的终点,以双圆圈表示。 中状态 表示从安全状态S 向S 的转换过程,在有向图终处于边的位置,用序偶<s ,S >表示。其中f≠J。如果转换后的状态 S 5t,表示漏洞测试过程达到预期目标,结束状态转换过程。 权值集合, 表示从安全状态S。向S 的转换权值,用二元组(c V..)表示。 作者简介:张亮,解放军电子工程学院,硕士研究生,安徽省合肥市230037 朱磊明,解放军电子工程学院,硕士研究生导师,教授,安徽省合肥市王康,解放军电子工程学院,硕士研究生,安徽省合肥市230037 230037 ・56・ 维普资讯 http://www.cqvip.com MicrocomputerApplications Vo1.24,No.5,2008 技术交流 微型电脑应用 2008年第24卷第5期 表2状态节点元素 由此,VTTM模型可以用五元组(s。,s,s , ff,O)来 表示,其基本思想是使用大量的测试用例对每一个安全状态 状 牧戳 灏涧 概雏 进行检测,满足转换条件后进行状态迁移,如果最后能够达 到目标状态,则表示网站存在从S。到S 对应的漏洞。 S中的每一个状态包含以下元素: ●用户权限:当前用户等级标识,通常采用枚举型进行表 示,包括guest(anonymous)、IUSR XXXX(互联网访问用 户)、normal(publiC)、administrator等等。 鑫 !【 R iUSR l}jf,I^I心 涮 束嶷权 州蚺 绕过认涎执得H站甜地l¨』、攫杖 jr I USR、db‘ w・] 一 1 ,db cJ 能抓勺:再木t f i,锚披术 嘲川瞰,’嚣组件¨训坤4-水,5 利川嘟小木 } 作T : 水t5 扶 承缝“ l…户权 链拔注入 iI4| ● 目标:指定需要进行测试的目标,可以是单个和多个服 务器。状态转换不涉及到目标迁移时可以省略此元素。 ●漏洞:通过状态转换后得到的可利用漏洞。 ●能力:当前状态下能够对网站产生的危害或能够进行的 攻击行为,比如会话欺骗、窃听密码、植入木马和SOL注入 等。 表示将测试用例作用于S-后网站安全状态转换到 S。,这个转换过程用序偶<S ,Si)表示,其中S.表示测试 条件,s。表示测试结果。测试用例应该具有原子性,即在测 试环节中最小的测试单元,以单一的手段获得单一的效果。 Cu1 ent U IUIR Pl11,1 i jUSR WebAdm1 r1 髓摧征 酗州 M数脚 {1躺雕符 咀管』 强 栅件求 幸苦- I协 .J.《 帑 } WebAdm】n ★. } 他脚4、水 5 抉 弧b j 模型错误!未找到引用源。建立以后对状态转换图进行 遍历以获得从初始状态到目标状态的所有测试路径。通常, 对图的遍历有深度优先遍历和宽度优先遍历。在VTTM模型中 使用深度优先遍历,遍历过程中获得的从S。Ns 的路径就是 状态线性序列。然后根据需要确定最优序列。按照最优序列 在VTTM模型中 表现为有向边,可以对每条边赋予权值, 这里,权值使用二元组(C,V)表示,其中C表示执行测试 用例的代价,是执行周期、被IDS或IIS记录的可能性和占 用系统资源等因素的综合值;V表示执行测试用例的价值。 以上两个元素都根据测试者自身需要和经验进行设置。以 进行漏洞发掘将取得最大效益。最优的标准由测试者的需求 决定,比如不考虑代价,只考虑价值,则最优函数为:max∑ ; 如果不考虑价值只考虑代价,最优函数为:min'rc :如果两 者兼顾,可以引入价值代价比 ,则最优函数为:maxY ̄p (此情况下C >0)。可以将模型中各个状态的转换条件视为 约束条件,主要体现在测试条件S-的内部元素“漏洞”和“能 力”上。 SOL注入漏洞为例,其局部状态转换图。如图l所示。 建立Web漏洞的VTTM模型时,需要考虑所有类型的漏 洞威胁,分别确定初始状态和和目标状态,创建各自的子状 态转换图,然后合并成全局状态转换图。为减少计算最优测 图1局部状态转换图示例 试序列的复杂度,必须对全局状态转换图进行优化,优化遵 循以下原则: 漏洞测试的过程可以看成是基于测试条件的状态转换 过程TP(本文称之为测试路径),用线性状态序列表示: TP={SoSl…S|.一Sl}SxE S(),S ∈S,St∈SI’0 i I SI} 在VTTM中达到日标状态的关键因素是合理、充分地设 ● 合并状态节点时,节点的各个元素必须一致,否则不 能合并。 ● 存在条件依存关系的状态节点,即能够用序偶表示<S。. sl>的两个节点S.,S 不能合并。 计测试用例,并能涵盖网站程序的各个功能模块。 下面以SQL注入漏洞为例,利用VTTM对其进行建模, 目标状态是获得网站的WebShell,模型的五个要素如前文 所述,对应的状态转换图如图2所示,其中各个状态的内部 元素描述见表2 ・ 根据网站实际情况检查每个状态的转换条件是否成 立,如果不成立,去掉该转换。 ・ 在不同的子状态转换图之间补充必要的路径,因为测 试过程应该是全面、动态的过程,不会拘泥于其中某个特定 环节,测试人员可能通过Web程序的其他缺陷来发现产生此 漏洞的条件,使安全状态转换具备前提条件而发生转移。 ● 经过优化的状态转换图若存在环路,则环路中的状态 转换可能具有原子型,需要重新分析添加新的状态节点避免 产生环路。 一般地,建立VTTM模型的步骤为: 图2 SQL注入漏洞威胁的状态转换图 ・57・ 维普资讯 http://www.cqvip.com
MicrocomputerAppHcafionsVo1.24,No.5,2008 技术交流 微型电脑应用 2008年第24卷第5期 素:最优子结构、重叠子问题。前者表示原问题的最优解包 3 量化威胁 建立VTTM模型的目的是为了寻求网站的最大威胁, 因此,建立模型以后需要求解模型,即在约束条件下 求最优函数的解。现以图2所示的SQL注入漏洞的VTTM 含了其子问题的最优解:后者要求避免重复求解相同子问 题。 以图2为例,相关参数不变。令d(i,j,k)表示从节点 S 到节点S 的路径对应的max∑ ,且该路径经过最大节点 为S ,由此定义: f 0, i=J,k=0 为例进行求解,假设该状态转换图已经经过优化,最 优函数为:f…=maxZP 对状态转换图中,测试结果 d( , , )={ 一o。, < ,, J> y……① 为s 的状态转换的权值为0,其他权值如表3所示(以 作者经验设定)。 表3状态转换权值 。I 】2 州 allax{d“,J,k一1),d(i,k,k一1)+d( ,J,k一1)), l, J>∈y,k≥0 求解原问题变为求d(0,t,t),为方便计算,令 t=}s i=i0。易知d(i,J,J)=d(i,J,j—1),d(i,j,i)= d(i,J,i—1),根据①,有: d(0,l0,i0) =d(0,i0,9) (8, 5) 0.63 。 (1, 2) 2 06 (3, 8) 2.67 (3, 10) 3.33 78 (4, 4) 1 =max{d(0,10,8),d(0,9,8)+d(9,10,8)) 其中d(0,9,8)+d(9,10,8)=6+0:6, d(0,l0,8) ……0 =max{d(0,10,7),d(0,8,7)+d(8,10,7)) d(8,10,7)=---oo d(0——,l0,7) cr |- (2, 3) 1.5 (3, 3) 1 (2, 3) 1.5 (1, 2) 2 。 以此类推,得: d(0,10,7)=d(0,10,6)=d(0,10,5)=4.96,带入0,最后得出: d(0,10,10)=max{4.96,6}=6,对应最优的测试路径 TP。。t={SoS6S S8 s9st) 下面介绍使用贪婪算法和动态规划的方法求解模型。 1) 贪婪算法(Greedy algorism) 4 结论 将VTTM模型应用于Web网站漏洞测试过程可以帮助测 试人员高效准确地确定网站的最大威胁及最优的测试步骤, 贪婪算法的基本思想是:采用逐步构造最优解的方法, 在每个阶段都选择一个看上去最优的决策。一旦作出决策就 不可再更改。作出贪婪决策的依据称为贪婪准则。 求解模型最优解的关键是寻找一条从初时状态节点到 目标状态节点的路径,使这条路径上的所有价值代价比P 成为最优函数的解。根据算法的基本思想,设有集合A,包 含每次根据贪婪准则所选的状态节点:集合B,包含当前状 减少测试成本。本文根据攻击图的基本思想,以SQL注入攻 击为例建立了VTTM模型,并使用贪婪算法和动态规划两种 方法对此模型进行了求解,向读者展示了VTTM模型优点。 但建模的好坏必须依赖于建模人员对网络安全知识的熟悉 态节点与新加入A的节点之间的状态转换。初始情况下 A=(s。),B= 。假设当前新加入A的状态节点为S ,且 和经验积累的程度,对使 [}j VTTM模型的测试人员提出了更 高的要求。 S S ,则向A加入下一个状态节点S 的贪婪准则为:S 未在A中出现且使<s,Si>对应的P 最大。由此,对于图2 参考文献: 【1】Joel Scambray,Mike Shema and Caleb Sima Hacking Exposed Web Applications[Z].Second E ̄fion.2006. 【2】Laura Painton Swiler,Cynthia Phillips,Timothy Gaylor.A 所示的状态转换图,其最优测试路径为TP={SoS。S S S ), ∑P =4.96。注意,贪婪算法只是一种直觉倾向性的抉择, 不保证 P f到达最优,比如图2的所示例子中存在更优 的测试路径TP ={SoSeS S ¥9S ),∑P =6,但通过贪婪算 法获得结果总是非常接近最优值。 2)动态规划(Dynamic programming) 与贪婪算法类似,动态规划也将待求问题分解成若干子 问题,求解子问题后再从这些解中得到原问题的解。不同的 Graph—Based Network—Vulnerability Analysis System[M]. Sandia.National Laboratories 1 998. 【3】许治昆,王伟,郭添森,杨冀龙.网络渗透技术[M].北 京:电子工业出版社,2006. 是动态规划的子问题往往不是相互独立的,某个子问题的解 可能会影响到另一子问题的解。动态规划具有两个基本要 (收搞日期:2008—1—2) 投稿请规范格式,提高录用率 ・58・