- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序分析及约束求解器
程序分析及约束求解器
Edgar Barbosa
SyScan360
北京 - 2014
作者简介
• ⾼级安全研究员- COSEINC(国际知名安全机构)
• 从事Windows 内核、驱动设备和管理程序的逆向⼯程
• BluePill 硬件虚拟化Rootkit作者之⼀
• 现在专注于漏洞挖掘的⾃动化研究
提纲
• 程序分析
• 漏洞挖掘
• SAT 求解器
• SMT 求解器
• 中间语⾔
⺫的
• 本次演讲的⺫的是展⽰如何使⽤约束求解器,包括
SMT 约束求解器,⽤于逆向⼯程和漏洞挖掘之类的程
序分析。
程序分析
漏洞挖掘
漏洞挖掘
• 近来,程序分析和逆向⼯程⼤多是专⽤于⼀个特定的
⺫标:挖掘软件漏洞。
• ⽆论你是否喜欢,这就是事实。逆向⼯程的主要功能
不仅仅是理解和修改应⽤程序,还作为漏洞挖掘的辅
助⼯具。
如何挖掘漏洞?
• 如何挖掘闭源应⽤程序的漏洞?
• ⿊盒测试是通过操纵其公开接⼝对软件系统
进⾏评估的⽅法。
• 最知名的⿊盒测试⼯具是模糊测试.
Fuzzing
• 模糊测试或者模糊化是⼀种软件测试技术,
,
通常是⾃动化或者半⾃动化 它包括提供⽆效
的、未预期的、随机的数据作为程序的输⼊。
Fuzzing Phases
1. 识别⺫标
2. 识别输⼊
3. ⽣成模糊化数据
4. 将模糊化数据作为输⼊执⾏程序
5. 监视异常
6. 验证可⽤性
Fuzzing – 输⼊类型
• FTP
如果我们要对⼀台 服务器进⾏模糊测试,
我们不能仅仅⽣成随机数据,并将其发送给
( )
服务器。这是⾮常低效的 除了极少数情况 。
• FTP
建⽴⼀个能够理解 协议的模糊测试机是有
必要的。这同样适合于其他任何协议或⽂件
格式,如pdf或doc。
Fuzzing – 格式
• 问题是开发者必须事先知道关于输⼊格式的
知识。
• 如果协议或格式是未知的怎么办?
• 如果使⽤的校验算法是未知的怎么办?
• ,
另外的情况下,尽管协议是公开的 但⼀些实
现⽅式并未遵守协议规范。
逆向⼯程
• 结合逆向⼯程,我们可以提取协议和格式的
信息。
• ⼀些⾼层次的信息在编译过程中会丢失,但
⽤于理解应⽤程序⼯作的所有必要信息是编
码在可执⾏⽂件中的。
• 这包括协议和⽂件解析器。
Fuzzing
• 模糊测试仍然是漏洞挖掘的有效⼿段。
• 它能产⽣很多崩溃,这些崩溃作为分析问题的
起点,以便确定漏洞的可利⽤性。
• 是否存在⾃动化的模糊测试⽅法,⽽不需要程
序员学习新的协议或⽂件格式规范?
• 我们很懒惰,学习新的格式和协议很费时。
漏洞挖掘⾃动化
文档评论(0)