Rational AppScan 标准版可扩展性和二次开发能力简介

下载:IBM® Rational® AppScan 标准版  |   Web 应用安全与 IBM Rational AppScan 工具包html

获取免费的 Rational 软件工具包系列,下载更多的 Rational 软件试用版数据库


一. 前言

随着信息技术的高速发展,特别是 Internet 技术的飞速发展,愈来愈来和企业商业行为以及和咱们平常生活工做相关的应用服务都须要依赖 Internet 这个信息平台来开展业务。咱们在享受方便、快捷的信息化服务的同时,也面临着信息安全问题给咱们带来的影响甚至伤害。因为网络技术日趋成熟,黑客们也将注意力从以往对网络服务器的攻击逐步转移到了对 Web 应用的攻击上。这些年来,每次对于应用安全的攻击,都将成为大事情,并对当事企业和我的带来很大的危害。应用安全目前已经成为继系统功能验证以及系统压力测试以后,逐渐被你们认识的系统质量和安全方面的第三大问题。因为应用安全问题的技术性和复杂性,包括咱们目前的技术人员,甚至包括安全技术人员,在应用安全领域都有技术缺失,所以,目前采用 Web 应用安全自动化检测工具,就成为解决应用安全问题的一个重要手段和技术方法。IBM Rational 的应用安全测试工具 Rational AppScan,就是被你们熟知的业界领先的应用安全检测工具。编程

到目前为止,Rational AppScan 在国内以及在全球的各行各业,已经具备众多的用户。在这些用户当中,虽然决大多数的用户直接使用 Rational AppScan 现有的功能,就已经可以彻底知足他们的需求。可是,也有部分用户根据本身的特殊需求,须要去扩展 AppScan 的现有功能,包括将 Rational AppScan 和企业的其余安全管理系统进行集成,甚至是 OEM AppScan 的核心功能。本文就主要介绍 Rational AppScan 标准版的可扩展性和二次开发能力。安全

二.Rational AppScan 标准版简介

IBM Rational AppScan 是对 Web 应用和 Web Services 进行自动化安全扫描的检测工具,它不但能够简化企业发现和修复 Web 应用安全隐患的过程(由于这些工做,以往都是由人工进行,成本相对较高,可是效率却很是低下),还能够根据发现的安全隐患,提出有针对性的修复建议,并能造成多种符合法规、行业标准的报告,方便相关人员全面了解企业应用的安全情况。服务器

IBM Rational AppScan 标准版是 Rational AppScan 产品家族的重要成员,是自动化 Web 应用安全性测试的桌面解决方案,一种自动化 Web 应用安全性测试引擎,可以连续、自动地审 Web 应用程序、测试安全性问题,并生成包含修订建议的问题和修复任务报告,简化修复过程。cookie

IBM Rational AppScan 标准版提供:网络

  • 核心漏洞支持:包含 WASC 隐患分类中已识别的漏洞,如 SQL 注入、跨站脚本攻击和缓冲区溢出等;
  • 普遍的应用程序覆盖:包含集成 Web 服务扫描和 JavaScript 执行(包括 Ajax)与解析;
  • 自定义和可扩展功能:全面的 AppScan SDK 支持,以及方便灵活的 AppScan eXtension Framework 装载和运行用户社区共享的开源插件;
  • 高级修复建议:展现全面的任务清单,用于修复扫描过程当中发现的问题;
  • 面向渗透测试人员的自动化功能:高级测试实用工具和 Pyscan 框架做为手动测试的补充,提供更强大的能力和更高的效率;
  • 法规听从性报告:40 种开箱即用的听从性报告,包括 PCI Data Security Standard、ISO 17799 和 ISO 27001 以及 Basel II 等。

三.Rational AppScan 标准版的可扩展性介绍

众所周知,应用安全检测工具的核心能力是应用安全规则库。IBM Rational AppScan 具备业界最全面、最准确、和更新速度最快的规则库,这些符合行业标准的规则库,是 IBM 众多应用安全专家的劳动成果的结晶,同时也展示了 IBM 在应用安全领域毋庸置疑的专家和领导地位。应用安全规则库就是安全领域的知识库,而应用安全检测工具就是经过引用和分析知识库,依据规则库的应用安全规则,来生成测试用例和测试数据。检测工具经过在 HTTP 请求中插入测试用例的办法,模拟攻击来检测和分析应用的安全问题,并生成问题报告和提出修复建议。session

根据以上对于应用安全检测工具原理和背景的介绍,你们能够了解到一款优秀的应用安全检测工具就应该围绕着应用安全规则库来进行设计和部署。AppScan 标准版虽然只是个桌面级的应用程序,但却具备着多层、松耦合的经典应用程序逻辑架构。下面咱们就详细的介绍 AppScan 标准版的逻辑架构,而这个经典的逻辑架构,也赋予了 AppScan 标准版强大的可扩展性和二次开发能力。架构

1. AppScan 标准版的逻辑架构

图 1. Rational AppScan 标准版逻辑架构

Rational AppScan 标准版逻辑架构

 

首先,AppScan 标准版的最底层也是最核心的部件是 AppScan 分析引擎。能够说,AppScan 分析引擎是 AppScan 的心脏,在分析引擎内,包括用于安全扫描和检测的模块、用于生成问题报告的信息、用于保存和装载扫描的机制,以及其余不少的核心组成部分。app

在核心引擎以外,或者说包裹着 AppScan 引擎的是 AppScan SDK,AppScan SDK 是一套完整的、具备良好定义的应用程序编程接口,用于外部世界和 AppScan 引擎的通信和交流。AppScan SDK 很是完整,他覆盖了 AppScan 引擎提供的全部功能,包括:开始扫描的动做、从新发起一个独立的安全扫描、生成一个基于 PDF 格式的报告、或者修改检测的规则。同时,AppScan SDK 可以提供对于扫描过程当中所产生信息的完整访问机制,好比:已发现的 HTML 的注解、获得“Page not found”的相应的连接、固然还包括安全问题以及相关的修复任务。同时,若是 AppScan 引擎推出新的版本,AppScan 应用程序编程接口(SDK)也会同时加强以提供访问新的功能,而与此同时,AppScan SDK 还支持向下兼容,以支持老版本的 AppScan 分析引擎。

在 AppScan SDK 之上,是 AppScan 图形用户客户端(GUI),而图形用户客户端也是咱们使用 AppScan 的最经常使用的方法。事实上,AppScan GUI 几乎彻底用于展示和交互,它经过 AppScan SDK 来获取数据和传递操做指南。尽管 AppScan GUI 是使用 AppScan 的最主要同时也是最经常使用的使用途径,可是 AppScan 还包括几种其余的使用界面。这里面就包括 AppScan 调度程序,AppScan 调度程序是用来指定和安排在特定的时间来运行扫描的组件,以及 AppScan 命令行接口。以上的两种使用界面提供了不一样的访问 AppScan SDK 的途径,并最终访问 AppScan 分析引擎的核心功能。

因为 AppScan SDK 应用程序编程接口都是公开的,而且具备完整的 AppScan SDK 文档,所以第三方的应用程序也能够很容易的使用 SDK,从而按照他们的途径来访问和调用 AppScan 的方法和功能。举个例子,当您在执行回归测试的时候,能够经过自动化的测试脚原本调度 AppScan 安全扫描,从而实现一键式的自动化测试平台。

2. AppScan 应用程序编程接口

接下来,咱们来详细的了解一下 AppScan SDK 应用程序编程接口。AppScan 应用程序编程接口是采用 Microsoft® .NET 2.0 技术实现的,这就意味着 AppScan SDK 的使用能够经过 .NET 编程语言来实现,包括:C#、VB.NET、JS.NET、IronPython,以及其余编程语言。

正如以前咱们所提到的,AppScan SDK 是很是全面的,经过它容许咱们访问 AppScan 引擎提供的任何数据和功能。由于 AppScan 图形化用户界面也是彻底经过 SDK 来和 AppScan 分析引擎交互的,因此咱们能够说,经过 AppScan 图形化用户界面能够作到的事情,直接经过 AppScan SDK 彻底能够作到。AppScan SDK 应用程序编程接口包括了访问分析引擎各类功能的同步和异步的方法,以及大量的事件用于外部的监听,从而实现基于事件驱动的方法调用。这些事件包括从完成一个扫描、发现一个单一的问题变种以及重启以前保存的扫描的各类事件信息。

最后须要指出的是,AppScan SDK 应用程序编程接口具备良好的、完整的 SDK 文档,并且 SDK 达到了很好的颗粒度水平。AppScan SDK 文档是以 CHM(Compiled Microsoft® HTML Help)的文件格式发布的,在 AppScan 标准版的安装目录下就能够找到。同时,在 AXF(AppScan eXtensions Framework)门户站点,也能够找到 AppScan SDK 文档的最新版本。关于 AXF 门户网站,咱们会在接下来的内容里介绍。关于 AppScan SDK 的详细说明,请参考 AppScan SDK 文档。

四.如何针对 AppScan 进行二次开发

经过上面的介绍,咱们能够看到 AppScan 具备设计良好的逻辑架构以及全面的、强大的应用程序编程接口。这就使得 AppScan 标准版具备强大的可扩展性。对于 AppScan 的可扩展性咱们也能够从几个角度和层面来作介绍。事实上,因为客户的使用需求不一样,因此对于 AppScan 的二次开发的要求也是不尽相同的。大致来讲,AppScan 标准版的二次开发主要有三种方式:

1.开发本身的安全检测工具

从 AppScan 标准版的介绍咱们能够得知,事实上,AppScan 标准版是一个桌面级别的应用程序。AppScan 的核心是分析引擎,而 AppScan 标准版的全部功能也都是经过调用 AppScan 应用程序编程接口获得的,所以,咱们能够认为,AppScan 标准版自己就是一个单一的图形化用户界面。

明确了上面的事实,咱们会发现若是用户想利用 IBM Rational 关于应用安全方面的核心技术,来研发出本身的一套应用安全测试方案(或者确切的说是一款应用安全检测工具),是彻底有可能。并且,事实上目前已经有用户和第三方的机构,在和 IBM 合做,经过使用 IBM 应用安全规则库,特别是 AppScan 分析引擎,来彻底实现本身的应用安全检测解决方案,咱们能够把它们称之为 AppScan 标准版的姊妹工具。

而利用 IBM 的应用安全核心技术,来开发本身的安全检测工具,也是比较可行的和很是便利的。用户只需经过调用 AppScan SDK 来调用 AppScan 分析引擎的功能,至于工具的开发,重点主要放在用户体验和工具使用方面就能够了。接下来,咱们简单介绍一下 AppScan SDK 的框架和使用。

AppScan 的 Namespace 主要有 Classes、Interfaces 以及 Enumerations 所组成,以下所示:

表 1. Classes
Class 描述
AppScanFactory AppScanFactory 是 AppScan 的主接入点。使用这个类能够建立实例接口 IAppScan。AppScanFactory 是个静态类,不可以被继承和实例化
ScanOperation 是表明 AppScan 执行的具体操做的类
ScanStatus 是表明当前扫描动做状态的类

 

 

 

 

表 2. Interfaces
Interface 描述
IAppScan IAppScan 是 AppScan SDK 的主接口。他封装着 AppScan 分析引擎的功能,同时做为任何企图访问 AppScan 分析引擎的客户端的接入点
ICustomProperties ICustomProperties 是表明 key/value 模式用户数据存储库。这个接口被 AppScan 用于让用户保存客户化的字符项
IMainFactory 用户内部使用
IScanDataLoader 将装载和保存扫描数据的操做展示出去
IScanManager 展示扫描管理操做
IVersion 用于掌控 AppScan 的版本信息。版本信息的格式是: V.R.M.F. 分别是 Version、Release、Modification 以及 Fix。构建和规则库编号不属于应用版本的内容

 

 

 

 

 

 

表 3. Enumerations
Enumerations 描述
AppScanFeature 表明各类不一样的 AppScan 功能
ScanOperationResult 表明全部可能的应用扫描结果
ScanOperationState 表明扫描操做阶段(好比:探索,测试等等 ...)
ScanOperationType 表明各类可能的扫描操做种类
VersionFlags 表明各类版本标示符

 

 

 

 

 

使用 AppScan SDK 进行图形化用户界面的开发,须要调用 AppScan 的库文件,并引用 AppScan 的命名空间。下面咱们举个例子,说明如何使用类 AppScanFactory 来建立接口 IAppScan:

清单 1. 使用类 AppScanFactory 来建立接口 IAppScan
Namespace: AppScan Assembly: AppScanSDK (in AppScanSDK.dll)

 

语法

Visual Basic (Declaration) Public NotInheritable Class AppScanFactory C# public sealed class AppScanFactory C++
ref class AppScanFactory sealed J# public final class AppScanFactory JScript public final class AppScanFactory

 

代码示例

using AppScan; using System; class MyClass { public static int Main() { IAppScan appScan = AppScanFactory.CreateInstance(); Console.Out.WriteLine(appScan.Version.ToString()); } } 

 

2.AppScan 标准版插件的开发

相比开发本身的安全检测工具来讲,绝大多数的用户仍是倾向于直接使用 AppScan 标准版,同时又但愿可以很方便的去扩展 AppScan 标准版的功能。而 AppScan 标准版自己就具备强大的插件管理框架,咱们称之为 AppScan eXtensions Framework,而 AXF 的基础就是 AppScan 的体系架构,特别是 AppScan SDK 应用程序编程接口。AppScan eXtensions 是一些独立的 AppScan 标准版的插件,这些插件提供一些附加的功能,用于扩展标准版的能力。AppScan eXtensions 插件在 AppScan 标准版应用程序启动时被 AppScan 加载,从而可以立刻访问 AppScan SDK,AppScan eXtensions 插件将以多种方式挂载和嵌入 AppScan 标准版的用户界面。这边须要强调的是,AppScan eXtensions 插件和 AppScan GUI 图形用户界面并非同级的,AppScan eXtensions 插件的安装、调用和运行都要依赖于 AppScan GUI,并须要和 AppScan GUI 进行交互。以下图 2 所示:

图 2. AXF 和 AppScan GUI 的关系

图 2. AXF 和 AppScan GUI 的关系

AppScan eXtensions 和 AppScan GUI 访问 AppScan 分析引擎的方式是同样的,都是经过相同的 AppScan SDK 来和分析引擎进行交互。这种访问方式就使得 AppScan eXtensions 和 AppScan GUI 具备相同的功能和同样的强大,事实上 AppsScan eXtensions 和 AppScan GUI 所能访问到的 AppScan 核心功能是相同的。对于用户的使用和交互,AppScan eXtensions 还能够对于 AppScan 用户界面进行一些特殊的控制。这些控制包括:菜单栏项目、右键菜单项目、工具栏项目等等。同时,AppScan eXtensions 还能够打开本身的窗体和用户界面对话框,以及实现其余的功能和用户使用加强。AppScan Extensions 能够以各类不一样的形式和用户界面嵌入到 AppScan 标准版的图形化用户界面当中来。这些窗体和用户界面能够很小(能够什么都不作只是从用户界面到 Windows 剪切板进行数据的拷贝),同时也能够很大(好比 SQL 注入探测工具)。AppScan Extensions 能够是前摄式的(执行一个扫描,生成报告等等),也能够是事件驱动式的(好比当发现一个安全漏洞时,能够发送一个 e-mail 信息)。同时 AppScan Extensionsde 的运行还能够大量的依赖使用人员的交互(好比提示用户输入用于手工测试时信息),或者彻底的自动化(好比静默得将扫描结果导入到共享网络的 XML 文件里)。

整体来讲,AppScan Extensions 具备 AppScan GUI 一样强大的功能,能够实现开发者想要的任何功能。接下来,咱们回顾一下对于 AppScan Extensions 的使用,经过一些简单的例子,咱们来学习一下这些 AppScan Extensions 是如何来实现咱们指望的一些需求的。

一个最多见的对于 AppScan eXtensions 的应用就是支持你的流程。通常来讲,运行 AppScan 只是咱们发现和修复安全问题的一个阶段。好比:这个流程还可能包括读取应用程序的详细信息从而从某个在线的协做平台来开始一个安全扫描,或者在安全扫描以后将发现的应用安全问题导出到缺陷跟踪系统当中。AppScan eXtensions 能够以自动化的方式来执行这些动做,从而节省你重复执行这些任务的时间。

功能的缺失是另一个使用 AppScan eXtensions 的常见状况。有些时候咱们会发现 AppScan 没有提供咱们所须要的一些小功能,而这些小功能的缺失又确实会影响咱们的工做或者浪费咱们的时间,这时候咱们就能够很容易经过开发 AppScan eXtensions 插件来知足这些功能,从而让咱们摆脱暂时的困境。

第三个使用 AppScan eXtensions 的场景是须要将 AppScan 和其余的工具进行集成,好比网络安全检测工具,数据库安全检查工具以及不少其余的工具。在这些工具之间复制配置是一件很是浪费时间的差事,包括使用多个用户界面也会使问题恶化,以及管理不一样的多个工具所产生的结果数据来支持统一的应用审计也是一个很大的问题。AppScan eXtensions 能够很容易的调用和执行这些工具,将这些不一样工具所产生的数据都导入 AppScan 存储库,从而使用 AppScan 强大的报表框架来生成报告。

第四个典型的使用 AppScan eXtensions 的场景是创新。安全研究人员时常会萌发出一些新的测试理念和技术,您常常会发现本身须要编写很长的代码用于链接站点(处理代理和 SSL)、登陆一个网站(跟踪 session cookies 和一些动态的组件)、以及展示结果数据。AppScan 和 AppScan SDK 提供了一个强大的框架用来支持从新发明,咱们能够开发出一些独立的 AppScan eXtensions 用于功能验证和创新,而这些改动又不会影响现有的 AppScan 标准版程序。

AppScan eXtensions framework 可扩展插件框架容许你扩展功能以知足个性化的需求,而这些需求一般又具备广泛性(固然通常来讲都会稍许有些不一样)。一个用户可能但愿将 AppScan 发现的一些安全问题导入到 IBM® Rational® ClearQuest®工具当中,而另一个用户又可能但愿将安全问题导入到工具 Bugzilla 当中,而实现这两个需求的插件从功能上来讲不少地方是相同的。为了使 AppScan 的用户和 IBM 实验室能有个很好的协做和互动,经过最简单的方式共同研究和开发最好的 AppScan eXtensions 插件,IBM 针对 AppScan eXtensions 建立和维护了一个专门的信息门户网站 AppScan eXtensions Portal。这个门户网站提供关于 AppScan eXtensions 的各类不一样的信息,包括:开发 AppScan eXtensions 插件的详细指南以及最新的产品文档和插件案例。AppScan eXtensions Web Portal 具备网络社区的各类功能,好比:论坛和意见提交系统,以及其余更进一步提高不一样用户协做和交互的功能。

AppScan eXtensions Portal 门户网站还包括全部目前发布的 AppScan eXtensions 插件案例,这些插件有些是 IBM 本身开发的,有些是由 AppScan 的一些用户开发的。你能够下载和安装这些插件,并经过简单的点击就能够实现你所须要的一些特定的功能。用户能够免费的使用这些插件,每一个插件都有本身的信息页面,来提供插件信息,包括为何和如何使用它们,以及必须的安装操做说明。AXF Portal 门户网站所提供的几乎全部的 AppScan eXtensions 插件都是开源的,这些插件的源代码均可以在 Google Code Web 站点上找获得。AppScan eXtensions 的开源精神自己就是 AXF Protal 门户网站的基石,插件的开源能够很方便的让用户去修改已有的插件从而知足其个性需求,或者加强现有插件以弥补功能上的一些缺失。而这些加强的 AppScan eXtensions 插件又能够从新发布到 AXF 门户网站上来,帮助论坛上其余的用户更好的使用 AppScan。

Appcan 标准版提供 AppScan eXtensions 插件管理器,来帮助用户安装 AppScan eXtensions 插件,或者管理现有的插件。AppScan eXtensions 插件管理器以下图 3 所示:

图 3. Rational AppScan eXtensions 插件管理器

图 3. Rational AppScan eXtensions 插件管理器

你能够经过 AppScan 标准版的“工具 > 扩展 > 插件管理器”来打开 AppScan eXtensions 插件管理器。插件管理器罗列了现有的已安装的插件,容许你启用和不启用这些插件。不启用并非删除,而是在 AppScan 下次启动时不加载这些插件。若是你想获得关于下载和安装 AppScan 插件的演示视频,你能够访问 AXF Portal 门户网站

3.经过命令行扩展 AppScan

AppScan 标准版不但包含图形化用户界面,同时还包括命令行界面,也就是说 AppScan 标准版的功能能够经过使用“命令行界面”来执行,即不使用“图形化用户界面”,而是出现命令提示符时输入命令,来执行 AppScan 的相关操做,使用 AppScan 的相关功能。

你们知道,一个工具若是提供命令行的使用界面,将给该工具的使用赋予更多的灵活性,这些命令行功能,在您须要自动从脚本或批处理文件中控制 AppScan 时特别有用。从命令行中,您还可使用 AppScan CMD 命令来启动 AppScan 的图形界面。若是说 AppScan eXtensions 是扩展 AppScan 标准版的现有功能的话,那么使用命令行就是专一于如何使用 AppScan 了。

AppScan CLI 命令的结构是这样的,包括三个部分:

  • 实用程序命令:AppScanCMD
  • 将执行的特定命令,例如:exec
  • 所选命令必须的选项,例如:/base_scan < 完整路径 >/d < 完整路径 >

AppScan CMD 主要包括如下一些命令:

  • Help 命令:help 命令会列显本节中描述的命令用法
  • Exec 命令:
    • exec 命令会建立与所指定基本扫描具备相同配置的新扫描
    • 执行扫描(“探索”和“测试”步骤)并将扫描结果保存到指定目录
    • 还能够选择将其用于生成和保存新扫描的报告
  • Report 命令:report 命令用于装入指定的扫描和生成报告
  • AppScan CMD 还包括完整的“退出状态”代码

下面咱们举个例子来讲明为何和如何来使用 AppScan CMD 命令行。咱们知道,应用安全属于信息安全领域,同时也属于系统测试领域。从完整的系统测试的角度来讲,不但包括功能测试、性能测试,同时也包括系统应用安全测试。若是咱们的客户拥有本身的一套系统质量和测试管理平台,而又想把 AppScan 集成到这个平台当中来,把 AppScan 标准版做为一个自动化的安全测试终端来用。这个需求就能够经过 AppScan CMD 命令行来实现,包括:AppScan 安全扫描的调度、扫描过程的监控和控制、以及扫描结果的同步和集成。集成质量测试管理平台来调度 AppScan 的命令的例子以下:

  • AppScanCMD exec /base_scan < 完整路径 > /d < 完整路径 >

此命令将使用所选基本扫描的配置来运行新的扫描,并将结果保存在特定位置。关于 AppScan 标准版命令行界面的详细使用说明,请参考 AppScan 标准版使用手册。

五. 总结

综上所述,AppScan 标准版具备设计良好的逻辑架构,和完整全面的 AppScan SDK 编程接口。而 AppScan 逻辑架构和 SDK 编程接口,就赋予了 AppScan 标准版无限的、和多种的可扩展性和二次开发能力。而这些可扩展性和二次开发的方法又适用于不一样用户的不一样使用要求。若是您很是关注用户使用界面,甚至想开发一套本身的应用安全检测工具,可是暂时又没有能力去开发和维护底层的应用安全规则库和扫描引擎,你彻底能够和 IBM 合做,采用 IBM 业界领先的应用规则知识库和规则引擎,同时经过 AppScan 强大的编程接口来开发展示自身理念的图形化客户端;若是 AppScan 标准版已经能知足您的绝大多少的需求,您只是想经过开发一些小插件来扩展 AppScan 标准版的功能,你能够利用强大的 AppScan eXtensions 插件管理器,来安装和管理现有的一些 AppScan eXtensions 插件,或者加强和开发新的 AppScan eXtensions 插件;若是 AppScan 已经能知足你的安全检测功能上的需求,你只是但愿可以将 AppScan 集成到您现有的安全管理平台当中,或者直接把 AppScan 标准版做为一个扫描探针来用,或者经过脚原本实现自动化的批处理活动,这时 AppScan CMD 命令行接口就能知足你这方面的需求。

相关文章
相关标签/搜索