安全测试学习day two

本博客仅作为学习之用,上课内容总结

安全测试

基于渗透测试的方法或基于模糊测试的方法完成安全软件的测试过程

1.安全测试概述
  1. 安全测试概念

反映真实的攻击情形
从攻击者角度出发,发现漏洞并修复,保证软件不被恶意攻击者破坏

  • 分为安全功能测试和安全漏洞测试两个方面

安全功能测试:需要制定合理的测试策略,怎么生成能映射到所有子系统的测试用例
安全漏洞测试:致力于找出能够造成软件运行错误甚至导致用户遭到攻击的安全漏洞

功能测试:

A.保密性测试

  • 数据验证
  • 加密算法验证

检测加密算法的强度
检测伪随机数产生方法
加密密匙不能被明文硬编码到程序源代码中,密匙的生成、交换、存储和丢弃过程也必须被验证

  • 其他安全问题

未对加密数据进行签名
身份验证算法有缺陷,身份标识的唯一性和随机性需要进行验证

B.完整性测试:

  • 数据完整性:文件、数据库
  • 系统完整性:是否未经授权进行更改,包括日志完整性、文件完整性、注册表完整性等

C.可用性测试

  • 测试软件能够达到预期使用目的的程序(有效性)
  • 测试软件达到目的所花费的资源(效率)
  • 测试用户发现该产品使用可接受的程度(用户满意度)

D.可认证性测试

  • 身份认证测试:用户账户命名规范、认证密钥的管理、认证凭证的管理

  • 数据源认证测试:信息接收者验证信息发送者的身份、确认信息在离开信息发送者后的完整性以及消息的新鲜性

E.授权测试

  • 明确软件是如何实现访问控制⽬标的,以及是否可以利⽤这些信息来绕过授权机制。
  • 检查⽤户的权限是否进⾏了适当的等级划分。
  • 检查⽤户登录和权限分配的情况

安全漏洞测试:

  • 通⽤安全漏洞测试

SQL注⼊:将语句注⼊到拼接的SQL语句中,使原SQL语句的语义发⽣改变
敏感信息泄露:错误信息中包含源码信息、暴露物理路径、暴露应⽤配置信息
跨站点请求伪造:引诱已经通过验证的⽤户,使其发送不可预知的请求

  • 应⽤内部安全漏洞测试

程序逻辑漏洞:程序的内部逻辑错误,导致程序出现bug。
绕过客户端限制:绕过⻓度、特殊字符、格式⽂件等等限制,使得程序崩溃。
请求构造越权操作:低权限⽤户构造⾼权限⽤户请求。

  1. 安全测试分类
  2. 安全功能测试
  3. 安全漏洞测试
2.安全测试策略
3.基于代码分析的安全策略
4.基于模糊的安全测试方法

4.1 模糊测试概述

模糊测试(Fuzz测试)⽣成畸形的数据并使应⽤程序去运⾏这些数据,然后观察应⽤程序的反应。不够健壮的代码在处理这些数据时会崩溃,特别是在处理这些数据时没有检查数据是否正确和完整。与其他⽅法相⽐,模糊测试不需要程序的源代码,也不受限于被测系统的内部实现细节和复杂程度。

4.2 模糊测试⽅法

  • 预先生成测试用例

测试⽤例的开发始于对⼀个专⻔规约的研究,其⽬的是为了理解所有被⽀持的数据结构和每种数据结构可接受的值范围。预先⽣成的测试⽤例可以⽤于检验⽬标系统实现规约的精确程度。虽然⽣成这些测试⽤例需要事先完成⼤量的⼯作,但是其优点是在测试相同协议的多个实现或⽂件格式时⽤例能够被⼀致地重⽤

  • 随机方法

可以⽤于快速发现⽬标软件是否是彻头彻尾的恶意代码。随机⽅法只是简单地⼤量⽣成伪随机数据给⽬标软件,希望得到最好的或者最坏的结果。

  • 协议变异人工测试

在加载了⽬标应⽤程序之后,研究者仅仅通过输⼊不恰当的数据来试图让服务器崩溃或者产⽣⾮预期的⾏为。此类模糊测试⽅法常⽤来测试Web应⽤程序。

  • 变异或强制性测试

强制性是指模糊器从⼀个有效的协议或数据格式样本开始,持续不断地打乱数据包或⽂件中的每⼀个字节、字、双字或者字符串。这种⽅法不需要事先对被测软件进⾏任何研究,实现⼀个基本的强制性模糊器也⽐较简单

  • 自动协议生成测试

⾃动协议⽣成测试是⼀种更⾼级的强制性测试⽅法。需要⾸先进⾏前期的研究,即理解和解释协议规约或⽂件定义。在这种测试⽅法中,需要识别数据包或⽂件中的静态部分和动态部分。模糊器会动态解析所有模板,⽣成模糊测试数据,然后向被测⽬标发送模糊后产⽣的包或者⽂件。

常规步骤

  • 识别测试⽬标
  • 识别⽤户输⼊
  • ⽣成Fuzz测试数据
  • 执⾏Fuzz测试数据
  • 监视异常
  • 确定可利⽤性

4.3 模糊器类型
本地模糊器

  • 命令⾏模糊器

Warlock的clfuzz ⽤于测试应⽤程序中的格式字符串和缓冲区溢出漏洞。
Adam Greene的iFuzz ⽤于测试应⽤程序中的格式字符串和缓冲区溢出漏洞。

  • 环境变量模糊器

Dave Aitel的Sharefuzz 中途拦截对getenv函数的调⽤信息并返回恶意数据
Adam Greene的iFuzz 包含了基本的环境变量模糊能⼒。

远程模糊器

  • ⽹络协议模糊器

Aitel的SPIKE 包含多种流⾏协议的预⽣成的模糊测试脚本,可以作为⼀个API来使⽤。
Michael Eddington的Peach ⽤Python编写的跨平台模糊器。

  • web应用模糊器

OWASP的WebScarab 开源的Web应⽤程序审核套件
SPI Dynamics的SPI Fuzzer 商业的HTTP和Web应⽤程序模糊器,包含在WebInspect漏洞扫描器中。

内存模糊器

每个测试⽤例执⾏之后,以前所记录的快照被存储下来并且注⼊新的数据。

4.4 模式测试实例:AFL⼯具

使⽤Fuzz⼯具AFL对软件进⾏⽩盒测试:

  1. 测试插桩程序 编译好程序之后,追踪单个输⼊的执⾏路径,并打印程序执⾏的输出、捕获的元组tuples,每个tuple⽤于获取分⽀信息,可以衡量程序的覆盖情况。
  2. 执⾏Fuzzer ⼯具对输⼊队列中的⽂件进⾏预处理;然后给出对使⽤的语料库可警告信息;最后开始Fuzz主循环,显示状态窗⼝

4.5 模式测试实例:浏览器的模糊测试

由于Web浏览器的功能在不断增加,获得完整的代码覆盖是⼀项艰巨的⼯作。因此,使⽤多种⼯具和⽅法来执⾏⼀个完整的测试。
模糊测试输⼊:

  1. HTML头:浏览器接收的第⼀个数据⽚段,头部包含的重要信息可以影响Web浏览器的⾏为,以及显示后续内容的⽅式。
  2. HTML标签:许多私有标签被特定的Web浏览器所使⽤的,并且Web浏览器可以解释多种类型的标记语⾔,这些语⾔引⼊了很多可能产⽣漏洞的机会。
  3. XML标签:Web浏览器可以解析并解释XML元素及相关的属性和内容。如果浏览器遇到了⾮预期的数据,可能导致异常。
  4. ActiveX控件:Web浏览器嵌⼊ActiveX控件对功能进⾏扩展。ActiveX控件的功能⾮常强⼤,⼀旦得到信任,可以对操作系统进⾏完全的访问。

编写模糊测试Fuzzer程序(以输⼊HTML为例):

  • 明确⽬标:Fuzzer能够⾃动化的对浏览器进⾏模糊测试并对异常进⾏监控。
  • 思路:输⼊静态HTML,然后通过函数调⽤启动浏览器进程,⽤调试器挂在浏览器进程,最后让浏览器处理HTML
5.基于渗透的安全测试方法

5.1 渗透测试概述

渗透测试是通过模拟恶意⿊客的攻击⽅法,来评估计算机⽹络系统安全的⼀种评估⽅法。它对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从⼀个攻击者可能存在的位置来进⾏的,并且从这个位置有条件地主动利⽤安全漏洞,去发现是否存在相应的信息资产。

根据传统的测试分类⽅法可以将渗透测试分为以下三种类型:

  • ⿊盒测试 测试⼈员只知道系统的基本功能,完全依赖于渗透过程中⽣成的⽇志信息。
  • ⽩盒测试 ⽩盒测试多被应⽤于审核内部信息管理机制,测试⼈员可以利⽤掌握的资料进⾏内部渗透测试。
  • 隐秘测试 ⼀种增强的⿊盒测试,对于受测系统来说该测试处于保密状态。

5.2 渗透测试过程

  • 前期交互

渗透测试团队和⽤户进⾏讨论沟通,确定渗透测试的范围和⽬标、限制条件等等。该阶段主要需要收集客户需求,准备测试计划,定义测试范围和边界,定义业务⽬标,制定项⽬管理和规划。
明确渗透测试范围是渗透测试的第⼀步。测试⼈员需要考虑:渗透测试的⽬的是什么,渗透测试过程中有什么限制条件,渗透测试是否需要与安全团队合作,是否可以使⽤拒绝服务攻击等等

  • 情报收集

情报收集分为主动收集和被动收集。主动收集与⽬标系统直接交互,可以通过⼯具扫描来获取⽬标信息;被动收集是通过⽹络获得对渗透测试有⽤的相关⽬标信息,可以使⽤搜索引擎来搜集。
收集到信息之后还需要对信息进⾏整理分类,提取出对渗透有⽤的信息。情报收集的结果将会决定渗透测试的成败。

  • 威胁建模

根据上⼀阶段收集的信息,从攻击者的⻆度确定⾏之有效的攻击路径和⽅法

  • 漏洞分析

使⽤上⼀阶段确定的攻击路径,在实际环境中测试系统漏洞。

  • 渗透攻击

真正地⼊侵到⽬标系统中,获取访问控制权。由于⼀般的系统都是有安全设备防护的,渗透测试⼈员需要考虑如何绕过这些安全防护监测机制。

  • 后渗透攻击

以特定业务系统为⽬标,找到⽤户最需要保护的资产,需要从⼀个系统攻⼊另⼀个系统,判断系统的作⽤

  • 报告

渗透测试⼈员需要从⽤户的⻆度考虑如何防御已知攻击。⼀份完整的报告应该包含按照严重等级排序的弱点列表清单、弱点详细描述以及利⽤⽅法、解决建议、参与⼈员、测试时间等等

5.3 渗透测试⼯具

Sqlmap:⽤来检测与利⽤SQL注⼊漏洞的免费开源⼯具,⽀持以下5种注⼊技术:基于布尔类型的盲注,基于时间的盲注,基于报错注⼊,联合查询注⼊以及堆查询注⼊。

Nmap:Nmap (⽹络映射器)是Gordon Lyon最初编写的⼀种安全扫描器,⽤于发现计算机⽹络上的主机和服务,从⽽创建⽹络的“映射”。为了实现其⽬标,Nmap将特定数据包发送到⽬标主机,然后分析响应。

5.4 渗透测试实例:SQLmap⼯具 5.5.5 渗透测试实例:ECShop渗透测试

  1. 信息收集查看系统源码,寻找当前的系统版本。除了系统版本,库⽂件版本、插件版本等等信息都应作为信息收集的⼀部分。
  2. 漏洞查询&漏洞利⽤根据收集到的信息,查找特定版本的通⽤漏洞,判断这些漏洞能否被利⽤
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值