【AppScan】入门工做原理详解

 

AppScan,即 AppScan standard edition。其安装在 Windows 操做系统上,能够对网站等 Web 应用进行自动化的应用安全扫描和测试。Rational AppScan(简称 AppScan)实际上是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的 AppScan source edition,到针对 Web 应用进行快速扫描的 AppScan standard edition,以及进行安全管理和汇总整合的 AppScan enterprise Edition 等。咱们常常说的 AppScan 就是指的桌面版本的 AppScan,即 AppScan standard edition。其安装在 Windows 操做系统上,能够对网站等 Web 应用进行自动化的应用安全扫描和测试。php

AppScan 三个核心要素html

  AppScan 是对网站等 Web 应用进行安全攻击来检查网站是否存在安全漏洞;既然是攻击,须要有明确的攻击对象。对网站来讲,一个网站存在的页面,可能成千上万。每一个页面也均可能存在多个字段(参数),好比一个登录界面,至少要输入用户名和密码吧,这就是一个页面存在两个字段,你提交了用户名密码等登录信息,网站总要有地方接受而且检查是否正确吧,这就可能存在一个新的检查页面。这里的每一个页面的每一个参数均可能存在安全漏洞,全部都是被攻击对象,都须要来检查。
 
  这就存在一个问题,咱们来负责来检查一个网站的安全性,这个网站有多少个页面,有多少个参数,页面之间如何跳转,咱们可能并不明确,如何知道这些信息?看起来很复杂,盘根错节;那就更须要找到那个线索,提纲挈领;想想,访问一个网站的时候,咱们须要知道的最重要的信息是哪一个?网站主页地址吧?从网站地址开始,不少其余频道,其余页面均可以连接过去,对不对,那么可不能够有种技术,告诉了它网站的入口地址,而后它“顺藤摸瓜”,找出其余的网页和页面参数?OK,这就是“爬虫”技术,具体说,是“网站爬虫”,其利用了网页的请求都是用 http 协议发送的,发送和返回的内容都是统一的语言 HTML,那么对 HTML 语言进行分析,找到里面的参数和连接,纪录并继续发送之,最终,找到了这个网站的众多的页面和目录。这个能力 AppScan 就提供了,这里的术语叫“探索”,explorer,就是去发现,去分析,了解未知的,并记录之。
 
  在使用 AppScan 的时候,要配置的第一个就是要检查的网站的地址,配置了之后,AppScan 就会利用“探索”技术去发现这个网站存在多少个目录,多少个页面,页面中有哪些参数等,简单说,了解了你的网站的结构。
“探索”了解了,测试的目标和范围就大体肯定了,而后呢,利用“军火库”,发送导弹,进行安全攻击,这个过程就是“测试”;针对发现的每一个页面的每一个参数,进行安全检查,检查的弹药就来自 AppScan 的扫描规则库,其相似杀毒软件的病毒库,具体能够检查的安全攻击类型都在里面作好了,咱们去使用便可。
那么什么是“彻底测试呢”,彻底测试就是把上面的两个步骤整合起来,“探索”+“测试”;在安全测试过程当中,能够先只进行探索,不进行测试,目的是了解被测的网站结构,评估范围;而后选择“继续仅测试”,只对前面探索过的页面进行测试,不对新发现的页面进行测试。“彻底测试”就是把两个步骤结合在一块儿,一边探索,一边测试。
AppScan 工做原理小结以下:
  • 经过搜索(爬行)发现整个 Web 应用结构
  • 根据分析,发送修改的 HTTP Request 进行攻击尝试(扫描规则库)
  • 经过对于 Respone 的分析验证是否存在安全漏洞

AppScan 扫描原理:扫描规则库 + 爬行 + 测试ios

 

步骤 1:探索(又叫爬行,爬网)安全

步骤 2:测试(针对找到的页面,生成测试,进行安全攻击)服务器

因此,简言之,AppScan 的核心是提供一个扫描规则库,而后利用自动化的“探索”技术获得众多的页面和页面参数,进而对这些页面和页面参数进行安全性测试。“扫描规则库”,“探索”,“测试”就构成了 AppScan 的核心三要素。而在安全扫描过程当中,如何进行优化,就要结合这三个要素,看哪些部分须要优化,应该如何优化。jsp

AppScan 结果文件ide

同时,对于 AppScan 标准版来讲,扫描的配置和结果信息都保存为后缀名为 Scan 文件,Scan 文件里面主要包括的内容以下:
  1. 扫描配置信息:扫描配置信息,如扫描的目标网站地址,录制的登录过程脚本等,选择的扫描设置等都保存在 Scan 文件中。
  2. 全部访问到页面信息:针对每一个发现的页面,即便没有进行测试,在探索过程也会访问该页面并纪录 http request/response 信息;因此若是探索的页面访问的时候返回的页面内容比较多,页面比较大,那么即便只作了探索根本没有扫描,整个 Scan 文件也会很大。
  3. 测试阶段,记录测试成功的测试变体和页面访问信息:针对每一个页面都会发送屡次测试(测试变体),每次测试都会有 Request/response 信息,这些信息若是测试经过,即发现了一个安全问题,则会把该测试变体对应得 request/response 都会纪录下来,保存在 .scan 文件中;因为 AppScan 的扫描测试用例库全面,对于每种安全威胁漏洞,都会发送多个安全测试变体(Variant)进行测试,好比对于 XSS 问题,AppScan 发送了 100 个变体,其中 30 个执行失败,70 个变体执行成功,则会纪录 70 次执行成功的具体变体信息,以及每一个变体对应的 Request/Response 信息。这就是一个很大的数据量。这些信息保存之后,就能够在不链接在网站的状况下进行结果分析,快速显示当时测试的页面快照等。
咱们以http://demo.testfire.net/bank/customize.aspx 为例,以下就有 74 个变体都发现了 Customize 页面的 Lang 参数存在跨站点脚本执行(XSS)类型的安全漏洞:

 因此针对 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.jsp?id=1 http://www.Test.com/focus/satisfy/file.jsp?id=2
  
上面的两个地址有相似的,“?”号之前的 URL 地址彻底同样,“?”号后面带的参数不一样,这种能够认为是重复页面,那么对于重复页面,是否要重复测试呢?
这取决于“冗余路径设置”,默认的是最多测试 5 次;即,这种类型 URL 出现的前 5 次,那么就是要测试 1000 个攻击用例了。
若是再继续修改下:遇到下面的 URL 呢
http://www.Test.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、木马;应用安全扫描也是同样的道理,若是有明确的安全指标或者安全规则范围,那么就选择之。这些可能来源于企业的规范,来源于政府的法律法规。就要根据你的理解,在这里选择。
在实际工做中,咱们也很难在最开始的阶段,就把扫描规范制定下来,按照项目经理们的口头禅“渐进明细”,“滚动式规划”,在实践中,更多时候也是摸着石头过河,选择了一个扫描策略,而后根据结果分析,看是否须要调整,不断优化。好比选择默认的“缺省值”扫描策略,对网站进行扫描,发现其“敏感信息”里面会去检查页面上是否含有 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 的扫描受到以下因素的影响:
  • 网站规模(页面个数,页面参数)
  • 扫描策略的选择
  • 扫描设置
而对于大型的网站,咱们常常须要从几个方面来优化配置
  • 选择合适的,最小化的扫描规则
  • 分解扫描任务,把一个大的扫描任务分解为多个小的扫描任务
  • 根据页面特色,设置能够过滤的相似页面(冗余页面)

 

参考博主:https://www.cnblogs.com/mawenqiangios/p/8573525.html网站

相关文章
相关标签/搜索