Microsoft System RPC 漏洞挖掘
MSRPC Fuzzing with SPIKE 2006
Dave Aitel
d41444d184254b35eefd341f
概览
?Fuzzing 简介
?MSRPC快速简介和相关协议?MSRPC fuzzing的历史和这些技术的缺点?Immunity‘s专注于MSRPC fuzzing ?MSRPC的未来(and hence, of MSRPC fuzzing)
什么是Fuzzing?
?我们所有人都从把小字符串变成大字符串中获益
?Fuzzing所做的就是通过特殊的方法来对应用程序进行输入
–主要的好处: 没有误报. 你通过fuzzing找到
的所有bug都是可重现的(虽然它可能无法利用)
–主要的麻烦: 速度很慢
为什么要fuzz?
?即便有安全公告或二进制比较工具,相对逆向工程而言,fuzzing更容易找到bug
?Fuzzing能找出通过二进制或源代码分析难以发现的bug
?A generalized fuzzer for a bug will tell you if a patch is good enough to cover edge cases or if it has an edge case that is still vulnerable
什么是fuzz的最好方法??Non-fault-injection approach
–我们不直接注射数据到程序的API中,因为它将导致误报
?例如绕过验证,对输入进行有效性检查等?Fuzzing专注于发现可利用的漏洞–这不是关于QA –只是关注我们感兴趣的,即
整数溢出和缓冲区溢出
哪种类型的应用程序适合
fuzzing
?暴露在网络上的应用程序
–所有DCE-RPC!
?闭源应用程序
?看起来没有经过代码审核的应用程序
?难于获取的应用程序
?相对复杂的应用程序
–对复杂的应用程序进行审计将花费大量的金钱!
Fuzzing Mindset ?There's a certain magic to a good fuzzer since there is no guarantee it will find anything
?Fuzzers将花费相当长的时间
–例如几周, 几个月
?当你开始开发一个fuzzer时,你要相信自己不是在浪费时间
?大家看不起fuzzer
Fuzzers的问题?Tokenization is rarely perfect
?容易错失私有扩展
?Problem itself is exponential
?一般只有在找到一些潜在的bugs后才能吸引blackhat
?But does give you a good initial indication of the “stance”of the application
怎么打造fuzzer ?Tokenization
?产生正常的流量
?产生异常的流量
?检测和分析问题
?分析fuzzer的质量
Tokenization
?分解网络协议为常量(not fuzzed)和变量(fuzzed)
?类型
–字符串, 整数, 大小, 二进制块
?通常常量都是头字符串,协议常量,网络交互的响应等
?Over-tokenization 将使你的fuzzer变得很慢
?Under-tokenization 将使你的fuzzer发现不了任何东西
产生正常流量
?阅读和分解RFC‘s 或其它可读的协议描述
–fuzzing协议中没有实现的部分通常只会浪费你的时间
–将错失私有的扩展
?对协议进行逆向工程
–能够半自动完成
–If tool is flexible enough, human input can be
invaluable
?嗅探和静态分析
–Even very dumb replay-and-bit-flipping can find many bugs
?如果完成的不好,目标应用程序将忽略你的大部分流量
产生畸形?Transforming normal traffic into malformed traffic, but in a way that is likely to cause exploitable problems
?Bit-flipping is most simplistic
–For each bit we send, iterate over
sending the opposite
?改变流量中的一个部分将可能需要改变其它所有部分
–例如, 内容长度检查
Fuzzing is not Fault
Injection
?Fuzzing时你将从网络层开始测试所有层
?在fault injection时,你直接向API插入错误的数据?有许多层你是不知道的
?Fuzzing 永不产生误报
?fault injection的缺点
–需要一个调试器,它将改变程序的操作
–产生误报
SPIKE简介
?从2000年开始发布,最早的通用网络协议fuzzers 之一
–Greg的Hailstorm是另外一个类似的(注意:
它与当前的Hailstorm差别很大–之前的是一个商业的fuzzer,可用于任意协议)
?介绍唯一的基于块(block-based)的fuzzing
?包括HTTP,FTP及其它协议模块
?用底层C编写(考虑速度)
?基于GNU 许可证来发布
Block-based fuzzing ?协议基本上都由同种元素组成
?常量, 块, 变量
–
?把每个变量都用测试的字符串替换,并更新相关的sizes
?并且在每个变量的前面和后面插入测试字符串
基于块fuzzing的优势
?产生畸形流量的捷径
?Gut-feel: 找到有趣bugs
?Fuzz-streams 是可复用的
?接近原始的有效流
?能够比较容易的对被其它协议封装的协议进行fuzz
其它基于块的fuzzers ?Peach (基于Python的fuzzer)
–免费的
?d41444d184254b35eefd341f ProtoVer (同样是基于Python)–商业的
Immunity与MSRPC ?2000 –SPIKE, dcedump, ifids ?2002 –CANVAS msrpc.py (支持验证、本地管道、SMB/DCE分片)
?2003 –MSRPC 审计类
?2004 –MOSDEF集成lexx.py和yacc.py
?2005 –unmidl.py, DCEMarshall in CANVAS
?2006 –SPIKE 2006
SPIKE 2006
?用Python重写并成为CANVAS攻击框架的一部分–从包括DCE-RPC协议组的纯python网络协议库里获益
–更容易扩展和使用
?增加基于字符串和整数的概念
–A few selected fuzz-variables are used
for EVERY variable in protocol while
fuzzing
–找更隐藏的bugs
–程序变慢了(但计算机速度在提高:>)
SPIKE选择的字符串
?我们用字符B来代替A,因为当我们发现一个堆溢出问题时,Windows内存管理标志中的B往往会让程序正常的崩溃
?我们在所有长字符串前面都加上\\、\\\\和
?我们使用长度从0到2200的字符串来捕捉单字节溢出问题
?我们也会使用已知的常引发问题的特殊字符串集
为何对MSRPC应用程序进行
fuzz?
?在微软默认的应用程序中有上千个可用的MSRPC接口
–Writing Microsoft Windows exploits
isn't going out of style any time soon ?有很多厂商的MSRPC平台上进行开发–这些厂商需要快速和简单的测试他们自己的接口
?Samba needs regression testing
…… 此处隐藏:1695字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




