AFL安全漏洞挖掘

2023-10-18 00:05
文章标签 挖掘 安全漏洞 afl

本文主要是介绍AFL安全漏洞挖掘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安全之安全(security²)博客目录导读

ATF(TF-A)/OPTEE之FUZZ安全漏洞挖掘汇总

目录

一、AFL简介

二、AFL的安装

三、代码示例及种子语料库

四、AFL插桩编译

五、AFL运行及测试

六、AFL结果分析


一、AFL简介

        模糊测试(Fuzzing)技术作为漏洞挖掘最有效的手段之一,近年来一直是众多安全研究人员发现漏洞的首选技术。AFL、LibFuzzer、honggfuzz等操作简单友好的工具相继出现,也极大地降低了模糊测试的门槛。

        AFL(American Fuzzy Lop)是由安全研究员Michał Zalewski(@lcamtuf)开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。其工作流程大致如下:

①从源码编译程序时进行插桩,以记录代码覆盖率(Code Coverage);

②选择一些输入文件,作为初始测试集加入输入队列(queue);

③将队列中的文件按一定的策略进行“突变”;

④如果经过变异文件更新了覆盖范围,则将其保留添加到队列中;

⑤上述过程会一直循环进行,期间触发了crash的文件会被记录下来。

二、AFL的安装

        下载AFL源码(https://github.com/google/AFL/),解压后,编译安装。

        make
        sudo make install

安装成功

安装目录

三、代码示例及种子语料库

        首先创建一个简单的vulnerable.c源文件,其功能无外乎接受一行命令行输入(一个整数、一个字符、再一个整数),然后根据中间这个字符当作运算符,输出四则运算结果。可以看见,这个被测程序的内容和普通的用户交互程序一模一样,看不出来任何不同,就是以stdin/stdout作为交互的输入输出,以main函数作为执行入口。

        作为模糊测试,AFL需要提供初始的种子输入。

        但实际上,你完全可以提供任何无意义的输入作为种子,模糊测试也一般能达到效果,只不过效率会低一些而已,是否提供有意义种子?提供多少?无外乎在种子获取难度和测试的效率要求之间进行权衡而已。

四、AFL插桩编译

        编译过程和普通gcc编译也是一样,除了使用的命令需要带上afl-前缀,因此

afl-gcc -g -o vulnerable vulnerable.c 

五、AFL运行及测试

执行命令,

afl-fuzz -i testcases/ -o outputs -- ./vulnerable

但是不出意外命令会报错,

[-] Hmm, your system is configured to send core dump notifications to anexternal utility. This will cause issues: there will be an extended delaybetween stumbling upon a crash and having this information relayed to thefuzzer via the standard waitpid() API.To avoid having crashes misinterpreted as timeouts, please log in as rootand temporarily modify /proc/sys/kernel/core_pattern, like so:echo core >/proc/sys/kernel/core_pattern[-] PROGRAM ABORT : Pipe at the beginning of 'core_pattern'Location : check_crash_handling(), afl-fuzz.c:7275

以及

[-] Whoops, your system uses on-demand CPU frequency scaling, adjustedbetween 781 and 4003 MHz. Unfortunately, the scaling algorithm in thekernel is imperfect and can miss the short-lived processes spawned byafl-fuzz. To keep things moving, run these commands as root:cd /sys/devices/system/cpuecho performance | tee cpu*/cpufreq/scaling_governorYou can later go back to the original state by replacing 'performance' with'ondemand'. If you don't want to change the settings, set AFL_SKIP_CPUFREQto make afl-fuzz skip this check - but expect some performance drop.[-] PROGRAM ABORT : Suboptimal CPU scaling governorLocation : check_cpu_governor(), afl-fuzz.c:7337

具体原因上述信息已经提到了,大致就是AFL测试时用到功能需要还没有开启,因此,切换到root用户执行上面报错中给出的命令即可。不过因为上述命令中修改的都是/proc/sys目录下的文件,二者Linux内核映射出来的逻辑文件,并非实际的磁盘文件,重启之后所有修改都会丢失,避免麻烦还是将这几个语句保存成为脚本有利于重复执行。

root用户切换
sudo su
echo core >/proc/sys/kernel/core_pattern
cd /sys/devices/system/cpu
echo performance | tee cpu*/cpufreq/scaling_governor

再次执行命令,

afl-gcc -g -o vulnerable vulnerable.c 

可以正常运行,输出一段信息后呈现如下界面,表示fuzz已经开始了,可以在该界面中查看运行时间、崩溃数量等信息。

ctrl-C结束fuzz,可以看到当前目录下已经多出了outputs目录,这是本次模糊测试的结果。

六、AFL结果分析

        引起崩溃的测试样例会位于outputs/crashes文件夹下,文件名大致形如id:000000,sig:08,src:000002,op:flip1,pos:3,本次测试中,获得的崩溃样例的内容为:

其中包含10/0三个可打印字符和一个换行符。并未出乎意料,就是这种输入会导致程序中发生除零意外。

crashes:导致目标接收致命signal而崩溃的独特测试用例queue:存放所有具有独特执行路径的测试用例。AFL输出文件:

crashes/README.txt:保存了目标执行这些crashes文件的命令行参数。

hangs:导致目标超时的独特测试用例。

fuzzer_stats:afl-fuzz的运行状态。

plot_data:用于afl-plot绘图。

afl-plot outputs plots

参考:GitHub - google/AFL: american fuzzy lop - a security-oriented fuzzer

这篇关于AFL安全漏洞挖掘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228848

相关文章

OWASP十大安全漏洞解析

OWASP(开放式Web应用程序安全项目)发布的“十大安全漏洞”列表是Web应用程序安全领域的权威指南,它总结了Web应用程序中最常见、最危险的安全隐患。以下是对OWASP十大安全漏洞的详细解析: 1. 注入漏洞(Injection) 描述:攻击者通过在应用程序的输入数据中插入恶意代码,从而控制应用程序的行为。常见的注入类型包括SQL注入、OS命令注入、LDAP注入等。 影响:可能导致数据泄

【安全漏洞】SpringBoot + SpringSecurity CORS跨域资源共享配置

SpringBoot CORS跨域资源共享 文章目录 SpringBoot CORS跨域资源共享前言一、什么是CORS?二、配置CORS方法1.nginx中配置跨域资源访问策略2.springSecurity 过滤器链中配置跨域资源访问策略3.springBoot 中配置跨域资源访问策略 总结 前言 一个健壮的系统上线时,以及后续验收过程中,通常都会做系统安全测评,这是

《Hadoop大数据分析与挖掘实践》基础篇笔记(1~6章)

数据挖掘的基本任务: 包括利用分类与预测、聚类分析、关联规则、包括利用分类与预测、聚类分析、关联规则、 时序模式、偏差检测、智能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业竞争力。 数据挖掘建模过程:     1. 目标定义         任务理解         指标确定     2. 数据采集         建模抽样:数据采样的相关性,可靠性,有效性

TinTinLand Web3 + DePIN 共学月|挖掘 CESS 去中心化数据基础设施。

随着区块链技术的不断进步,去中心化网络在全球范围内迅速崛起,提供了更高的安全性、隐私性和效率。传统的集中式数据存储解决方案正逐渐被去中心化的替代品所取代。作为基于区块链的去中心化云存储网络和内容分发网络(CD²N),CESS 在这一领域中脱颖而出,提供了全面的解决方案,支持Web3高频动态数据的存储与检索。 CESS 致力于构建基于区块链的分布式云存储系统,通过虚拟化技术高效管理

python数据分析与挖掘实战-第六章拓展偷漏税用户识别

第六章分别使用了LM神经网络和CART 决策树构建了电力窃漏电用户自动识别模型,章末提出了拓展思考--偷漏税用户识别。 第六章及拓展思考完整代码https://github.com/dengsiying/Electric_leakage_users_automatic_identify.git 项目要求:汽车销售行业在税收上存在多种偷漏税情况导致政府损失大量税收。汽车销售企业的部分经营指标能在

ShopXP购物系统爆高危安全漏洞 SCANV团队独家提供解决方案

近日,有署名为“zpino”漏洞研究者公布了一个针对“ShopXP网上购物系统”的一个高危安全漏洞。该漏洞存在于文件admin/pinglun.asp里,影响ShopXP购物系统多个版本。攻击者可通过该漏洞猜解后台管理员密码hash后进一步入侵整个网站系统,导致网站被“脱库”、“挂马”并沦为“肉鸡”。由于官方不提供技术支持及安全维护,所以SCANV团队独家提供了解决方案,建议广大站长朋友们及时部署

流程挖掘价值实现的加速器!望繁信科技全链路解决方案惊艳刷屏

2023年9月22日,望繁信科技首届PRO_大会在广州圆满举行,望繁信科技解决方案负责人任舟在大会主论坛带来了《加速业务洞察:赋能行业,突破创新》的精彩分享,向大家详细介绍和展示了望繁信科技流程挖掘的标准解决方案。 1、标准数据解决方案 加速流程的可视化与透明化 随着数字化转型的推进,企业内部构建了几十甚至上百个IT系统,每个系统都运行着预先设计好的业务流程,也即“业务蓝图”,但真实的流程经常

记录第一个src厂商的支付漏洞挖掘

前言 最近去搜了一些厂商SRC试一下,没想到已学的知识也能挖掘到逻辑漏洞,下面给大家说一下这个逻辑漏洞的思路,没想到居然存在的,也算是运气好吧,希望对大家有所帮助。纯实战文章,一点都不水,且是逻辑漏洞,简单易懂。 漏洞挖掘过程 首先先进入漏洞所在地址: 然后会有个活动,此时先玩15分钟游戏,然后等待变为"一分钱领取超级会员",然后再点击,点击之后会出现扫码支付页面,可以看到是每个用户"限一次

记一次对某佛教系统的漏洞挖掘

前言 简单记录一次漏洞挖掘,一个系统居然爆了这么多类型的洞,于是想记录哈。(比较基础,我是菜狗,大佬轻喷) 业务介绍 是一个某佛教的系统 有一些佛教的学习资源、一些佛教相关的实物商品可购买,有个人中心,供奉活动,讲堂,禅院动态 漏洞发现 获得测试账号权限 由于没有普通用户权限,只是访客权限,于是想先注册一个账号 结果是不允许注册的,只允许已有的用户进行登录,输入我的

漏洞挖掘 | 记一次Spring横向渗透

0x1 前言 这篇文章给师傅们分享下,前段时间的一个渗透测试的一个项目,开始也是先通过各种的手段和手法利用一些工具啊包括空间引擎等站点对该目标公司进行一个渗透测试。前面找的突破口很少,不太好搞,但是后面找到了spring全家桶的相关漏洞,然后打了spring的很多漏洞,然后也是交了蛮多的漏洞报告的。 0x2 信息收集+资产收集 首先对这个公司进行信息收集,公司比较小然后利用爱企查也没有信息可