对抗攻击分为两类 —— 白盒攻击和黑盒攻击,前者知道模型的全部信息,后者只知道部分信息。在实际操作中,我们遇到的大多情况是后者。因而,黑盒攻击在实际应用中比白盒攻击更实用。
最近疫情好像回到2年前卷土重来。各地都在贴出防疫守则,防范、修补漏洞,希望保护好每一个人同时不给机构增添麻烦。
要完全恢复到正常的经济生产活动,使民生得以有序进行,需要有效疫苗的研制和生产;软件环境的正常运行,某些程度也像社会环境要变得有机且可持续一样,也需要检测并提前规避安全漏洞。
作为行业小白,在了解DAST时,发现二者在原理机制上好像有一些相通的地方。
疫苗的研制是在识别病毒蛋白的结构后进行,我们打疫苗大致就类似“人体应用”的白盒测试了。但即便我们知晓病毒的所有蛋白结构,但它仍然具有可变异性,其本身的动态进化也是它如此顽强的原因所在。
对应到软件测试领域,比白盒测试功能更胜一筹的是黑盒测试 DAST,即在只知道部分信息,也能通过测试提前预知大部分漏洞,这是DAST比SAST强一些的功能,同时 SAST也有DAST覆盖不到的地方。
认识 DAST
一、什么是动态分析测试DAST
为了发现软件的漏洞和缺陷,确保Web应用程序在交付之前和交付之后都是安全的,就需要利用Web应用安全测试技术识别Web应用程序中架构的薄弱点和漏洞,并且必须赶在网络黑客找到和利用它们之前。
动态分析测试DAST就是Web应用安全测试的一种技术,也称黑盒安全测试。多指从外部测试应用程序。这种测试方法不需了解应用在系统级别的内部交互或设计,也不需要访问或查看源程序,就可以检查正在运行的应用。
这种黑盒测试从外到内均可查看应用,检查应用的运行状态,并仔细观察它对工具模拟攻击的响应情况。观察应用对这些模拟的响应可以帮助了解和确定是不是容易受到攻击,以及受到真正的恶意攻击的情形。
二、DAST的工作原理
DAST通过模仿恶意攻击者,模拟自动攻击应用发挥作用,其目标就是发现可能被攻击者袭击或损害应用的预期之外的后果或结果。
DAST执行原理:
从攻击者的视角对其进行分析,从而识别潜在的漏洞,并在正在运行的应用中寻找可利用的缺陷。
1、传统DAST 解决方案
—— 提供运行时 Web 应用的动态扫描和分析
部分环节:从至少一个日志文件采集日志文件数据,可以根据采集的日志文件数据生成对练习web应用以执行web应用的安全分析的至少一个HTTP请求,可以向web应用传达HTTP请求,可以接收对HTTP请求的至少一个HTTP响应。可以分析HTTP响应以执行web应用的验证,可以输出验证的结果。
2、现代DAST 解决方案
——结合 Web 和 API 扫描、渗透测试和模糊测试识别被攻击的后果。
部分环节:对已知样本进行突变,突变样本按队列执行测试并获取执行路径位图,测试进程崩溃则针对新崩溃样本保存当前突变样本,测试进程未崩溃则根据执行路径位图判断突变样本价值,若有则将突变样本加入有效样本队列,否则丢弃样本,直至队列处理完毕,取有效样本队列中的突变样本再次突变并重复模糊测试,扩大测试覆盖面。
在调用API前满足前置条件,使用路径反馈约束突变样本,有效提高模糊测试覆盖面,可高效率进行模糊测试,提高发现Windows内核提权漏洞的可能性,可以针对Windows下所有系统API调用进行模糊测试,保证获取样本执行路径的速度。
此外,还有下一代技术工具解决方案 —— 交互式应用安全测试 IAST。
在软件测试中,多种不同类型的DAST解决方案,有着与免疫系统识别病毒相类似的原理(冥冥中指证着宇宙间遥远的相似性这一假说?)。
疫苗研制的技术路径及原理
1、传统的灭活疫苗:攻击病毒,将病毒残片放入人体,让免疫系统了解病毒的模样,提前准备。
2、重组蛋白疫苗:重组蛋白疫苗,了解疫苗蛋白结构再合成工艺。
3、扩展性强的病毒载体疫苗:拆解病毒,制造良性病毒,加速病毒弱化,但时间长且腺病毒载体不一定能合上。
4、热门的MRNA疫苗:把因破译病毒蛋白后的病毒结构写进去,人体细胞自己生长病毒“模特”,然后免疫系统自我认知。
三、DAST 和 SAST 的区别
静态应用安全测试 SAST与 DAST 使用相反的方法。
在全面了解内部工作(源代码、二进制等)的情况下,从内到外查看应用。这种“白盒”测试的目标是识别代码问题。在 SAST 期间,应用不会运行,因为 SAST 检查的是应用的源代码,而不是它在运行时的表现。SAST 审查应用的数据和控制路径是否存在安全弱点。
SAST 使用时间阶段:
在软件开发生命周期 SDLC的早期使用,可迭代提供结果,同时开发人员为应用创建代码段,以组成持续集成/持续部署 CI/CD方案。
SAST 的分析结果可以识别确切的薄弱代码行,帮助开发人员在编码过程中解决软件问题。
DAST使用时间阶段:
理论上可以在 SDLC 的构建集成阶段及早期使用 ,但在实际操作中通常都是在稍后的测试和生产阶段才使用。在这些后期阶段,应用已经构建完成,因此可以在运行时进行分析。
DAST 可以识别潜在的漏洞,但不能识别薄弱代码所在的行。
四、DAST 的作用
DAST 扫描程序在扫描 Web 应用程序之前首先对其进行爬网。这让扫描器可以找到 Web 应用程序中页面上所有暴露的输入,然后对这些输入进行一系列漏洞测试。
DAST 测试可以查找范围广泛的漏洞,包括可能使应用程序容易受到跨站点脚本或 SQL 注入攻击的输入/输出验证问题。
DAST 测试可以帮助发现配置错误和错误,并识别应用程序的其他特定问题。
大多数 DAST 解决方案仅测试支持 Web 的应用程序公开的 HTTP 和 HTML 接口。但是,也有些解决方案是专门针对非Web协议和数据畸形设计的,例如远程过程调用、会话发起协议等。