当前位置: 移动技术网 > 网络运营>安全>工具 > 如何更有效使用Rational AppScan扫描大型网站(1)

如何更有效使用Rational AppScan扫描大型网站(1)

2018年04月11日  | 移动技术网网络运营  | 我要评论
简介: 本文针对大型网站的特点,结合 Rational AppScan 的工作原理,分析从扫描策略选择,扫描设置,任务分解等角度来如果更有效使用 Rational AppScan 进行应用安全扫描。“知己知彼,百战不殆”,在第一部分,首先我们一起来讨论分析 Rational AppScan 的工作原理和并分析大型网站的特点;在后续的第二部分将结合一个案例,看如何使用 Rational AppScan 来完成对大型网站的安全检查

Rational AppScan 工作原理
Rational AppScan(简称AppScan)其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的AppScan source edition,到针对Web 应用进行快速扫描的AppScan standard edition,以及进行安全管理和汇总整合的AppScan enterprise Edition 等。我们经常说的AppScan 就是指的桌面版本的AppScan,即AppScan standard edition。其安装在Windows 操作上,可以对网站等Web 应用进行自动化的应用安全扫描和测试。
来张AppScan 的截图,用图表说话,更明确。
  
图1. AppScan 标准版界面
 
 请注意右上角,单击“扫描”下面的小三角,可以出现如下的三个选型“继续完全扫描”、“继续仅探索”、“继续仅测试”,有木有?什么意思?理解了这个地方,就理解了AppScan 的工作原理,我们慢慢展开:
还没有正式开始安全测试之前,所以先不管“继续”,直接来讨论“完全扫描”,“仅探索”,“仅测试”三个名词:
AppScan 三个核心要素
AppScan 是对网站等Web 应用进行安全攻击来检查网站是否存在安全;既然是攻击,需要有明确的攻击对象吧,比如北约现在的对象就是卡扎菲上校还有他的军队。对网站来说,一个网站存在的页面,可能成千上万。每个页面也都可能存在多个字段(参数),比如一个登陆界面,至少要输入用户名和密码吧,这就是一个页面存在两个字段,你提交了用户名密码等登陆信息,网站总要有地方接受并且检查是否正确吧,这就可能存在一个新的检查页面。这里的每个页面的每个参数都可能存在安全漏洞,所有都是被攻击对象,都需要来检查。
这就存在一个问题,我们来负责来检查一个网站的安全性,这个网站有多少个页面,有多少个参数,页面之间如何跳转,我们可能并不明确,如何知道这些信息?看起来很复杂,盘根错节;那就更需要找到那个线索,提纲挈领;想一想,访问一个网站的时候,我们需要知道的最重要的信息是哪个?网站主页地址吧?从网站地址开始,很多其他频道,其他页面都可以链接过去,对不对,那么可不可以有种技术,告诉了它网站的入口地址,然后它“顺藤摸瓜”,找出其他的网页和页面参数?OK,这就是“爬虫”技术,具体说,是“网站爬虫”,其利用了网页的请求都是用http 协议发送的,发送和返回的内容都是统一的语言HTML,那么对HTML 语言进行分析,找到里面的参数和链接,纪录并继续发送之,最终,找到了这个网站的众多的页面和目录。这个能力AppScan 就提供了,这里的术语叫“探索”,explorer,就是去发现,去分析,了解未知的,并记录之。
在使用AppScan 的时候,要配置的第一个就是要检查的网站的地址,配置了以后,AppScan 就会利用“探索”技术去发现这个网站存在多少个目录,多少个页面,页面中有哪些参数等,简单说,了解了你的网站的结构。
“探索”了解了,测试的目标和范围就大致确定了,然后呢,利用“军火库”,发送导弹,进行安全攻击,这个过程就是“测试”;针对发现的每个页面的每个参数,进行安全检查,检查的弹药就来自AppScan 的扫描规则库,其类似软件的病毒库,具体可以检查的安全攻击类型都在里面做好了,我们去使用即可。
那么什么是“完全测试呢”,完全测试就是把上面的两个步骤整合起来,“探索”+“测试”;在安全测试过程中,可以先只进行探索,不进行测试,目的是了解被测的网站结构,评估范围;然后选择“继续仅测试”,只对前面探索过的页面进行测试,不对新发现的页面进行测试。“完全测试”就是把两个步骤结合在一起,一边探索,一边测试。
AppScan 工作原理小结如下:
通过搜索(爬行)发现整个Web 应用结构
根据分析,发送修改的HTTP Request 进行攻击尝试(扫描规则库)
通过对于Respone 的分析验证是否存在安全漏洞
 图 2. 扫描原理:扫描规则库 + 爬行 + 测试
图2. AppScan 扫描原理:扫描规则库+ 爬行+ 测试
  
步骤1:探索(又叫爬行,爬网)
 
图3. 探索(爬网,爬行)
 图 3. 探索(爬网,爬行) 
步骤2:测试(针对找到的页面,生成测试,进行安全攻击)
 图 4. 针对探索发现的页面和参数,进行安全测试
图4. 针对探索发现的页面和参数,进行安全测试
 
所以,简言之,AppScan 的核心是提供一个扫描规则库,然后利用自动化的“探索”技术得到众多的页面和页面参数,进而对这些页面和页面参数进行安全性测试。“扫描规则库”,“探索”,“测试”就构成了AppScan 的核心三要素。而在安全扫描过程中,如何进行优化,就要结合这三个要素,看哪些部分需要优化,应该如何优化。
AppScan 结果文件
同时,对于AppScan 标准版来说,扫描的配置和结果信息都保存为后缀名为Scan 文件,Scan 文件里面主要包括的内容如下:
扫描配置信息:扫描配置信息,如扫描的目标网站地址,录制的登陆过程脚本等,选择的扫描设置等都保存在Scan 文件中。
所有访问到页面信息:针对每个发现的页面,即使没有进行测试,在探索过程也会访问该页面并纪录http request/response 信息;所以如果探索的页面访问的时候返回的页面内容比较多,页面比较大,那么即使只做了探索根本没有扫描,整个Scan 文件也会很大。
测试阶段,记录测试成功的测试变体和页面访问信息:针对每个页面都会发送多次测试(测试变体),每次测试都会有Request/response 信息,这些信息如果测试通过,即发现了一个安全问题,则会把该测试变体对应得request/response 都会纪录下来,保存在.scan 文件中;由于AppScan 的扫描测试用例库全面,对于每种安全威胁漏洞,都会发送多个安全测试变体(Variant)进行测试,比如对于XSS 问题,AppScan 发送了100 个变体,其中30 个执行失败,70 个变体执行成功,则会纪录 70 次执行成功的具体变体信息,以及每个变体对应的Request/Response 信息。这就是一个很大的数据量。这些信息保存以后,就可以在不连接在网站的情况下进行结果分析,快速显示当时测试的页面快照等。
我们以http://demo.testfire.net/bank/customize.x 为例,如下就有74 个变体都发现了Customize 页面的Lang 参数存在跨站点脚本执行(XSS)类型的安全漏洞:
  
图5. 测试变体显示

所以针对AppScan 标准版来说,由于需要保存的信息比较多,结果文件是会比较大的,最根本的方法还是有针对性地进行扫描和测试,使用排除页面等排除冗余页面,把一个大的系统分解为多个小的扫描任务等。
好的,了解了AppScan 的原理,我们就结合原来讨论下为什么扫描大型网站时候可能遇到问题了。
回页首
大型网站技术特点分析
AppScan 扫描的对象是网站等Web 应用,而网站规模的大小和使用的技术,都需要针对性的进行扫描设置,我们遇到的很多问题,都是在扫描规模比较大的网站时候遇到的,如一个网站页面数目超过2000 个,需要执行的扫描用例是50,000 个,在扫描这样的网站时候,默认情况下AppScan 的扫描scan 文件可能超过100M 了,扫描效率就可能比较慢,需要长时间的扫描运行时间。
下面,我们就来分析大型网站中存在的一些可能影响AppScan 扫描的技术特点。
网站页面多,页面参数多,则AppScan 需要发送的测试用例多
什么叫大型网站,顾名思义,网站规模大,提供内容多;具体说是页面很多,内容很全。比如www.sina.com.cn,比如http://music.10086.cn/,网站中都有多个频道,包括上万个页面。而且除了页面多,可能还有一个特点--- 页面参数多,即要填写的地方多,和用户的交互多;比如一个网站如果都是静态页面(.html、.jpg 等),没有让用户输入的地方,那么可以利用,可以作为攻击点的地方也就不多。如果页面到处都是有输入有查询,要求用户来参与的,你输入的越多,可能泄露的信息也越多,可能被别人利用的攻击点也就越多,所以和页面参数也是有关系的。
AppScan 产生测试用例的时候,也是根据每个参数来产生的,简单说,如果一个参数,对应了200 个安全攻击测试用例,那么一个登陆界面至少就对应400 个了,为什么?登陆界面至少有用户名(username)和密码(password)两个字段吧?每个字段200 个攻击用例。
这个简单吧,还可以更复杂:如果遇到下面的两个地址,那要扫描多少次呢?
http://www.Test.com/focus/satisfy/file.?id=1
http://www.Test.com/focus/satisfy/file.jsp?id=2
 
上面的两个地址有类似的,“?”号以前的URL 地址完全一样,“?”号后面带的参数不同,这种可以认为是重复页面,那么对于重复页面,是否要重复测试呢?
这取决于“冗余路径设置”,默认的是最多测试5 次;即,这种类型URL 出现的前5 次,那么就是要测试1000 个攻击用例了。
如果再继续修改下:遇到下面的URL 呢
http://www.2cto.com /focus/satisfy/file.jsp?id=&Item=open
http://www.Test.com/focus/satisfy/file.jsp?id=2&Item=close
 
每个URL 里面都有2 个参数,测试的次数就更多了。想象下,如果这个网页里面的参数如果是10 个,或者更多的呢?比如很多网站提交注册信息的时候,要填写的栏位就很多,要进行的安全测试用例也就随之不断增加…
这是网站规模的影响,还有一个问题,就出在“每个参数,发送200 个安全测试用例”这个假设上。这个假设的前提来源于哪里?来源于我们选择的扫描规则库。即你关心那些安全威胁,这个需要在测试策略里面选择。同样来参照杀毒软件,你会用杀毒软件来查找一些专用的病毒吗,比如CIH、木马;应用安全扫描也是一样的道理,如果有明确的安全指标或者安全规则范围,那么就选择之。这些可能来源于企业的规范,来源于政府的法律法规。就要根据你的理解,在这里选择。
 图 6. 选择测试策略 
图6. 选择测试策略
 
在实际工作中,我们也很难在最开始的阶段,就把扫描规范制定下来,按照项目经理们的口头禅“渐进明细”,“滚动式规划”,在实践中,更多时候也是摸着石头过河,选择了一个扫描策略,然后根据结果分析,看是否需要调整,不断优化。比如选择默认的“缺省值”扫描策略,对网站进行扫描,发现其“敏感信息”里面会去检查页面上是否含有Email 地址,是否含有信用卡号码等,如果我们觉得这些信息,显示在页面上是正常的业务需要(比如这样的链接:<a href="mailto:admin@www.test.com">有问题请联系admin@www.test.com</a>),我们就可以取消掉这些规则,所以扫描规则也很大程度上影响着我们的扫描效率。
网站采用多种混合的技术,需要不同的扫描设置
一些大型网站,往往是一个统一的入口,在里面提供不同的内容,而这些内容可能来源于不同的技术。如我们熟悉的门户网站,里面就有“财经”、“体育”、“娱乐”等多个频道;每个频道的内容,可能是采用不同的技术,对应不同的服务器。如一个网站的“”频道,就有很多类似的页面:
http://www.Test.com/bbs/showthread.php?id=1
Http://www.Test.com/bbs/showthread.php?id=2
Http://www.Test.com/bbs/showthread.php?id=3
 
这里的showthread.php 页面存在多次,每次都是参数值不同,访问后发现这些页面除了文本内容外,其他的页面结构等都相同,则这些页面只需要选择几个典型的扫描即可,没有必要全部扫描。
而同时,在另外的一些频道,存在另外类型的页面:
http://www.Test.com/default.aspx?content=inside_community.htm
http://www.Test.com/default.aspx?content=inside_press.htm
http://www.Test.com/default.aspx?content=inside_executives.htm
 
这些动态页面,也是网址相同,参数相同,但是具有不同的参数值,访问时候发现每种类型的参数值都指向了完全不同的页面,则需要每种参数值都要测试到。这种情况经常存在跳转页面中。
而这两个频道中,第一种情况,可以选择典型的页面扫描之,而第二种情况则需要进行完全的扫描,每种参数值都需要考虑到。这就需要不同的扫描设置。
同时,可能大家也注意到了,第一种情况下的是php 页面,而第二种情况下的则是aspx 页面,对应不同的开发技术,这也可能需要不同的扫描设置。
所以,总结下,AppScan 的扫描受到如下因素的影响:
网站规模(页面个数,页面参数)
扫描策略的选择
扫描设置
而对于大型的网站,我们经常需要从几个方面来优化配置
选择合适的,最小化的扫描规则
分解扫描任务,把一个大的扫描任务分解为多个小的扫描任务
根据页面特点,设置可以过滤的类似页面(冗余页面)
回页首
接下来
工欲善其事,必先利其器,选择了AppScan 这个专业的Web 应用安全测试工具,那么接下来的第二部分,我们结合一个例子,来讨论么可以更好的优化设置,把工具充分利用起来。

如对本文有疑问, 点击进行留言回复!!

相关文章:

  • 网络刺客2使用指南

    网络刺客2使用指南    “天行”推出网络刺客2已有一年,想当初此软件因其强大的功能被国内“黑”界推为惊世之作。我在得到它后,却有近半年时间在研究、寻找... [阅读全文]
  • 冰河”启示录

    冰河”启示录 作者: 陈经韬 前言:我经常在杂志和报刊上看到此类标题的文章,但大多是骗稿费的,没有任何技术含量.于是一气之下写了这编东西.本人声明如下:(一)... [阅读全文]
  • tfn2k使用方法和对策(3)

        tfn2k使用方法和对策(3) 作者:佳佳 本来想再分两次写完本文,后来发现佳佳要翻译的两篇文章 http://packetstorm... [阅读全文]
  • tfn2k使用方法和对策(2)

        tfn2k使用方法和对策(2) 作者:佳佳     佳佳继续上一次的文章,这一次是攻击测试。 测试环境:     共有5台机器,佳佳是... [阅读全文]
  • 火凤凰2.4使用教程

    今次给大家推荐的是阿风哥的作品:无赖小子。(way).说起来它普及的不广,但是面孔生疏的马儿更加隐蔽。不是众杀毒软件的众矢之的。好像不太容易被查杀。而且作者够仗... [阅读全文]
  • tfn2k使用方法和对策(1)

        tfn2k使用方法和对策(1) 作者:佳佳 今年年初,一些黑客使用DDoS向Yahoo,eBay等著名站点发起攻击,并且使y... [阅读全文]
  • 火凤凰2.0使用教程

    火凤凰是国产木马里最先使用反弹端口的木马,其避开防火墙的能力极其出色,DELPHI编写,功能较多但是不太好用,而且没有配置服务端的改变端口功能,相对而言比较危险... [阅读全文]
  • Nmap网络安全扫描器说明(5)

    Nmap网络安全扫描器说明(5) 作者:作者:Fyodor 译者:quack发布日期:2002-2-6上传日期:2002-2-6来源:不详扫描范例-------... [阅读全文]
  • Nmap网络安全扫描器说明(3)

    Nmap网络安全扫描器说明(3) 作者:作者:Fyodor 译者:quack发布日期:2002-2-6上传日期:2002-2-6来源:不详常规选项-------... [阅读全文]
  • 不需要任何密码就能达到进入中有冰河的机器!!!

    不需要任何密码就能达到进入中有冰河的机器!!!小飞刀 [[冰河第一站]]冰河出现到现在,使用得如此之广,影响如此之大。 却万万没有人想到冰河服务端竟然存在着如此... [阅读全文]
验证码:
移动技术网