1.模糊测试概念:

模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。
我们使用维基百科的这个定义,然后着重讲一下“随机数据”长什么样,又如何“输入到另一个程序中”。

2.模糊测试方法:

模糊测试(fuzz testing)和渗透测试(penetration test)都是属于安全测试的方法,它们有同也有异。
渗透测试:渗透测试一般是模拟黑客恶意入侵的方式对产品进行测试,对测试者的执行力要求很高,成本高,难以被大规模应用。
模糊测试:模糊测试通过向应用提供非预期的输入并监控输出中的异常来发现软件中缺陷,整个执行过程依靠工具进行自动化或半自动化测试。模糊测试技术具有自动化程度高、可用性好、误报率低, 对目标程序源码没有依赖等优点。它能够充分利用机器本身,随机生成和发送数据;与此同时,又能够引进业内安全专家在安全性方面的建议。模糊测试其数据具有不确定性,也没有明显的针对性,简单来说就是没有逻辑,没有常理。只要将准备好的那些杂乱的程序插入其中,然后等待bug的出现,而出现的漏洞是渗透人员先前无法预知的。

模糊测试执行过程主要包含几个基本阶段:
(1)识别测试目标
确定明确的测试目标,才能决定使用的模糊测试工具或方法。比如需要选择应用包含的特定文件或者库作为测试目标,需要把注意力放在多个应用程序之间共享的那些二进制代码上。因为如果这些共享的二进制代码中存在安全漏洞,将会有非常多的用户受到影响,因而风险也更大。

(2)识别输入
大部分可被利用的安全漏洞都是由于应用没有对用户的输入进行校验或是进行必要的非法输入处理。是否能找到所有的输入向量(Input vector)是模糊测试能否成功的关键。寻找输入向量的原则是:从客户端向目标应用发送的任何东西,包括头(Headers)、文件名(File Name)、环境变量(Environment variables),注册表键(Registry keys),以及其他信息,都可能是潜在的模糊测试变量。

(3)生成模糊测试数据
大多数模糊测试的方法是通过向目标系统不断输入可以诱发软件缺陷的测试数据,因此测试数据的生成是模糊测试非常关键的环节,主要依赖测试目标系统的特点和数据格式进行生成。

(4)执行模糊测试数据
自动化地向被测的系统发送数据包、打开文件、或是执行被测应用的过程。这个阶段一般与生成测试数据并行进行。

(5)监视异常
监控异常和错误是模糊测试中重要但经常容易被忽略的步骤。模糊测试需要根据被测应用和所决定采用的模糊测试类型来设置各种形式的监视。

(6)判定发现的漏洞是否可被利用
在模糊测试中发现了一个错误,需要判定这个被发现的错误是否是一个可被利用的安全漏洞。这种判定过程既可以由模糊测试的执行者来进行,也可以交给安全测试专家来进行。
模糊测试技术的应用十分广泛, 可以测试的对象种类繁多, 比如环境变量和参数、 Web 应用程序、文件格式、网络协议、Web 浏览器和物联网系统等方面。

3.模糊测试工具:

半自动模糊测试工具burpsuite

bed只能对协议的标准请求、标准头部进行模糊测试,对http的post等自定义的主体的各项是没法进行模糊测的,但其实这部份才是我们要测试的主要部分,所以单依靠bed是不行的。
burpsuite的intruder就是一个高度可配置的模糊测试功能,intruder只要设置好变量然后在payloads中设置好测试用例,即可进行模糊测试。

全自动模糊测试工具backfuzz

工具下载 https://github.com/localh0t/backfuzz

详细运行结果见案例分析

手动编写模糊测试工具boofuzz


一个小姑娘照片,很可爱的boofuzz工具
工具下载 https://github.com/jtpereyda/boofuzz

WEB管理界面:http://192.168.56.113:26000

详细运行结果见案例分析

分析

1、模糊测试的优点
与传统漏洞挖掘方法相比, 模糊测试技术有其无法比拟的优势。模糊测试的测试目标是二进制可执行代码, 比基于源代码的白盒测试适用范围更广;模糊测试是动态实际执行的,不存在静态分析技术中存在的大量误报问题;模糊测试的原理简单,没有大量的理论推导和公式计算,不存在符号执行技术中的路径状态爆炸问题;模糊测试自动化程度高,不需要逆向工程中大量的人工参与。模糊测试技术的优点使它成为一种应用范围广泛的漏洞挖掘技术。
2、模糊测试的局限性
(1) 对访问控制漏洞无能为力,因为模糊测试系统无法理解程序的逻辑,所以如一些违反权限控制的安全漏洞难以发现。
(2) 受制于糟糕的设计逻辑。糟糕的设计逻辑并不会导致程序崩溃,而模糊测试发现漏洞一个主要依据是监控目标系统的异常和错误信息,因此模糊测试难以发现这类漏洞。
(3) 无法识别多点触发漏洞,当前的模糊测试技术往往只能挖掘出由单个因素引起的漏洞,而对于需要多条件才能触发的漏洞却无能为力。

建议

1、目前,Web应用中存在大量拒绝服务(Dos)、跨站脚本(XSS)、SQL注入(SQL injection)等漏洞,Web应用模糊测试不仅可以发现Web应用本身的漏洞,还可以发现Web服务器和数据库服务器的漏洞。建议通过模糊测试的方法和工具,对Web应用进行漏洞挖掘。
2、Android在手机的市场上占有率很高,通过模糊测试不但可以发现钓鱼欺诈、拒绝服务和权限提升等Android的常见漏洞,而且可以对App的稳定性进行分析验证。建议通过模糊测试的方法和工具,对App的Android版进行漏洞挖掘。
3、随着智能手机、可穿戴设备、活动追踪器、无线网络、智能汽车、智能家居等终端设备和网络设备的迅速发展和普及利用,针对物联网设备的网络攻击事件比例呈上升趋势,攻击者利用物联网设备漏洞可入侵设备,获取设备控制权,通过控制大量物联网设备,黑客可以发起分布式拒绝服务网络攻击(DDoS)。建议利用模糊测试,对物联网的网络协议和设备进行漏洞挖掘。
4、随着业务发展和技术升级需要,会引入一些开源软件或者免费软件,而据Google的报告,开源软件或者免费软件的安全漏洞还是非常多,建议通过模糊测试的方法和工具,在引入开源软件或者免费软件的过程,做安全风险评估。
5、针对业务特点和系统特征,构造模糊测试数据知识库,提升模糊测试数据的针对性,通过人工智能优化模糊测试数据生成和自动化执行过程,构建模糊测试平台,提供安全测试的服务给分行或者行外客户使用。

4.模糊测试案例:

案例1:
https://v.youku.com/v_show/id_XNDUxNDMzODU5Mg==.html?spm=a2hbt.13141534.0.13141534&f=51499298

更多信息请关注微信公众号:oldbird

基于TCP协议fuzz testing模糊测试案例分享相关推荐

  1. c语言tcp硬时事通讯程序代码,使用C语言编写基于TCP协议的Socket通讯程序实例分享...

    tcp客户端示例 #include #include #include #include #include #include #include #include #include #include # ...

  2. 基于TCP协议的网络程序(基础学习)

    下图是基于TCP协议的客户端/服务器程序的一般流程: 图 37.2. TCP协议通讯流程 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听 ...

  3. 基于TCP协议的网络摄像头的设计与实现

    一.摘要 基于TCP协议的网络摄像头的设计大部分和博文"基于UDP协议的网络摄像头的设计与实现"相同,本篇博文采用的TCP协议栈为NicheStack协议栈(同理,可使用LWIP协 ...

  4. Java学习系列(十六)Java面向对象之基于TCP协议的网络通信

    TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...

  5. python机器学习实现对基于TCP协议的DDOS攻击的流量监测器

    文章目录 一.Wireshark抓包工具使用以及数据包分析 1.数据包筛选 2.数据包搜索 3.数据包分析 二.使用python库进行流量特征提取 1.下载scapy库 2.scapy库的使用 3.c ...

  6. 基于TCP协议的Socket网络通信

    前言 一. 什么是网络(了解七层网络模型)? 二. 什么是TCP/UDP协议? 三.什么是socket? 定义 四.基于TCP协议的socket通信的实现步骤是怎样的? 客户端的实现 服务端的实现 测 ...

  7. 计算机网络课程设计--基于TCP协议网上聊天程序--python实现带图形界面--socket--多线程

                                              基于TCP协议网上聊天程序 引言 21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络.而随着计 ...

  8. 基于TCP协议的mfc多人聊天室

    基于TCP协议的MFC多人聊天室 简易的mfc聊天室思路实现 前言 一.socket通信 二.效果展示 三.代码实现 1.ClientSocket.cpp 客户端套接字 2.ServerSocket. ...

  9. 用C#实现基于TCP协议的网络通讯

    TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实 ...

最新文章

  1. TensorFlow损失函数
  2. 《Cracking the Coding Interview》——第18章:难题——题目11
  3. CTF-RSA共模攻击 和 非共模攻击解密脚本
  4. 科大星云诗社动态20220103
  5. python练习12
  6. 数据结构:线性数据结构(4)-列表(栈,队列,deques, 列表)
  7. 微信小程序——极点日历使用方法
  8. 不用加号实现两整数相加
  9. android ListView 自动滚动到最底部
  10. USB OTG简单介绍
  11. Drools7 Hello Wrold 入门详细步骤--系列01课
  12. 接口测试apipost
  13. i7台式电脑配置推荐_教您2019推荐组装台式电脑最新配置清单
  14. macd的顶背离和底背离
  15. php形状特征提取方法,LowB沙箱-PHP动态特征提取
  16. ma5671怎么设置_电信/联通/移动,更换华为MA5671光猫详细教程
  17. 制作Linux内存镜像+制作对应的volatility profile
  18. win10右键一直转圈_惠普产品拆机图文哪里找?桌面点右键延迟咋办?内存怎么少了?...
  19. Spring Boot,Whitelabel Error Page解决方法
  20. 世界级3D渲染大赛TOP3大佬们的制作流程大揭秘!

热门文章

  1. AI 知名企业“云从科技”今宣布完成 B 轮融资,总计获 25 亿元资金支持
  2. 程序员大专进腾讯被人看不起,低学历难道就该低人一等吗?
  3. 中创算力丨七夕抬头望碧霄,喜鹊双双拱鹊桥
  4. C#与 Halcon 联合编程
  5. 随机森林的简单学习记录
  6. 角色编辑功能,权限中转英,遍历出code 在一条一条把数据塞回去
  7. 安卓手机ppt阅读器_手机文件管理器,安卓自带的清理垃圾神器
  8. i18n和i10n:国际化本地化--gettext
  9. 为什么有的测试人员路越走越窄?原因在这里
  10. VS使用FFmpeg被声明为已否决的解决方案