记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

智能漏洞攻防探索 Note

2020-11-26 12:51

0x00 前言

PS: 本笔记来自张超教授的现场talk总结

漏洞攻击 –> 漏洞
漏洞防御 –> 补丁

漏洞攻防路线:
机器辅助人来挖(CTF, 主要依靠个人能力) –> 自动攻防(人的经验规则为主,启发探索为辅,无法攻防博弈) –> 智能攻防(智能为主,规则经验为辅)

0x01 攻防实践

CTF的历史…
国外的战队很多自动化辅助工具,bulabula…

0x02 漏洞挖掘

  1. 漏洞挖掘

    • 静态分析(在源代码上做规则匹配,这种误报高)
    • 动态分析(只能分析部分,漏报很高)
    • 符号执行(实际中会有很多约束,可扩展性差)
  2. fuzzing 模糊测试
    随机输入,程序出现问题就认为可能存在漏洞
    难点:从无穷的输入空间,找到有效的输入(可以触发漏洞)
    2013年之后,AFL出现,帮助发现了80%的漏洞,AFL的关键是引入了遗传算法(好的种子就会被留下,然后基于其变异)。
    主流的研究:使用指标指导种子的变异;将AFL应用具体的场景,比如IoT。
    他们的研究:CallAFL、Greyone、MOpt、FANS

14471606354845_.pic_hd

14451606354628_.pic_hd

14461606354741_.pic_hd

  1. 漏洞挖掘(总结)
  • 深度
    测试例格式提取
    控制流敏感制导
    数据流敏感制导
    种子选择策略调度
    种子变异策略调度
    值空间覆盖率跟踪
    状态空间覆盖率跟踪

  • 广度
    Linux内核、 驱动、开源/二进制程序
    Windows/macOS内核、应用程序
    区块链、智能合约
    ARM芯片、物联网设备
    浏览器(chrome等)
    网络协议(多交互程序)
    Race漏洞

0x03 漏洞缓解/防护/防利用

14501606355392_.pic

14511606355609_.pic_hd

14521606355625_.pic_hd

14531606355797_.pic_hd

14541606355815_.pic_hd

14551606355826_.pic_hd

14561606355931_.pic_hd

0x04 漏洞利用

14571606356109_.pic

自动漏洞利用

14591606356267_.pic_hd

2013年总结的在AEG方向的十一个难点
14601606356280_.pic_hd

目前相关的技术已经提出了很久,但是在做AEG的时候相关的基础设施比较匮乏

14611606356411_.pic_hd

TAICHI => 约束? 还有提升空间?

14621606356622_.pic_hd

14631606356748_.pic

0x05 智能攻防

机器擅长:
挖掘底层漏洞
对简单混淆机制免疫
快速部署防御机制

机器不擅长的:
编写漏洞利用脚本
挖掘高层漏洞
基于启发式的分析

人类的特殊手段:
抄袭对手的补丁
补丁中放后门
重构对手的攻击流量

AI 技术尚未应用!!!

14641606357546_.pic

目前是将攻防的具体的一个环节拆分出来,然后选择一个AI适合的环节,与AI结合去做研究。
14651606357682_.pic_hd

未知漏洞的智能攻防 <--> 已知漏洞的智能渗透

14661606357970_.pic_hd

14671606357983_.pic_hd

0x06 总结

14681606357997_.pic_hd

0x07 Q&A

  1. 目前好用的工具?
    SVF 静态分析工具
    DFT 动态分析工具 - 污点跟踪
    angr 符号执行 -> libc的库函数都是模拟的不准确
    S2E 符号执行

  2. 漏洞挖掘评价问题?
    CVE 是一个侧面,目前最想看到的是在相同数据集上的不同表现
    benchmark 没有统一,所以能测的就都测一下
    fuzzing都说自己的策略好,属于无穷空间探索问题,并不能说所有情况下该策略都能比别人好,所以就需要实验支撑。但是实验是有随机性的。

  3. 请求建议一下,在程序分析中培养自己的能力?
    程序分析基本已经进入到了瓶颈期,想做大突破就比较难。(也就是静态分析技术,目前很多采用AI技术应用到静态分析上的,所以要改进的话可以从AI角度入手)。建议入门还是先熟悉目前的经典解决方案。数据充分的情况下,机器学习的效果可能比人提出的规则要好一些。

  4. 未来Driller这种模糊测试的情况的发展?
    符号执行虽然在学术界上价值高,热度也不低,但是在很多情况下应用不起来,比如在chrome的测试上。所以目前该组还是在改进fuzz本身上。

  5. 前面提到的arm上的防护研究?
    在RISC-V上做了验证。敏感数据的特点->不应该被任何人修改,应该是只读的。如果敏感数据是从可修改区来的,那么就会出现问题。所以从硬件上限制了敏感数据的来源,如果不是来自只读区就限制。
    arm pic理论上是可以绕过的,mte和pic相结合实现新的防护方法。
    在硬件上做地址空间隔离,同进程内的隔离,因为有些是可控的有些是不可控的。

  6. 接下来的fuzzing应该更关注什么方面?
    目前更多的关注的是fuzzing在复杂目标上的应用,比如协议、驱动。协议的状态信息的自动化提取。驱动的模糊测试。自动提取知识来引导模糊测试的进行。目前在往更实用的方面来做。


知识来源: zer0yu.github.io/2020/11/26/Intelligent-Vulnerability-Attack-and-Defense/

阅读:111519 | 评论:0 | 标签:漏洞 智能 攻防

想收藏或者和大家分享这篇好文章→复制链接地址

“智能漏洞攻防探索 Note”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

广而告之 💖

标签云 ☁