版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人工智能的发现与运用技术创新,变革未来人工智能应用新浪潮由广泛学习和深度学习驱动由海量数据集提供支持公众什么时候将技术视为人工智能?在它击败人的时候!AI & CGCCYBER这比赛之前比赛之后人工智能在安全领域的应用机器学习已经广泛用于恶意软件检测垃圾邮件和网络钓鱼分类帐户异常检测和日志分析等机器学习应用的最新变化数据规模和算法复杂度发生变化两种“随机”机器学习应用实例深度神经网络分类器1000 多种特性超过 1,500 万培训样本复杂的非线性算法使用 PaddlePaddleBlackhat EU 2016APK 恶意软件分类器Esorics 2013机器学习分类器-30 多种特性超过 1
2、.5 万培训样本-线性和简单的非线性算法(随机森林)使用 Weka深度学习在 CGC 中的使用使用深度学习的 CGC 团队的数量: 0为什么不用呢?(我们的回答)没有能够定义成分类问题没有丰富的数据集(用于培训)“还有其他类型的人工智能,研究不局限于统计学习。”DARPA 信息创新部门负责人 John Launchbury 表示。https:/2016/08/will-humans-bots-rule-cybersecurity-answer-yes/AI & FUZZINGFuzzing 二进制程序(在CGC场景下)如何生成一个让给定二进制程序“崩溃”的输入?x06x1dx0cx08%7$s
3、nx1fx1dx0cx08%7$snFuzzing 二进制程序(在CGC场景下)如何生成一个让给定二进制程序“崩溃”的输入?x06x1dx0cx08%7$snx1fx1dx0cx08%7$sn没有“大”数据供挖掘!首先需要找到生成输入的方法Dumb Fuzzing生成随机输入突变并运行目标例如 afl-fuzz nDumb Fuzzing生成随机输入突变并运行目标例如 afl-fuzz n人工 Fuzzing人类如何生成新的“有趣的”输入?人工 Fuzzing人类如何生成新的“有趣的”输入?跟踪和观察覆盖范围,然后生成可到达未测试代码的输入人工智能的演变分支遗传算法 - 基于自然选择过程杂交和
4、突变种子输入适应度评估人工智能的演变分支遗传算法 - 基于自然选择过程杂交和突变种子输入适应度评估幸存者添加到种群中人工智能的演变分支遗传算法 - 基于自然选择过程杂交和突变种子输入适应度评估幸存者添加到种群中AFL - Fuzzing 对遗传算法的使用通过种子输入变换生成新的输入位翻转/字节翻转/整数运算从每次测试运行中获取反馈测试控制流路径覆盖进行适应性测试和突变选择如果触发新的边缘覆盖 添加到种子种群AFL 插桩通过更新 64KB 共享内存区域 (afl_area_ptr ) 收集覆盖信息来自dwarfdump/print_abbrevs.c .328if (abbrev_code 0)
5、 329330331332333check_abbrev_num_sequence(,);while (abbrev_code = abbrev_array_size) Dwarf_Unsigned old_size = abbrev_array_size; size_t addl_size_bytes = old_size * .BB1BB2AFL 插桩 .328if (abbrev_code 0) 329330331332333check_abbrev_num_sequence(,);while (abbrev_code = abbrev_array_size) Dwarf_Unsigne
6、d old_size = abbrev_array_size; size_t addl_size_bytes = old_size * .来自dwarfdump/print_abbrevs.cafl_area_ptr cur_loc prev_loc+;通过更新 64KB 共享内存区域 (afl_area_ptr ) 收集覆盖信息AFL 的成功快速和可靠的 Fuzzing测试开销低,使用简单漏洞发现实例Bind、PuTTY、tcpdump、ffmpeg、GnuTLS、libtiff、libpng更多信息请查看 AFL 网站 (http:/lcamtuf.coredump.cx/afl/)被广泛
7、使用大多 2016 CGC 获奖团队都使用了这种插桩技术AFL 面临的挑战 if (input = 0 xDEADBEEF)crash(); elsegood(); 通过输入突变触发崩溃 分支的几率非常低!AFL 面临的挑战(续)来自 Regehr 教授的博客/archives/1238AFL 面临的挑战(续)对于 n 的所有数值,只有 当 n = -1000000 时才会发生 DIVZ 错误来自 Regehr 教授的博客/archives/1238在 CGC 中我们为 AFL 添加的增强功能两项增强功能采用了 QEMU 增强插桩的 AFL (Qai)采用了符号执行协助的 AFLAFL 与人工
8、选择的对决值的输入1)0 x123456782)0 x0000BEEFafl-fuzz 获得相同的覆盖,但是,人会怎么做? 考虑两种引起 ival 等于下列两个ival = func(input);if (ival = 0 xDEADBEEF)crash();elsegood(); AFL 与人工选择的对决值的输入1)0 x123456782)0 x0000BEEFafl-fuzz 获得相同的覆盖,但是,人会怎么做? 考虑两种引起 ival 等于下列两个ival = func(input);if (ival = 0 xDEADBEEF)crash();elsegood(); 输入 2 可能是促
9、进进一步突变的更好的候选值!通过代码转换提高几率选出准确输入的几率 1/232 1/210 if (ival = 0 xDEADBEEF) crash(); p = (char *)&ival; if (p0 = 0 xEF) if(p1 = 0 xBE)if (p2 = 0 xAD)if (p3 = 0 xDE)crash();代码转换laf-intel 最近公布了具体思路分割-比较-通过、比较-转换-通过等/2016/08/15/circumventing-fuzzing-roadblocks-with-compiler- transformations/集成到 AFL-llvm 模式中问
10、题:需要重新编译目标程序,但是我们只有二进制程序。当我们只有二进制程序时,如何为 AFL 提供“部分匹配”反馈?插桩粒度转化块级别的 AFL QEMU 插桩QEMU TCG- 0 x4006e0movi_i64 tmp0,$0 x4006e5goto_tb $0 x0movi_i64 tmp3,$0 x400530 st_i64 tmp3,env,$0 x80exit_tb $0 x7f72cad71ea0 set_label $L0exit_tb $0 x7f72cad71ea3- 0 x400530movi_i64 tmp2,$0 x601020 qemu_ld_i64 tmp0,tmp2
11、,le, 0 x0 st_i64 tmp0,env,$0 x80exit_tb $0 x0set_label $L0exit_tb $0 x7f72cad71f13afl_area_ptr position+;转化块链二进制文件我们需要运行时指令级别的插桩afl_area_ptr position+;TCG 指令级别的转化TCG前端访客代码QEMU微操作TCG后端主机代码I386TCG IRx86_6480484d7:cmp $0 xdeadbeef,%eax- 0 x80484d7mov_i32 tmp1,$0 xdeafbeefmov_i32 tmp0,eax mov_i32 cc_src
12、,tmp1 mov_i32 loc10,tmp0sub_i32 cc_dst,tmp0,tmp1mov$0 xdeedbeef,%ebp mov%ebp,0 x28(%r14) mov$0 x10,%ebxmov%ebx,0 x34(%r14)test%ebp,%ebpTCG 辅助函数!TCG前端访客代码QEMU微操作TCG后端主机代码I386TCG IRx86_644006d0:idiv %rbx- 0 x4006d0mov_i64 tmp0,rbx movi_i64 tmp3,$0 x4006d0 st_i64 tmp3,env,$0 x80call idivq_EAX,$0 x0,$0,
13、env,tmp0.mov%rbx,0 x10(%r14)movq $0 x4006d0,0 x80(%r14) mov%r14,%rdimov%rbp,%rsicallq 0 x7f3037453600到 TCG 分支操作的插桩TCG前端访客代码QEMU微操作TCG后端主机代码I386TCG IR80484dc:jne80484fe- 0 x80484dcmovi_i32 cc_op,$0 x10 discard loc10 movi_i32 tmp11,$0 x0brcond_i32 cc_dst,tmp11,ne,$L1调用 brcond 辅助函数if (partial match) al
14、f_area_ptrpos+采用 QEMU 增强插桩的 AFL对 TCG 分支操作生成的修改tcg_gen_brcond_i32() tcg_gen_brcond_i64()添加一个辅助函数来更新覆盖反馈剩下的问题是:更新哪些分支边缘?cur_location = (block_address 4) (block_address 1;AFL-Qai 实现增强的插桩示例(针对 64 位分支指令)uint64_t HELPER(brcond_states_i64)(uint64_t cond, uint64_t nztest, uint64_t addr)uint64_t mask = 0 xff
15、00000000000000;.while (!(cond&mask) & i8;i+;if (i0) fake_edge = (i+1)*addr % bitmap_size;afl_area_ptrfake_edge+;.采用 QEMU 增强指令的 AFL为其他指令添加扩充的适应性反馈例如,增加捕获 DIVZ 错误的几率void helper_idivq_EAX() / if the divisor is close to zero afl_area_ptraddr*matching_factor+;采用 QEMU 增强插桩的 AFL扩充的反馈返回更为精细的适应度信息,即使是面向相同的边缘覆盖例如,更新 afl 共享的内存以进行部分匹配支持多种二进制平台在 QEMU TCG 识别实施,适用于多个架构AFL + SymEXC采用了符号执行的 AFLAFL+AFL+AFL+并行模式中的 AFLAFL 同步队列种子输入最佳选择S2E+S2E+S2E+追踪覆盖S2E+S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年电商平台交易合同
- 四川电影电视学院《学习筑梦科技中国梦》2023-2024学年第一学期期末试卷
- 四川电力职业技术学院《早教教师音乐技能》2023-2024学年第一学期期末试卷
- 绿化苗木更换合同范例
- 四川财经职业学院《创意图形设计》2023-2024学年第一学期期末试卷
- 酒吧设备租赁合同范例
- 水产加工合同范例
- 个人合同范例买卖
- 文案宣传合同范例
- 电梯销售回收合同范例
- 司法临床司法鉴定培训
- 第47届世界技能大赛江苏省选拔赛计算机软件测试项目样题
- 劳务合同保证金合同模板
- 小学足球课课件
- 国家职业技术技能标准 4-07-05-04 消防设施操作员 人社厅发201963号
- 七年级上册语文第三单元知识速记清单(统编版2024)
- 2023-2024学年全国初中七年级下地理人教版期末考试试卷(含答案解析)
- 新教科版小学1-6年级科学需做实验目录
- 全过程工程咨询项目部管理制度
- 继电保护新安装检验、定期检验及验收细则
- 职工代表大会方案
评论
0/150
提交评论