在整理资料过程中,一位朋友发给了一个链接,进去看了一下原来是国外一家安全企业的应用程序安全测试指南,感觉蛮不错就转来和大家一起学习学习。它山之石可以攻玉,但是在开展工作过程中,还是需要遵照咱们自己国家的法律法规和国家标准,本文供大家对应用程序安全渗透测试有个大致的了解,请勿利用文中提到的技术开展任何违法活动。
回复“河南等保1031”获得“黑客大曝光:Web应用程序安全(第3版)”中英文版
![应用程序安全渗透测试指南 应用程序安全渗透测试指南]()
概述
这篇文章的目的是提供一个特定于应用程序安全测试 (AST) 的综合指南,并为围绕 AST 及其价值的一些常见问题提供答案。
本指南包括:
应用程序安全测试的基础知识
进行应用程序安全测试的好处
不同类型的应用程序安全测试
SAST 和 DAST 之间的差异
OWASP 前十名
影响成本的因素
您可以从报告中得到什么
如何选择与之合作的网络安全公司
在现代数字时代,组织开发旨在实现防御性安全目标和降低风险的可靠安全计划变得越来越重要。无论组织开发自己的内部业务应用程序,外包 Web 或移动应用程序的开发以供客户使用,还是依赖开源应用程序或库,AST 都需要获得高度的网络安全保证。即使是拥有强大源代码审查流程的成熟软件开发公司也可能希望对其产品进行测试以降低风险。
应用程序中的错误或恶意代码可能使攻击者获得初始访问权限、获得高级权限、禁用安全或关键业务服务、窃取重要的公司机密、加密关键数据并要求赎金返回,或者彻底破坏公司的数据。有几种不同类型的 AST,本指南将帮助利益相关者了解它们之间的区别,并为他们的每一项资产确定正确的测试程序。
谁将从本指南中受益
处理IT安全的C级主管(CISO/CSO/安全副总裁)
其他高层管理人员(CEO/企业主/业务主管)
托管服务提供商 (MSP)
网络安全架构师、网络架构师和网络管理员
什么是应用安全测试?
AST 评估Web、移动和本机桌面应用程序和软件包,以识别可利用的漏洞并防止网络攻击。在“黑盒测试”中,渗透测试人员从没有关于目标应用程序的信息开始,并尝试以与现实世界中的攻击者相同的方式利用它。通过模拟真实世界的网络攻击,可以检查应用程序的安全性及其环境的安全控制(例如 Web 服务器配置)。在“白盒”测试中,向测试人员提供有关应用程序内部功能的信息,其中可能包括提供完整的源代码以供人工审查。“灰盒”测试介于黑盒和白盒测试之间,其中提供了一些关于目标应用程序的有限信息,以帮助渗透测试人员验证特定的安全目标,包括对内部攻击的脆弱性。
详细了解黑盒、白盒和灰盒渗透测试之间的区别。
![应用程序安全渗透测试指南 应用程序安全渗透测试指南]()
开发软件的过程称为软件开发生命周期 (SDLC),开发软件的环境称为开发运营 (DevOps)。SDLC 的阶段是:设计、构建、记录、测试和部署。理想情况下,在 SDLC 和 DevOps ( DevSecOps )的所有阶段都应考虑 IT 和应用程序安全性,但是,这并不总是可行的现实。软件开发的复杂性,结合商业利益(例如有效地开发软件)意味着错误经常会进入源代码。内部人员也有可能尝试将恶意代码植入应用程序。AST 旨在修复无意的错误或植入的恶意代码。
如果应用程序以前没有经过测试或有更改,AST 也可能对多年前发布的软件有保证。在风险缓解要求非常高的更极端情况下,AST 可以是一个连续的过程,不惜一切代价规避安全性,实现利用并提高软件产品的安全性。
软件应用程序可能会出现故障或被利用的潜在方式有很多,并且出现故障的软件应用程序可能会产生各种影响,因此 AST 需要从许多不同的角度来解决问题,以便寻找和识别所有潜在的故障点。
AST 应尝试识别但不限于:
身份管理、身份验证和授权方面的弱点
错误处理失败
输入清理失败
会话管理弱点
PKI 实施和加密弱点
可利用的第三方依赖项
允许应用程序逃逸或执行 shell 命令的弱点
业务逻辑故障
客户端安全漏洞
为什么应用程序安全测试很重要?
2021 年,公司因网络犯罪而遭受的损失估计总计达 6 万亿美元。为了应对对造成惊人损失的恐惧,公司正在增加其网络安全预算并采取更积极主动的方法来降低其网络风险敞口。根据 IBM 的报告,2021 年每起事件的平均数据泄露成本为 675 万加元,高于 2018 年的约 400 万加元。网络攻击的后果包括运营停机、品牌声誉损失、业务关系损失、以及巨额罚款和集体诉讼。
2021 年,每起数据泄露事件的平均成本为 675 万加元。
所有组织都在一定程度上依赖软件,对于现代企业而言,运营弹性取决于软件应用程序的安全性。考虑到网络入侵的破坏性有多大,公司需要通过测试和验证应用程序的安全性,以积极主动的方式应对网络安全挑战。
依赖第三方应用程序的公司非常信任他们不直接监督的商业供应商或开源开发过程。考虑到供应商为了保持盈利和竞争力而面临预算和资源限制,安全性如何让位于其他优先事项变得显而易见。AST 为特定软件应用程序的可靠性提供了更强有力的保证。
最后,在发布或销售软件即服务 (SaaS)时,例如网站、移动或桌面应用程序,重要的是要考虑制作者的品牌声誉。用户和客户信任生产商的软件,未能提供安全性可能会削弱品牌信心和利润,并导致用户转向其他替代品。
应用程序安全测试需要多长时间?
软件应用程序可以体现大量不同的技术,满足许多不同的目的,并包含广泛的复杂性。因此,测试应用程序所需的时间和资源量也有很大差异。具有许多特性和功能的应用程序通常比具有简单功能的应用程序需要更多时间来测试。此外,某些软件技术(例如应用程序的编写语言和使用的软件结构)决定了完成有效评估所需的经验、工具、技能和信息收集量。
AST 的持续时间还受到组织满足其风险要求所需的测试和保证深度的影响。黑盒测试最接近模拟真实世界的网络攻击环境,但需要时间让渗透测试组织手动收集信息。在白盒测试中,包括源代码在内的全部信息都向渗透测试实体公开,允许手动审查源代码以发现潜在的可利用性,但是这种手动审查代码也很耗时。
灰盒渗透测试通过预先提供一些信息来提高黑盒测试的效率,从而实现良好的平衡,从而使参与度接近白盒方法的深度。在大多数情况下,灰盒和白盒测试可能包括“凭据”测试,其中向渗透测试人员提供账户凭据以模拟内部攻击。认证测试可以通过专注于应用程序的关键方面来提高测试过程的效率。
分别进行黑盒测试和白盒测试作为两个单独的阶段提供了最高程度的安全保证,但需要最多的时间和资源。
不同的应用程序安全测试类型?
网络应用测试
Web 应用程序安全测试是对网站和托管基础设施进行渗透测试的过程。这些测试可以作为测试应用程序对模拟现实世界网络攻击的弹性的黑盒测试、可以加快测试过程或允许对关键区域进行更深入测试的白盒测试或灰盒测试进行。在测试过程开始之前向渗透测试人员提供了有关目标应用程序的有限信息,以加快过程并允许测试人员专注于特定目标。
Web应用程序渗透测试的一般过程是:
Web 应用程序的评估应包括 OWASP 前 10 名中的所有项目,确保实施 IT 安全最佳实践,测试应用程序所依赖的API 端点,并测试基础设施配置和服务。这应该包括服务器应用程序(Apache、Nginx、Microsoft IIS)以及基础设施上的任何公开服务,例如远程访问服务(SSH、SFTP 或 SQL)。
如果多个 Web 应用程序托管在同一台服务器上,则应测试所有应用程序,因为违反其中一个应用程序可能会导致任何和所有托管的 Web 应用程序及其数据受到损害。
移动应用测试
许多公司已经推出了自己的移动应用程序供内部使用和客户使用。移动应用程序测试可能涉及测试 Web 应用程序的移动版本,以及直接安装到 iOS 或 Android 的原生移动应用程序。移动应用程序测试包括许多与 Web 应用程序测试相同的方法,例如测试OWASP Mobile 十大漏洞、验证最佳实践以及测试 API 端点和基础设施。
然而,原生移动应用程序面临一些独特的安全挑战。例如,“root”移动设备为所有者提供了管理员权限以及检查任何已安装应用程序的文件和内存内容的能力。因此,移动应用程序安全测试应包括测试目标应用程序在设备在这些条件下运行时的反应,因为它是一个安全漏洞,可能会暴露凭据或打包源代码。
桌面软件测试
测试原生 Windows、macOS 或 Linux 应用程序可确保它们的设计安全,并降低应用程序被用于获取初始访问权限、提升系统权限或读取或修改未经授权的数据的风险。通常,应测试本机桌面应用程序的正确输入卫生、安全使用任何可以执行系统命令、映射内存和反序列化对象的功能,并且应测试应用程序逻辑以验证它可以正确实现类型检查和类型-分配变量,并且在身份验证过程中没有错误。此外,如果应用程序以管理员或 root账户运行,漏洞的风险要高得多,应用程序应该进行更严格的测试。
每个操作系统都有自己的一组潜在漏洞,因此本机桌面应用程序的测试过程取决于为其编译的操作系统。对于原生 Windows 应用程序,应验证用于加载内置函数和 DLL 的服务路径,以确保这些关键文件不能被恶意版本替换。
开源软件测试
许多应用程序是使用开源软件 (OSS) 库开发的,因为使用 OSS 可以加快开发过程,节省时间和金钱。虽然根据定义 OSS 的源代码是公开披露的,但不能保证它已经被具有安全意识的软件开发人员审查过。事实上,已经发现许多开源软件包都包含恶意代码或错误。公司还可能依赖完全开发的 OSS 应用程序来进行业务运营。
如果您的应用程序依赖于开源包,那么只有对包进行渗透测试(应包括源代码评估)才能提供最高程度的安全保证。这种观点在软件开发行业越来越受到关注,越来越多的开发人员、安全分析师和渗透测试人员正在联合起来分享与 OSS 相关的威胁情报。
动态应用安全测试
动态应用程序安全测试 (DAST) 涉及在使用时测试应用程序,可以作为白盒、灰盒或黑盒测试进行。动态分析评估访问控制是否得到安全管理、敏感数据不会暴露、应用程序正确处理错误并提供抵御攻击的弹性。Fuzzing 是 DAST 的一种高级形式,它通过提交无效、意外或随机数据来测试应用程序。
静态应用安全测试
静态应用程序安全测试 (SAST) 是通过检查其源代码来审核软件应用程序的过程,是一种白盒测试。自动源代码分析工具可以识别存在潜在安全风险的功能或包,但是,应手动检查扫描以验证其结果。源代码分析工具适用于所有流行的软件编程语言和框架,包括 iOS 和 Android 移动应用程序。
SAST 和 DAST 有什么区别?
静态应用程序安全测试(SAST)是手动检查应用程序源代码的过程,可以识别各种形式的漏洞,并且是白盒测试的一种形式,因为应用程序源代码提供给测试人员进行评估。SAST 测试在测试过程中不执行代码。SAST 被纳入软件开发生命周期 (SDLC) 以评估软件结构(函数、类、API)的安全性。
动态应用程序安全测试 (DAST)是在应用程序在生产服务器或测试环境中执行时对其进行测试的过程,它是一种黑盒或灰盒测试形式,因为未向渗透测试人员提供有关应用程序内部的信息。DAST 只能在应用程序的工作副本可用后在 SDLC 中稍后完成。
静态和动态代码分析使软件工程师和第 3 方供应商能够以高度的保证验证应用程序。
应该测试什么?
确定测试参与范围的最重要因素是被测试应用程序的类型、目标应用程序所需的风险保证程度以及应用程序带来的独特风险。被测试的应用程序类型(Web、移动、桌面、开源或专有)决定了哪些测试方法是相关的。所有类型的应用程序都应针对 IT 安全最佳实践进行测试,例如身份验证、敏感信息和文件的公开、安全错误处理、安全输入处理、已知包漏洞以及公开的服务和 API 端点。
所需的风险保证程度将决定测试的深度以及应考虑哪些高级测试程序。应该更多地关注具有更高风险的测试系统、特性和功能。一些例子是支付处理功能,以及关键的运营和业务逻辑。对应用程序的独特用途、业务运营、设计和组件的风险评估也将决定渗透测试人员应如何分配其资源。
应用程序安全测试、DevSecOps 和威胁建模之间有什么区别
AST 并不是提高应用程序安全性和弹性的唯一过程。DevSecOps 和威胁建模是另外两个值得理解并与 AST 进行比较的网络安全流程。
开发运营 (DevOps) 是一组与SDLC相关的运营实践,旨在提高软件应用程序开发的生产力、质量和效率。DevSecOps是指保护 DevOps 流程并提高最终应用程序的安全性。换句话说,DevSecOps 可能包括 AST,但 AST 也可能在 DevSecOps 范围之外使用。例如,如果组织外包应用程序开发并需要验证应用程序的安全性,则 AST 可能是公司风险管理或漏洞管理计划的一部分。
威胁建模是一个过程,旨在通过对网络攻击可能发生的方式进行建模,从而识别组织运营 IT 中的上下文风险,从而实现“设计安全”的方法。威胁建模可识别最关键的安全威胁、攻击媒介和漏洞,从而优先考虑补救措施,并有效分配防御资源。如果威胁模型将特定应用程序识别为业务运营或敏感数据暴露的高风险,则缓解措施可能包括 AST,以确保这些关键应用程序得到适当保护。
OWASP 前十名是什么?
OWASP 前十名是最关键的 Web 应用程序安全漏洞的排名列表,并根据当前的 Web 应用程序威胁环境进行排序。它既可以作为安全团队在应用程序的设计和开发阶段以及渗透测试人员在测试应用程序时寻找的基本安全问题清单。该列表还提供了安全分析师交流的常用术语。该列表每三到四年更新一次,以说明 Web 应用程序威胁环境的变化。
除了 OWASP 十大 Web 应用程序安全风险列表之外,OWASP 还维护着API(OWASP API Security Top 10)、 移动应用程序(OWASP Mobile Top 10)和云应用程序(OWASP Cloud-Native Security Top 10)的前十名列表。
当前 OWASP 十大 Web 应用程序安全风险列表如下所示,以供参考:
10.服务器端请求伪造
定期安排 AST 对于有效管理企业安全计划很重要。暴露时间是指测试之间的时间段,此时对应用程序的更改可能会引入新的漏洞。大型企业可能有连续的 AST 程序,但对于没有连续渗透测试程序的组织,测试应该在应用程序发布之前和主要或次要更新之前或其他重大更改之后进行。
组织可能需要依法执行 AST,或遵守行业标准以改善整体安全状况。对于处理支付卡数据的金融应用程序, PCI-DSS 要求公司每 3 个月或在进行重大更改后进行一次渗透测试。同样,SOC-2 类型 2 是组织对 IT 安全合规性的持续证明,需要符合企业独特运营和风险目标的渗透测试计划。
在考虑合并或收购 (M&A) 时,也建议请求访问频率、报告和补救活动等 AST 信息。这种尽职调查可以为潜在合作伙伴的风险管理实践和安全状况提供有价值的见解。
渗透测试要多少钱?
根据参与的范围和复杂性,渗透测试的成本可能会有很大差异,但高质量专业 AST 的典型范围在1万美元到6万美元之间。
影响软件安全测试成本的最重要因素包括目标应用程序的复杂性、目标是 Web 应用程序、移动应用程序还是桌面应用程序、进行的测试类型 (SAST / DAST)、数量执行的手动测试次数,以及参与的持续时间。所有这些因素都是测试开始前目标组织和渗透测试实体之间正式讨论的一部分。
通过将焦点限制在一小部分资产,或预先提供详细信息,可以降低测试成本。正在讨论渗透测试价值的组织最初可以签订一个范围狭窄的测试,以评估渗透测试提供的回报值。
安全投资回报( ROSI ) 指标是计算渗透测试 ROI 的合适方法。ROSI 是另一种 ROI 方程,旨在适应与安全相关的投资的独特性。它将潜在安全漏洞的总避免成本与渗透测试产生的成本进行比较。
ROSI 方程的广义版本是:
ROSI =(避免的安全费用-预防成本)/预防成本
例如,如果公司可以避免即使是轻微的安全漏洞,这将在明年花费 100,000 美元,并且渗透测试参与的价格估计为 10,000 美元,那么 ROSI 计算将是成本的 9 倍:
ROSI = ($100,000 - $10,000) / $10,000 = 9
报告中包含什么?
渗透测试团队一般会为每个客户创建专业的定制报告,其中包括应用评估的完整详细信息。每份报告都包含一份执行摘要,清楚地概述了评估的目标和范围,突出了所有发现的安全漏洞,并描述了应用程序的整体安全级别。
报告的正文包括用于进行每项测试的方法、具有重现步骤的技术发现、收集的证据以及有关修复被利用漏洞的信息。最后,报告最后列出了与测试的特定应用程序相关的战略和战术安全建议列表,以及必要时的信息附录。
参与渗透测试人员要求
渗透测试者角色(也称为道德黑客)是一个独特的 IT 安全角色,需要专门的培训和认证。道德黑客可能被归类为在渗透测试策略方面受过广泛培训的通才,或在渗透测试过程的某些特定方面具有更深技能的专家。专家也可以通过他们是专家的特定利用框架、协议、操作系统或利用类型来区分。
OSCP 是 Offensive Security 提供的全球公认和行业领先的道德黑客认证。Offensive Security 提供多种认证,但 OSCP 是最广泛和最知名的。Packetlabs 是一支充满激情的团队,由训练有素的道德黑客组成,拥有业界最先进的认证。团队所有渗透测试人员都必须至少具有 OSCP。
除了OSCP外,好的渗透团队还包括包括:
Windows 用户模式漏洞利用开发 (OSED)
GIAC Web 应用程序渗透测试器 (GWAPT)
GIAC 漏洞利用研究员和高级渗透测试员 (GXPN)
OSCP渗透测试专家团队能够展示行业领先的全面的渗透测试动手能力。
如何选择渗透测试提供商?
外包渗透测试的原因有很多,但主要原因是重新审视目标环境可能会揭示内部安全团队可能忽略的潜在安全弱点。这是因为内部团队可能会产生假设和盲点,而有动力和专业的渗透测试团队的新鲜眼光是不会有的。
许多内部企业安全程序使用可以识别许多已知漏洞和错误配置的自动扫描工具。但是,这些自动化测试工具无法识别所有漏洞,过度依赖它们可能会产生错误的安全感。因此,根据网络安全公司进行高级手动测试技术的能力来评估它们非常重要。
勒索软件极大地增加了网络安全漏洞对网络犯罪分子的潜在价值。这导致高技能和普遍的威胁参与者致力于开发自定义漏洞并学习网络攻击手册中的每一个技巧。专业的渗透测试团队拥有的专业知识、技能和工具,可以模拟各种真实的攻击者TTP,提供更强大的安全保障。
在选择渗透测试顾问时,应考虑许多因素,例如声誉、信任度、实体规模、他们的经验和专业程度(包括认证要求和状态)以及专门适用于目标组织环境的专业技能。
选择一个优秀的渗透团队
最佳价值和最具成本效益
尽管我们的参与价格与竞争对手的价格一致,但我们提供了竞争对手不提供的广泛的手动测试组合。自动化测试只是渗透测试的第一步,而手动测试对于发现所有安全漏洞并提供最高程度的风险保证至关重要。
具有OSCP资格的最低先决条件的高技能测试人员
采用独特的方法来寻找人才,要求要求候选人拥有最低 OSCP 认证并通过 72 小时的密集黑客挑战。入职渗透测试人员将完成持续的技能培训和实际评估。
根据业务需求量身定制的方法
渗透团队花时间了解每个范围内的组件及其在整个系统拓扑中的作用,针对评估的每个环境定制评估方法,定制方法超越了简单地运行自动软件扫描的行业标准。
直截了当、易于解释的叙述方法
报告方法遵循深思熟虑的叙述方法,不仅仅给出问题的技术描述,还展示发现对业务背景的影响。叙述性解释阐明了关键要点,并为组织的网络安全态势提供了更多洞察力。
整体测试方法和基于全面覆盖的方法
诸如软件扫描仪之类的自动化工具不足以探测应用程序,应该通过大量的手动分析和测试来增强。为了彻底彻底,渗透测试过程需要寻求识别逻辑漏洞并尝试利用所有安全场景。自动化测试只占我们工作的 5%。其他 95% 由人工模拟的现实生活中的攻击组成。
团队开发一套全面的基础方法,并不断完善网络威胁情报 (CTI) 和技能。基础方法不仅可以评估目标环境,还可以测试行业标准无法解决的可利用攻击向量,而不会影响定价。
往期更精彩
原文始发于微信公众号(河南等级保护测评):应用程序安全渗透测试指南
评论