<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>riusksk&#39;s blog</title>
  <subtitle>攀蟾折桂摄寰宇，摘星揽月御乾坤。踏云踩雾骋宵壤，驱风逐日闯天地。 ------泉哥</subtitle>
  <link href="//atom.xml" rel="self"/>
  
  <link href="http://riusksk.github.io/"/>
  <updated>2020-07-13T03:40:57.000Z</updated>
  <id>http://riusksk.github.io/</id>
  
  <author>
    <name>riusksk</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>信安之路入坑指南</title>
    <link href="http://riusksk.github.io/2020/07/12/%E4%BF%A1%E5%AE%89%E4%B9%8B%E8%B7%AF%E5%85%A5%E5%9D%91%E6%8C%87%E5%8D%97/"/>
    <id>http://riusksk.github.io/2020/07/12/信安之路入坑指南/</id>
    <published>2020-07-12T11:37:43.000Z</published>
    <updated>2020-07-13T03:40:57.000Z</updated>
    
    <content type="html">&lt;p&gt;疫情下的高考已结束，又快到填志愿的时候了，又有不少知青要加入信安这个圈子。为了响应组织号召，撰写此文作为信安行业的入坑指南，希望能对刚入圈的同学有所帮助。&lt;/p&gt;
&lt;h3 id=&quot;如何入门学习&quot;&gt;&lt;a href=&quot;#如何入门学习&quot; class=&quot;headerlink&quot; title=&quot;如何入门学习&quot;&gt;&lt;/a&gt;如何入门学习&lt;/h3&gt;&lt;h4 id=&quot;1、明确目标，并以目标为导向，用以致学&quot;&gt;&lt;a href=&quot;#1、明确目标，并以目标为导向，用以致学&quot; class=&quot;headerlink&quot; title=&quot;1、明确目标，并以目标为导向，用以致学&quot;&gt;&lt;/a&gt;1、明确目标，并以目标为导向，用以致学&lt;/h4&gt;&lt;p&gt;刚开始的时候，相信很多人会先去搜索信息安全要学什么课程，可能有人会告诉你要先C，再学数据结构和算法，学数据结构和算法前又要学离散数学，总之会有无穷无尽的东西在等着你，导致最后自己都不知道该学啥了……&lt;/p&gt;
&lt;p&gt;其实学习什么课程都只是手段而已，但你学习这些课程的目标是什么需要先明确，比如想去国内个的漏洞奖励平台刷web或软件漏洞拿奖金，或者报个CVE漏洞，开源个安全项目等等，这样目标和动力就都有了。&lt;/p&gt;
&lt;h4 id=&quot;2、细化目标制定具体的学习内容&quot;&gt;&lt;a href=&quot;#2、细化目标制定具体的学习内容&quot; class=&quot;headerlink&quot; title=&quot;2、细化目标制定具体的学习内容&quot;&gt;&lt;/a&gt;2、细化目标制定具体的学习内容&lt;/h4&gt;&lt;p&gt;假设你的目标是挖腾讯PC软件漏洞赚奖金吧，那腾讯PC软件有啥，电脑管家、腾讯视频、QQ、QQ影音等等，先选个门槛低点的QQ影音吧，目标就细化成挖掘音视频文件解析软件的漏洞。&lt;/p&gt;
&lt;p&gt;挖掘文件解析漏洞的技术就涉及 代码审计、Fuzzing、逆向等等，再细化下目标，挑Fuzzing吧。&lt;/p&gt;
&lt;p&gt;入门Fuzzing涉及哪些系统性的技术内容呢？可以拿国外知名大会的培训课程为例，比如BlackHat、CanSecWest等等，这里以CanSecWest上的&lt;em&gt;“Advanced Fuzzing and Crash Analysis”&lt;/em&gt;培训课程为例:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cansecwest.com/dojos/2019/vulndisco.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://cansecwest.com/dojos/2019/vulndisco.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4天的培训课程计划已经给出了循序渐进的学习内容，你只需要多利用搜索引擎去查找相关的书籍、论文、工具进行学习和实践。&lt;/p&gt;
&lt;p&gt;比如课程给出的前置条件：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Students should be prepared to tackle challenging and diverse subject matter and be comfortable writing functions in in C/C++ and python to complete exercises involving completing plugins for the discussed platforms. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Linux or Windows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;涉及C/C++、Python和汇编，这里就需要先去找相应语言的经典书籍先入个门，至少保证先看得懂代码。&lt;/p&gt;
&lt;p&gt;再看第一天的课程目录，用相关标题去搜索就可以得到相关的知识点，比如AFL、libFuzzer、Corpus generation等等，遇到不懂的就是一个知识点，自己设法去弄懂并实践它就是学习的过程：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/屏幕快照 2020-07-13 上午11.23.33.png&quot; alt=&quot;屏幕快照 2020-07-13 上午11.23.33&quot;&gt;&lt;/p&gt;
&lt;p&gt;整个示例过程总结起来就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;挖腾讯漏洞赚钱 =》PC软件 =》QQ影音 =》文件Fuzzing =》培训课程目录 =》搜索相关书籍、论文、工具进行学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其它目标的学习内容制定类似，包括web渗透、内核攻击等等。&lt;/p&gt;
&lt;h4 id=&quot;3、无限循环：学习-》应用-》反馈-》学习&quot;&gt;&lt;a href=&quot;#3、无限循环：学习-》应用-》反馈-》学习&quot; class=&quot;headerlink&quot; title=&quot;3、无限循环：学习=》应用=》反馈=》学习&quot;&gt;&lt;/a&gt;3、无限循环：学习=》应用=》反馈=》学习&lt;/h4&gt;&lt;p&gt;完成第2步的学习之后，就去实践（示例：挖QQ影音的漏洞，或者其它已公开的漏洞的挖掘验证），看能否挖到0day或1day，若不能就针对公开漏洞的信息继续改进优化，再验证效果，以此不断循环，直至相信这是体力问题，也不是能力问题。&lt;/p&gt;
&lt;p&gt;这里以二进制漏洞学习为例，但其它领域web、IoT方向都均适用。学习过程遇到迷茫，很多时候只是不知道目标和手段（学习计划等）之间的关联性而已，设法找到它，并细化到可执行的内容，再设置一些里程碑目标（比如重现历史漏洞的挖掘过程）来增加自信心，最后就是持之以恒下去。&lt;/p&gt;
&lt;h3 id=&quot;关于CTF&quot;&gt;&lt;a href=&quot;#关于CTF&quot; class=&quot;headerlink&quot; title=&quot;关于CTF&quot;&gt;&lt;/a&gt;关于CTF&lt;/h3&gt;&lt;p&gt;在学校时，有机会就多去打打CTF，提高实战能力，国内不少课程内容都比较落后，现在也有一些高校会直接采用工业界出版的一些书籍作为教材，也是一种进步。&lt;/p&gt;
&lt;p&gt;一本书的出版经常代表着其内容已经过时，除了一些计算机基础书籍，比如C/C++、编译原理、系统原理等等这些，即使再过10年也不会过时。其它很多技术会随时时代变迁，技术日新月异，而CTF题目往往会跟着技术热潮来变更，在学习基础的同时，又能帮助跟上技术的更新变化节奏。&lt;/p&gt;
&lt;h3 id=&quot;学习工具推荐&quot;&gt;&lt;a href=&quot;#学习工具推荐&quot; class=&quot;headerlink&quot; title=&quot;学习工具推荐&quot;&gt;&lt;/a&gt;学习工具推荐&lt;/h3&gt;&lt;p&gt;印象笔记、Mendeley、Inoreader是我最想推荐的三款工具，均有跨平台客户端，以及浏览器插件，数据在多平台同步，搭配使用非常方便。&lt;/p&gt;
&lt;p&gt;关于Mendeley和Inoreader的使用，我也曾写过文章推荐，详见&lt;a href=&quot;http://riusksk.me/2020/05/30/谈谈追踪前沿学术研究的技巧/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;《谈谈追踪前沿学术研究的技巧》&lt;/a&gt;和&lt;a href=&quot;http://riusksk.me/2019/03/30/RSS-优秀的个人情报来源/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;《RSS-优秀的个人情报来源》&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;平时我Inoreader订阅RSS，用印象笔记来收藏文章，用Mendeley追踪学术论文，并在上面作笔记，方便未来查阅和复习。另外，Mendeley还有个功能，就是会根据你所收藏的论文，去推荐更多相关技术的论文，比如参考文献中的内容。比如关注Linux Kernel Fuzzing，那么它会推荐更多的内核Fuzzing论文给你，如果有公开的PDF下载，还可以直接通过它索引下载，这种学术论文的追踪并不是印象笔记能比的。个人主要是用印象笔记来收藏一些非学术论文的文章，还有一些工业界安全会议的ppt等等。&lt;/p&gt;
&lt;h3 id=&quot;对推荐书单的补充说明&quot;&gt;&lt;a href=&quot;#对推荐书单的补充说明&quot; class=&quot;headerlink&quot; title=&quot;对推荐书单的补充说明&quot;&gt;&lt;/a&gt;对推荐书单的补充说明&lt;/h3&gt;&lt;p&gt;之前笔者曾发过”信息安全从业者书单推荐”（&lt;a href=&quot;https://github.com/riusksk/secbook），相信很多圈内人看过，期间也很多人提问过，这里整理补充说明下。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/riusksk/secbook），相信很多圈内人看过，期间也很多人提问过，这里整理补充说明下。&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;配合书籍，注重实战&lt;/strong&gt;：列举那么多书并不是想让大家从头翻到尾看完，而主要是向大家推荐一些我曾经看过并觉得较好的书而已，大家自己根据自己需要选择即可。同时，理论归理论，很多东西需要配合实战，光看书也没用，依然建议大家试试”用以致学”的方法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;书单并非网上收集列举的&lt;/strong&gt;：由于书单较多，有不少人质疑只是把网上有的书随便收集罗列下而已。之前在github回应过，这里再说明下。书单均是个人看过或者业界认可的经典书籍（部分书籍没全看完，但不妨碍对书籍质量的判断），跟网上罗列的安全书单不同，并非把网店上的各安全书籍都罗列上的。如果你有何好书推荐可在&lt;code&gt;Github Issues&lt;/code&gt;上提交合并，待我看过之后，如果觉得可以就会在此处更新，会在Github上不定期更新书单。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关于阅读时间的问题&lt;/strong&gt;：多数人一看到书单，就会问这些得多久才能读完？我觉得没必要纠结于此，有空有兴趣就挑本书看下即可，读书没必要把它当作一种负担，保持细水长流的方式，持续学习就好了。如果真的说时间的话，我从06开始学习安全，到今天差不多14年，14年读完那些书，我觉得问题也不大，但关键在于自己掌握了多少。我建议抛开时间、数量的考量，遵循自我内心的喜好，保持学习即可。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;书单仅代表个人喜好&lt;/strong&gt;：不同人对同一本书通常会有不同的评价，这里仅代表个人喜好，你可以有不同的看法。比如有些人曾推荐过《逆向工程核心原理》，但我觉得它内容过旧，且没有《加密与解密》写得好，所以我一直没入书单推荐。但你觉得此书对你有帮助，那就保持你的这份喜好，不必执着于书单本身。&lt;/li&gt;
&lt;/ol&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;疫情下的高考已结束，又快到填志愿的时候了，又有不少知青要加入信安这个圈子。为了响应组织号召，撰写此文作为信安行业的入坑指南，希望能对刚入圈的同学有所帮助。&lt;/p&gt;
&lt;h3 id=&quot;如何入门学习&quot;&gt;&lt;a href=&quot;#如何入门学习&quot; class=&quot;headerlink&quot; ti
    
    </summary>
    
      <category term="随笔杂谈" scheme="http://riusksk.github.io/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>【书评】聊聊打CTF的那本书</title>
    <link href="http://riusksk.github.io/2020/07/12/%E3%80%90%E4%B9%A6%E8%AF%84%E3%80%91%E8%81%8A%E8%81%8A%E6%89%93CTF%E7%9A%84%E9%82%A3%E6%9C%AC%E4%B9%A6/"/>
    <id>http://riusksk.github.io/2020/07/12/【书评】聊聊打CTF的那本书/</id>
    <published>2020-07-12T08:09:41.000Z</published>
    <updated>2020-07-12T08:11:23.000Z</updated>
    
    <content type="html">&lt;p&gt;最近的《CTF特训营》一书挺火的，在朋友圈和公众号上刷屏了。同时，我也发现安全圈的一个怪现象，通常在朋友圈推荐书籍的人，大多是没看过那本书的。&lt;/p&gt;
&lt;p&gt;我在第一时间就入手了此书，花了几个晚上翻了一遍。本着”不吐槽、不毒舌、舍己为人”的宗旨，今天就来聊聊这本书。&lt;/p&gt;
&lt;p&gt;对于写书评，我一直觉得，若不认识作者，且无利益相关等“屁股束缚脑袋”的事情，写起来会轻松许多，因为这样比较容易做到“有好说好，有坏说坏”的中立态度。&lt;/p&gt;
&lt;p&gt;先说好的。&lt;/p&gt;
&lt;p&gt;据说此书三天销完3000册的首印数量。这对于IT书籍来说，其实是不错的销量了。要知道安全书籍能卖个5000册，就算正常水平了，上万册就已经是畅销书籍了。所以说，写书是不赚钱的，一般按书价的8％收取稿费。此书定价89元，正常稿费就是一本赚7.12元，畅销卖个一万册的话也就税前71200元。另外听说作者们只要了1%，即0.89元，即使卖一万册也才8900元。这种公益行为，还是令人偑服的。&lt;/p&gt;
&lt;p&gt;个人一直觉得CTF是提升安全实战技能的最佳途径之一，有时面试我也习惯问下。此书算是国内第一本讲述CTF的书籍，起了个好头。相信在未来两三年内，CTF主题的书籍会逐渐出现，正如当年的“企业安全建设”这个话题一样，说不定明年也可能出现“从0到1：CTFxxx”之类的书籍。国内出版社的编辑们也不妨去找找有此话题出书意向的人，或者引进国外的优秀CTF书籍。&lt;/p&gt;
&lt;p&gt;CTF本身就是一项偏于实战的训练方式，书籍内容自然也是比较偏于实战的，避免了无用的空头理论。虽然题目是刻意构造的，但有些解题思路还是令人眼前一亮，对实战也有一定帮助。另外，有些精心构造的题目很好地呈现对应漏洞类型的危险和常用攻击手法，对于开发有很好的安全教育价值。所以，我觉得此书除了在校生打比赛外，一些此前对安全了解不足的开发也可以看看。况且近两年，各行各业也开始流行搞行业的CTF比赛，比如金融业、工控业等等，将此书当作CTF参考书也还可以。&lt;/p&gt;
&lt;p&gt;本书整体定位偏入门，但覆盖的安全领域还是比较广的，对于专注于某安全领域的同学，也可以拿来扩宽下思路。搞web的看看二进制，搞pc的看看Android，也是甚好。&lt;/p&gt;
&lt;p&gt;在web篇中，本书汇总了几项常见漏洞类型，虽然知识点没那么全面，但简短精要地汇总了一些常见的漏洞利用技巧，是套不错的解题技巧。这点既是它的优点，也是它的缺点。因为这就像考试画重点一样，可以高效地应付考试，但对于解决实际问题依然缺少体系化的知识构建，知识点是零散的，实际问题的解决方法不可能总是单点知识就能解决。&lt;/p&gt;
&lt;p&gt;再说坏的。&lt;/p&gt;
&lt;p&gt;部分知识讲解的先后顺序颠倒。这是多人协作经常出现的问题，主要还是缺少一个主编审稿改稿。个人觉得一本书最好不要超过3人，一人写书太累，太多人写书，容易导致风格差异太大，知识点的衔接不连贯，甚至错乱重复。&lt;/p&gt;
&lt;p&gt;以PWN篇为例，开篇讲的是PWN基础，里面先讲了写bbs段的exploit技巧，但下一节又开始介绍程序内存布局，讲BBS段是什么。还有其中的真题解析，直接扔了exploit代码（里面还留着三叶草syclover的名字……），一个空行都没留，看着好累啊。里面的ret2dl_resolve技术介绍得有点粗糙，其中有几个相关案例也只是简单帖下代码，解释稀少，应该是作者偷懒了，急着给答案。虽为“PWN基础”，但对基础人士其实不够友好。&lt;/p&gt;
&lt;p&gt;同类型web漏洞案例过多，条件竞争漏洞（国内还是很多人习惯叫“竞争条件”）就列举了3个，其实可以把sqli和xss这种常见漏洞案例拿来讲讲，丰富案例，避免重复。&lt;/p&gt;
&lt;p&gt;APK篇主要介绍一些常见工具的使用，太多知识只是蜻蜓点水，更关键的是居然没有CTF案例，这与书的主旨就不太符合了。个人觉得，全书里面写得最不理想的篇章就是APK篇了。&lt;/p&gt;
&lt;p&gt;总体来说，还是推荐那些对CTF感兴趣的同学看看，还有一些信息安全的在校生可借此多提升下实战能力，以及想了解多个安全方向的同学也可以用来扩展思路。但对于想深入某一安全领域，以及应付复杂的业务场景问题，可能此书并不太合适。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;最近的《CTF特训营》一书挺火的，在朋友圈和公众号上刷屏了。同时，我也发现安全圈的一个怪现象，通常在朋友圈推荐书籍的人，大多是没看过那本书的。&lt;/p&gt;
&lt;p&gt;我在第一时间就入手了此书，花了几个晚上翻了一遍。本着”不吐槽、不毒舌、舍己为人”的宗旨，今天就来聊聊这本书。&lt;/p&gt;
    
    </summary>
    
      <category term="随笔杂谈" scheme="http://riusksk.github.io/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>信息安全从业者书单推荐（2020.6.28更新）</title>
    <link href="http://riusksk.github.io/2020/06/28/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E4%BB%8E%E4%B8%9A%E8%80%85%E4%B9%A6%E5%8D%95%E6%8E%A8%E8%8D%90%EF%BC%882020-6-28%E6%9B%B4%E6%96%B0%EF%BC%89/"/>
    <id>http://riusksk.github.io/2020/06/28/信息安全从业者书单推荐（2020-6-28更新）/</id>
    <published>2020-06-28T05:07:01.000Z</published>
    <updated>2020-07-05T04:09:43.000Z</updated>
    
    <content type="html">&lt;p&gt;近来也读过不少书，推荐几本个人觉得不错的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;《Vue.js项目开发实战》张帆&lt;/li&gt;
&lt;li&gt;《我的第一本算法书》【日】宫崎修一；石田保辉，入门书籍，无代码进行图解&lt;/li&gt;
&lt;li&gt;《算法图解：像小说一样有趣的算法入门书》【美】Aditya Bhargava&lt;/li&gt;
&lt;li&gt;《编译与反编译技术实战》庞建民&lt;/li&gt;
&lt;li&gt;《重构：改善既有代码的设计》【美】Martin Fowler&lt;/li&gt;
&lt;li&gt;《Docker技术入门与实战》杨保华；戴王剑；曹亚仑&lt;/li&gt;
&lt;li&gt;《一本小小的蓝色逻辑书》【加】布兰登•罗伊尔&lt;/li&gt;
&lt;li&gt;《精进：如何成为一个很厉害的人》采铜&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最近也买了极客时间上的几门课程，有几门我觉得不错的，虽然没有实体书出版，但课程依然还是按照书籍写作方式来写，比较系统化，有兴趣的也可以看看：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;《左耳听风》&lt;/li&gt;
&lt;li&gt;《软件工程之美》&lt;/li&gt;
&lt;li&gt;《项目管理实战20讲》&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不过有一门课是不推荐的，就是《程序员进阶攻略》，后来作者也出了实体书，但总觉得作者对武侠小说过着迷，课程写得有点过于武侠风，技术与武侠关联得过于牵强。&lt;/p&gt;
&lt;p&gt;书单均是个人看过或者业界认可的经典书籍，跟网上罗列的安全书单不同，并非把网店上的各安全书籍都罗列上的。如果你有何好书推荐可在&lt;code&gt;Issues（https://github.com/riusksk/secbook/issues）&lt;/code&gt;上提交，或者提交合并，待我看过之后，如果觉得可以就会在此处更新，这里也会不定期更新书单。&lt;/p&gt;
&lt;p&gt;文末附完整的思维导图，欢迎收藏。&lt;/p&gt;
&lt;h1 id=&quot;计算机及系统原理&quot;&gt;&lt;a href=&quot;#计算机及系统原理&quot; class=&quot;headerlink&quot; title=&quot;计算机及系统原理&quot;&gt;&lt;/a&gt;计算机及系统原理&lt;/h1&gt;&lt;p&gt;· 《编码：隐匿在计算机软硬件背后的语言》 【美】Charles Petzold&lt;/p&gt;
&lt;p&gt;· 《深入理解计算机系统》【美】Randal E.Bryant&lt;/p&gt;
&lt;p&gt;· 《深入理解Windows操作系统》【美】Russinovich,M.E.；Solomon,D.A.&lt;/p&gt;
&lt;p&gt;· 《Linux内核设计与实现》【美】Robert Love&lt;/p&gt;
&lt;p&gt;· 《深入理解Android内核设计思想》林学森&lt;/p&gt;
&lt;p&gt;· 《Android系统源代码情景分析》罗升阳&lt;/p&gt;
&lt;p&gt;· 《深入理解Mac OS X &amp;amp; iOS操作系统》【美】Jonathan Levin&lt;/p&gt;
&lt;p&gt;· 《深入理解Linux内核》 【美】DanielP.Bovet&lt;/p&gt;
&lt;p&gt;· 《代码揭秘：从C/C++的角度探秘计算机系统》左飞&lt;/p&gt;
&lt;p&gt;· 《Android Dalvik虚拟机结构及机制剖析（第1、2卷）》吴艳霞；张国印&lt;/p&gt;
&lt;p&gt;· 《Android Internals::Power User’s View》【美】Jonathan Levin，中译本《最强Android书：架构大剖析》&lt;/p&gt;
&lt;h1 id=&quot;编程开发&quot;&gt;&lt;a href=&quot;#编程开发&quot; class=&quot;headerlink&quot; title=&quot;编程开发&quot;&gt;&lt;/a&gt;编程开发&lt;/h1&gt;&lt;h2 id=&quot;系统平台&quot;&gt;&lt;a href=&quot;#系统平台&quot; class=&quot;headerlink&quot; title=&quot;系统平台&quot;&gt;&lt;/a&gt;系统平台&lt;/h2&gt;&lt;h3 id=&quot;Windows&quot;&gt;&lt;a href=&quot;#Windows&quot; class=&quot;headerlink&quot; title=&quot;Windows&quot;&gt;&lt;/a&gt;Windows&lt;/h3&gt;&lt;p&gt;· 《Windows程序设计》【美】Charles Petzold&lt;/p&gt;
&lt;p&gt;· 《Windows核心编程》【美】Jeffrey Richter&lt;/p&gt;
&lt;p&gt;· 《Windows环境下32位汇编语言程序设计》罗云彬&lt;/p&gt;
&lt;p&gt;· 《Windows驱动开发技术详解》张帆&lt;/p&gt;
&lt;h3 id=&quot;Linux-Unix&quot;&gt;&lt;a href=&quot;#Linux-Unix&quot; class=&quot;headerlink&quot; title=&quot;Linux/Unix&quot;&gt;&lt;/a&gt;Linux/Unix&lt;/h3&gt;&lt;p&gt;· 《UNIX环境高级编程》【美】W.Richard Stevens；Stephen A.Rago&lt;/p&gt;
&lt;p&gt;· 《Linux程序设计》【美】Neil Matthew；Richard Stones&lt;/p&gt;
&lt;p&gt;· 《Linux设备驱动程序》【美】Jonathan Corbet；Alessandro Rubini；Gerg Kroah-Hartman&lt;/p&gt;
&lt;h3 id=&quot;macOS-iOS&quot;&gt;&lt;a href=&quot;#macOS-iOS&quot; class=&quot;headerlink&quot; title=&quot;macOS/iOS&quot;&gt;&lt;/a&gt;macOS/iOS&lt;/h3&gt;&lt;p&gt;· 《iOS编程》【美】Christian Keur；Aaron Hillegass&lt;/p&gt;
&lt;p&gt;· 《OS X与iOS内核编程）【澳】Halvorsen,O.H.；Clarke,D&lt;/p&gt;
&lt;h3 id=&quot;Android&quot;&gt;&lt;a href=&quot;#Android&quot; class=&quot;headerlink&quot; title=&quot;Android&quot;&gt;&lt;/a&gt;Android&lt;/h3&gt;&lt;p&gt;· 《第一行代码——Android》郭霖&lt;/p&gt;
&lt;p&gt;· 《Android编程权威指南》【美】Brian Hardy；BillPhillips&lt;/p&gt;
&lt;h2 id=&quot;编程语言&quot;&gt;&lt;a href=&quot;#编程语言&quot; class=&quot;headerlink&quot; title=&quot;编程语言&quot;&gt;&lt;/a&gt;编程语言&lt;/h2&gt;&lt;h3 id=&quot;C&quot;&gt;&lt;a href=&quot;#C&quot; class=&quot;headerlink&quot; title=&quot;C&quot;&gt;&lt;/a&gt;C&lt;/h3&gt;&lt;p&gt;· 《C语言程序设计》【美】Brian W.Kernighan；Dennis M.Ritchie&lt;/p&gt;
&lt;p&gt;· 《C Primer Plus》【美】Stephen Prata，入门书籍&lt;/p&gt;
&lt;p&gt;· 《C和指针》【美】Kenneth A.Reek&lt;/p&gt;
&lt;p&gt;· 《C陷阱与缺陷》【美】Andrew Koenig&lt;/p&gt;
&lt;p&gt;· 《C专家编程》【美】Peter van der Linden&lt;/p&gt;
&lt;h3 id=&quot;C-1&quot;&gt;&lt;a href=&quot;#C-1&quot; class=&quot;headerlink&quot; title=&quot;C++&quot;&gt;&lt;/a&gt;C++&lt;/h3&gt;&lt;p&gt;· 《C++ Primer Plus》【美】Stephen Prata，入门书籍&lt;/p&gt;
&lt;p&gt;· 《C++ Primer》【美】Stanley B.Lippman；Josée Lajoie；Barbara E.Moo，进阶书籍&lt;/p&gt;
&lt;h3 id=&quot;ASM&quot;&gt;&lt;a href=&quot;#ASM&quot; class=&quot;headerlink&quot; title=&quot;ASM&quot;&gt;&lt;/a&gt;ASM&lt;/h3&gt;&lt;p&gt;· 《Intel汇编语言程序设计》【美】Kip Irvine&lt;/p&gt;
&lt;p&gt;· 《Intel开发手册》&lt;/p&gt;
&lt;p&gt;· 《汇编语言（第3版）》王爽&lt;/p&gt;
&lt;p&gt;· 《x86汇编语言：从实模式到保护模式》李忠&lt;/p&gt;
&lt;h3 id=&quot;Java&quot;&gt;&lt;a href=&quot;#Java&quot; class=&quot;headerlink&quot; title=&quot;Java&quot;&gt;&lt;/a&gt;Java&lt;/h3&gt;&lt;p&gt;· 《Java核心技术》【美】Cay S.Horstmann；Gary Cornell，入门书籍&lt;/p&gt;
&lt;p&gt;· 《Java 编程思想》【美】Bruce eckel，进阶书籍&lt;/p&gt;
&lt;h3 id=&quot;JavaScript&quot;&gt;&lt;a href=&quot;#JavaScript&quot; class=&quot;headerlink&quot; title=&quot;JavaScript&quot;&gt;&lt;/a&gt;JavaScript&lt;/h3&gt;&lt;p&gt;· 《JavaScript DOM编程艺术》【美】Jeremy Keith；【加】Jeffrey Sambells&lt;/p&gt;
&lt;p&gt;· 《JavaScript高级程序设计》【美】Zakas.Bicholas C.&lt;/p&gt;
&lt;p&gt;· 《Vue.js项目开发实战》张帆&lt;/p&gt;
&lt;h3 id=&quot;Python&quot;&gt;&lt;a href=&quot;#Python&quot; class=&quot;headerlink&quot; title=&quot;Python&quot;&gt;&lt;/a&gt;Python&lt;/h3&gt;&lt;p&gt;· 《Python核心编程（第2版）》【美】Wesley J·Chun&lt;/p&gt;
&lt;h3 id=&quot;Shell&quot;&gt;&lt;a href=&quot;#Shell&quot; class=&quot;headerlink&quot; title=&quot;Shell&quot;&gt;&lt;/a&gt;Shell&lt;/h3&gt;&lt;p&gt;· 《Linux Shell脚本攻略》【印】Sarath Lakshman&lt;/p&gt;
&lt;h2 id=&quot;调试技术&quot;&gt;&lt;a href=&quot;#调试技术&quot; class=&quot;headerlink&quot; title=&quot;调试技术&quot;&gt;&lt;/a&gt;调试技术&lt;/h2&gt;&lt;p&gt;· 《软件调试》张银奎&lt;/p&gt;
&lt;p&gt;· 《Debug Hacks》【日】吉冈弘隆；大和一洋；大岩尚宏；安部东洋；吉田俊辅&lt;/p&gt;
&lt;p&gt;· 《格蠹汇编：软件调试案例锦集》张银奎&lt;/p&gt;
&lt;h2 id=&quot;数据结构与算法&quot;&gt;&lt;a href=&quot;#数据结构与算法&quot; class=&quot;headerlink&quot; title=&quot;数据结构与算法&quot;&gt;&lt;/a&gt;数据结构与算法&lt;/h2&gt;&lt;p&gt;· 《数据结构与算法分析——C语言描述》【美】Mark Allen Weiss&lt;/p&gt;
&lt;p&gt;· 《算法导论》【美】Thomas H.Cormen；Chales E.Leiserson；Ronald l.Rivest&lt;/p&gt;
&lt;p&gt;· 《我的第一本算法书》【日】宫崎修一；石田保辉，入门书籍，无代码进行图解&lt;/p&gt;
&lt;p&gt;· 《算法图解：像小说一样有趣的算法入门书》【美】Aditya Bhargava&lt;/p&gt;
&lt;h2 id=&quot;编译原理&quot;&gt;&lt;a href=&quot;#编译原理&quot; class=&quot;headerlink&quot; title=&quot;编译原理&quot;&gt;&lt;/a&gt;编译原理&lt;/h2&gt;&lt;p&gt;· 《编译系统透视：图解编译原理》新设计团队，入门书籍&lt;/p&gt;
&lt;p&gt;· 《编译原理》（龙书）【美】Alfered V.Aho；Monica S.Lam；Ravi Sehi；Jeffrey D.Ullmam&lt;/p&gt;
&lt;p&gt;· 《编译与反编译技术实战》庞建民&lt;/p&gt;
&lt;h2 id=&quot;其他&quot;&gt;&lt;a href=&quot;#其他&quot; class=&quot;headerlink&quot; title=&quot;其他&quot;&gt;&lt;/a&gt;其他&lt;/h2&gt;&lt;p&gt;· 《编程高手箴言》梁肇新&lt;/p&gt;
&lt;p&gt;· 《代码整洁之道》【美】Robert C.Martin&lt;/p&gt;
&lt;p&gt;· 《代码大全》【美】Steve McConnell&lt;/p&gt;
&lt;p&gt;· 《重构：改善既有代码的设计》【美】Martin Fowler&lt;/p&gt;
&lt;h1 id=&quot;网络技术&quot;&gt;&lt;a href=&quot;#网络技术&quot; class=&quot;headerlink&quot; title=&quot;网络技术&quot;&gt;&lt;/a&gt;网络技术&lt;/h1&gt;&lt;p&gt;· 《TCP/IP详解（卷1：协议）》【美】Kevin R.fall；W.Richard Stevens&lt;/p&gt;
&lt;p&gt;· 《Wireshark数据包分析实战》【美】Chris Sanders&lt;/p&gt;
&lt;h1 id=&quot;安全技术&quot;&gt;&lt;a href=&quot;#安全技术&quot; class=&quot;headerlink&quot; title=&quot;安全技术&quot;&gt;&lt;/a&gt;安全技术&lt;/h1&gt;&lt;h2 id=&quot;安全开发&quot;&gt;&lt;a href=&quot;#安全开发&quot; class=&quot;headerlink&quot; title=&quot;安全开发&quot;&gt;&lt;/a&gt;安全开发&lt;/h2&gt;&lt;p&gt;· 《天书夜读：从汇编语言到Windows内核编程》谭文；邵坚磊&lt;/p&gt;
&lt;p&gt;· 《Rootkit：系统灰色地带的潜伏者》【美】Bill Blunden&lt;/p&gt;
&lt;p&gt;· 《Rootkits——Windows内核的安全防护》【美】Gerg Hoglund；James Butler&lt;/p&gt;
&lt;p&gt;· 《BSD ROOTKIT设计——内核黑客指引书》【美】Joseph Kong&lt;/p&gt;
&lt;p&gt;· 《寒江独钓：Windows内核安全编程》谭文；杨潇；邵坚磊&lt;/p&gt;
&lt;h2 id=&quot;逆向工程&quot;&gt;&lt;a href=&quot;#逆向工程&quot; class=&quot;headerlink&quot; title=&quot;逆向工程&quot;&gt;&lt;/a&gt;逆向工程&lt;/h2&gt;&lt;p&gt;· 《加密与解密》段钢&lt;/p&gt;
&lt;p&gt;· 《恶意软件分析诀窍与工具箱——对抗“流氓”软件的技术与利器》【美】Michael Hale Ligh；Steven Adair&lt;/p&gt;
&lt;p&gt;· 《C++反汇编与逆向分析技术揭秘》钱林松；赵海旭&lt;/p&gt;
&lt;p&gt;· 《IDA权威指南》【美】Chris Eagle&lt;/p&gt;
&lt;p&gt;· 《逆向工程权威指南》【乌克兰】Dennis Yurichev，多平台入门大全&lt;/p&gt;
&lt;p&gt;· 《Android软件安全与逆向分析》丰生强&lt;/p&gt;
&lt;p&gt;· 《macOS软件安全与逆向分析》丰生强&lt;/p&gt;
&lt;p&gt;· 《iOS应用逆向工程（第2版）》沙梓社；吴航&lt;/p&gt;
&lt;h2 id=&quot;Web安全&quot;&gt;&lt;a href=&quot;#Web安全&quot; class=&quot;headerlink&quot; title=&quot;Web安全&quot;&gt;&lt;/a&gt;Web安全&lt;/h2&gt;&lt;p&gt;· 《黑客攻防技术宝典：Web实战篇》【美】Marcus Pinto，Dafydd Stuttard&lt;/p&gt;
&lt;p&gt;· 《白帽子讲Web安全》吴翰清&lt;/p&gt;
&lt;p&gt;· 《Web安全测试》【美】Paco Hope；Ben Waltber&lt;/p&gt;
&lt;p&gt;· 《Web前端黑客技术揭秘》钟晨鸣；徐少培&lt;/p&gt;
&lt;p&gt;· 《精通脚本黑客》曾云好&lt;/p&gt;
&lt;h2 id=&quot;软件-系统安全&quot;&gt;&lt;a href=&quot;#软件-系统安全&quot; class=&quot;headerlink&quot; title=&quot;软件/系统安全&quot;&gt;&lt;/a&gt;软件/系统安全&lt;/h2&gt;&lt;p&gt;· 《0day安全：软件漏洞分析技术（第2版）》王清，入门书籍&lt;/p&gt;
&lt;p&gt;· 《漏洞战争：软件漏洞分析精要》林桠泉，进阶书籍&lt;/p&gt;
&lt;p&gt;· 《捉虫日记》【德】Tobias Klein，进阶书籍&lt;/p&gt;
&lt;p&gt;· 《黑客防线2009缓冲区溢出攻击与防范专辑》&lt;/p&gt;
&lt;p&gt;· 《内核漏洞的利用与防范》【美】Enrico Perla；Massimiliano Oldani&lt;/p&gt;
&lt;p&gt;· 《Fuzzing for Software Security Testing and Quality Assurance（第2版）》【美】Charlie Miller，博文视点翻译中&lt;/p&gt;
&lt;p&gt;· 《iOS Hackers’s Handbook》【美】Charlie Miller，不推荐中文版&lt;/p&gt;
&lt;p&gt;· 《The Mac Hacker’s Handbook》【美】Charlie Miller&lt;/p&gt;
&lt;p&gt;· 《Android安全攻防权威指南》【美】Joshua J.Drake；【西】Pau Oliva Fora；【美】Collin Mulliner&lt;/p&gt;
&lt;p&gt;· 《The Art of Softwar Security Assessment:Identifying and Preventing Software Vulnerabilities》【美】Mark Dowd&lt;/p&gt;
&lt;p&gt;· 《Android Security Cookbook》【美】Keith Makan; Scott Alexander-Bown，中译本《Android安全攻防实战》&lt;/p&gt;
&lt;p&gt;· 《模糊测试-强制性安全漏洞挖掘》【美】Michael Mutton&lt;/p&gt;
&lt;p&gt;· 《Exploit编写系列教程》【美】Corelan Team&lt;/p&gt;
&lt;p&gt;· 《MacOS and iOS Internals,Volume Ⅲ: Security &amp;amp; Insecurity》【美】Jonathan Levin，博文视点翻译中&lt;/p&gt;
&lt;p&gt;· 《灰帽黑客：正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》【美】Allen Harper；Shon harris&lt;/p&gt;
&lt;p&gt;· 《威胁建模：设计和交付更安全的软件》【美】Adam Shostack&lt;/p&gt;
&lt;h2 id=&quot;无线电安全&quot;&gt;&lt;a href=&quot;#无线电安全&quot; class=&quot;headerlink&quot; title=&quot;无线电安全&quot;&gt;&lt;/a&gt;无线电安全&lt;/h2&gt;&lt;p&gt;· 《无线电安全攻防大揭秘》杨卿；黄琳&lt;/p&gt;
&lt;h2 id=&quot;硬件安全&quot;&gt;&lt;a href=&quot;#硬件安全&quot; class=&quot;headerlink&quot; title=&quot;硬件安全&quot;&gt;&lt;/a&gt;硬件安全&lt;/h2&gt;&lt;p&gt;· 《硬件安全攻防大揭秘》简云定，杨卿&lt;/p&gt;
&lt;h2 id=&quot;汽车安全&quot;&gt;&lt;a href=&quot;#汽车安全&quot; class=&quot;headerlink&quot; title=&quot;汽车安全&quot;&gt;&lt;/a&gt;汽车安全&lt;/h2&gt;&lt;p&gt;· 《智能汽车安全攻防大揭秘》李均；杨卿&lt;/p&gt;
&lt;p&gt;· 《汽车黑客大曝光》【美】Craig Smith&lt;/p&gt;
&lt;h1 id=&quot;产品&quot;&gt;&lt;a href=&quot;#产品&quot; class=&quot;headerlink&quot; title=&quot;产品&quot;&gt;&lt;/a&gt;产品&lt;/h1&gt;&lt;p&gt;· 《人人都是产品经理》苏杰&lt;/p&gt;
&lt;h1 id=&quot;运营&quot;&gt;&lt;a href=&quot;#运营&quot; class=&quot;headerlink&quot; title=&quot;运营&quot;&gt;&lt;/a&gt;运营&lt;/h1&gt;&lt;p&gt;· 《运营之光2.0：我的互联网运营方法论与自白》黄有璨&lt;/p&gt;
&lt;h1 id=&quot;设计&quot;&gt;&lt;a href=&quot;#设计&quot; class=&quot;headerlink&quot; title=&quot;设计&quot;&gt;&lt;/a&gt;设计&lt;/h1&gt;&lt;p&gt;· 《写给大家看的设计书》【美】Robin Williams&lt;/p&gt;
&lt;p&gt;· 《听故事，学PPT设计》杨雪&lt;/p&gt;
&lt;h1 id=&quot;运维&quot;&gt;&lt;a href=&quot;#运维&quot; class=&quot;headerlink&quot; title=&quot;运维&quot;&gt;&lt;/a&gt;运维&lt;/h1&gt;&lt;p&gt;· 《Docker技术入门与实战》杨保华；戴王剑；曹亚仑&lt;/p&gt;
&lt;p&gt;· 《鸟哥的Linux私房菜》鸟哥&lt;/p&gt;
&lt;h1 id=&quot;软技能&quot;&gt;&lt;a href=&quot;#软技能&quot; class=&quot;headerlink&quot; title=&quot;软技能&quot;&gt;&lt;/a&gt;软技能&lt;/h1&gt;&lt;p&gt;· 《软技能：代码之外的生存指南》【美】John Sonmez&lt;/p&gt;
&lt;p&gt;· 《程序员健康指南》【美】JoeKutner&lt;/p&gt;
&lt;p&gt;· 《影响力》【美】Robert B.Cialdini&lt;/p&gt;
&lt;p&gt;· 《穷爸爸富爸爸》【美】Robert Toru Kiyosaki&lt;/p&gt;
&lt;p&gt;· 《横向领导力》【美】Roger Fisher；Alan Sharpe&lt;/p&gt;
&lt;p&gt;· 《职业情商》张新越&lt;/p&gt;
&lt;p&gt;· 《程序员的成长课》安晓辉；周鹏&lt;/p&gt;
&lt;p&gt;· 《高效演讲：斯坦福最受欢迎的沟通课》【美】Peter Meyers；Shann Nix&lt;/p&gt;
&lt;p&gt;· 《程序员的英语》【韩】朴栽浒；李海永&lt;/p&gt;
&lt;p&gt;· 《思考，快与慢》【美】丹尼尔·卡尼曼&lt;/p&gt;
&lt;p&gt;· 《少有人走的路》【美】斯科特·派克&lt;/p&gt;
&lt;p&gt;· 《异类：不一样的成功启示录》【加】 马尔科姆·格拉德威尔&lt;/p&gt;
&lt;p&gt;· 《见识》吴军&lt;/p&gt;
&lt;p&gt;· 《英语写作手册：风格的要素》【美】William Strunk&lt;/p&gt;
&lt;p&gt;· 《非暴力沟通》【美】马歇尔·卢森堡&lt;/p&gt;
&lt;p&gt;· 《风格感觉：21世纪写作指南》【美】史蒂芬·平克&lt;/p&gt;
&lt;p&gt;· 《浪潮之巅》（上下册）吴军&lt;/p&gt;
&lt;p&gt;· 《一本小小的蓝色逻辑书》【加】布兰登·罗伊尔&lt;/p&gt;
&lt;p&gt;· 《精进：如何成为一个很厉害的人》采铜&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;附思维导图：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/secbook.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/wzdad.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;近来也读过不少书，推荐几本个人觉得不错的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;《Vue.js项目开发实战》张帆&lt;/li&gt;
&lt;li&gt;《我的第一本算法书》【日】宫崎修一；石田保辉，入门书籍，无代码进行图解&lt;/li&gt;
&lt;li&gt;《算法图解：像小说一样有趣的算法入门书》【美】Aditya B
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>HITB 2020：二进制漏洞挖掘仍是会议主流方向</title>
    <link href="http://riusksk.github.io/2020/06/07/HITB-2020%EF%BC%9A%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E4%BB%8D%E6%98%AF%E4%BC%9A%E8%AE%AE%E4%B8%BB%E6%B5%81%E6%96%B9%E5%90%91/"/>
    <id>http://riusksk.github.io/2020/06/07/HITB-2020：二进制漏洞挖掘仍是会议主流方向/</id>
    <published>2020-06-07T04:44:41.000Z</published>
    <updated>2020-07-05T05:36:49.000Z</updated>
    
    <content type="html">&lt;p&gt;本周Hack In The Box官方已经将大会演讲视频上传到YouTube，之前在官网有提供部分议题的pdf下载，但有些未提供的议题，这次也公开了视频，可以看到议题ppt内容。&lt;/p&gt;
&lt;p&gt;今年的议题更多集中在二进制漏洞挖掘上，占比&lt;strong&gt;43%&lt;/strong&gt;，而这些议题涉及（Windows、macOS、IoT、工控等等），其它议题方向包括恶意软件、二进制分析工具、容器安全、漏洞奖励计划等等，可以看出当前工业界的一些研究议题，还是比较喜欢二进制漏洞挖掘这个方向，这次一个Web相关议题都没有。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;精彩议题推荐&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、60 CVEs in 60 Days&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1.28.26.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;主要分享Windows平台下高权限进程的Symlink攻击（高权限进程在操作文件时，未作严格的权限校验，导致攻击利用符号链接到一些受保护的目录文件，比如C盘的系统DLL文件，后面系统或应用去自动加载时，实现代码执行并提权），这种攻击方式最早是由Project Zero大牛James Forshaw公布的，当时还开源了个利用测试工具(&lt;a href=&quot;https://github.com/googleprojectzero/symboliclink-testing-tools&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/symboliclink-testing-tools&lt;/a&gt;)  ，指定目录参数来测试，但它还算不上完整的漏洞挖掘工具。&lt;/p&gt;
&lt;p&gt;漏洞原理较为简单，关键在于如何批量自动化挖掘，为此作者实现了一款叫 &lt;strong&gt;Ichanea&lt;/strong&gt; 的自动化漏洞挖掘工具。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1.29.54.png&quot; alt=&quot;1.29.54&quot;&gt;&lt;/p&gt;
&lt;p&gt;原理：通过过滤驱动捕获文件操作相关的IRP包，然后获取归属进程的相关信息，包括路径、进线程token等等，然后判断是否为高权限进程，若是就拿Token去检测文件的访问权限，如果可以就发消息给高权限的服务进程，创建/RCP/Control的加载点及符号链接进行DLL劫持测试，从而将监控、发现和利用集成一体。&lt;/p&gt;
&lt;p&gt;最后在26家厂商（包括微软、Intel、Adobe、华为等等）产品中，挖到上百个漏洞，其中已有60个CVE致谢，产量颇丰。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、Pwning Adobe Reader Multiple Times with Malformed Strings&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/屏幕快照 2020-07-05 下午1.30.18.png&quot; alt=&quot;屏幕快照 2020-07-05 下午1.30.18&quot;&gt;&lt;/p&gt;
&lt;p&gt;腾讯玄武实验室出品，分享Adobe Reader在处理字符串时的安全问题。通过PDF JS来构造恶意字符串去触发，JS上的漏洞也更便于写exploit。虽然Adobe用了一些自定义的字符串安全处理函数，但其使用不当导致仍会造成漏洞。主要有两方面原因：&lt;/p&gt;
&lt;p&gt;1、传错参数，比如拷贝字符时max_bytes参数误传0x7FFFFFFF，可能造成溢出；&lt;/p&gt;
&lt;p&gt;2、字符串类型检测不当，比如误将ASNI当作Unicode字符串处理，千万类型混淆漏洞。&lt;/p&gt;
&lt;p&gt;感觉这个攻击面还是有点偏门，找到一块新大陆，刷起漏洞来应该很爽，但估计也就一波过，可能没剩下啥了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、Exploiting directory permissions on macOS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/屏幕快照 2020-07-05 下午1.30.30.png&quot; alt=&quot;屏幕快照 2020-07-05 下午1.30.30&quot;&gt;&lt;/p&gt;
&lt;p&gt;有点类似前面Windows Symlink攻击提权的思路，介绍了macOS下系统对文件及目录的权限管控方式，用fs_usage去监控进程的文件操作行为，从而找出一些可能被用于提权的目录/文件。利用的正是文件与目录高低权限的差异化，借助软硬链实现对受保护文件的越权操作。有些只能写，但内容不可控，或者只能删除，也有可被用于root提权的漏洞。最后作者也简单地介绍一些文件操作方面的安全建议，比如对于安装器，若是/tmp就生成随机名目录，其它的要控制好权限，比如就root权限，其它则收回，安装前清理目录，删除移动文件时避免支持链接方式等等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、Documents of Doom – Infecting Macos Via Office Macros&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/屏幕快照 2020-07-05 下午1.31.01.png&quot; alt=&quot;屏幕快照 2020-07-05 下午1.31.01&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/sdafsdfa.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;以前Office宏病毒在Windows还是流行过一段时间的，其实macOS上也有，作者就列举了2017、2018、2019年的三次真实的宏攻击案例，也介绍了olevba之类的分析工具。&lt;/p&gt;
&lt;p&gt;除此之外，还介绍了一些mac版Office沙盒逃逸的漏洞，用户打开doc后，可以无提示无交互的实现代码执行。作者自己也挖过一个沙盒逃逸漏洞，正是利用Python这条漏网之鱼，于用它将app添加版系统的自启动项，实现非沙盒下的执行权限。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5、Fuzzing File System Implementations to Uncover Security Bugs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/屏幕快照 2020-07-05 下午1.31.56.png&quot; alt=&quot;屏幕快照 2020-07-05 下午1.31.56&quot;&gt;&lt;/p&gt;
&lt;p&gt;PPT上写的关键信息不多，但重要的是作者把工具开源了，针对BSD文件系统（支持FFS、UFS、EXT、ZFS文件系统格式）进行Fuzzing，工具地址：&lt;a href=&quot;https://github.com/0xricksanchez/fisy-fuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/0xricksanchez/fisy-fuzz&lt;/a&gt;  。所以重点可以看下该工具，支持Ubuntu，要求KVM、QEMU和libvirt，采用的是暴力Fuzzing 文件系统，直接用到了radamsa，自己也作了全局的随机变异，然后尝试加载，若加载成功就调用syscall执行一些文件操作，看是否崩溃，最后再借助虚拟机快照还原运行环境。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/aaaaaa.png&quot; alt=&quot;屏幕快照 2020-07-05 下午1.32.14&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完整议题列表&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;60 CVEs in 60 Days&lt;/li&gt;
&lt;li&gt;The State of ICS Security: then and Now&lt;/li&gt;
&lt;li&gt;Pwning Adobe Reader Multiple Times with Malformed Strings&lt;/li&gt;
&lt;li&gt;Open the Gates – the (In)Security of Cloudless Smart Door Systems&lt;/li&gt;
&lt;li&gt;Hiding in Plain Sight: Analyzing Recent Evolutions in Malware Loaders&lt;/li&gt;
&lt;li&gt;Building Next-gen Security Analysis Tools with Qiling Framework&lt;/li&gt;
&lt;li&gt;Exploiting Directory Permissions on macOS&lt;/li&gt;
&lt;li&gt;Documents of Doom – Infecting Macos Via Office Macros&lt;/li&gt;
&lt;li&gt;From Man-in-the-Middle to Privesc and Rce: Exploiting the Netlogon Protocol&lt;/li&gt;
&lt;li&gt;The Dna of Hidden Cobra – a Look at a Nation State’s Cyber Offensive Programs&lt;/li&gt;
&lt;li&gt;Prisoner Number 6&lt;/li&gt;
&lt;li&gt;Fuzzing File System Implementations to Uncover Security Bugs&lt;/li&gt;
&lt;li&gt;Breaking and Securing Cloud Platforms&lt;/li&gt;
&lt;li&gt;Army of Undead: Tailored Firmware Emulation&lt;/li&gt;
&lt;li&gt;Bugrank: a Community Bug Bounty Platform&lt;/li&gt;
&lt;li&gt;Virtual Lab: Bare-metal Reverse Engineering &amp;amp; Hardware Hacking&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;议题ppt及视频地址参见：&lt;a href=&quot;https://conference.hitb.org/lockdown-livestream/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://conference.hitb.org/lockdown-livestream/&lt;/a&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;本周Hack In The Box官方已经将大会演讲视频上传到YouTube，之前在官网有提供部分议题的pdf下载，但有些未提供的议题，这次也公开了视频，可以看到议题ppt内容。&lt;/p&gt;
&lt;p&gt;今年的议题更多集中在二进制漏洞挖掘上，占比&lt;strong&gt;43%&lt;/strong
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>谈谈追踪前沿学术研究的技巧</title>
    <link href="http://riusksk.github.io/2020/05/30/%E8%B0%88%E8%B0%88%E8%BF%BD%E8%B8%AA%E5%89%8D%E6%B2%BF%E5%AD%A6%E6%9C%AF%E7%A0%94%E7%A9%B6%E7%9A%84%E6%8A%80%E5%B7%A7/"/>
    <id>http://riusksk.github.io/2020/05/30/谈谈追踪前沿学术研究的技巧/</id>
    <published>2020-05-30T05:55:39.000Z</published>
    <updated>2020-07-05T05:57:03.000Z</updated>
    
    <content type="html">&lt;p&gt;以前找论文都只知道上中国知网CNKI，很多是中文，且论文质量一般，更重要的还是收费。所以，我离开学校后，有时下载论文，都是找别人帮忙。&lt;/p&gt;
&lt;p&gt;最近一年刷Twitter，经常发现一些漏洞研究论文都是在一个叫arXiv的网站提供免费下载，而且经常是会议开始前很早就公开了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-4f89ba92856d2079f97eb865d710c767_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里介绍下&lt;a href=&quot;https://link.zhihu.com/?target=http%3A//arXiv.org&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://arXiv.org&lt;/a&gt;这个学术论文搜索引擎。&lt;/p&gt;
&lt;p&gt;arXiv（读音如英语的 archive ）是一个收集物理学、数学、计算机科学与生物学论文预印本的网站。arXiv 原先是由物理学家保罗·金斯巴格在1991年建立的网站，本意在收集物理学的论文预印本，随后括及天文、数学等其它领域。金斯巴格因为这个网站获得了2002年的麦克阿瑟奖。 arXiv 原先挂在洛斯阿拉莫斯国家，现在挂在康奈尔大学下面。&lt;/p&gt;
&lt;p&gt;为了防止自己的想法在论文被收录前被他人剽窃，作者会将预稿上传到arvix作为预收录，以证明论文的原创性。&lt;/p&gt;
&lt;p&gt;所以上面的论文经常比投稿大会更早放出，而且免费下载。英语通常是学术论文的第一语言，牛逼的学术论文也基本是英语写的，这点上国外的学术检索引擎就占据了一定优势，很多在CNDI是检索不到的，况且免费论文也不适合让你拿来收费。&lt;/p&gt;
&lt;p&gt;如果本文只是介绍arXiv让你搜索论文，那就没意思了。&lt;/p&gt;
&lt;p&gt;下面介绍如何通过web feed免费订阅最新论文的方法。&lt;br&gt;我平时是用Inoreader订阅RSS，但arXiv并没有提供RSS。刚好最近Inoreader出了新功能叫Web Feed，通过定时爬取特定页面来实现RSS订阅的类似效果。&lt;/p&gt;
&lt;p&gt;这里我以论文标题含fuzz的关键词来检索计算机科学论文，如果不检索标题，可能会出现非漏洞研究论文，所以推荐检索标题会更准确一些。同时，注意开启按最新时间排序。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic2.zhimg.com/80/v2-25d577c96102ede54fc53090d8a160bd_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;将搜索完生成的链接输入Inoreader搜索：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-e437ce28cd05e3c73ce163d7bbd7707c_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-40eaf62c6a85b25bc2d3cabf59ae26ec_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;订阅效果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic3.zhimg.com/80/v2-1ff7fea1bfde6b7e3090bb4354ede006_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;以后就可以及时获取最新论文的下载。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;以前找论文都只知道上中国知网CNKI，很多是中文，且论文质量一般，更重要的还是收费。所以，我离开学校后，有时下载论文，都是找别人帮忙。&lt;/p&gt;
&lt;p&gt;最近一年刷Twitter，经常发现一些漏洞研究论文都是在一个叫arXiv的网站提供免费下载，而且经常是会议开始前很早就公开了
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>技术人的修炼之道：从业余到专业</title>
    <link href="http://riusksk.github.io/2020/05/05/%E6%8A%80%E6%9C%AF%E4%BA%BA%E7%9A%84%E4%BF%AE%E7%82%BC%E4%B9%8B%E9%81%93%EF%BC%9A%E4%BB%8E%E4%B8%9A%E4%BD%99%E5%88%B0%E4%B8%93%E4%B8%9A/"/>
    <id>http://riusksk.github.io/2020/05/05/技术人的修炼之道：从业余到专业/</id>
    <published>2020-05-05T06:01:41.000Z</published>
    <updated>2020-07-05T06:15:08.000Z</updated>
    
    <content type="html">&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-d51156a60a6eb799327380b7361343a0_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;马斯克坐在他们前面一排,正在电脑前打字。“我们心想,“这个呆子,他现在还能干吗?”这时马斯克突然转过身来,亮出了他制作的电子表格。“兄弟们,”他说,“我觉得我们可以自己造火箭。”&lt;/p&gt;
&lt;p&gt;马斯克把他的笔记本电脑递给格里芬和坎特雷尔,他们惊呆了。表格里详细列明了建造、装配和发射一枚火箭所需的成本。根据马斯克的计算,他需要建造一枚大小适中的火箭,以满足那些搭载小型卫星和研究设备的细分市场的需求,这样就能节省一笔发射费用。他在表格中还列出了假设的火箭性能特性,内容十分详细。“我说,‘埃隆,你从哪里得到这些数据的?”’坎特雷尔说。&lt;/p&gt;
&lt;p&gt;马斯克用了几个月的时间研究航天工业及其背后的物理原理。他从坎特雷尔和其他人那里借来了《火箭推进原理》( RocKet Propulsion E1ements)、《天体动力学基础》( Fundamentals of Astrodynam-ics )、《燃气涡轮和火箭推进的空气动力学》( Aerothermodynamics of Gas Turbine and RocKet Propul-sion ),还有其他各种专业书籍。马斯克仿佛又找到了童年时的状态,他努力吸收关于太空的一切知识,在这一系列近似冥想的学习过程中,他终于意识到,自己制造的火箭可以,而且也应该比俄罗斯人的更便宜。忘了老鼠计划吧。忘了可以回传生长影像的植物吧,它有可能在火星上死掉。通过更低的太空探索成本,马斯克可以激发人们重新思考太空探索。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;——摘自《硅谷钢铁侠》&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic2.zhimg.com/80/v2-b451b256b725f55f5b97a793d21b3cd5_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;造火箭这种事，对于绝大多数人而言，也就吹吹牛逼而已。但马斯克勇于挑战，最后还真让他干成了。&lt;/p&gt;
&lt;p&gt;对于跨学科的领域知识，马斯克也是花了不少时间先从基础教科书入手，然后将知识点与现有知识和经历进行关联，以转化为自己的知识，再作迁移学习与应用。哪怕最后他搞出来的可回收火箭比NASA还牛逼，技术上更加创新，但他也是先从底层的基础技术入手，以不变应万变。像计算机科学迅速发展了这么多年，出现了许多新技术，但底层的那些基础知识还是那一些，变化不大。&lt;/p&gt;
&lt;p&gt;通常每个学科领域都有一些基础专业课，比如医学有四大基础课程：药理、病理、生理、解剖；计算机也有五大基础课程：操作系统原理、计算机组成原理、计算机网络、数据结构与算法、编译原理。&lt;/p&gt;
&lt;p&gt;不过，对于刚接触新领域的人，一般不知道刚开始要学什么，这时搜索引擎就派上用场了。如果有认识的专业人士，问下自然是最快的，但这种情况可遇不可求，所以还是老实地google下吧。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-bf261286bbdd9110848c53127535ba33_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;刚准备学安全的时候，鬼知道要学啥，要看啥书。一头扎进图书馆，随便挑有“黑客”二字的，能看懂的就借来看，再后来发现“黑客”之书看多了没什么提升，于是开始学一些计算机专业的基础课，就这样不断地来回挑书借书读书，久而久之就知道该学什么了。&lt;/p&gt;
&lt;p&gt;所以，&lt;strong&gt;判断一个人对新领域是真的感兴趣，还是仅仅好奇而已，最好的方式就是把他扔进图书馆，让他自己挑书看，一本不行再换一本，来回折腾个五六遍，看他能否坚持学习下去。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;之前看过一则寓言故事：两个农夫上山砍柴，挑柴回家的路上，累了就在中途休息一下。期间一位农夫突发奇想，就问同伴：你说这皇帝每天会用什么挑柴？另一个人回答：肯定是用金扁担。&lt;/p&gt;
&lt;p&gt;农夫受自身阅历限制，对不了解的事情，只能凭借已有知识来理解和猜测。不知与不会是两个概念，业余与专业的区别就在于此：&lt;strong&gt;专业者知道自己的不足，业余者则感觉专业的还不如自己。&lt;/strong&gt;也就是说，专业者知道自己不会什么，业余者不知道自己不会什么。&lt;/p&gt;
&lt;p&gt;自己都不知道哪里不足，就不知道要去学什么。帮助我从“不会”进阶到“不知”的是看雪学院，它让我知道了逆向工程、软件漏洞、内核驱动这些知识盲点。在看雪上知道了《加密与解密》、《网络渗透技术》、《0day安全：软件漏洞分析技术》这些经典书籍，但当时的我哪看得懂这些天书。最先看到的是网渗一书，当我翻开第一章的时候，我就懵逼了，什么GDB、SoftICE调试器、IDA反汇编器一类的工具，都是什么鬼啊？然后在安全焦点上看到介绍如何学习网渗一书的建议，其中就提到了《深入理解计算机系统》，然后我花了好长时间把这书读了两遍，还做了笔记。再跟着看雪精华集里的文章都多动手实践，crackme破解一遍，exploitme利用一遍。当时我就一个目标：读懂《网络渗透技术》。后来我大约花了三四年时间才达到这一目标（没办法，天赋不足，后天来凑）。所以，&lt;strong&gt;一个好的技术社区可以帮助自己提升认知，认清自己的知识盲点，从而找到适合自己的学习方向。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic3.zhimg.com/80/v2-67c4e27795220045c227e8c3e99c2fb2_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic3.zhimg.com/80/v2-1b6252632eabc5e823ce53ae6438e50e_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;学习金字塔告诉我们，通过主动学习后，知识的留存率最高。什么是主动学习？就是说、写、教、做的输出式学习。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;说&lt;/strong&gt;：给学弟学妹们分享些技术，给企业/学校作培训，上学术/工业顶会演讲，都可以作为主动学习的方式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;写&lt;/strong&gt;：作演讲也要写ppt或文章，给一些杂志/门户网站投稿，都可以帮助加深对知识的理解，有时还能顺便赚点稿费。直至后来出版社因为之前的技术文章找过来，才有了《漏洞战争》一书。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教&lt;/strong&gt;：自己理解了是一回事，教会别人又是另一回事，要求更高，除了理解知识本身之外，还要以受教者可理解的话也讲述。特别是向非专业者讲述专业知识时，对教授者的知识理解程度更高。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;做&lt;/strong&gt;：就是应用实践，比如打CTF，刷漏洞悬赏平台。计算机技术是一项重实践的学科，编程、调试和挖洞无不如此，若毕业生刚来就大谈架构设计、设计模式，那谁来写代码呢？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-2579ce26086d7ba186e25d52c6b045d0_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;兴趣是第一动力，但不是唯一的。&lt;/p&gt;
&lt;p&gt;大学时代，很多人会去勤工俭学，牺牲自己休息和学习的时间。但我没这么干，因为我觉得勤工俭学与学习是个零和游戏，两者此消彼长，而我希望达到1+1&amp;gt;2的效果。当然，自己也不想去端盘子就是。&lt;/p&gt;
&lt;p&gt;于是我选择给《黑客防线》投稿，一开始边翻译边学习，边学习边投稿，再拿稿费吃饭上网买书（当时没个人电脑），然后继续保持学习，从翻译到原创。为了写稿，就要不断地学习新知识，不然也没钱吃饭买书。就这样：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;学习 —》写稿 —》赚钱 —》买书/上网 —》学习&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;自此建立起良性循环的学习动力，而内在的学习驱动力比努力的被动学习更加有效。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-1e2a22935c1261533403e3e713af5e43_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;2013年，“自媒体”成为热词。2012年年末，“简书”上线，“今日头条”上线，“知乎”开放用户注册，微信推出订阅号。每个人都可以是媒体，每个人都可以提供知识服务。这一年，人均每周上网时间大幅增加到25小时，阅读一篇文章的平均用时却降到57秒。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;——摘自《这样读书就够了》&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在每天快餐式的知识太多了，文章更多的是表达观点、方法或某些知识点的碎片化知识，一般都是不成体系的（但也不是绝对的，有些论文就写得很系统完整），需要自己加工吸收，将其与己有的知识领域关联并应用起来。&lt;/p&gt;
&lt;p&gt;《这样读书就够了》介绍了一种方法，教你如何将碎片化知识进行加工，转化为自成体系的知识。&lt;/p&gt;
&lt;p&gt;什么是体系？不是点，不是线，而是网，是立体的网络。&lt;/p&gt;
&lt;p&gt;最初，你接收到的是一个知识点：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-e0f5217eb06634e57511c39c18c99628_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后，你给这个碎片信息加上前因（为什么要这么做）后果（行动之后的结果）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic3.zhimg.com/80/v2-340d6cf252e3f600f402bc7011d9db76_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;其后再加上适用边界（如特定场景、前提条件、使用条件等等）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic3.zhimg.com/80/v2-b244b8780e57a38416136c31c9d49542_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;但这样的信息仍然是线性的，需要再加一个维度，让它变得立体，即与自己关联和互动起来：反思和行动。反思（A1）指向过去，行动(A2)指向未来。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-3a168ad6961291f59310501af1ee8fdf_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;这就是“举一反三”：为一个信息或知识点构建3个维度。加工后的信息不再是一个孤立的点，而是伸出了6根触角，等待与其他信息连接。当你有了多个这样加工过的知识点之后，不同知识点会相连，互相对接、榫合、支撑，形成一个晶格体系，这就是你自己的知识体系。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-10b2cc4c908a6d2282238377013ff50b_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-a039f2b94db765ef0edd400fc88ff190_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;之前付费知识兴起时，我也在“得到”app上买了几门课，听的时候感觉很有道理，听完之后感觉啥也没留下。其中有门课叫《有效训练你的研究能力》，共6篇短文而已，网上搜索下就有，可以不用购买。虽然学完并不能有效训练你的研究能力，可操作性差些，但其中讲到的三种意识可以借鉴下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;作品意识：刻意地追求卓越&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本质上就是刻意练习地去追求更好，也不是单纯地完成任务。比如做饭，多数人虽然做一辈子饭，但大多成不了专业厨师，缺乏的就是不断练习不断反思提升的作品意识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;目标意识：防止研究过程跑偏&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在研究学习前，经常要收集资料，有时遇到自己感兴趣的资料，可能会多深入学习下，但学着学着就容易忘记原有目标了。所以，搜集资料既要足量，又要克制，避免过多偏离目标的资料干扰。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;局外意识：保持研究的客观性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有时我们在调研对比竞品安全检测能力时，可能会直接用自己的测试样本库，而自研的安全系统已经专门针对自己的测试样本库作过对比，那对比结果肯定是有失偏颇的。最好的方式是使用多方样本库进行对比测试，以保证结论的客观性。所以在研究过程中，有时就要跳出局外，以旁观者的角度来看待以保证研究结论的公平可靠。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-080450afccff2f13c96cf0a2e228c920_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;我是个容易产生知识焦虑的人，所以也干过一些伪学习的事。伪学习完全脱离了学习本身，仅仅是为了满足自我的良好感觉，帮助自己摆脱焦虑。个人认为的伪学习主要有以下几种情况：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;单纯拼数量的学习：鼓吹一年要读100，300本书，一年要听多少在线课程，10分钟读透xx书籍等等。&lt;/li&gt;
&lt;li&gt;追捧“大神”式的学习：缺乏辨别能力，盲目追随“大神”，网上各种买课程，想当然地以为听了“大神”的课，自己也变成大神了。&lt;/li&gt;
&lt;li&gt;沉迷于不解决实际问题的学习：一整年看的都是不用思考的书籍，比如小说，只图一时爽，对提升能力无任何帮助。&lt;/li&gt;
&lt;li&gt;干货收藏式学习：看个标题和开头，直接微信收藏，或存印象笔记，然后就没然后了。之前我也有过这种做法，后来一些看得慢的资料就干脆打印出来慢慢学习了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://pic4.zhimg.com/80/v2-4a282c1b8c1de3b70cc31aa23d10cc9b_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;本文主要介绍了一些学习方法和个人入门安全领域的一点经验，更多是想强调基础知识的重要性，输出式的主动学习能够实现更高效的学习，也介绍了知识体系建设方法和研究过程中需要注意的三个点，最后提醒大家避免进入伪学习的坑。第一次在手机上写这么长的文章，且个人经历有限，如有误欢迎指正探讨。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&lt;img src=&quot;https://pic1.zhimg.com/80/v2-d51156a60a6eb799327380b7361343a0_720w.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;马斯克坐在他们前面一排,正在电脑前打字。“我们心想,“这个呆子,他现在还能
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>关于Adobe PDF 0day的故事</title>
    <link href="http://riusksk.github.io/2020/04/11/%E5%85%B3%E4%BA%8EAdobe-PDF-0day%E7%9A%84%E6%95%85%E4%BA%8B/"/>
    <id>http://riusksk.github.io/2020/04/11/关于Adobe-PDF-0day的故事/</id>
    <published>2020-04-11T05:40:55.000Z</published>
    <updated>2020-07-05T05:41:44.000Z</updated>
    
    <content type="html">&lt;p&gt;今天StarLabs 发布了他们之前在天府杯上用的adobe pdf 完整exploit，该漏洞是一个 JS API UAF漏洞，利用代码公布在github上，以及利用思路分析文章：&lt;a href=&quot;https://starlabs.sg/blog/2020/04/tianfu-cup-2019-adobe-reader-exploitation/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://starlabs.sg/blog/2020/04/tianfu-cup-2019-adobe-reader-exploitation/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;去年天府杯上，Adobe Reader应该是最大的目标了，很多人打，但临赛前，很多人却退赛了。因为当时的比赛规则是奖金池固定，所有攻破团队来平分那笔钱，所以越多人参赛就越吃亏。但即便退赛了，一些攻破团队拿到钱再平分下也没多少了，最后还不如直接报ZDI，甚至可能还不如上HackerOne报个xss。挖个xss多久？可能几天，利用都不用写。但挖个pdf漏洞多久，可能挖洞一周，写利用一个月，这性价比自不必多言，因此这届比赛，奖金规则一直被圈内人吐槽。&lt;/p&gt;
&lt;p&gt;当时在现场了解到，可能不少人的pdf 0day都是js api，这种通过js完成利用比较方便通用，当然其它非js模块的漏洞也同样可借助js堆喷利用。这些用js api漏洞的人最应该担心撞洞了，现场也有人用其它模块的pdf 0day，反正最后手上有个洞被撞没了。一个只在当最新版出现的漏洞，当时Project Zero报了一堆那个模块的漏洞，结果坑爹的Adobe修了漏洞1，却造就了漏洞2出来。在Adobe安全公告上，看到那个被撞的漏洞致谢上仍然写的是Project Zero的人（没错，未出现传说中的TFB)……&lt;/p&gt;
&lt;p&gt;至少通过这件事情告诉我们，跟着PZ有肉吃！！！&lt;/p&gt;
&lt;p&gt;Adobe的JS引擎用的是2013年左右的SpiderMonkey修改的，所以当初像domato这种js fuzzer神器出来之后，直接拿来fuzz，你都可以搞出一堆Adobe Reader的0day出来，也确实被刷了一波，看公告致谢时间，好像是我带的坏头😂…&lt;/p&gt;
&lt;p&gt;前两年，pdf中的图片解析漏洞盛行，被玄武的刘姓小哥刷爆了。当时如果我报10个此类漏洞，那么可能就会有3个撞洞，就是这么惨烈，连windows上xps这种偏门格式，都被撞，也跟360的撞过。&lt;/p&gt;
&lt;p&gt;在此之后，被刷最多的pdf 漏洞，除了常规的js api外，postscript被国外安全研究员mr_me刷了不少，他写了个ps语法模板生成器去fuzz，产量颇丰。如果没记错的话，据他自己在Twitter上公布的，其2018全年在ZDI的收益是近20万刀，相当于140万元。之前他创办了一个公司，但公司员工就一人。没错，就是他自己，基本就是专职挖洞和培训。今年他入职360 vulcan了，远程办公。&lt;/p&gt;
&lt;p&gt;最后聊点pdf的通用利用技术，毕竟本公众号是技术导向的，但请原谅我的排版和无图内容，因为本文是在手机上写的，且全程在车上完成。&lt;/p&gt;
&lt;p&gt;上文提到的文章已经给出了完整的利用思路，整体而言：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 无论何种内存破坏漏洞，一些逻辑漏洞除外，首先都设法转换成任意读写。&lt;/strong&gt;利用js array堆喷去内存布局，实现uaf的占坑，或其它越界写的后堆块填充，以实现写内容和位置的控制，而js array本身可读，进而实现信息泄露。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 覆盖虚表指针去控制eip。&lt;/strong&gt;寻找上下文可用的虚表指针去实现劫持，像starlabs用CTextField去创建一批对象，目的就是用来覆盖它的虚表指针&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.绕过DEP和CFI。&lt;/strong&gt;2019年3月左右，Adobe终于加入了CFI，导致常规的ROP失效。每次这种新安全机制出来的时候，最佳的绕过方式一定是先寻找未受保护的模块或代码块。回望过往的DEP、ASLR、CFI和PAC，无不如此。这次starlab亦然，他们直接搜索Adobe安装目录下的pe文件，若OPTIONAL_HEADER.DllCharacteristics &amp;amp; 0x4000 = 0，即代表无CFI保护，最后他们找到icucnv58.dll用来构造ROP，分配可执行的shellcode来达到任意代码执行。&lt;/p&gt;
&lt;p&gt;除了第一步需要依赖漏洞上下文场景来转换任意读写外，利用的难点也是在此，而后续工作都是可以套路化。&lt;/p&gt;
&lt;p&gt;可以看到，直至2020年了，Adobe的整体漏洞利用思路依然变化不大，仍是《漏洞战争》中各案例所分享过的方法，只是需要根据漏洞场景作些适配，比如寻找UAF对象同大小的对象，像starlab就用currentValueIndices方法来占坑。不好意思，这里打了下个人广告，可惜公众号app不能直接插入书籍广告，不然就广告彻底一些🤑&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;今天StarLabs 发布了他们之前在天府杯上用的adobe pdf 完整exploit，该漏洞是一个 JS API UAF漏洞，利用代码公布在github上，以及利用思路分析文章：&lt;a href=&quot;https://starlabs.sg/blog/2020/04/tian
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>持续Fuzzing在DevSecOps中的应用</title>
    <link href="http://riusksk.github.io/2020/03/01/%E6%8C%81%E7%BB%ADFuzzing%E5%9C%A8DevSecOps%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/"/>
    <id>http://riusksk.github.io/2020/03/01/持续Fuzzing在DevSecOps中的应用/</id>
    <published>2020-03-01T10:48:50.000Z</published>
    <updated>2020-03-01T13:05:35.000Z</updated>
    
    <content type="html">&lt;p&gt;长期以来，一直有个疑问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fuzzing为何一直未被引入DevSecOps中？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;刚好本周有两件事引起我的关注：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Google发布&lt;strong&gt;&lt;a href=&quot;https://google.github.io/oss-fuzz/getting-started/continuous-integration/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;CIFuzz&lt;/a&gt;&lt;/strong&gt;以支持Github项目实现CI构建过程中的持续Fuzzing（Continuous Fuzzing）&lt;/li&gt;
&lt;li&gt;RSA创新沙盒比赛中ForAllSecure公司的参赛产品&lt;strong&gt;&lt;a href=&quot;https://forallsecure.com/solutions/devsecops/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Mayhem&lt;/a&gt;&lt;/strong&gt;——下一代Fuzzing解决方案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这两件事其实是往着同一目标前进的，就是将Fuzzing引入到CI持续集成中，直观的表现就是，&lt;strong&gt;当往代码仓库提交代码后，可被自动编译并完成Fuzzing，最后输出结果以进入下一开发环节。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这跟我去年11月在”天府杯”上分享的&lt;a href=&quot;http://riusksk.me/2019/11/18/Fuzzing%E5%B9%B3%E5%8F%B0%E5%BB%BA%E8%AE%BE%E7%9A%84%E7%A0%94%E7%A9%B6%E4%B8%8E%E8%AE%BE%E8%AE%A1/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;《Fuzzing平台建设的研究与设计》&lt;/a&gt;中的思路是类似的，当时国内外还没任何公开的产品，这次CIFuzz与Mayhem的出现，终于填补了这个空白。&lt;/p&gt;
&lt;h3 id=&quot;先聊聊CIFuzz的实现原理&quot;&gt;&lt;a href=&quot;#先聊聊CIFuzz的实现原理&quot; class=&quot;headerlink&quot; title=&quot;先聊聊CIFuzz的实现原理&quot;&gt;&lt;/a&gt;先聊聊CIFuzz的实现原理&lt;/h3&gt;&lt;p&gt;使用CIFuzz有2个要求：&lt;/p&gt;
&lt;p&gt;1、只允许GitHub上的项目使用；&lt;/p&gt;
&lt;p&gt;2、项目必须整合OSS-Fuzz&lt;/p&gt;
&lt;p&gt;它主要利用GitHub Actions来实现下载、编译和运行oss-fuzz中的Fuzzer，若要fuzzing自己的项目，就得自己把先fuzzer提交到oss-fuzz。整个过程在docker中的ubuntu中运行，整个过程用workflow来定义这些操作行为:&lt;/p&gt;
&lt;figure class=&quot;highlight yaml&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;CIFuzz&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;on:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;[pull_request]&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;jobs:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt; Fuzzing:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;   runs-on:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;ubuntu-latest&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;   steps:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;   - name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Build&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Fuzzers&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     uses:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     with:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       oss-fuzz-project-name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&#39;example&#39;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       dry-run:&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;   - name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Run&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Fuzzers&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     uses:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     with:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       oss-fuzz-project-name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&#39;example&#39;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       fuzz-seconds:&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;600&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       dry-run:&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;   - name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Upload&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;Crash&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     uses:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;actions/upload-artifact@v1&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     if:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;failure()&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;     with:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       name:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;artifacts&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;attr&quot;&gt;       path:&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;./out/artifacts&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;所说GitHub 为每个 workflow 提供独享 1 核虚拟 CPU, 3.75GB 内存 和 100GB 的磁盘空间，提供相当慷慨的计算资源。对于想将Fuzzing引入CI中的DevSecOps建设，确实挺耗计算资源的。还有另一种方法，就是由开发本地提交代码时，自动完成Fuzzing后再提交，利用的是开发者本地的计算资源，对于Fuzzing平台建设是最节约成本的。&lt;/p&gt;
&lt;p&gt;当发现崩溃后，会在前端输出崩溃的栈回溯和测试用例等关键信息：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/artifacts.png&quot; alt=&quot;artifacts&quot;&gt;&lt;/p&gt;
&lt;p&gt;在腾讯内部，我们一般称workflow为流水线，在产品体验上这功能绝对秒杀GitHub，就是我之前贴着这张图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578971205508.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;再来看看Mayhem&quot;&gt;&lt;a href=&quot;#再来看看Mayhem&quot; class=&quot;headerlink&quot; title=&quot;再来看看Mayhem&quot;&gt;&lt;/a&gt;再来看看Mayhem&lt;/h3&gt;&lt;p&gt;对于Mayhem的信息是有限的，只有官网提供的相关文档。先来看下Mayhem的工作原理，大体流程跟上面一致的：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20200301195430422.png&quot; alt=&quot;image-20200301195430422&quot;&gt;&lt;/p&gt;
&lt;p&gt;它将符号执行与覆盖引导技术结合用于Fuzzing测试，但符号执行整体上是偏于理论，且难以用于大项目，因为它容易出现路径爆炸问题。虽然他们用来打过CGC机器人CTF比赛，但其赛题都是定制的，并不能完全代表真实的软件世界，这点还需要时间来考验。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20200301195624394.png&quot; alt=&quot;image-20200301195624394&quot;&gt;&lt;/p&gt;
&lt;p&gt;Mayhem提供有比较友好的前端界面，在功能上要比CIFuzz更加完善和自动化，体现出一个完整商业产品的特点：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/console.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20200301200249609.png&quot; alt=&quot;image-20200301200249609&quot;&gt;&lt;/p&gt;
&lt;p&gt;发现崩溃后，也能够提供更加详细的崩溃信息，包括重现方法、样本下载、崩溃指令和地址等等：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/test-case.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/crashinfo.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;Continuous-Fuzzing实现上的常见问题&quot;&gt;&lt;a href=&quot;#Continuous-Fuzzing实现上的常见问题&quot; class=&quot;headerlink&quot; title=&quot;Continuous Fuzzing实现上的常见问题&quot;&gt;&lt;/a&gt;Continuous Fuzzing实现上的常见问题&lt;/h3&gt;&lt;p&gt;个人对持续Fuzzing建设的一些思考总结，列举一些常见问题和解决方案，欢迎私信探讨。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、如何设置Fuzzing时长，既能保证测试的有效性，又能保证CI流程的流畅，避免产品发布受阻？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以往Fuzzing跑个几天是很常规的姿势，最长的我也跑过几个月的，但这在CI中显然是不合适的，必须为此设置时长限制，Google CIFuzz是默认10分钟，但个人觉得太短了，最好是几小时，但这要结合业务场景来定，有些产品一天构建N次，这得浪费不少计算资源。如果资源有限的话，最好每天一款产品只能Fuzzing一次。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、如何编写Fuzzer保证测试的有效性？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CIFuzz是自己提供Fuzzer，需要开发者基于libfuzzer编写的fuzzer；而Mayhem没有明说，但一般都得开发者或者安全人员来开发。这个问题之前我也在《Fuzzing平台建设研究与设计》中说过，可以培训开发用libfuzzer来写fuzzer，也可以直接写单元测试程序，以及安全人员作定制化的fuzzer。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、如何保证Fuzzing执行时的服务器安全？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用者提交自己的代码并编译执行，如果不作隔离，肯定就后门无数，沦为大家的肉鸡。使用docker作隔离的容器是已经很成熟的方案了，不仅fuzz，其它一些DevSecOps建设中的其它安全测试方案同样适用，比如CI中的代码审计，我们也是用docker来做的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、如何提供测试样本？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CIFuzz是自己在oss-fuzz中指定好的样本，Mayhem是明说，但估计也是需要用户提供。在之前的文章，有讲过我的实现思路：以后缀名来区分文件格式，自动爬虫收集，根据输入数据的格式自动提供，对于特殊的输入数据，需要自己另外去收集，比如hook收集等等。本质上，无非就是开发者提供测试数据，或者平台建设者提供各种常见格式的测试样本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你对DevSecOps建设、漏洞挖掘感兴趣，欢迎私信。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;终端安全工程师（深圳）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;岗位职责:&lt;br&gt;1.安全评估：对公司内的移动终端产品进行安全评估，并提供自动化检测规则，探索与实践DevSecOps&lt;br&gt;2.代码审计：开发自动化的代码审计系统&lt;br&gt;3.应急响应。对外部报告的终端漏洞进行响应，分析漏洞，排查影响范围，并提供检测与防御方案；&lt;br&gt;4.业界追踪。保持关注业界最新安全动态、新安全技术及发展趋势，促进安全技术的提升；&lt;br&gt;5.沉淀培训：形成技术知识的沉淀和分享，开展公司内交流和培训工作。&lt;/p&gt;
&lt;p&gt;岗位要求:&lt;br&gt;1.本科及以上学历；&lt;br&gt;2.2年以上的安全工作经验；&lt;br&gt;3.熟悉常见的终端安全风险的危害、原理及其防御方案；&lt;br&gt;4.熟悉x86和ARM汇编，熟练使用IDA、GDB等逆向分析与调试工具&lt;br&gt;5.熟悉主流语言的代码安全审计技术，具备⼈工审计与自动化审计系统开发能⼒&lt;br&gt;6.熟悉DevSecOps并且有参与过其中一些安全过程的技术和经验；&lt;br&gt;7.熟悉移动终端应⽤隐私合规检测技术&lt;br&gt;7.至少熟悉C/C++、Python、Java其中的⼀门语⾔，能够独立开发漏洞检测工具&lt;br&gt;8.具备较强的学习能力、动手能力、沟通能力、团队合作意识及综合分析能力；&lt;/p&gt;
&lt;p&gt;具备优秀安全基础能力或某一领域深度安全能力并对安全有浓厚兴趣者优先；&lt;br&gt;有终端自动化审计系统开发经验者优先；&lt;br&gt;有代码审计系统开发经验者优先；&lt;br&gt;有知名软件的CVE漏洞发现与利用成果的优先。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/WX20200229-165739.png&quot; alt=&quot;WX20200229-165739&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;长期以来，一直有个疑问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fuzzing为何一直未被引入DevSecOps中？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;刚好本周有两件事引起我的关注：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Google发布&lt;strong&gt;&lt;a href=&quot;https://goog
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>用afl玩超级玛丽：通过Fuzzing探索程序空间状态以发现更多执行路径</title>
    <link href="http://riusksk.github.io/2020/02/29/%E7%94%A8AFL%E5%BF%AB%E9%80%9F%E9%80%9A%E5%85%B3%E8%B6%85%E7%BA%A7%E7%8E%9B%E4%B8%BD/"/>
    <id>http://riusksk.github.io/2020/02/29/用AFL快速通关超级玛丽/</id>
    <published>2020-02-29T06:47:24.000Z</published>
    <updated>2020-02-29T08:59:28.000Z</updated>
    
    <content type="html">&lt;p&gt;今年S&amp;amp;P顶会上有一篇研究论文&lt;em&gt;“IJON: Exploring Deep State Spaces via Fuzzing”&lt;/em&gt;，他们通过改造AFL来探测程序的空间状态，以发现更多程序行为，并拿游戏”超级玛丽”来作演示：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Feb-29-2020 14-19-47.gif&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当前最流行的Fuzzing技术就是基于覆盖率的方法，Edge Coverage应该是当前最有效的覆盖率统计方法，比BasicBlock方式多记录调用边界，而afl对覆盖率的探测很多是暴力猜解的，一些afl家族工具也对其进行扩展，比如切割多字节指令为单字节作数据比较，提取cmp指令的一些常量操作值作变异。但是，这种方法对于一些特定的代码结构，若不去探测程序状态空间的中间点，就很难触发新的覆盖路径。&lt;/p&gt;
&lt;h4 id=&quot;何为程序状态空间？&quot;&gt;&lt;a href=&quot;#何为程序状态空间？&quot; class=&quot;headerlink&quot; title=&quot;何为程序状态空间？&quot;&gt;&lt;/a&gt;何为程序状态空间？&lt;/h4&gt;&lt;p&gt;状态空间代表程序所有可能状态的集合，状态代表内存和寄存器的一种配置，以及系统提供的状态(比如文件描述符、类似原语)。状态空间比代码覆盖统计空间更大，若改造AFL就需要实现对状态空间的支持，以优化测试用例达到状态的多样性。&lt;/p&gt;
&lt;h4 id=&quot;论文主要贡献&quot;&gt;&lt;a href=&quot;#论文主要贡献&quot; class=&quot;headerlink&quot; title=&quot;论文主要贡献&quot;&gt;&lt;/a&gt;论文主要贡献&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;分析当前主流Fuzzer的反馈机制，并实现如何用它们表示状态空间；&lt;/li&gt;
&lt;li&gt;扩展当前主流的覆盖反馈Fuzzer的能力，允许分析人员通过程序状态空间解决当前业界方法无法解决的路径约束问题；&lt;/li&gt;
&lt;li&gt;展示了可信平台模块(TPM)、复杂格式解析器、超级马里奥游戏、迷宫和散列映射实现的软件仿真器的状态空间，演示其是如何被Fuzzer有效探索到的。顺便，解决掉一些CGC挑战集合中的难题（CGC专门为机器人自动打CTF而设计的题目，与真实软件场景还是有差异的），也发现了一些真实软件的漏洞（其实就是一个偏门的dmg2img工具而已）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;主要设计原理&quot;&gt;&lt;a href=&quot;#主要设计原理&quot; class=&quot;headerlink&quot; title=&quot;主要设计原理&quot;&gt;&lt;/a&gt;主要设计原理&lt;/h4&gt;&lt;p&gt;作者设计了一套源码注释原语，其实就是给源码加个一两行补丁代码，用来干预Fuzzer的反馈功能。在可交互的Fuzzing会话中，分析人员可以人工介入去分析一直无法触达的执行路径，然后为其增加补丁代码解决路径探索障碍的问题。&lt;/p&gt;
&lt;p&gt;afl-gcc或afl-clang本身就是对gcc/clang编译器的封装，添加一些编译选项，以及代码插桩的功能，作者为其编写了个链接库，以实现前面所说的注释原语，包括一些自定义函数和宏等，通过它能够访问AFL用于存储覆盖信息的位图（其实是个哈希表），直接添加和设置条目上去，将状态值直接反馈给Fuzzer。同时，也允许相同的edge coverage存储到不同的覆盖位图中，因为不同的状态值可能触发的是同一处edge coverage，这代表它能够实现更细粒度的反馈，为此它还提供扩展用于存储覆盖位置的共享内存区域。对于状态空间爆炸的问题，也会提供”爬山算法”（hill-climbing）作出优化选择。&lt;/p&gt;
&lt;p&gt;作者对超级玛丽作了修改，使所有的键盘命令都可以从标准输入中读取，并且马里奥只能不停地向右跑，只要停下来就死掉，这个设计主要是为节省时间。&lt;/p&gt;
&lt;p&gt;作者还用改造后的Ijon与AFL作对比，运行12小时的AFL看其能打到哪一关，而使用注释原语的Ijon只几分钟就通过了大部分的关卡，有些确实过不了。下图是超级玛丽打喷火怪兽那关，线条是Fuzzer发现的所有执行路径，对比还是比较明显的，AFL暴力探测的密集度比较明显，更关键还是没通关，至少从作者统计图上看是如此的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20200229151836427.png&quot; alt=&quot;image-20200229151836427&quot;&gt;&lt;/p&gt;
&lt;p&gt;论文链接：&lt;a href=&quot;https://www.syssec.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2020/02/27/IJON-Oakland20.pdf&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.syssec.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2020/02/27/IJON-Oakland20.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/WX20200229-165739.png&quot; alt=&quot;WX20200229-165739&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;今年S&amp;amp;P顶会上有一篇研究论文&lt;em&gt;“IJON: Exploring Deep State Spaces via Fuzzing”&lt;/em&gt;，他们通过改造AFL来探测程序的空间状态，以发现更多程序行为，并拿游戏”超级玛丽”来作演示：&lt;/p&gt;
&lt;p&gt;&lt;img src
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
      <category term="afl" scheme="http://riusksk.github.io/tags/afl/"/>
    
  </entry>
  
  <entry>
    <title>从研究者的视角看Fuzzing技术发展30年</title>
    <link href="http://riusksk.github.io/2020/01/22/Fuzzing%E6%8A%80%E6%9C%AF%E5%8F%91%E5%B1%95%E7%9A%84%E8%BF%9930%E5%B9%B4/"/>
    <id>http://riusksk.github.io/2020/01/22/Fuzzing技术发展的这30年/</id>
    <published>2020-01-22T08:16:48.000Z</published>
    <updated>2020-01-22T10:06:40.000Z</updated>
    
    <content type="html">&lt;h3 id=&quot;源起&quot;&gt;&lt;a href=&quot;#源起&quot; class=&quot;headerlink&quot; title=&quot;源起&quot;&gt;&lt;/a&gt;源起&lt;/h3&gt;&lt;p&gt;1988年，在威斯康星大学Barton Miller教授的计算机实验课上（&lt;em&gt;&lt;a href=&quot;http://pages.cs.wisc.edu/~bart/fuzz/CS736-Projects-f1988.pdf&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://pages.cs.wisc.edu/~bart/fuzz/CS736-Projects-f1988.pdf&lt;/a&gt;&lt;/em&gt; ），首次提出&lt;code&gt;Fuzz生成器&lt;/code&gt;(Fuzz Generator)的概念，用于测试Unix程序的健壮性，即用随机数据来测试程序直至崩溃。因此，Barton Miller教授也被多数人尊称为”模糊测试之父”。但是，当时更多是为了验证代码质量和程序的稳定性，而非专门用于挖掘安全漏洞，真正用于软件安全漏洞挖掘的开端要从下面两件事说起。&lt;/p&gt;
&lt;h3 id=&quot;从学术界到工业界的证明&quot;&gt;&lt;a href=&quot;#从学术界到工业界的证明&quot; class=&quot;headerlink&quot; title=&quot;从学术界到工业界的证明&quot;&gt;&lt;/a&gt;从学术界到工业界的证明&lt;/h3&gt;&lt;p&gt;2001年，芬兰奥卢大学公布&lt;code&gt;PROTOS&lt;/code&gt;测试集项目的研究成果（&lt;em&gt;&lt;a href=&quot;https://rd.springer.com/content/pdf/10.1007%2F978-0-387-35413-2_16.pdf&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://rd.springer.com/content/pdf/10.1007%2F978-0-387-35413-2_16.pdf&lt;/a&gt;&lt;/em&gt; ），首次将Fuzzing技术应用在网络协议的安全测试当中，他们针对不同的网络协议构造出不同的测试用例集，这些在其官网（&lt;em&gt;&lt;a href=&quot;https://www.ee.oulu.fi/research/ouspg/Protos&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.ee.oulu.fi/research/ouspg/Protos&lt;/a&gt;&lt;/em&gt; ）上依然可以下载到。2002年，&lt;code&gt;PROTOS&lt;/code&gt;逐渐成熟，Microsoft开始为该项目提供资金支持。于是，2003年项目组成立了Codenomicon公司，开始将Fuzzing技术应用于商业产品，也确实发现了不少安全问题。因此，PROTOS项目可以说是Fuzzing技术发展历程中的一次重要里程碑。可能大家对Codenomicon公司不太了解，但说到”心脏滴血”漏洞，应该无人不知无人不晓。没错，它就是Codenomicon公司发现的。&lt;/p&gt;
&lt;p&gt;2002年，在BlackHat USA黑客大会上，来自&lt;code&gt;Immunity&lt;/code&gt;安全公司（PS：还有人记得&lt;code&gt;Immunity Debugger&lt;/code&gt;吗？）的Dave Aitel发表议题&lt;em&gt;“An Introduction to SPIKE, the Fuzzer Creation Kit”&lt;/em&gt;，至此著名的Fuzzer工具&lt;code&gt;SPIKE&lt;/code&gt;公布了，它是基于块模板定义的网络协议测试工具，优点是支持定义可变长度数据块的能力，除生成随机数据外，它还提供一些现成的边界值生成，以提供触发崩溃的概率。&lt;code&gt;SPIKE&lt;/code&gt;的诞生，使得广大用户能够依据自身需求定制网络协议Fuzzer，这对Fuzzing技术的普及起到巨大的推动作用。早些年，笔者也曾写过一篇&lt;code&gt;SPIKE&lt;/code&gt;的教程&lt;em&gt;“基于SPIKE的网络协议Fuzzing技术(&lt;a href=&quot;http://riusksk.me/2011/12/30/spike-fuzz/)&amp;quot;&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://riusksk.me/2011/12/30/spike-fuzz/)&amp;quot;&lt;/a&gt;&lt;/em&gt;，但现在其实基本不用了。&lt;/p&gt;
&lt;p&gt;从&lt;code&gt;PROTOS&lt;/code&gt;到&lt;code&gt;SPIKE&lt;/code&gt;的诞生，代表着学术界与工业界对Fuzzing技术在商业与安全实战领域的应用提供了有力的证明。&lt;/p&gt;
&lt;h3 id=&quot;文件Fuzzing技术的兴起&quot;&gt;&lt;a href=&quot;#文件Fuzzing技术的兴起&quot; class=&quot;headerlink&quot; title=&quot;文件Fuzzing技术的兴起&quot;&gt;&lt;/a&gt;文件Fuzzing技术的兴起&lt;/h3&gt;&lt;p&gt;2004年，&lt;code&gt;Peach&lt;/code&gt;模糊测试框架的发布，标志着文件Fuzzing时代的到来。最初&lt;code&gt;Peach&lt;/code&gt;是用&lt;code&gt;Python&lt;/code&gt;开发的，后来在2007年被收购后改用&lt;code&gt;C#&lt;/code&gt;重写，并分为社区版和付费版。&lt;code&gt;Peach&lt;/code&gt;支持文件格式、网络协议、ActivieX控件等多种形式，通过编写pit文件(xml格式)来定义数据格式，每次开始写的时候其实挺费劲的，后来有人提供自动将010editor格式解析器（仿C语言的bt文件）转换为pit，在一定程度上可以缓解劳动力。笔者第一次通过文件Fuzzing挖到漏洞也是借助&lt;code&gt;Peach&lt;/code&gt;实现的。&lt;/p&gt;
&lt;p&gt;直至今日，&lt;code&gt;Peach&lt;/code&gt;依然还有人在用，更有人将&lt;code&gt;Peach&lt;/code&gt;与&lt;code&gt;AFL&lt;/code&gt;打通，在&lt;code&gt;Github&lt;/code&gt;上发布&lt;code&gt;aflsmart&lt;/code&gt;的开源项目。&lt;/p&gt;
&lt;p&gt;文件Fuzzing应该是当前Fuzzing应用中最为普遍的形式，即使是网络协议等其它目标的Fuzzing，也是可以转换为文件Fuzzing的。比如&lt;code&gt;OpenSSL&lt;/code&gt;网络协议Fuzzing，通过源码打Log的方式先收集网络数据为本地文件，再调用其API写个hareness用AFL或libfuzzer进行本地测试，就顺利地将网络协议Fuzzing转换为文件Fuzzing。&lt;/p&gt;
&lt;h3 id=&quot;语法模板Fuzzing：打开攻击浏览器的大门&quot;&gt;&lt;a href=&quot;#语法模板Fuzzing：打开攻击浏览器的大门&quot; class=&quot;headerlink&quot; title=&quot;语法模板Fuzzing：打开攻击浏览器的大门&quot;&gt;&lt;/a&gt;语法模板Fuzzing：打开攻击浏览器的大门&lt;/h3&gt;&lt;p&gt;2008年，Mozilla安全团队发布了&lt;code&gt;jsfunfuzz&lt;/code&gt;和&lt;code&gt;DOMfuzz&lt;/code&gt;，基于JS语法模板来生成测试用例，以挖掘浏览器漏洞，后来两款工具合称&lt;code&gt;funfuzz&lt;/code&gt;( &lt;em&gt;&lt;a href=&quot;https://github.com/MozillaSecurity/funfuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/MozillaSecurity/funfuzz&lt;/a&gt;&lt;/em&gt; )，以开源的形式对外公开。这款工具在当时确实挖到了不少浏览器的漏洞，但其语法模板的可扩展性并不友好，只能在其代码上作修改，这点不如&lt;code&gt;dharma&lt;/code&gt;( &lt;em&gt;&lt;a href=&quot;https://github.com/MozillaSecurity/dharma&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/MozillaSecurity/dharma&lt;/a&gt;&lt;/em&gt; )，以及后来Project Zero发布的&lt;code&gt;Domato&lt;/code&gt;( &lt;em&gt;&lt;a href=&quot;https://github.com/googleprojectzero/domato&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/domato&lt;/a&gt;&lt;/em&gt; )。这种基于语法模板的Fuzzing方式，挖完一波后，就要求保持模板的更新才能持续产出，同时要理解测试目标在JS代码上的触发逻辑，比如&lt;code&gt;JIT&lt;/code&gt;可通过for循环来触发代码优化，&lt;code&gt;Dom UAF&lt;/code&gt;可通过创建&lt;code&gt;Dom&lt;/code&gt;元素，并调用相关元素的方法来触发删除和引用，以探测是否存在&lt;code&gt;UAF&lt;/code&gt;的可能。整体上依赖于对语法和目标原理的理解，才能构造出好的语法模板。&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;funfuzz&lt;/code&gt;之后，业界也出现了好多款优秀的JS语法Fuzzing工具，比如&lt;code&gt;grinder&lt;/code&gt;、&lt;code&gt;nduja&lt;/code&gt;、&lt;code&gt;crossfuzz&lt;/code&gt;等等。当年PC流行时代，用&lt;code&gt;grinder&lt;/code&gt;来Fuzzing Windows IE浏览器的人应该比较多。&lt;/p&gt;
&lt;p&gt;浏览器一直是网络攻击中最受关注和最常用的入口，过去如是，现今依然。因为系统自带，且用户使用率高，又是远程访问的最佳途径。渲染引擎和JS引擎一直是浏览器主要攻击面，主要以html、js、vbs作为解析语言，因此对这些语言的语法Fuzzing就自然而然的产生了。除此之外，如今&lt;code&gt;WebSQL&lt;/code&gt;也开始备受关注，比如Chrome上的&lt;code&gt;sqlite&lt;/code&gt;模块，SQL语法的fuzzing也随之而来。&lt;/p&gt;
&lt;p&gt;除了浏览器，pdf的JS和flash的as语法解析，也一度作为攻击Adobe Reader和Adobe Flash的入口。&lt;/p&gt;
&lt;h3 id=&quot;符号执行：学术与工业之争&quot;&gt;&lt;a href=&quot;#符号执行：学术与工业之争&quot; class=&quot;headerlink&quot; title=&quot;符号执行：学术与工业之争&quot;&gt;&lt;/a&gt;符号执行：学术与工业之争&lt;/h3&gt;&lt;p&gt;2008年，基于&lt;code&gt;LLVM&lt;/code&gt;的符号执行引擎&lt;code&gt;KLEE&lt;/code&gt;发布后，引领了一波程序分析新姿势的潮流。后来，符号执行被应用于Fuzzing中，经常被用来打CTF比赛，用来找key、解混淆、fuzzing等用途。比如，将&lt;code&gt;AFL&lt;/code&gt;与&lt;code&gt;angr&lt;/code&gt;结合的&lt;code&gt;driller&lt;/code&gt;（&lt;em&gt;&lt;a href=&quot;https://github.com/shellphish/driller&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/shellphish/driller&lt;/a&gt;&lt;/em&gt; )，还被用在了CGC(Cyber Grand Challenge)自动网络攻防竞赛上，但这种比赛都是特定场景下的比赛，不能完全代表真实的软件世界；还有，将AFL与KLEE结合的&lt;code&gt;kleefl&lt;/code&gt;（&lt;em&gt;&lt;a href=&quot;https://github.com/julieeen/kleefl&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/julieeen/kleefl&lt;/a&gt;&lt;/em&gt; ），这款工具知道的人应该不多。&lt;/p&gt;
&lt;p&gt;符号执行在学术界中应用得比较多，工业界相对少一些，这是现状。将符号执行应用在Fuzzing中，通过约束求解新路径的条件值，以增加代码覆盖率，可以一定程度上弥补暴力变异的不足。符号执行主要的挑战在于路径爆炸问题，约束求解能力的局限性，以及性能消耗问题，比如内存和时间消耗过大。符号执行与约束求解对于小型应用比较有效果，也常被用于CTF比赛，在CTF中使用最广的当属&lt;code&gt;angr&lt;/code&gt;框架。但是，基于当前的业界情况，符号执行仍然比较难以应用于大型软件中。符号执行在Fuzzing中的应用并没有真正带来新的技术浪潮，真正的技术浪潮始于代码覆盖引导技术的引入。&lt;/p&gt;
&lt;h3 id=&quot;代码覆盖引导技术：Fuzzing技术的分水岭&quot;&gt;&lt;a href=&quot;#代码覆盖引导技术：Fuzzing技术的分水岭&quot; class=&quot;headerlink&quot; title=&quot;代码覆盖引导技术：Fuzzing技术的分水岭&quot;&gt;&lt;/a&gt;代码覆盖引导技术：Fuzzing技术的分水岭&lt;/h3&gt;&lt;p&gt;2013年底，&lt;code&gt;afl-fuzz&lt;/code&gt;（ &lt;em&gt;&lt;a href=&quot;http://lcamtuf.coredump.cx/afl/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://lcamtuf.coredump.cx/afl/&lt;/a&gt;&lt;/em&gt; ）发布了，首次采用源码编译插桩和QEMU模式来实现代码覆盖引导Fuzzing的方式，这绝对是Fuzzing技术发展历程中最重要的一次里程碑，也是技术分水岭，它开启了Fuzzing技术的新篇章。刚发布的时候，afl并没有那么火，主要是在2014和2015年期间，被很多人使用后挖到不少主流开源软件的0day，并在Twitter上宣传，使得更多人关注到并使用，这证明了代码覆盖引导技术在Fuzzing实战中的价值。&lt;/p&gt;
&lt;p&gt;随后，基于afl二次开发的fuzzer如雨后春笋般涌现出来，比如winafl、libfuzzer、AFLFast、Vuzzer等等，而且针对各种语言的版本出相继出现，比如go、python、js、ruby等等。一些已知名的Fuzzer也迅速跟进，比如&lt;code&gt;syzkaller&lt;/code&gt;内核Fuzzer，它原本是基于API调用模板的，后来也引入了代码覆盖引导能力。同时，业界都在试图将其移植到各种平台上（比如windows、android、IOT平台等等），并实现支持闭源程序的代码覆盖引导能力，这一直是近几年来Fuzzing技术研究的热点方向，比如动静态插桩、虚拟机模拟执行、硬件特性等等。无论是工业界大会(BlackHat、OffensiveCon、CCC等等)，还是学术界四大顶会，关于Fuzzing的议题也越来越多，相信这种趋势会持续下去。&lt;/p&gt;
&lt;h3 id=&quot;系统函数调用模板Fuzzing一度成为攻击内核的常用手段&quot;&gt;&lt;a href=&quot;#系统函数调用模板Fuzzing一度成为攻击内核的常用手段&quot; class=&quot;headerlink&quot; title=&quot;系统函数调用模板Fuzzing一度成为攻击内核的常用手段&quot;&gt;&lt;/a&gt;系统函数调用模板Fuzzing一度成为攻击内核的常用手段&lt;/h3&gt;&lt;p&gt;2015年Google开源了&lt;code&gt;syzkaller&lt;/code&gt;，一款用于Fuzzing Linux内核的工具，漏洞产出特别高。现在依然很多人用它来挖各系统平台的内核漏洞，包括Android、macOS、Windows等主流系统平台。&lt;code&gt;syzkaller&lt;/code&gt;通过定义系统函数调用模板来实现，在模板中定义系统调用函数参数类型，并解决函数调用的顺序依赖和值依赖问题。Project Zero官方博客就曾写过一篇利用&lt;code&gt;syzkaller&lt;/code&gt; fuzz &lt;code&gt;socket&lt;/code&gt;挖掘Linux内核漏洞的文章，叫&lt;em&gt;“Exploiting the Linux kernel via packet sockets(syzkaller usage)”&lt;/em&gt; ( &lt;em&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2017/05/exploiting-linux-kernel-via-packet.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://googleprojectzero.blogspot.com/2017/05/exploiting-linux-kernel-via-packet.html&lt;/a&gt;&lt;/em&gt; )，详细讲述了如何编写模板，以及&lt;code&gt;syzkaller&lt;/code&gt;的使用方式。&lt;/p&gt;
&lt;p&gt;Windows平台也常被通过构建GUI API调用模板来Fuzzing系统内核，macOS平台内核Fuzzing就常拿IOKit函数开刀，都是基于这种系统函数调用模板的Fuzzing方式实现的。&lt;/p&gt;
&lt;p&gt;2016年Google提出”结构感知型Fuzzing”(&lt;a href=&quot;https://github.com/google/fuzzing/blob/master/docs/structure-aware-fuzzing.md&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Structure-Aware Fuzzing &lt;/a&gt;)，并基于&lt;code&gt;libfuzzer&lt;/code&gt;与&lt;code&gt;protobuf&lt;/code&gt;实现了&lt;code&gt;libprotobuf-mutator&lt;/code&gt;(&lt;em&gt;&lt;a href=&quot;https://github.com/google/libprotobuf-mutator&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/libprotobuf-mutator&lt;/a&gt;&lt;/em&gt;)，其实现思路与&lt;code&gt;syskaller&lt;/code&gt;相似，它弥补了&lt;code&gt;peach&lt;/code&gt;的无覆盖引导的问题，也弥补了&lt;code&gt;afl&lt;/code&gt;和&lt;code&gt;libfuzzer&lt;/code&gt;对于复杂输入类型的低效变异问题。正如前面提到的，也有人将&lt;code&gt;afl&lt;/code&gt;与&lt;code&gt;peach&lt;/code&gt;整合成&lt;code&gt;aflsmart&lt;/code&gt;，以此实现类似功能。现在Project Zero也用&lt;code&gt;libprotobuf-mutator&lt;/code&gt;来fuzzing iOS内核，详见&lt;em&gt;“SockPuppet: A Walkthrough of a Kernel Exploit for iOS 12.4”&lt;/em&gt;(&lt;em&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2019/12/sockpuppet-walkthrough-of-kernel.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://googleprojectzero.blogspot.com/2019/12/sockpuppet-walkthrough-of-kernel.html&lt;/a&gt;&lt;/em&gt;)。&lt;/p&gt;
&lt;p&gt;结构感知型Fuzzing并不是什么新技术，跟Peach的实现思路是一样的，只是对输入数据类型作模板定义，以提高变异的准确率。只是当前大家更倾向于将结构感知与覆盖引导等多种技术优势整合一块，基于系统函数模板用于Fuzzing系统内核，相信这种方式未来仍会被经常使用。&lt;/p&gt;
&lt;h3 id=&quot;助力开源生态安全建设&quot;&gt;&lt;a href=&quot;#助力开源生态安全建设&quot; class=&quot;headerlink&quot; title=&quot;助力开源生态安全建设&quot;&gt;&lt;/a&gt;助力开源生态安全建设&lt;/h3&gt;&lt;p&gt;在工业界中，最知名的Fuzzing平台当属Google的&lt;code&gt;clusterfuzz&lt;/code&gt;（ &lt;em&gt;&lt;a href=&quot;https://github.com/google/clusterfuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/clusterfuzz&lt;/a&gt;&lt;/em&gt; ），运行在25000+台机器上，发现过16000+个Chrome bug，11000+开源项目bug，这个平台整合了&lt;code&gt;OSS-Fuzz&lt;/code&gt;(&lt;em&gt;&lt;a href=&quot;https://github.com/google/oss-fuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/oss-fuzz&lt;/a&gt;&lt;/em&gt; )，既支持libfuzzer和AFL的代码覆盖引导Fuzzing，也支持黑盒Fuzzing。&lt;code&gt;OSS-Fuzz&lt;/code&gt;和&lt;code&gt;clusterfuzz&lt;/code&gt;分别在2016年和2019年开源对外，业界同行可以协同开发，对于提交fuzzer后挖到新漏洞的，Google会美刀奖励提交者，对于主流开源项目的&lt;code&gt;0Day&lt;/code&gt;，Google也是有奖励机制的。同时，Google开发了&lt;code&gt;ASan&lt;/code&gt;、&lt;code&gt;MSan&lt;/code&gt;、&lt;code&gt;TSan&lt;/code&gt;、&lt;code&gt;UBSan&lt;/code&gt;、&lt;code&gt;LSan&lt;/code&gt;等多种编译时插桩工具用来帮助检测漏洞，有些漏洞只在开启相关Sanitizer之后才会触发异常，跟在Windows下开启页堆的方式类似，可以帮助更有效地发现崩溃场景，在发现和分析漏洞上提供帮助。&lt;/p&gt;
&lt;p&gt;Google对开源生态安全建设的贡献，是各大互联网公司不能比的。他们的贡献不仅帮助提高各大主流开源项目的安全性，也降低了Fuzzing的技术成本，在资金和技术上对开源生态安全的建设提供了大力支持。&lt;/p&gt;
&lt;h3 id=&quot;语法树变异成为语法解析引擎漏洞挖掘的新方向&quot;&gt;&lt;a href=&quot;#语法树变异成为语法解析引擎漏洞挖掘的新方向&quot; class=&quot;headerlink&quot; title=&quot;语法树变异成为语法解析引擎漏洞挖掘的新方向&quot;&gt;&lt;/a&gt;语法树变异成为语法解析引擎漏洞挖掘的新方向&lt;/h3&gt;&lt;p&gt;2012年，USENIX安全顶会上发布一篇论文&lt;em&gt;“Fuzzing with code fragments”&lt;/em&gt;，研究者开发了一款叫&lt;code&gt;LangFuzz&lt;/code&gt;的工具，他们从firefox、webkit、chromium等开源的浏览器项目以及网络上去收集js测试样本，然后用ANTLR其进行AST语法树分析，再将样本拆分成非终止语法的代码片断，放入代码池中，最后再基于代码池的代码片断对输入样本作交叉变异，主要取同类型的代码片断作替换或插入，再运行生成的变异样本进行测试。&lt;/p&gt;
&lt;p&gt;基于&lt;code&gt;LangFuzz&lt;/code&gt;的思路，后面又有人开源了&lt;code&gt;IFuzzer&lt;/code&gt;，并发表相关论文公开，在&lt;code&gt;LangFuzz&lt;/code&gt;的基础上增加遗传算法，对输入样本进行评估，筛选出优秀的个体进行组装以产生新样本。不过这个工具并没有那么完善，也未见到比较好的实际漏洞产出。&lt;/p&gt;
&lt;p&gt;2018年，Project Zero的Samuel Groß发布一款叫&lt;code&gt;fuzzilli&lt;/code&gt;的JS语法Fuzzer工具，它整合了语法变异、模板生成、覆盖引导等多种技术，使用自定义中间语言用于语法变异，再将变异后的中间语言转换成JS代码。&lt;code&gt;fuzzilli&lt;/code&gt;在3大主流JS引擎的测试中，战果颇丰，发现了不少漏洞，也因此被业界同行拿去作二次开发，又发现了其它新的漏洞。&lt;/p&gt;
&lt;p&gt;2019年，有2篇学术论文发布，他们都引用了论文&lt;em&gt;“Fuzzing with code fragments”&lt;/em&gt;中的思想，它们分别是”&lt;em&gt;CodeAlchemist: Semantics-Aware Code Generation to Find Vulnerabilities in JavaScript Engines&lt;/em&gt;“和”&lt;em&gt;Superion: Grammar-Aware Greybox Fuzzing&lt;/em&gt;“，&lt;code&gt;CodeAlchemist&lt;/code&gt;将输入样本进行语法树分析和数据流分析，为拆分出来的代码片段设置前置和后置的约束条件，前置条件代表一些引用的变量需要先定义，后置条件代表代码片段的输出结果，通过两者来解决一些未定义变量引用的问题。&lt;code&gt;Superion&lt;/code&gt;是将语法树变异规则置入AFL中实现的，借助AFL筛选变异后的输入样本，而且支持多种语言，也是采用ANTLR作语法树分析，其在语法扩展上比较友好。两款工具均在最新JS解析引擎上发现过若干0day漏洞，并且均已在Github上开源。&lt;/p&gt;
&lt;p&gt;除了传统的模板Fuzzing，语法变异(无论是AST，还是自定义中间语言)也是一项值得探索的方向。&lt;/p&gt;
&lt;h3 id=&quot;人工智能在Fuzzing中的应用仍亟待探索&quot;&gt;&lt;a href=&quot;#人工智能在Fuzzing中的应用仍亟待探索&quot; class=&quot;headerlink&quot; title=&quot;人工智能在Fuzzing中的应用仍亟待探索&quot;&gt;&lt;/a&gt;人工智能在Fuzzing中的应用仍亟待探索&lt;/h3&gt;&lt;p&gt;2018年是人工智能元年，很多领域都在探索AI的应用，漏洞挖掘领域亦然。之前笔者阅读过一些AI应用在Fuzzing中的相关议题，主要集中在测试样本生成的训练上，利用已知漏洞的样本或正常样本作训练，然后重新生成测试样本进行测试。可惜从效果上来看，是一种高投入低产出的事情，有些还不如直接暴力变异来得高效高产。但这也不是说，AI没有价值，只是它在这方面的发展时间较短，很多东西仍亟待探索，还有待时间的年轮来证明。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;源起&quot;&gt;&lt;a href=&quot;#源起&quot; class=&quot;headerlink&quot; title=&quot;源起&quot;&gt;&lt;/a&gt;源起&lt;/h3&gt;&lt;p&gt;1988年，在威斯康星大学Barton Miller教授的计算机实验课上（&lt;em&gt;&lt;a href=&quot;http://pages.cs.wisc
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
  </entry>
  
  <entry>
    <title>Fuzzing平台建设的研究与设计(paper)</title>
    <link href="http://riusksk.github.io/2020/01/21/Fuzzing%E5%B9%B3%E5%8F%B0%E5%BB%BA%E8%AE%BE%E7%9A%84%E7%A0%94%E7%A9%B6%E4%B8%8E%E8%AE%BE%E8%AE%A1-paper/"/>
    <id>http://riusksk.github.io/2020/01/21/Fuzzing平台建设的研究与设计-paper/</id>
    <published>2020-01-21T02:19:37.000Z</published>
    <updated>2020-01-21T02:31:16.000Z</updated>
    
    <content type="html">&lt;h3 id=&quot;引言&quot;&gt;&lt;a href=&quot;#引言&quot; class=&quot;headerlink&quot; title=&quot;引言&quot;&gt;&lt;/a&gt;引言&lt;/h3&gt;&lt;p&gt;近年来，无论是工业界，还是学术界，Fuzzing技术的应用都非常广泛。每年的BlackHat、OffensiveCon、CCC等工业界顶会，以及学术界四大顶会（ S&amp;amp;P、CCS、Security、NDSS ），经常可以见到Fuzzing相关议题。Google Project Zero也公布其近5年的漏洞挖掘方式占比，其中Fuzzing占比37.2%，手工占比54.2%，其它占比8.6%，这对于高产的P0来说，37.2%的占比已经意味着不少漏洞了。按Project Zero官方公布的bug列表来看，当前共有1975个漏洞公开（包括一些无效、未修复的，这里仅作粗略估算），按37.2%来算，大约有735个漏洞是通过Fuzzing挖掘到的，着实不少的数量，况且大多是高质量漏洞。所以说，Fuzzing依然是当前安全界所热衷的漏洞挖掘方式。&lt;/p&gt;
&lt;p&gt;本文主要探讨下企业内部关于Fuzzing平台建设的一些想法，个人主要是想表达一个观点：&lt;strong&gt;协同Fuzzing&lt;/strong&gt;，即整合企业内部各工种（开发、测试、安全、运维等等）的力量，将Fuzzing合入CI构建中，通过DevSecOps协同模式来完成产品的Fuzzing工作，以便将漏洞消除在上线前阶段。&lt;/p&gt;
&lt;h3 id=&quot;Fuzzing平台的价值思考&quot;&gt;&lt;a href=&quot;#Fuzzing平台的价值思考&quot; class=&quot;headerlink&quot; title=&quot;Fuzzing平台的价值思考&quot;&gt;&lt;/a&gt;Fuzzing平台的价值思考&lt;/h3&gt;&lt;p&gt;虽说Project Zero超过一半是人工审计发现的，但对于企业内部，项目之多，代码语言和代码行也是非常之多，很难单纯靠人工来解决的。量级的变化，自然会导致自动化需求的诞生，才能更加高效地发现、消除和监管企业内部的代码风险。&lt;/p&gt;
&lt;p&gt;产品从开发到发布，涉及到多工种协作，如果能让他们一块参与到安全工作当中，那么有时也可以弥补安全人力的不足，同时让非安全出身的业余选手也能干专业的事，帮助安全人员覆盖更多的攻击面测试，提升漏洞发现率。&lt;/p&gt;
&lt;p&gt;安全人员参与到产品的整个研发流程当中，可以将发现漏洞的时间线提前，有助于在产品上线前发现并解决安全风险，提高产品安全性。&lt;/p&gt;
&lt;h3 id=&quot;协同Fuzzing平台的设计思路&quot;&gt;&lt;a href=&quot;#协同Fuzzing平台的设计思路&quot; class=&quot;headerlink&quot; title=&quot;协同Fuzzing平台的设计思路&quot;&gt;&lt;/a&gt;协同Fuzzing平台的设计思路&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578971205508.png&quot; alt=&quot;1578971205508&quot;&gt;&lt;/p&gt;
&lt;p&gt;以往我们在帮业务产品作安全测试时，开始前业务同事会提供文档资料或者开会分享产品功能设计的方方面面，以及担心的安全风险问题，安全同事需要花时间消化，前期双方都需要消耗不少时间成本，况且在有限的时间内，对产品的攻击面剖析也不一定足够到位。&lt;/p&gt;
&lt;p&gt;假设当前需要对产品进行Fuzzing测试，一般需要一个支持命令行的测试程序，通常称为harness。开发或者测试的同学可能本身就会开发有相应的测试程序，如果没有，安全测试人员就得自己开发，有API或者源码都好办，没有的话，可能还得做Hook。&lt;/p&gt;
&lt;p&gt;对产品最了解的，一般当属开发同学。所以，如果开发者在开发完相应功能后，开发以及质量测试人员若能够编写相应的接口测试程序，将对于安全测试会有很大帮助。一方面是工作效率的提升，另一方面是测试面的覆盖广度提升。&lt;/p&gt;
&lt;p&gt;如此之后，我们可以设计出协同Fuzzing平台的工作流水线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;开发阶段&lt;/strong&gt;：开发人员编写相应的harness程序，尽可能覆盖用于解析外部数据的处理函数。直接开发或者使用libfuzzer等安全测试库进行开发均可，安全人员也可定期对其进行安全培训，指导libfuzzer等工具的使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;构建阶段&lt;/strong&gt;：对于源码编译场景，支持多种构建触发方式，最佳的方式还是基于git事件触发，即提交代码后触发，然后将源码下载到指定的构建机编译，开发者需要配置编译命令，此处也可以开启ASAN或者AFL编译等功能；对于非编译场景，则直接提供相应的可执行程序下载地址，将其归档打包至用于Fuzzing的服务器上。目前，“腾讯CI”已将构建功能嵌入到自家git平台“工蜂”上，提供覆盖所有主流编译工具和语言，因此未来其在安全领域上的应用还有发挥的空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试阶段&lt;/strong&gt;：配置相应的测试命令，即harness程序的参数，以及运行环境，包括Windows、Linux、macOS，如果硬件资源丰富的话，Android和iOS又何尝不可。提交在服务器上布署好常见Fuzzer工具（afl/libfuzzer/honggfuzz等等），或者自主开发的其它Fuzzer，同时部署一些常见文件格式的样本库。对于特殊数据格式，比如自定义协议/文件格式，最好由开发或测试同学提供，否则只能安全测试人员去解决，一些提取样本数据的方法后面会介绍。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;告警阶段&lt;/strong&gt;：若发现崩溃，则作二次运行确认，确认二次崩溃则告警出来，可邮件、工单、微信等多种方式，将运行命令参数、崩溃场景的栈回溯、可利用性分析等基本信息同步出来。对于崩溃容忍度较低的产品，可设置“质量红线”，去重后的崩溃数量超过多少个禁止发布。开发修复漏洞后，继续从第一步的开发阶段开始继续循环下去，直至无新漏洞发现。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;Fuzzing三要素&quot;&gt;&lt;a href=&quot;#Fuzzing三要素&quot; class=&quot;headerlink&quot; title=&quot;Fuzzing三要素&quot;&gt;&lt;/a&gt;Fuzzing三要素&lt;/h3&gt;&lt;p&gt;Github上已有很多知名Fuzzer被开源，圈内也有不少人借此挖到漏洞，直接基于现成工具，或者二次开发挖到的都有，也有人借鉴思路自主开发新的工具。对于一款新漏洞挖掘工具的发布，多数人可能会认为，开源作者应该是已经挖完漏洞了才公布的，应该已经挖不到0day了。但有时，你又会发现，老树开新花的事情还是很常见的。那么决定Fuzzer能否挖到漏洞的关键因素有哪些？根据个人经验，笔者觉得主要有三要素：&lt;strong&gt;目标、策略、样本&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id=&quot;目标：攻击面分析&quot;&gt;&lt;a href=&quot;#目标：攻击面分析&quot; class=&quot;headerlink&quot; title=&quot;目标：攻击面分析&quot;&gt;&lt;/a&gt;目标：攻击面分析&lt;/h4&gt;&lt;p&gt;对于企业内部产品的测试，直接找开发要设计文档，甚至源码，都可以帮我们快速分析出攻击面。面对黑盒测试时，尤其是主流软件/系统的Fuzzing测试时，能够让我们参考的主要还是其官方文档，比如MSDN、Apple开发文档、Acrobat Javascript API手册等等。当初winafl诞生时，从MSDN找API去Fuzzing的方式屡试不爽，运气好的，一个API拿10个CVE也不是没干过；Apple开发文档中的系统的各个模块介绍，github上的示例代码等等，无不成为寻找攻击面的最佳途径；还有Acrobat 一个JS API产生好几个漏洞的情况，也有人直接写脚本分析API手册，提取API模板作Fuzzing；其它系统平台上写爬虫提取系统函数原型模板，作驱动Fuzzing。&lt;/p&gt;
&lt;p&gt;这些从官方手册，以及官方放置在Github的示例代码，无不成为最佳的目标攻击面分析途径。如果你搞过上面这些，应该明白我在说什么。&lt;/p&gt;
&lt;p&gt;除了文档，一些业界公开的漏洞信息，比如Project Zero、ZDI、厂商的补丁公告等等都是挖洞方向标。在以上信息都缺失的情况，就只能人工逆向分析来寻找攻击面了。&lt;/p&gt;
&lt;p&gt;比如2019年微软的一次补丁公告中，出现了很多Jet数据库引擎的远程代码执行漏洞：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578992349658.png&quot; alt=&quot;1578992349658&quot;&gt;&lt;/p&gt;
&lt;p&gt;于是从MSDN入手去寻找可能存在的攻击面，然后用手上的Fuzzer框架进行Fuzzing，几小时之后直接挖到一个品相极佳的漏洞，因为生成的poc直接控制了EIP：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578992386112.png&quot; alt=&quot;1578992386112&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;策略：变异之法&quot;&gt;&lt;a href=&quot;#策略：变异之法&quot; class=&quot;headerlink&quot; title=&quot;策略：变异之法&quot;&gt;&lt;/a&gt;策略：变异之法&lt;/h4&gt;&lt;p&gt;常见的变异策略主要有以下几种：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;基于暴力&lt;/strong&gt;：随机数据替换、插入、删除、数值增减、边界值替换、拷贝覆盖等等，比如radamsa等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于模板&lt;/strong&gt;：文件格式、协议格式、API原型模板、语法模板变异等等，比如peach、domato等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于代码覆盖引导&lt;/strong&gt;：通过提高代码路径的反馈方式来优化样本，比如AFL、Libfuzzer等等；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于语法树变异&lt;/strong&gt;：通过AST语法树变异来Fuzzing语法解析引擎，比如Fuzzilli，该工具本身也实现基于模板和代码覆盖引导的功能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除了以上常规的变异方法之外，有时需要针对当前的应急漏洞作新变异规则，或者适配特定的业务场景作定制化，这就要求我们的Fuzzer平台具备可扩展的变异策略插件开发，这种方式不仅可以社区化方式协同，企业内部也可以协同开发，类似oss-fuzz。&lt;/p&gt;
&lt;p&gt;举个案例，2018年word公式编辑器开始流行起来，还被在野利用过。当时笔者就用python开发个针对OLE中“Equation Native” 的变异器，然后用riufuzz跑起来（riufuzz是笔者基于honggfuzz二次开发的fuzzer，2018及之前的新功能已在github上开源，之后开发就未开源了，大家可以自行发挥）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578992857498.png&quot; alt=&quot;1578992857498&quot;&gt;&lt;/p&gt;
&lt;p&gt;有时在变异前、变异后可能有特列的处理机制需要处理，比如pdf js fuzz，输入pdf可能得提取js再作变异，这是变异前处理；再比如png图片变异，变异后会导致crc校验失效，需要作变异后修复。还有对于复合文档中的某特定格式的文件变异后，需要重组打包，比如变异docx中的图片、pdf中的字体图片等等，此过程注意后缀名的变更问题。&lt;/p&gt;
&lt;h4 id=&quot;样本的收集与筛选&quot;&gt;&lt;a href=&quot;#样本的收集与筛选&quot; class=&quot;headerlink&quot; title=&quot;样本的收集与筛选&quot;&gt;&lt;/a&gt;样本的收集与筛选&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578993191152.png&quot; alt=&quot;1578993191152&quot;&gt;&lt;/p&gt;
&lt;p&gt;以前笔者都是手工去网上找样本去下载那种包含很多文件的压缩包，但这种方式太费劲了，用过想再更新又得再去找。后来就干脆用scrapy写个爬虫去搜索引擎搜索，像pdf、office文档、图片几乎都是爬不尽的，但它支持的文件格式比较有限。因此，我就改去Github爬虫，很多开发者在开发时，也需要一些测试样本来验证，因此项目内经常包含有各种文件格式的样本，但它的搜索结果只有100页，需要变换关键词（字典库、单词库、输入法词库等等）来搜索，但整体搜索到的数量还是没有Google等搜索引擎多，可以当作互补方案。&lt;/p&gt;
&lt;p&gt;若是遇到如openssl这种特殊协议数据，以及其它非完整文件格式的自定义格式，一般就得通过源码加Log，或者Hook技术去dump出二进制流样本数据，以此作为输入样本。&lt;/p&gt;
&lt;p&gt;当我们获取的样本过多时，就需要作筛选，以避免过多的无用测试。对于开源项目，用AFL的工具足矣，但闭源程序就需要自己实现，以下就是笔者基于pin开发的语料库蒸馏器，用C++和Python开发的，支持跨平台：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578993681237.png&quot; alt=&quot;1578993681237&quot;&gt;&lt;/p&gt;
&lt;p&gt;以macOS上的pdf样本筛选为例，整体效果还不错：&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;总体大小：16.17G =&amp;gt; 563.8M&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;文件数量：10074 =&amp;gt; 1105&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;运行时间：3 天22 小时&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h4 id=&quot;效果&quot;&gt;&lt;a href=&quot;#效果&quot; class=&quot;headerlink&quot; title=&quot;效果&quot;&gt;&lt;/a&gt;效果&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/1578993924461.png&quot; alt=&quot;1578993924461&quot;&gt;&lt;/p&gt;
&lt;p&gt;基于上述方法论，笔者在近3年内，共获取国际四大厂商（Apple、Microsoft、Google、Adobe）70余次CVE漏洞致谢，其它一些厂商产品的漏洞暂且不计。&lt;/p&gt;
&lt;h3 id=&quot;总结&quot;&gt;&lt;a href=&quot;#总结&quot; class=&quot;headerlink&quot; title=&quot;总结&quot;&gt;&lt;/a&gt;总结&lt;/h3&gt;&lt;p&gt;本文主要介绍了协同Fuzzing的设计思路，将Fuzzing置入CI构建中的方法，并分享了决定Fuzzing效果的关键三要素：目标、策略、样本，对这些要素一一分析，并附相应的实战案例。未来，我们也会尝试多去实践和推广这种多工种协同Fuzzing的工作方式，并建设更加完善的平台管理控制系统，方便实现多人协同工作。&lt;/p&gt;
&lt;p&gt;基于笔者水平有限，这套设计方案有些在企业内部实施的话，难免会有不足之处，欢迎业界同行斧正。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h3 id=&quot;引言&quot;&gt;&lt;a href=&quot;#引言&quot; class=&quot;headerlink&quot; title=&quot;引言&quot;&gt;&lt;/a&gt;引言&lt;/h3&gt;&lt;p&gt;近年来，无论是工业界，还是学术界，Fuzzing技术的应用都非常广泛。每年的BlackHat、OffensiveCon、CCC等工业界顶会，
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
  </entry>
  
  <entry>
    <title>Frida框架在Fuzzing中的应用</title>
    <link href="http://riusksk.github.io/2019/11/30/Frida%E6%A1%86%E6%9E%B6%E5%9C%A8Fuzzing%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/"/>
    <id>http://riusksk.github.io/2019/11/30/Frida框架在Fuzzing中的应用/</id>
    <published>2019-11-30T02:06:03.000Z</published>
    <updated>2020-01-21T02:32:58.000Z</updated>
    
    <content type="html">&lt;p&gt;由于&lt;code&gt;Frida&lt;/code&gt;（&lt;a href=&quot;https://frida.re&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://frida.re&lt;/a&gt; ）动态插桩框架的跨平台、简单易用，现在已经被广泛应用于安全领域。相比&lt;code&gt;Xposed&lt;/code&gt;而言，虽不能更底层地去Hook系统进程，但它可以免启动，应对App的hook完全够用，更关键的是，它完全可以用JavaScript来写代码，免去编译的烦恼，调试也方便。&lt;/p&gt;
&lt;p&gt;之前在工作中，也就用&lt;code&gt;Frida&lt;/code&gt;去Hook Android与iOS应用来做安全测试，效果挺好的，开发起来也挺高效的。本文主要围绕Fuzzing领域，来分析和记录最近一些使用&lt;code&gt;Frida&lt;/code&gt;的Fuzzer。&lt;/p&gt;
&lt;h3 id=&quot;定制型Fuzzer&quot;&gt;&lt;a href=&quot;#定制型Fuzzer&quot; class=&quot;headerlink&quot; title=&quot;定制型Fuzzer&quot;&gt;&lt;/a&gt;定制型Fuzzer&lt;/h3&gt;&lt;p&gt;用&lt;code&gt;Frida&lt;/code&gt;来Fuzzing APP的方法，首先推荐Project Zero大神写的&lt;code&gt;Adventures in Video Conferencing&lt;/code&gt;系列博文，详细介绍了Hook WhatApps和iMessage的输入数据处理函数并进行Fuzzing的方法，同时也开源了Hook iMessage的工具：&lt;a href=&quot;https://github.com/googleprojectzero/iOS-messaging-tools/tree/master/iMessage&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/iOS-messaging-tools/tree/master/iMessage&lt;/a&gt; ，提供dump和发送消息的功能，自己在额外构造变异数据去Fuzzing。&lt;/p&gt;
&lt;p&gt;这种方式特别适用于拥有私有的定制协议或数据格式的APP Fuzzing，只是需要花时间去逆向分析程序的输入数据解析流程，找到关键的处理函数。&lt;/p&gt;
&lt;h3 id=&quot;通用型Fuzzer&quot;&gt;&lt;a href=&quot;#通用型Fuzzer&quot; class=&quot;headerlink&quot; title=&quot;通用型Fuzzer&quot;&gt;&lt;/a&gt;通用型Fuzzer&lt;/h3&gt;&lt;p&gt;最近又看到两款使用&lt;code&gt;Frida&lt;/code&gt;的Fuzzer，出自同一人之手，用&lt;code&gt;Python&lt;/code&gt;和&lt;code&gt;JS&lt;/code&gt;写的，代码量不多：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;frida-js-afl-instr（&lt;a href=&quot;https://github.com/andreafioraldi/frida-js-afl-instr&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/andreafioraldi/frida-js-afl-instr&lt;/a&gt; ）：打通&lt;code&gt;AFL++&lt;/code&gt;与&lt;code&gt;Frida&lt;/code&gt;实现内存Fuzzing的工具，仅限Linux平台&lt;/li&gt;
&lt;li&gt;frida-qbdi-fuzzer（&lt;a href=&quot;https://github.com/andreafioraldi/frida-qbdi-fuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/andreafioraldi/frida-qbdi-fuzzer&lt;/a&gt; ）：基于&lt;code&gt;Frida&lt;/code&gt;与&lt;code&gt;QBDI&lt;/code&gt;的Android Fuzzer，借鉴AFL的代码覆盖引导思路，实现Android平台下闭源程序的覆盖引导Fuzzing。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面直接画时序图来看它的原理，就不贴源码分析了：&lt;/p&gt;
&lt;h4 id=&quot;frida-js-afl-instr原理图&quot;&gt;&lt;a href=&quot;#frida-js-afl-instr原理图&quot; class=&quot;headerlink&quot; title=&quot;frida-js-afl-instr原理图&quot;&gt;&lt;/a&gt;frida-js-afl-instr原理图&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20191130121915743.png&quot; alt=&quot;image-20191130121915743&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;frida-qbdi-fuzzer原理图&quot;&gt;&lt;a href=&quot;#frida-qbdi-fuzzer原理图&quot; class=&quot;headerlink&quot; title=&quot;frida-qbdi-fuzzer原理图&quot;&gt;&lt;/a&gt;frida-qbdi-fuzzer原理图&lt;/h4&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20191130122032208.png&quot; alt=&quot;image-20191130122032208&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;总结&quot;&gt;&lt;a href=&quot;#总结&quot; class=&quot;headerlink&quot; title=&quot;总结&quot;&gt;&lt;/a&gt;总结&lt;/h3&gt;&lt;p&gt;用Frida来实现闭源程序的代码覆盖引导，代码量很少，以Python和JS就可以快速开发起来，但涉及到python等进程的启动，肯定没有纯C/C++的代码运行速度快，但对于Fuzzing，一般还是够用的，还是值得学习和使用的。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;由于&lt;code&gt;Frida&lt;/code&gt;（&lt;a href=&quot;https://frida.re&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://frida.re&lt;/a&gt; ）动态插桩框架的跨平台、简单易用，现在已经被广泛应用于安全领域。相比&lt;co
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
  </entry>
  
  <entry>
    <title>Fuzzing平台建设的研究与设计</title>
    <link href="http://riusksk.github.io/2019/11/18/Fuzzing%E5%B9%B3%E5%8F%B0%E5%BB%BA%E8%AE%BE%E7%9A%84%E7%A0%94%E7%A9%B6%E4%B8%8E%E8%AE%BE%E8%AE%A1/"/>
    <id>http://riusksk.github.io/2019/11/18/Fuzzing平台建设的研究与设计/</id>
    <published>2019-11-18T10:01:55.000Z</published>
    <updated>2020-01-21T02:31:10.000Z</updated>
    
    <content type="html">

	&lt;div class=&quot;row&quot;&gt;
	  &lt;iframe src=&quot;http://nagland.github.io/viewer/web/viewer.html?val=http://riusksk.me/media/Fuzzing.pdf&quot; style=&quot;width:100%; height:550px&quot;&gt;&lt;/iframe&gt;
	&lt;/div&gt;



</content>
    
    <summary type="html">
    
      

	&lt;div class=&quot;row&quot;&gt;
	  &lt;iframe src=&quot;http://nagland.github.io/viewer/web/viewer.html?val=http://riusksk.me/media/Fuzzing.pdf&quot; style=&quot;width:1
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
  </entry>
  
  <entry>
    <title>Android应用逻辑漏洞半自动化挖掘思路</title>
    <link href="http://riusksk.github.io/2019/11/02/Jandroid%EF%BC%9A%E5%8D%8A%E8%87%AA%E5%8A%A8%E5%8C%96Android%E5%BA%94%E7%94%A8%E9%80%BB%E8%BE%91%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98/"/>
    <id>http://riusksk.github.io/2019/11/02/Jandroid：半自动化Android应用逻辑漏洞挖掘/</id>
    <published>2019-11-02T01:22:25.000Z</published>
    <updated>2019-11-02T03:25:16.000Z</updated>
    
    <content type="html">&lt;p&gt;大清早起来就看到F-Secure LABS团队（以前叫MWR，就是那支用13个逻辑漏洞攻击chrome的团队，是pwn2own专业户）发了一篇文章“Automating Pwn2Own with Jandroid” (&lt;a href=&quot;https://labs.f-secure.com/blog/automating-pwn2own-with-jandroid/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://labs.f-secure.com/blog/automating-pwn2own-with-jandroid/&lt;/a&gt; )，讲述如何利用Jandroid实现Android应用逻辑漏洞的半自动化挖掘思路。&lt;/p&gt;
&lt;p&gt;专注逻辑漏洞有一些好处，尤其是打比赛用途的，撞洞率较低，且利用稳定，一般都不用搞什么内存布局控制的，MWR尤其擅长此类漏洞的挖掘，之前就在pwn2own上攻击破过华为手机和chrome浏览器。&lt;/p&gt;
&lt;p&gt;文中介绍了Jandroid (&lt;a href=&quot;https://github.com/FSecureLABS/Jandroid&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/FSecureLABS/Jandroid&lt;/a&gt; )这款开源工具，要求python 3.4以上版本运行，支持&lt;code&gt;apk&lt;/code&gt;/&lt;code&gt;dex&lt;/code&gt;/&lt;code&gt;system.img&lt;/code&gt;/&lt;code&gt;ext4&lt;/code&gt;文件解析。&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;python3 src/jandroid.py -h                                            &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;----------------------------&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;           JANDROID&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;----------------------------&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;usage: jandroid.py [-h] [-f FOLDER] [-p [&amp;#123;android&amp;#125;]] [-e [&amp;#123;device,ext4,img&amp;#125;]]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                   [-g [&amp;#123;neo4j,visjs,both&amp;#125;]]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;A tool for performing pattern matching against applications.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;optional arguments:&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  -h, --help            show this help message and exit&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  -f FOLDER, --folder FOLDER&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        app分析目录，所以支持应用的批量分析&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  -p [&amp;#123;android&amp;#125;], --platform [&amp;#123;android&amp;#125;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        支持的平台，目前仅支持android平台&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  -e [&amp;#123;device,ext4,img&amp;#125;], --extract [&amp;#123;device,ext4,img&amp;#125;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        支持从连接设备、ext4、system.img中提取应用&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  -g [&amp;#123;neo4j,visjs,both&amp;#125;], --graph [&amp;#123;neo4j,visjs,both&amp;#125;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        支持检测结果的图表显示&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;它通过定义json模板来标记污点传播路径，比如拥有&lt;code&gt;android.intent.category.BROWSABLE&lt;/code&gt;浏览器打开权限的Activity，再查找&lt;code&gt;Landroid/webkit/WebView;-&amp;gt;addJavascriptInterface&lt;/code&gt;看是否存在JavaScript接口，以判断是否可能存在远程攻击的条件，但这种只能是半自动化辅助，还需要人工逆向确认。&lt;/p&gt;
&lt;p&gt;模板示例：&lt;/p&gt;
&lt;figure class=&quot;highlight json&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;41&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;&quot;METADATA&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;NAME&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;JSbridgeBrowsable&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;#125;,    &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;&quot;MANIFESTPARAMS&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;BASEPATH&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;manifest-&amp;gt;application-&amp;gt;activity OR manifest-&amp;gt;application-&amp;gt;activity-alias&quot;&lt;/span&gt;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;SEARCHPATH&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;intent-filter&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;attr&quot;&gt;&quot;action&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;attr&quot;&gt;&quot;LOOKFOR&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;attr&quot;&gt;&quot;TAGVALUEMATCH&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;NAMESPACE&amp;gt;:name=android.intent.action.VIEW&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;attr&quot;&gt;&quot;category&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;attr&quot;&gt;&quot;LOOKFOR&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;attr&quot;&gt;&quot;TAGVALUEMATCH&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;NAMESPACE&amp;gt;:name=android.intent.category.BROWSABLE&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;attr&quot;&gt;&quot;data&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;attr&quot;&gt;&quot;RETURN&quot;&lt;/span&gt;: [&lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;NAMESPACE&amp;gt;:host AS @host&quot;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;NAMESPACE&amp;gt;:scheme AS @scheme&quot;&lt;/span&gt;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &amp;#125;                &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;RETURN&quot;&lt;/span&gt;: [&lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;smali&amp;gt;:&amp;lt;NAMESPACE&amp;gt;:name AS @activity_name&quot;&lt;/span&gt;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;&quot;CODEPARAMS&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;SEARCH&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;SEARCHFORCALLTOMETHOD&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;attr&quot;&gt;&quot;METHOD&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;Landroid/webkit/WebView;-&amp;gt;addJavascriptInterface&quot;&lt;/span&gt;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;attr&quot;&gt;&quot;RETURN&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;class&amp;gt; AS @web_view&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;&quot;TRACE&quot;&lt;/span&gt;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;TRACEFROM&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;method&amp;gt;:@web_view[]-&amp;gt;loadUrl(Ljava/lang/String;)V&quot;&lt;/span&gt;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;TRACETO&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;class&amp;gt;:@activity_name&quot;&lt;/span&gt;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;TRACELENGTHMAX&quot;&lt;/span&gt;: &lt;span class=&quot;number&quot;&gt;10&lt;/span&gt;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;attr&quot;&gt;&quot;RETURN&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;&amp;lt;tracepath&amp;gt; AS @tracepath_browsablejsbridge&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;&quot;GRAPH&quot;&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&quot;@tracepath_browsablejsbridge WITH &amp;lt;method&amp;gt;:&amp;lt;desc&amp;gt;:&amp;lt;class&amp;gt; AS attribute=nodename&quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;各字段含义看示例就好了，这里不作详解。读者也可参考F-Secure发的文章，里面有详解。&lt;/p&gt;
&lt;p&gt;总结起来，模板支持：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AndroidManifest.xml的匹配搜索&lt;/li&gt;
&lt;li&gt;smali代码的匹配搜索&lt;/li&gt;
&lt;li&gt;传播路径的图表显示，以及显示的文件格式定义&lt;/li&gt;
&lt;li&gt;函数调用参数追踪&lt;/li&gt;
&lt;li&gt;函数调用的起点与终点定义、追踪以及追踪深度&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我直接找个apk分析运行，会出错提示以下错误：&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Traceback (most recent call last):&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  File &amp;quot;src/jandroid.py&amp;quot;, line 408, in &amp;lt;module&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    inst_jandroid.fn_main()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  File &amp;quot;src/jandroid.py&amp;quot;, line 227, in fn_main&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    self.pull_source&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  File &amp;quot;/Volumes/Macintosh/Users/riusksk/Android-Security/工具/Jandroid/src/plugins/android/main.py&amp;quot;, line 51, in fn_start_plugin_analysis&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    app_pull_src&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  File &amp;quot;/Volumes/Macintosh/Users/riusksk/Android-Security/工具/Jandroid/src/plugins/android/requirements_checker.py&amp;quot;, line 53, in fn_perform_initial_checks&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    raise JandroidException(&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;NameError: name &amp;apos;JandroidException&amp;apos; is not defined&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;直接在&lt;code&gt;Jandroid/src/plugins/android/requirements_checker.py&lt;/code&gt;开头加以下代码即可解决：&lt;/p&gt;
&lt;figure class=&quot;highlight python&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt; common &lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; JandroidException&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;运行效果：&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;python3 src/jandroid.py -f ./apps -g visjs&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;----------------------------&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;           JANDROID&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;----------------------------&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Creating template object.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     1 potential template(s) found.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Parsing /Volumes/Macintosh/Users/riusksk/Android-Security/工具/Jandroid/templates/android/sample_basic_browsable_jsbridge.template&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Initiating Android analysis.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Performing basic checks. Please wait.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Basic checks complete.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Beginning analysis...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    1 app(s) to analyse, using 2 thread(s).&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Created worker process 0&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Created worker process 1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    AnalyzeAPK&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Analysing without session&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Analysing ctrip.android.view_8.13.0_1248.apk in worker thread 0.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    AXML contains a RESOURCE MAP&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Start of Namespace mapping: prefix 47: &amp;apos;android&amp;apos; --&amp;gt; uri 48: &amp;apos;http://schemas.android.com/apk/res/android&amp;apos;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    START_TAG: manifest (line=2)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    found an attribute: &amp;#123;http://schemas.android.com/apk/res/android&amp;#125;versionCode=&amp;apos;b&amp;apos;1248&amp;apos;&amp;apos;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    found an attribute: &amp;#123;http://schemas.android.com/apk/res/android&amp;#125;versionName=&amp;apos;b&amp;apos;8.13.0&amp;apos;&amp;apos;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    found an attribute: &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;......&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Settings basic blocks childs&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Creating exceptions&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Parsing instructions&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Parsing exceptions&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Creating basic blocks in Landroid/support/constraint/solver/LinearSystem;-&amp;gt;createRowDimensionPercent(Landroid/support/constraint/solver/LinearSystem; Landroid/support/constraint/solver/SolverVariable; Landroid/support/constraint/solver/SolverVariable; Landroid/support/constraint/solver/SolverVariable; F Z)Landroid/support/constraint/solver/ArrayRow; [access_flags=public static] @ 0x199210&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;......&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Looking for subclasses of Lctrip/business/map/SimpleOverseaMapActivity;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    ctrip.android.view_8.13.0_1248.apk took 349 seconds to analyse.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;DEBUG    Finished analysing ctrip.android.view_8.13.0_1248.apk with output &amp;#123;&amp;apos;bug_obj&amp;apos;: &amp;#123;&amp;apos;JSbridgeBrowsable&amp;apos;: False&amp;#125;, &amp;apos;graph_list&amp;apos;: []&amp;#125;.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Finished analysing apps.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Creating custom graph.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     Custom graph can be found at /Volumes/Macintosh/Users/riusksk/Android-Security/工具/Jandroid/output/graph/jandroid.html&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;INFO     All done.&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;输出结果会在上面jandroid.html中显示，但由于我这里没有检测到满足JSbridgeBrowsable条件的代码，因此html里面的图是空的。如果有满足条件的代码，会得到类似如下的图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/visjs3.png&quot; alt=&quot;visjs3&quot;&gt;&lt;/p&gt;
&lt;p&gt;Jandroid还提供有GUI操作界面，包括模板创建功能，所以使用也很方便，运行以下命令即可打开：&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;python3 gui/jandroid_gui.py&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20191102103606311.png&quot; alt=&quot;image-20191102103606311&quot;&gt;&lt;/p&gt;
&lt;p&gt;比如追踪DexClassLoader.loadClass加载外部dex文件的情况：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20191102104919972.png&quot; alt=&quot;image-20191102104919972&quot;&gt;&lt;/p&gt;
&lt;p&gt;再举个实例，下图是MWR当初分析三星时，一个Unzip目录穿越漏洞的函数传播路径图，漏洞被用于Mobile Pwn2Own 2017：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20191102104533888.png&quot; alt=&quot;image-20191102104533888&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以，Jandroid还是非常适合用来挖掘逻辑漏洞的辅助工具，核心思想依然是污点追踪的思路，操作简单，可视化效果也很好。基于模板的定制化，增加了其运用的灵活性，尤其对于复杂的业务逻辑设计，很适合作定制化地批量检测，但依然需要人工分析确认，并非完全自动化的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/gzh.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;大清早起来就看到F-Secure LABS团队（以前叫MWR，就是那支用13个逻辑漏洞攻击chrome的团队，是pwn2own专业户）发了一篇文章“Automating Pwn2Own with Jandroid” (&lt;a href=&quot;https://labs.f-secu
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>漫谈网络安全应急要略</title>
    <link href="http://riusksk.github.io/2019/09/07/%E6%BC%AB%E8%B0%88%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%BA%94%E6%80%A5%E6%8C%87%E5%AF%BC%E6%80%9D%E6%83%B3/"/>
    <id>http://riusksk.github.io/2019/09/07/漫谈网络安全应急指导思想/</id>
    <published>2019-09-07T02:04:32.000Z</published>
    <updated>2019-09-07T12:53:33.000Z</updated>
    
    <content type="html">&lt;p&gt;【注】：本文仅代表个人观点，与公司立场无关。&lt;/p&gt;
&lt;p&gt;早上看到朋友圈有人说Metasploit公布BlueKeep远程执行漏洞的利用，一些安全群里也有人喊着加班了，但这漏洞明明很早就已经发布补丁了，现在才加班应急明显是有问题的。因此才有了本文，谈谈关于安全应急的一些个人想法。&lt;/p&gt;
&lt;h3 id=&quot;要略一：急则治其标，缓则治其本&quot;&gt;&lt;a href=&quot;#要略一：急则治其标，缓则治其本&quot; class=&quot;headerlink&quot; title=&quot;要略一：急则治其标，缓则治其本&quot;&gt;&lt;/a&gt;要略一：急则治其标，缓则治其本&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Sep-07-2019 12-20-44.gif&quot; alt=&quot;Sep-07-2019 12-20-44&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在韩剧《幽灵》中，男主角在入侵犯罪者的电脑后，发现他正在上传受害者视频，在电脑里他看到一份名为申孝静的文件，里面全是照片，男主在照片里看到那个戴金表的男人，还没看清扫描出他的脸，幽灵就把网线拔掉了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;假如服务器因漏洞被入侵，是先修漏洞还是先上面韩剧那样拔网线呢？&lt;/p&gt;
&lt;p&gt;估计你想拔网线都拔不到，可以先关闭外网止损。虽然这里本因是漏洞导致的，如果入侵后还在线上补漏洞，估计等你补完，裤子都被脱光了。&lt;/p&gt;
&lt;p&gt;这里”标”是数据泄露，”本”是漏洞，紧急情况下，先治标，及时止损，防止数据泄露；缓解之后，再治本，修补漏洞，也包括安全系统监控与拦截机制被绕过的问题。&lt;/p&gt;
&lt;p&gt;如果今天还在应急BlueKeep漏洞，说明补丁日的时候没有及时打补丁，才导致今天的局面。&lt;/p&gt;
&lt;p&gt;毕竟，你总不能老是靠拔网线来解决问题吧！&lt;/p&gt;
&lt;h3 id=&quot;要略二：数据安全高于一切&quot;&gt;&lt;a href=&quot;#要略二：数据安全高于一切&quot; class=&quot;headerlink&quot; title=&quot;要略二：数据安全高于一切&quot;&gt;&lt;/a&gt;要略二：数据安全高于一切&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Sep-07-2019 12-16-48.gif&quot; alt=&quot;Sep-07-2019 12-16-48&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;日剧《医龙》中，跟随男主的一位护士突发气胸，情况危急，如果叫救护车可能来不及，于是男主直接拿根笔管折断，插入患者的两侧胸腔放气，以降低胸腔压力。正常人的胸腔是负压，当气体进入后会压缩肺脏，导致呼吸困难，片中的场景应该是张力性气胸，即胸腔压力大于外部气压时，才插入胸腔放气。但是，如此风骚的非常规手段，未消毒，还产生新创伤的治疗手段，明显是不符合医疗操作流程的，但若不这样做，又可能没命。所以，危急情况下，总有一点最高优先级的标准，那就是：生命高于一切！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Sep-07-2019 12-17-55.gif&quot; alt=&quot;Sep-07-2019 12-17-55&quot;&gt;&lt;/p&gt;
&lt;p&gt;在各公司里面，都有自己要求的产品发布流程，从需求、开发、测试、发布都有一系列的流程要走，这也是对产品质量的保证。但是，若被外部发现严重漏洞，想发布补丁也这样走一遍，中间还涉及各种审批，搞完都得好多天了，到时候，裤子又要被脱光了！那到底是遵守，还是不遵守。&lt;/p&gt;
&lt;p&gt;这就要求同样要有一条最高优先级的标准，那就是：数据安全高于一切！&lt;/p&gt;
&lt;p&gt;数据包括公司保密信息、用户数据等等不宜公开的数据，如果在危害数据安全的情况下，就不该过于拘泥于繁文缛节，应有相应的应急通道去完成快速发布安全补丁的途径。&lt;/p&gt;
&lt;h3 id=&quot;要略三：举一反三，触类旁通&quot;&gt;&lt;a href=&quot;#要略三：举一反三，触类旁通&quot; class=&quot;headerlink&quot; title=&quot;要略三：举一反三，触类旁通&quot;&gt;&lt;/a&gt;要略三：举一反三，触类旁通&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/timg.jpeg&quot; alt=&quot;timg&quot;&gt;&lt;/p&gt;
&lt;p&gt;每起安全应急事件背后，都有其导致事件的问题存在，很多时候它又代表着一类问题，而非单一案例作单一处理，最好能保证一个案例，引出一类问题并解决掉。&lt;/p&gt;
&lt;p&gt;比如由于SQL注入导致的拖库事件，并非止损修漏洞就完事了，其背后的扫描器为何漏扫，WAF为何被绕过，或者漏洞代码为何回滚（上个月苹果就因此导致iOS 12.4被拿旧洞越狱）。解决背后引发漏洞的各类问题，是不是就能够拿扫描器发现更多业务的同类漏洞，WAF是不是能够帮各多业务防御漏洞，代码发布流程的完善是否可以避免代码回滚导致的漏洞……&lt;/p&gt;
&lt;h3 id=&quot;要略四：广开言路，以德服人&quot;&gt;&lt;a href=&quot;#要略四：广开言路，以德服人&quot; class=&quot;headerlink&quot; title=&quot;要略四：广开言路，以德服人&quot;&gt;&lt;/a&gt;要略四：广开言路，以德服人&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Sep-07-2019 17-33-27.gif&quot; alt=&quot;Sep-07-2019 17-33-27&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在电影《巴斯特·斯克鲁格斯的歌谣》中，巴斯特·斯克鲁格斯是个牛仔，穿戴着闪闪发光的马刺和崭新的白色马裤，喜欢唱歌，还有无人能敌的好枪法，他自诩是全西部决斗掏枪最快的枪手，还把这编成了歌谣，天天弹着吉他唱在口头，他以一种无敌的姿态一路杀一路唱一路跳。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Sep-07-2019 17-32-53.gif&quot; alt=&quot;Sep-07-2019 17-32-53&quot;&gt;&lt;/p&gt;
&lt;p&gt;但最终他遇上了旗鼓相当的对手，被人以自己惯用规则和套路一枪爆头。&lt;/p&gt;
&lt;p&gt;这个故事告诉我们，装逼一时爽，过头火葬场。&lt;/p&gt;
&lt;p&gt;同样地，再牛逼的安全系统也可能被绕过，再安全的网站也可能被入侵，没有绝对安全的地方。&lt;/p&gt;
&lt;p&gt;现在流行建设SRC与众测，也是为了与自身安全团队的能力作互补，广开言路，博采众长，改善自身安全系统，解决自己未能发现的问题。&lt;/p&gt;
&lt;p&gt;为何提到以德服人，一方面是指善待白帽子，保持有效沟通，另一方面是指避免”文人相轻”的现象。谁都年轻过，搞技术的人有时多少有点傲气，报洞的BS收洞的，甚至报洞者之间互相BS。如果企业也带着相同的情绪，难免会导致与白帽子之间沟通矛盾，所以说善待白帽子，以德服人，哪怕白帽子少凌晨两三点搞事，也是好的。&lt;/p&gt;
&lt;p&gt;这些年，微软对漏洞的处理的态度变化最大，从最初放言绝不为漏洞买卖，散漫地漏洞处理态度，到现在及时响应，建立完善的漏洞奖励计划，奖金力度也在不断提高，同时每年在BlackHat上公布TOP 100最具价值的安全研究员名单，赋予帽子荣誉感。&lt;/p&gt;
&lt;p&gt;这些都代表着行业对漏洞，对白帽子的态度的一路转变历程。&lt;/p&gt;
&lt;h3 id=&quot;要略五：未雨绸缪，防范未然&quot;&gt;&lt;a href=&quot;#要略五：未雨绸缪，防范未然&quot; class=&quot;headerlink&quot; title=&quot;要略五：未雨绸缪，防范未然&quot;&gt;&lt;/a&gt;要略五：未雨绸缪，防范未然&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/timg2.jpeg&quot; alt=&quot;timg2&quot;&gt;&lt;/p&gt;
&lt;p&gt;现在行业都在推广DevSecOps，是由Gartner 在2012年的一份报告中提出的概念。在这份报告中，Gartner提出信息安全专业人士需要更主动的融入DevOps的实践中，秉承DevOps的精神，拥抱团队协作、敏捷和职责共担的哲学。说得直白点就是，将安全融入到研发、运营等各个流程中，以实现安全自动化，连续响应和检测机制，帮助各团队之间协同合作。&lt;/p&gt;
&lt;p&gt;在应急事件中至少覆盖到：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;事前防范：包括漏洞扫描、代码审计、渗透测试、威胁情报、数据保护等等；&lt;/li&gt;
&lt;li&gt;事中拦截：包括WAF、EDR、RAPS、IDS、杀软等等；&lt;/li&gt;
&lt;li&gt;事后追溯：包括日志记录、取证系统等等。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;要略六：犯罪者，虽远必诛&quot;&gt;&lt;a href=&quot;#要略六：犯罪者，虽远必诛&quot; class=&quot;headerlink&quot; title=&quot;要略六：犯罪者，虽远必诛&quot;&gt;&lt;/a&gt;要略六：犯罪者，虽远必诛&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/QQ20190907-194700.png&quot; alt=&quot;QQ20190907-194700&quot;&gt;&lt;/p&gt;
&lt;p&gt;早作最坏的打算，因为白帽子也有”黑化”的可能。之前微软得罪过多少个白帽子了，就曾有白帽子在一气之下，每隔一段时间就爆0day出来。虽然其中微软也有责任，但白帽子这种行为总是不对的。&lt;/p&gt;
&lt;p&gt;特别鄙视那些借测试之名，行不轨不事的人，搞了破坏还要钱，这就是不厚道，耗人品的耻事。&lt;/p&gt;
&lt;p&gt;即使是现在的SRC与众测，虽说是奖励机制，但本质上依然是种利益交换行为，有利益就可能产生冲突。所以，需要时刻为这种冲突准备着。&lt;/p&gt;
&lt;p&gt;坚持”不搞事，不怕事”的态度，贯彻”决不放弃使用武力”的作战方针，保留犯罪证据，在必要的时候，坚决拿起法律武器捍卫自身权益。&lt;/p&gt;
&lt;p&gt;一句话：犯罪者，虽远必诛！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/gzh.png&quot; alt=&quot;vulwar&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;【注】：本文仅代表个人观点，与公司立场无关。&lt;/p&gt;
&lt;p&gt;早上看到朋友圈有人说Metasploit公布BlueKeep远程执行漏洞的利用，一些安全群里也有人喊着加班了，但这漏洞明明很早就已经发布补丁了，现在才加班应急明显是有问题的。因此才有了本文，谈谈关于安全应急的一些个
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>安全研究的价值思考</title>
    <link href="http://riusksk.github.io/2019/08/18/%E5%AE%89%E5%85%A8%E7%A0%94%E7%A9%B6%E7%9A%84%E4%BB%B7%E5%80%BC%E6%80%9D%E8%80%83/"/>
    <id>http://riusksk.github.io/2019/08/18/安全研究的价值思考/</id>
    <published>2019-08-18T05:27:14.000Z</published>
    <updated>2019-08-18T07:59:12.000Z</updated>
    
    <content type="html">&lt;p&gt;【注】：纯属个人言论，与公司立场无关！&lt;/p&gt;
&lt;p&gt;最近的Black Hat大会议题ppt已提供下载，里面有两个非技术议题，其视角比较有趣，一些问题值得思考，因此才有本文。&lt;/p&gt;
&lt;p&gt;这两个议题分别是”Project Zero File Years Of Make 0day Hard”和”Selling 0-days to governments and offensive security companies”，一个讲述5年来Google的Project Zero团队在漏洞研究上的工作效果，一个讲述关于漏洞交易的一些现状、流程。&lt;/p&gt;
&lt;h3 id=&quot;安全研究都干啥&quot;&gt;&lt;a href=&quot;#安全研究都干啥&quot; class=&quot;headerlink&quot; title=&quot;安全研究都干啥&quot;&gt;&lt;/a&gt;安全研究都干啥&lt;/h3&gt;&lt;p&gt;安全研究并不局限于漏洞领域，但它依然是目前最主流的方向，研究范围也可以包括网络安全、反病毒、大数据安全、业务安全等诸多安全领域。这里主要聊下漏洞领域的研究，看看Project Zero的人主要都在干啥：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190818142847773.png&quot; alt=&quot;image-20190818142847773&quot;&gt;&lt;/p&gt;
&lt;p&gt;总结一下就是（主要指漏洞研究领域，估计很多人只干1、3、4的工作）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;漏洞挖掘与利用&lt;/li&gt;
&lt;li&gt;方法论建设&lt;/li&gt;
&lt;li&gt;技术写作&lt;/li&gt;
&lt;li&gt;行业交流与合作&lt;/li&gt;
&lt;li&gt;软件工程化建设，可能是指DevSecOps，包括安全防御策略建设、libfuzzer自动化测试等的应用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;###从招聘职责看研究目的&lt;/p&gt;
&lt;p&gt;谈研究价值，不妨先来谈谈研究的目的，我特意从各招聘网站上搜集了一些关于安全研究岗位的招聘信息，主要统计其岗位职责描述的关键词，生成如下词云：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/职责.png&quot; alt=&quot;职责&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到，当前的研究岗位普遍就是招漏洞挖掘职位的，都是搞主流系统及软件为主，但挖洞的目的又是为什么呢，这种在很少企业会写在招聘帖的。从统计结果看，主要有以下3个研究目的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;挖掘主流系统/软件漏洞；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;帮助安全产品提升检测能力；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;为业务提供技术支持。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第一点是手段，等于啥也没说，第2点算是做安全产品，第3点是得看是什么业务，如第2点也算业务，但如果是一些非安全产品业务，其实所能提供的技术支持就相对比较局限，可能人家业务也不一定看得上你这研究。&lt;/p&gt;
&lt;h3 id=&quot;影响力价值&quot;&gt;&lt;a href=&quot;#影响力价值&quot; class=&quot;headerlink&quot; title=&quot;影响力价值&quot;&gt;&lt;/a&gt;影响力价值&lt;/h3&gt;&lt;p&gt;搞安全研究，普遍都是为了影响力公关（PR），国内外均是如此，BlackHat上的Pwnie Awards都有一个“&lt;em&gt;最名不副实&lt;/em&gt;漏洞奖”，叫做”most over-hyped bug”，就是用来批评那些过度炒作的漏洞。但是一些确实危害比较大的漏洞，及时负责任地披露反而有利于防御工作的开展。Project Zero议题中讲到一句话，开放的攻击研究相对攻击者而言，对防御者更为有利。之前国内试颁行的某提案，因可能阻碍安全研究者公开研究成果，遭到不少圈内人的反对。这跟古时候，有的国家禁止人民用刀一样，最终只是阻碍生产力的发展而已。其实只要不是急功近利，获得与研究成果相匹配的影响力也是合理的。那获得影响力之后的价值呢？对团队，对个人，可能获取得更多交流与学习的机会，也可能获得更多业务合作机会，直接点，可能找份工作防止中年危机都更有资本了。&lt;/p&gt;
&lt;h3 id=&quot;商业价值&quot;&gt;&lt;a href=&quot;#商业价值&quot; class=&quot;headerlink&quot; title=&quot;商业价值&quot;&gt;&lt;/a&gt;商业价值&lt;/h3&gt;&lt;p&gt;何为商业价值？就是赚钱嘛！通过安全研究落地为产品，然后拿去卖；也可提供技术服务，比如帮助对IoT、车联网产品等新兴行业产品进行安全测试。产品一般比技术服务更值钱，技术服务经常是一波过，产品却是可以长期收费的，比如IDA一年卖几万刀，用户每年都得交钱，而若只是提供逆向服务，费劲且不持久，赚得还少。如果是漏洞交易，高质量的漏洞利用链也是可以获得不菲的利益。在0day漏洞交易感兴趣的，主要涉及以下3类角色：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190818144822263.png&quot; alt=&quot;image-20190818144822263&quot;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;防御型企业、漏洞奖励计划和平台&lt;/li&gt;
&lt;li&gt;黑客比赛举办者，类似漏洞收购中间商，自己可能也会去挖洞，也可能收购poc来自己写exploit，或者直接收购exploit，再转手卖出去赚差价&lt;/li&gt;
&lt;li&gt;攻击型企业、政府、黑产团伙&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在国内已经限制参加Pwn2Own之类的国外比赛，从2018年开始，国内由”天府杯”比赛代替，主要是防止漏洞外流危害国家网络安全。这些比赛也推动了厂商对漏洞处理的态度，以及漏洞奖励计划的建设，使得报告者能够合法地获得相应的奖励和认可。&lt;/p&gt;
&lt;h3 id=&quot;新型业务安全预防&quot;&gt;&lt;a href=&quot;#新型业务安全预防&quot; class=&quot;headerlink&quot; title=&quot;新型业务安全预防&quot;&gt;&lt;/a&gt;新型业务安全预防&lt;/h3&gt;&lt;p&gt;提前研究一些公司业务可能涉足的新领域，避免新兴业务产品出来后，无能力解决上面的安全问题。但整个的前提是，该新产品能活下来，否则一切都是白搭。&lt;/p&gt;
&lt;h3 id=&quot;行业贡献&quot;&gt;&lt;a href=&quot;#行业贡献&quot; class=&quot;headerlink&quot; title=&quot;行业贡献&quot;&gt;&lt;/a&gt;行业贡献&lt;/h3&gt;&lt;p&gt;在安全行业贡献榜上，Project Zero无疑是佼佼者。在5年内，他们共贡献1500+个主流系统/软件漏洞，推动很多安全防御机制的诞生，甚至影响漏洞在市场上的价格。漏洞研究者有时担心手上的漏洞被撞掉，会直接报给厂商，混个致谢，搞不好年底还能混个”MSRC Top 100”，今年开始它改名叫”最具价值安全研究员”，更高大上了。这个月，我就被Project Zero的人撞掉了一个微软漏洞。在PZ分享的议题里面，提出一些衡量”make 0day hard”的标准，但毕竟是相对概念，仅当作参考：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;挖到品相优秀的漏洞所花费的时间；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;漏洞平均生存时间；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;撞洞数量；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;漏洞利用链的长度；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;新型高质量的攻击面的发现概率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;个人保值防老&quot;&gt;&lt;a href=&quot;#个人保值防老&quot; class=&quot;headerlink&quot; title=&quot;个人保值防老&quot;&gt;&lt;/a&gt;个人保值防老&lt;/h3&gt;&lt;p&gt;研究本身就是一种学习方式。相信爱学习的人，最终运气都不会太差。尤其是现在鼓吹35岁中年危机的互联网时代，保持学习是最靠谱的个人保值防老方式。如果保持工作内容不变，那么通常头一年所积累的技术与工作方法足够应付绝大部分工作。若再不搞点有挑战的新工作内容，或者业余做点研究，那就要成为拿着一套技术吃N年的”老白兔”了。持续学习，保持或者超越与年龄相符的技术能力才是王道。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/gzh.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;【注】：纯属个人言论，与公司立场无关！&lt;/p&gt;
&lt;p&gt;最近的Black Hat大会议题ppt已提供下载，里面有两个非技术议题，其视角比较有趣，一些问题值得思考，因此才有本文。&lt;/p&gt;
&lt;p&gt;这两个议题分别是”Project Zero File Years Of Make 0
    
    </summary>
    
      <category term="随笔杂谈" scheme="http://riusksk.github.io/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>一些值得学习的Fuzzer开源项目</title>
    <link href="http://riusksk.github.io/2019/07/14/%E4%B8%80%E4%BA%9B%E5%80%BC%E5%BE%97%E5%AD%A6%E4%B9%A0%E7%9A%84Fuzzer%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/"/>
    <id>http://riusksk.github.io/2019/07/14/一些值得学习的Fuzzer开源项目/</id>
    <published>2019-07-14T02:42:40.000Z</published>
    <updated>2019-07-14T05:50:36.000Z</updated>
    
    <content type="html">&lt;p&gt;之前&lt;code&gt;GitHub&lt;/code&gt;上有人整理过一个叫&lt;code&gt;Awesome-Fuzzing&lt;/code&gt;的资料，整理了关于&lt;code&gt;Fuzzing&lt;/code&gt;技术的电子书、视频、工具、教程以及用于练习的漏洞程序。整体上不错，但工具上还是不够全，有些不错且希望阅读代码学习的工具，发现未在其中，因此重新整理出下面这一份资源，其中有些还曾二次开发过，有些是还未来得及学习的，写出来权且当作学习计划。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AFL&lt;/strong&gt;——支持源码插桩的代码覆盖引导的Fuzzer，绝对是fuzzer领域的一大里程碑，虽然它也支持基于QEMU的闭源程序，但效果不好，且容易出错，由它衍生出来非常多afl分支版本，借助它已经被挖出非常多的漏洞，但它的变异策略其实有待提高。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://lcamtuf.coredump.cx/afl/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://lcamtuf.coredump.cx/afl/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WinAFL&lt;/strong&gt;——windows版本的afl，使用&lt;code&gt;DynamoRIO&lt;/code&gt;去插桩闭源程序以获取代码覆盖率信息，同时支持硬件PT获取覆盖率信息，但PT获取覆盖率其实并没有插桩获取得全，但速度可能会快一些。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/googleprojectzero/winafl&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/winafl&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AFLFast&lt;/strong&gt;——加速版的AFL，Fuzzing速度确实会比原版快一些。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mboehme/aflfast&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/mboehme/aflfast&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vuzzer&lt;/strong&gt;——支持闭源程序的覆盖引导Fuzzer，使用LibDFT的pin工具实现数据流追踪，结合动静态分析，以获取更多的代码路径，比如比较语句中的比较值，它会先作记录，再未来变异时使用。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/vusec/vuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/vusec/vuzzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PTfuzzer&lt;/strong&gt;——Linux平台下的采用 Interl PT硬件支持的覆盖引导Fuzzer，所以它支持闭源程序。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/hunter-ht-2018/ptfuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/hunter-ht-2018/ptfuzzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;afl-unicorn&lt;/strong&gt;——采用Unicorn模拟指令的AFL，支持Linux闭源程序&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/tigerpuma/Afl_unicorn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/tigerpuma/Afl_unicorn&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;pe-afl&lt;/strong&gt;——通过静态插桩实现针对Windows闭源程序的覆盖引导的AFL Fuzzer，支持用户层应用和内核驱动&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/wmliang/pe-afl&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/wmliang/pe-afl&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;kAFL&lt;/strong&gt;——支持QEMU虚拟机下的系统内核Fuzzing的AFL，适用于Linux、macOS与Windows&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/RUB-SysSec/kAFL/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/RUB-SysSec/kAFL/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TriforceAFL&lt;/strong&gt;——基于QEMU全系统模拟的AFL，借助系统仿真器实现分支信息跟踪，支持Linux内核Fuzzing&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/nccgroup/TriforceAFL&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/nccgroup/TriforceAFL&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ClusterFuzzer&lt;/strong&gt;——Google开源的可扩展的Fuzzing基础设施&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/clusterfuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/clusterfuzz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LibFuzzer&lt;/strong&gt;——进程内覆盖率引导的开源的fuzz引擎库，属于llvm的一部分，在各大主流开源库中，以及Google内部最经常用的安全测试工具&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://llvm.org/docs/LibFuzzer.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://llvm.org/docs/LibFuzzer.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OSS-Fuzz&lt;/strong&gt;——基于LibFuzzer的开源软件Fuzzer集合，实现docker下自动下载、编译安装及运行&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/oss-fuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/oss-fuzz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;honggfuzz&lt;/strong&gt;——Google开发的基于软硬件的覆盖驱动型Fuzzer，单纯暴力Fuzz的效果也挺好的，支持多平台，包括Linux\macOS\Windows\Android&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/honggfuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/honggfuzz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;KernelFuzzer&lt;/strong&gt;——跨平台内核Fuzzer框架，不开源策略，只在其paper中提及变异策略，需要自己实现，支持Windows、OSX和QNX系统，但只提供Windows编译脚本&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mwrlabs/KernelFuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/mwrlabs/KernelFuzzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OSXFuzzer&lt;/strong&gt;——基于Kernel Fuzzer的macOS内核Fuzzer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mwrlabs/OSXFuzz.git&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/mwrlabs/OSXFuzz.git&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PassiveFuzzFrameworkOSX&lt;/strong&gt;——通过Hook实现被动式的OSX内核Fuzzer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/SilverMoonSecurity/PassiveFuzzFrameworkOSX&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/SilverMoonSecurity/PassiveFuzzFrameworkOSX&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bochspwn&lt;/strong&gt;——基于Boch插桩API实现Double Fetches内核漏洞的检测&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/googleprojectzero/bochspwn&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/bochspwn&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bochspwn-reloaded&lt;/strong&gt;——基于Boch插桩API实现内核信息泄露的检测&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/googleprojectzero/bochspwn-reloaded&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/bochspwn-reloaded&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;syzkaller&lt;/strong&gt;——基于覆盖率引导的Linux内核Fuzzer，需要基于其模板语法实现API调用模板，提供给syzkaller进行数据变异，也曾被移植到其它平台&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/syzkaller&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/google/syzkaller&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;dharma&lt;/strong&gt;——基于语法模板生成的Fuzzer，由Mozilla开源的用于Fuzz Firefox JS引擎&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/MozillaSecurity/dharma&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/MozillaSecurity/dharma&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;domator&lt;/strong&gt;——Project Zero团队开源的DOM Fuzzer，用python实现基于模板生成的Fuzzer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/googleprojectzero/domato&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/domato&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fuzzilli&lt;/strong&gt;——基于语法变异的JavaScript引擎Fuzzer，先通过语法模板生成测试用例，再生成中间语法进行变异，结合覆盖率引导以触发更多代码路径&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/googleprojectzero/fuzzilli&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/fuzzilli&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Razzer&lt;/strong&gt;——内核竞争条件漏洞Fuzzer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/compsec-snu/razzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/compsec-snu/razzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ViridianFuzzer&lt;/strong&gt;——用于Fuzzing Hyper-V hypercalls的内核驱动，由MWRLabs公司出品&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mwrlabs/ViridianFuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/mwrlabs/ViridianFuzzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ChromeFuzzer&lt;/strong&gt;——基于grinder语法生成器改装的Chrome浏览器Fuzzer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/demi6od/ChromeFuzzer&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/demi6od/ChromeFuzzer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;funfuzz&lt;/strong&gt;——Mozilla开源的JS fuzzer工具集合，主要用于Fuzz SpiderMonkey&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/MozillaSecurity/funfuzz&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/MozillaSecurity/funfuzz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;之前&lt;code&gt;GitHub&lt;/code&gt;上有人整理过一个叫&lt;code&gt;Awesome-Fuzzing&lt;/code&gt;的资料，整理了关于&lt;code&gt;Fuzzing&lt;/code&gt;技术的电子书、视频、工具、教程以及用于练习的漏洞程序。整体上不错，但工具上还是不够全，有些不错且希望
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
      <category term="Fuzzing" scheme="http://riusksk.github.io/tags/Fuzzing/"/>
    
      <category term="Fuzzer" scheme="http://riusksk.github.io/tags/Fuzzer/"/>
    
  </entry>
  
  <entry>
    <title>Infiltrate2019议题学习</title>
    <link href="http://riusksk.github.io/2019/06/29/Infiltrate2019%E8%AE%AE%E9%A2%98%E5%AD%A6%E4%B9%A0/"/>
    <id>http://riusksk.github.io/2019/06/29/Infiltrate2019议题学习/</id>
    <published>2019-06-29T02:26:18.000Z</published>
    <updated>2019-06-29T04:38:42.000Z</updated>
    
    <content type="html">&lt;p&gt;Infiltrate2019安全大会是在5月初举办的，会议资料收集后放在电脑上1个多月了，连续几个周末都有事，一直没来得及学习，今天刚好学习下，有些议题其实跟MOSEC上有重复。&lt;/p&gt;
&lt;p&gt;重点聊几个个人感兴趣的议题，并最后附上10个议题ppt资料下载。&lt;/p&gt;
&lt;h3 id=&quot;2PAC-2Furious-Envisioning-an-iOS&quot;&gt;&lt;a href=&quot;#2PAC-2Furious-Envisioning-an-iOS&quot; class=&quot;headerlink&quot; title=&quot;2PAC 2Furious Envisioning an iOS&quot;&gt;&lt;/a&gt;2PAC 2Furious Envisioning an iOS&lt;/h3&gt;&lt;p&gt;科恩出品，分两部分：PAC绕过与基带研究，刚好在MOSEC上project zero的人讲了5种PAC绕过方法，议题名叫”A study in PAC”，涵盖了其中的方法，而基带研究部分也作为独立议题在MOSEC上分享过，介绍 基带攻击方法、逆向分析固件的方法。&lt;/p&gt;
&lt;p&gt;之前在MOSEC上，我对5种PAC绕过方法作了学习笔记，直接上图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htu5v9uwj30kt0bu117.jpg&quot; alt=&quot;image-20190629104044528&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htugqt77j30l60azk14.jpg&quot; alt=&quot;image-20190629104108330&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htvdapshj30ln0bjqdc.jpg&quot; alt=&quot;image-20190629104158997&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htvmwxq5j30lb0bvtic.jpg&quot; alt=&quot;image-20190629104215919&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htw8f19bj30l20bv47u.jpg&quot; alt=&quot;image-20190629104249591&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;EL3-Tour-Get-The-Ultimate-Privilege-of-Android-Phone&quot;&gt;&lt;a href=&quot;#EL3-Tour-Get-The-Ultimate-Privilege-of-Android-Phone&quot; class=&quot;headerlink&quot; title=&quot;EL3 Tour - Get The Ultimate Privilege of Android Phone&quot;&gt;&lt;/a&gt;EL3 Tour - Get The Ultimate Privilege of Android Phone&lt;/h3&gt;&lt;p&gt;盘古出品，拿华为P20开刀，应该是手工逆向分析TEE相关代码，挖到一个代码执行漏洞攻击EL3的过程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4htzfth2jj30ki08ytfb.jpg&quot; alt=&quot;image-20190629104554838&quot;&gt;&lt;/p&gt;
&lt;p&gt;通过VBAR_EL+0x400的异常处理例程来定位SMC处理例程：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4hu1jvypuj30eo08ctdm.jpg&quot; alt=&quot;image-20190629104757284&quot;&gt;&lt;/p&gt;
&lt;p&gt;漏洞代码：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g4hu25urjvj30l10930y7.jpg&quot; alt=&quot;image-20190629104832507&quot;&gt;&lt;/p&gt;
&lt;p&gt;对方的漏洞利用思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;通过漏洞实现任意内存读写&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;布署 Shellcode 于地址 0x209F8000（EL1下可访问，属于共享内存）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;篡改 Page Descriptior : 0x209F8627 =&amp;gt; 0x209F8783（可执行）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TLBI ALLEL3：清除TLB缓存，保持数据一致，使页表修改可被CPU感知到&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;调用 0x209F8000，触发shellcode执行&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后演示如何利用该漏洞绕过华为手机的人脸验证，包括篡改人脸匹配分值、活体检测结果。&lt;/p&gt;
&lt;h3 id=&quot;Adventures-in-Video-Conferencing&quot;&gt;&lt;a href=&quot;#Adventures-in-Video-Conferencing&quot; class=&quot;headerlink&quot; title=&quot;Adventures in Video Conferencing&quot;&gt;&lt;/a&gt;Adventures in Video Conferencing&lt;/h3&gt;&lt;p&gt;Project Zero以前在其博客上分享过，看博文会更清晰一些，详见：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2018/12/adventures-in-video-conferencing-part-1.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adventures in Video Conferencing Part 1: The Wild World of WebRTC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2018/12/adventures-in-video-conferencing-part-2.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adventures in Video Conferencing Part 2: Fun with FaceTime&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2018/12/adventures-in-video-conferencing-part-3.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adventures in Video Conferencing Part 3: The Even Wilder World of WhatsApp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2018/12/adventures-in-video-conferencing-part-4.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adventures in Video Conferencing Part 4: What Didn’t Work Out with WhatsApp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://googleprojectzero.blogspot.com/2018/12/adventures-in-video-conferencing-part-5.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Adventures in Video Conferencing Part 5: Where Do We Go from Here?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Natalie Silvanovich 作为PZ的头牌女黑客，在此议题的厉害之处就是用了几行fuzz代码挖了包括浏览器、FaceTime、WhatsApp在内的主流应用10多个CVE远程漏洞。就是下面这段代码：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me//media/006tNc79gy1g4huf2vvhfj30c80df3zm.jpg&quot; alt=&quot;image-20190629110057733&quot;&gt;&lt;/p&gt;
&lt;p&gt;通过分析视频交互过程，找到外部数据传递的关键点，开源的改代码插入fuzz，闭源的写Hook去实现fuzz，相关的工具也已在GitHub上开源：&lt;a href=&quot;https://github.com/googleprojectzero/Street-Party。之前看到国内也有人顺势搞到几个FaceTime的漏洞。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/googleprojectzero/Street-Party。之前看到国内也有人顺势搞到几个FaceTime的漏洞。&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;TEE-Exploitation-Exploiting-Trusted-Apps-on-Samsung’s-TEE&quot;&gt;&lt;a href=&quot;#TEE-Exploitation-Exploiting-Trusted-Apps-on-Samsung’s-TEE&quot; class=&quot;headerlink&quot; title=&quot;TEE Exploitation: Exploiting Trusted Apps on Samsung’s TEE&quot;&gt;&lt;/a&gt;TEE Exploitation: Exploiting Trusted Apps on Samsung’s TEE&lt;/h3&gt;&lt;p&gt;Blue Frost Security出品，举了几个三星漏洞的例子：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;TA的栈溢出案例：由于只有NX(没有栈保护和ASLR)，所以直接上ROP搞定的&lt;/li&gt;
&lt;li&gt;共享内存Double Fectch漏洞：TA在验证和使用命令数据的时间窗口内，可能被篡改数据，实现任意读写&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me//media/006tNc79gy1g4huyzbl81j30id0dh0tr.jpg&quot; alt=&quot;image-20190629112004922&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于缺乏一些常见的内存保护机制（仅有NX），在TA利用上反而更加容易。TA攻破后，对于厂商最大的影响可能是DRM版权与支付密钥等问题；而对于用户而言，主要是用户数据的窃取问题。&lt;/p&gt;
&lt;h3 id=&quot;资料打包下载&quot;&gt;&lt;a href=&quot;#资料打包下载&quot; class=&quot;headerlink&quot; title=&quot;资料打包下载&quot;&gt;&lt;/a&gt;资料打包下载&lt;/h3&gt;&lt;p&gt;下载链接：&lt;a href=&quot;https://github.com/riusksk/SecConArchive/tree/master/Infiltrate2019&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/riusksk/SecConArchive/tree/master/Infiltrate2019&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me//media/006tNc79gy1g4hvqqcgb5j30co05y759.jpg&quot; alt=&quot;image-20190629114646339&quot;&gt;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;Infiltrate2019安全大会是在5月初举办的，会议资料收集后放在电脑上1个多月了，连续几个周末都有事，一直没来得及学习，今天刚好学习下，有些议题其实跟MOSEC上有重复。&lt;/p&gt;
&lt;p&gt;重点聊几个个人感兴趣的议题，并最后附上10个议题ppt资料下载。&lt;/p&gt;
&lt;h3
    
    </summary>
    
      <category term="技术分享" scheme="http://riusksk.github.io/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
  </entry>
  
  <entry>
    <title>2019年哪些安全大会的议题值得学习</title>
    <link href="http://riusksk.github.io/2019/05/11/2019%E5%B9%B4%E5%93%AA%E4%BA%9B%E5%AE%89%E5%85%A8%E5%A4%A7%E4%BC%9A%E7%9A%84%E8%AE%AE%E9%A2%98%E5%80%BC%E5%BE%97%E5%AD%A6%E4%B9%A0/"/>
    <id>http://riusksk.github.io/2019/05/11/2019年哪些安全大会的议题值得学习/</id>
    <published>2019-05-11T02:19:22.000Z</published>
    <updated>2019-05-11T08:20:32.000Z</updated>
    
    <content type="html">&lt;p&gt;“2019年哪些安全大会值得参加？”或者这更符合多数人心中的标题，但为何不这么写呢？&lt;/p&gt;
&lt;p&gt;因为有些拥有好议题的大会一般都会公开PPT，尤其是国外会议，来回参会成本比较高，如果有现成的PPT供学习，自然不用每次都参加。当然，也有因作者拒绝公开的议题，这种只能现场听了。&lt;/p&gt;
&lt;p&gt;评价安全大会的好坏，是多方面的，绝不是单纯的议题质量这一维度。但这里我主要想从技术者的角度来看评价，所以后面你发现很多知名大会未在此列，请不要惊讶。&lt;/p&gt;
&lt;p&gt;即使是同一举办方，也无法保证每年的议题质量呈上升状态，有些会议也开始没落了，所以这里以2019年为时间点来点评。&lt;/p&gt;
&lt;p&gt;下面来聊聊2019年哪些安全大会的议题值得学习，有些已经举办过，有些尚未开始。&lt;/p&gt;
&lt;h2 id=&quot;推荐的安全会议&quot;&gt;&lt;a href=&quot;#推荐的安全会议&quot; class=&quot;headerlink&quot; title=&quot;推荐的安全会议&quot;&gt;&lt;/a&gt;推荐的安全会议&lt;/h2&gt;&lt;h3 id=&quot;1、BlackHat&quot;&gt;&lt;a href=&quot;#1、BlackHat&quot; class=&quot;headerlink&quot; title=&quot;1、BlackHat&quot;&gt;&lt;/a&gt;1、BlackHat&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511125059375.png&quot; alt=&quot;image-20190511125059375&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;官网&lt;/strong&gt;：&lt;a href=&quot;https://www.blackhat.com&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.blackhat.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你不知道BlackHat，说明你不在安全圈混。&lt;/p&gt;
&lt;p&gt;USA是主会场，议题质量和数量也是最高的，议题类型覆盖面也很广，除此之外还有欧洲和亚洲等分会场，质量相对次一些。&lt;/p&gt;
&lt;p&gt;这次BlackHat USA的议题也陆续公开了：&lt;a href=&quot;https://www.blackhat.com/us-19/briefings/schedule/index.html&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.blackhat.com/us-19/briefings/schedule/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;早几年的议题水平参差不齐，很水的也有，打广告也有。最近几年反而议题质量提高，不少华人面孔出现，为了PR效果而竞争，促进大家都拿出干货来分享，这也是其有利的一面。&lt;/p&gt;
&lt;p&gt;每年都有几千个议题投稿，竞争很大，但这很好地促进议题质量的提高。&lt;/p&gt;
&lt;p&gt;每年会后，官方都会放出PPT与视频，非常开放地分享知识。&lt;/p&gt;
&lt;p&gt;所以，首推BlackHat，自然无疑。&lt;/p&gt;
&lt;p&gt;但如果你以为接下我会写Defcon，那我会告诉你：No！&lt;/p&gt;
&lt;h3 id=&quot;2、OffensiveCon&quot;&gt;&lt;a href=&quot;#2、OffensiveCon&quot; class=&quot;headerlink&quot; title=&quot;2、OffensiveCon&quot;&gt;&lt;/a&gt;2、OffensiveCon&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/Logo_Offensivecon_by_BFS_1.jpg&quot; alt=&quot;offensivecon&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;官网&lt;/strong&gt;：&lt;a href=&quot;https://www.offensivecon.org/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.offensivecon.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我之前还专门写了篇文章&lt;a href=&quot;http://riusksk.me/2019/02/22/今年的OffensiveCon大会议题不错/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;《今年的OffensiveCon大会议题质量不错》&lt;/a&gt;介绍2019年大会中一些不错的议题。&lt;/p&gt;
&lt;p&gt;虽然OffensiveCon是从2018年才开始举办的，但议题质量一直保持不错，演讲者中包括Project Zero、Google syzkaller作者、Pwn2Own与Hack2Win获奖者等等。&lt;/p&gt;
&lt;p&gt;会后，一般是由演讲者选择是否公开ppt，多数人是在Twitter上公开的，官网上我没找到资源（&lt;a href=&quot;https://github.com/riusksk/SecConArchive/tree/master/OffensiveCon2019），所以之前收集的ppt都是从twitter上扒下来的。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://github.com/riusksk/SecConArchive/tree/master/OffensiveCon2019），所以之前收集的ppt都是从twitter上扒下来的。&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;3、HITB-Hack-In-The-Box&quot;&gt;&lt;a href=&quot;#3、HITB-Hack-In-The-Box&quot; class=&quot;headerlink&quot; title=&quot;3、HITB (Hack In The Box)&quot;&gt;&lt;/a&gt;3、HITB (Hack In The Box)&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511133408850.png&quot; alt=&quot;image-20190511133408850&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://conference.hitb.org/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://conference.hitb.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这几天HITB刚在荷兰阿姆斯特丹举办完，议题PPT也一并公开(&lt;a href=&quot;https://conference.hitb.org/hitbsecconf2019ams/materials/)。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://conference.hitb.org/hitbsecconf2019ams/materials/)。&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果要说国内外安全会议中，哪个公开PPT最快的，一定是HITB，他们一般是现场演讲完，就直接扔官网下载。然后过一段时间，也同样发布演讲视频。&lt;/p&gt;
&lt;p&gt;他们有时会同时搞两个演讲会场，一个是收费的主会场，议题质量高一些，一个是免费的，叫CommSec，用来提携新人，议题质量相对比较次，每个议题分享时间也比较短，最多半小时。&lt;/p&gt;
&lt;p&gt;之前去新加坡参加过一次HITB，人数不多，场地也不大，但可以感受到与国内安全会议的区别：更注重技术交流，而非搞关系。&lt;/p&gt;
&lt;p&gt;2018年开始，HITB也开始与京东合作，在北京举办分会场，没去过，不作评价，但国际会议本土化，总会产生一些差异的。&lt;/p&gt;
&lt;h3 id=&quot;4、InfiltrateCon&quot;&gt;&lt;a href=&quot;#4、InfiltrateCon&quot; class=&quot;headerlink&quot; title=&quot;4、InfiltrateCon&quot;&gt;&lt;/a&gt;4、InfiltrateCon&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511134410680.png&quot; alt=&quot;image-20190511134410680&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://infiltratecon.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://infiltratecon.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从2011年开始举办的，已经走过8个年头。&lt;/p&gt;
&lt;p&gt;看了今年的议题，还是有干货的，但只有4个议题ppt在twitter上公开。&lt;/p&gt;
&lt;p&gt;以前，会后都会在官网上公开PPT和视频，但目前官方还没公开。&lt;/p&gt;
&lt;p&gt;今年的议题涉及Chrome RCE、iOS与Android提权、Pwn TEE、浏览器JS Fuzzing等等，只能坐等官方公开PPT了。&lt;/p&gt;
&lt;h3 id=&quot;5、Chaos-Communication-Congress-C3&quot;&gt;&lt;a href=&quot;#5、Chaos-Communication-Congress-C3&quot; class=&quot;headerlink&quot; title=&quot;5、Chaos Communication Congress(C3)&quot;&gt;&lt;/a&gt;5、Chaos Communication Congress(C3)&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511141920353.png&quot; alt=&quot;image-20190511141920353&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://www.ccc.de/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.ccc.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;德国混淆黑客大会，常叫C3会议，常在C3前面加上第几届，比如今年第35届，所以叫35C3，历史非常悠久。&lt;/p&gt;
&lt;p&gt;以前大多是聚焦在无线电安全，所以一些什么2G\3G\4G短信、电话窃听经常出自该会议。熟悉无线电安全的同学，应该都听过。2018年也有一些不错的软件安全相关的议题，这些在之前写的文章&lt;a href=&quot;http://riusksk.me/2018/12/30/%E6%8E%A8%E8%8D%90%E4%BB%8A%E5%B9%B4C3%E9%BB%91%E5%AE%A2%E5%A4%A7%E4%BC%9A%E4%B8%8A%E7%9A%84%E5%87%A0%E4%B8%AA%E8%AE%AE%E9%A2%98/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;《推荐今年C3黑客大会上的几个议题》&lt;/a&gt;介绍过了。&lt;/p&gt;
&lt;p&gt;除了大会议题，不得不提下他们的CTF，非常具有实战价值，比如2018年的题目，直接拿pwn2own漏洞当比赛，从safari代码执行到提权，还有VisualBox沙盒逃逸题目，需要利用到0Dday，出题者是ProjectZero的人，早就将其卖给ZDI，刷了不少VBox漏洞。这些CTF题目在网上都有相应的WriteUp可供学习。&lt;/p&gt;
&lt;p&gt;这些议题只有演讲视频公开，没有PPT，官方会放在&lt;a href=&quot;https://media/ccc.de，可在线或下载观看。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://media/ccc.de，可在线或下载观看。&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;都是在每年的12月份举办，2019的还有半年呢……&lt;/p&gt;
&lt;h3 id=&quot;6、CanSecWest&quot;&gt;&lt;a href=&quot;#6、CanSecWest&quot; class=&quot;headerlink&quot; title=&quot;6、CanSecWest&quot;&gt;&lt;/a&gt;6、CanSecWest&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511143022033.png&quot; alt=&quot;image-20190511143022033&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;https://cansecwest.com/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://cansecwest.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CanSecWest都是与Pwn2Own一块出现的，以前议题PPT都是放在&lt;a href=&quot;https://www.slideshare.net/上分享，但从2018年开始又不搞了。&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;https://www.slideshare.net/上分享，但从2018年开始又不搞了。&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;每年议题不多，但质量还是可以的，不过感觉这两年的质量略有下降。&lt;/p&gt;
&lt;p&gt;今年3月的议题也没看到有下载，也是混Twitter找ppt的，只看了《&lt;strong&gt;vs com.apple.security.sandbox&lt;/strong&gt;》这个议题，今年我感兴趣的议题没几个，大家根据自己喜好选择吧。&lt;/p&gt;
&lt;p&gt;如果你各个议题PPT，也欢迎分享下。&lt;/p&gt;
&lt;h3 id=&quot;7、MOSEC-移动安全技术峰会&quot;&gt;&lt;a href=&quot;#7、MOSEC-移动安全技术峰会&quot; class=&quot;headerlink&quot; title=&quot;7、MOSEC 移动安全技术峰会&quot;&gt;&lt;/a&gt;7、MOSEC 移动安全技术峰会&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/image-20190511145201148.png&quot; alt=&quot;image-20190511145201148&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;http://mosec.org&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://mosec.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MOSEC是从2015年开始举办的，由盘古与韩国POC联合举办，聚集移动安全领域，包括Android、iOS、IoT以及无线电等领域。虽然起步晚，但议题干货满满的，应该是目前国内最好的安全会议了。&lt;/p&gt;
&lt;p&gt;今年的议题也已经陆续公开了，包括iOS越狱、Android提权、LTE、基带、卫星系统等等。&lt;/p&gt;
&lt;p&gt;官网是不公开大会的议题PPT，由演讲者选择，所以想学习的同学，可能还是得去参会。&lt;/p&gt;
&lt;p&gt;从2015年第一届我就开始参加，本月底还会去。去年参会，早上出酒店一辆车都打不到，又不在地铁口，最后骑了1个多小时的单车到会场，不容易啊……&lt;/p&gt;
&lt;h3 id=&quot;8、POC&quot;&gt;&lt;a href=&quot;#8、POC&quot; class=&quot;headerlink&quot; title=&quot;8、POC&quot;&gt;&lt;/a&gt;8、POC&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/poclogo.png&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;p&gt;官网：&lt;a href=&quot;http://powerofcommunity.net/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;http://powerofcommunity.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;POC(PowerOfCommunity)起始于2006年，在韩国举办的。单从议题质量看，确实不错，大多漏洞研究领域的前沿技术，但它经常是”二手货”，也就是在其它安全会议讲过后，但去韩国观光旅游顺便讲下。&lt;/p&gt;
&lt;p&gt;还有个意思的现象就是，每年的议题超过一半是中国人讲的。&lt;/p&gt;
&lt;p&gt;所以，你推荐也对，你不推荐也没错。&lt;/p&gt;
&lt;p&gt;不过，有个好处就是，POC议题PPT都是提供下载的。有时在其它会议找不到PPT时，到POC官网翻下，偶有小惊喜。&lt;/p&gt;
&lt;p&gt;另外还有个会议叫ZeroNights，同一举办方，更多是面向老外的。&lt;/p&gt;
&lt;h2 id=&quot;那些未提及的知名大会&quot;&gt;&lt;a href=&quot;#那些未提及的知名大会&quot; class=&quot;headerlink&quot; title=&quot;那些未提及的知名大会&quot;&gt;&lt;/a&gt;那些未提及的知名大会&lt;/h2&gt;&lt;h3 id=&quot;1、Defcon&quot;&gt;&lt;a href=&quot;#1、Defcon&quot; class=&quot;headerlink&quot; title=&quot;1、Defcon&quot;&gt;&lt;/a&gt;1、Defcon&lt;/h3&gt;&lt;p&gt;很多时候，Defcon议题都是BlackHat挑剩的，有的人也会直接议题双投。上面的议题质量更是参差不齐，相对BlackHat要求更低，更开放。我很少看Defcon议题，偶而网上有人发才看。&lt;/p&gt;
&lt;h3 id=&quot;2、RSA&quot;&gt;&lt;a href=&quot;#2、RSA&quot; class=&quot;headerlink&quot; title=&quot;2、RSA&quot;&gt;&lt;/a&gt;2、RSA&lt;/h3&gt;&lt;p&gt;RSA是一个充满商业气息的大会，如果你看过官网的PPT，就会发现里面充满诸多广告，有的议题可能就几页图片，所以从技术角度来看，是没有多少学习的价值。&lt;/p&gt;
&lt;p&gt;但是，RSA有时也反应出的安全的风向标，虽有炒作的成分，但显然PR得甚是成功。比如当年的APT、数据可视化、威胁情报等等&lt;/p&gt;
&lt;p&gt;RSA的创新沙盒是一项不错的活动，很多创业公司把他们研发的新产品拿出来比赛，从中可以反映出一些行业发展的方向。&lt;/p&gt;
&lt;p&gt;所以，RSA比较适合管理者、创业者以及产品运营者。&lt;/p&gt;
&lt;h3 id=&quot;3、XCon&quot;&gt;&lt;a href=&quot;#3、XCon&quot; class=&quot;headerlink&quot; title=&quot;3、XCon&quot;&gt;&lt;/a&gt;3、XCon&lt;/h3&gt;&lt;p&gt;以前国内安全会议很少，基本唯XCon为首。以前参加都是为了跟圈内朋友相聚聊天，有时场外比场内还热闹。&lt;/p&gt;
&lt;p&gt;但这几年开始，XCon逐渐没落了。如果你参加过XCon2018，相信会有很大的体会，会场已经没几个人，有时在场人数可能达到个位数，找个同行聊天都难，且门票还是国内同类会议最贵的。&lt;/p&gt;
&lt;h3 id=&quot;4、KCon&quot;&gt;&lt;a href=&quot;#4、KCon&quot; class=&quot;headerlink&quot; title=&quot;4、KCon&quot;&gt;&lt;/a&gt;4、KCon&lt;/h3&gt;&lt;p&gt;KCon应该算是国内比较有自己特色的会议，2018年的议题质量也还可以，中场休息的摇滚音乐很赞，场地与音效很好。&lt;/p&gt;
&lt;p&gt;之前几届的议题质量忽上忽下，2019年的议题还没出来，大家可以关注下先。&lt;/p&gt;
&lt;p&gt;若是在2018年，我还是会给个推荐的。&lt;/p&gt;
&lt;h3 id=&quot;5、BlueHat&quot;&gt;&lt;a href=&quot;#5、BlueHat&quot; class=&quot;headerlink&quot; title=&quot;5、BlueHat&quot;&gt;&lt;/a&gt;5、BlueHat&lt;/h3&gt;&lt;p&gt;以前微软的闭门邀请制会议，从今年开始在上海举办国内版，议题列表已经放出，感觉质量一般。但跟MOSEC时间联着，可以考虑一并参加下。&lt;/p&gt;
&lt;h3 id=&quot;6、RECON&quot;&gt;&lt;a href=&quot;#6、RECON&quot; class=&quot;headerlink&quot; title=&quot;6、RECON&quot;&gt;&lt;/a&gt;6、RECON&lt;/h3&gt;&lt;p&gt;因为多数议题自己不感兴趣，它比较偏向于逆向工程，以及系统底层、硬件、固件等方向，对此方向感兴趣的话，依然可以看看。&lt;/p&gt;
&lt;h3 id=&quot;7、Syscan-Syscan360&quot;&gt;&lt;a href=&quot;#7、Syscan-Syscan360&quot; class=&quot;headerlink&quot; title=&quot;7、Syscan/Syscan360&quot;&gt;&lt;/a&gt;7、Syscan/Syscan360&lt;/h3&gt;&lt;p&gt;官网已经打不开了，聊啥……&lt;/p&gt;
&lt;h2 id=&quot;后话&quot;&gt;&lt;a href=&quot;#后话&quot; class=&quot;headerlink&quot; title=&quot;后话&quot;&gt;&lt;/a&gt;后话&lt;/h2&gt;&lt;p&gt;评价一个会议的好坏真是很容易，但要举办一个好的会议却是不容易，影响的因素特别多，且非一人之力可以搞定。&lt;/p&gt;
&lt;p&gt;无论最终质量如何，对于为行业提供沟通交流平台的一些会议，还是值得点赞的。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;“2019年哪些安全大会值得参加？”或者这更符合多数人心中的标题，但为何不这么写呢？&lt;/p&gt;
&lt;p&gt;因为有些拥有好议题的大会一般都会公开PPT，尤其是国外会议，来回参会成本比较高，如果有现成的PPT供学习，自然不用每次都参加。当然，也有因作者拒绝公开的议题，这种只能现场听了
    
    </summary>
    
      <category term="随笔杂谈" scheme="http://riusksk.github.io/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="安全大会" scheme="http://riusksk.github.io/tags/%E5%AE%89%E5%85%A8%E5%A4%A7%E4%BC%9A/"/>
    
  </entry>
  
  <entry>
    <title>读《一本小小的蓝色逻辑书》：识别常见的逻辑漏洞</title>
    <link href="http://riusksk.github.io/2019/05/03/%E8%AF%BB%E3%80%8A%E4%B8%80%E6%9C%AC%E5%B0%8F%E5%B0%8F%E7%9A%84%E8%93%9D%E8%89%B2%E9%80%BB%E8%BE%91%E4%B9%A6%E3%80%8B/"/>
    <id>http://riusksk.github.io/2019/05/03/读《一本小小的蓝色逻辑书》/</id>
    <published>2019-05-03T01:46:24.000Z</published>
    <updated>2019-05-03T07:37:01.000Z</updated>
    
    <content type="html">&lt;p&gt;最近读了一本书叫《一本小小的蓝色逻辑书》，算是逻辑推理入门书籍，觉得不错，推荐给大家。&lt;/p&gt;
&lt;p&gt;这本书在微信读书上可以找到，大概需要4个多小时的阅读时间。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nwae2o1hj30ku0engpd.jpg&quot; alt=&quot;img&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;什么是逻辑推理&quot;&gt;&lt;a href=&quot;#什么是逻辑推理&quot; class=&quot;headerlink&quot; title=&quot;什么是逻辑推理&quot;&gt;&lt;/a&gt;什么是逻辑推理&lt;/h3&gt;&lt;p&gt;在生活、学习与工作中，我们总是要运用到逻辑推理能力，甚至我们自己也经常挂在嘴边，但若问什么是逻辑推理呢，估计没多少人能说清。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所谓”逻辑推理”，在广义上被定义为”我们评估信息的过程”。要想做出正确的决定，我们首先要占有充分的信息，而要想占有充分的信息，就必须提出正确的问题。所以那些擅长逻辑推理的人，往往也比较善于提出问题，搜集相关信息，用”正确的”方式对这些信息进行评估。最重要提，他们可以在不受他人干扰的情况下独立完成这一过程。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在我记忆中，整个学生时代，几乎没有过这门课程，大部分的逻辑推理能力都是基于以往的中学数学课程训练，比如真假命题、逆命题、证明题等等，本书中也有讲到这些。&lt;/p&gt;
&lt;p&gt;也许我们的日常数学真的只需要加减乘除的运算，但以前的数学课程培养出来的逻辑思维，却可以运用一生。&lt;/p&gt;
&lt;h3 id=&quot;推翻前提找答案&quot;&gt;&lt;a href=&quot;#推翻前提找答案&quot; class=&quot;headerlink&quot; title=&quot;推翻前提找答案&quot;&gt;&lt;/a&gt;推翻前提找答案&lt;/h3&gt;&lt;p&gt;这里说的”推翻前提找答案”，其实是想说”&lt;strong&gt;水平思考法&lt;/strong&gt;“，一种摆脱前提设想而进行创意思考的方式，不走寻常路，换个角度看待问题，而不是接受他人提出的前提条件。我们多数人一般都是使用“&lt;strong&gt;垂直思考法&lt;/strong&gt;”，却沿着原定的逻辑路线思考下去，就是我们俗语常说的“&lt;strong&gt;直脑筋&lt;/strong&gt;”，多少略带有点贬义。&lt;/p&gt;
&lt;p&gt;下面是两种思考方法的对比表：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nws25a6hj30ps0eswht.jpg&quot; alt=&quot;image-20190503101519293&quot;&gt;&lt;/p&gt;
&lt;p&gt;可能还是太抽象了，因此作者讲了一个故事：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;许多年前，一个倒霉的商人欠了别人一大笔钱。由于没钱还债，商人很可能会被债主投进大牢。&lt;/p&gt;
&lt;p&gt;债主是个脾气又坏又丑的糟老头，但他却看上了商人年轻貌美的女儿。于是他告诉商人：”我有个办法，不仅可以把你的债务一笔勾销，还能让你的女儿免于因为你入狱而流落街头。”&lt;/p&gt;
&lt;p&gt;具体办法是：债主把一黑一白的小石头放进空袋子，让商人女儿摸一块。如果摸到白石头，则她父亲的债一笔勾销，她也无须嫁给债主；如果摸到的是黑石头，债务仍然可以一笔勾销，但她必须嫁给债主。如果她不答应这个游戏，那么她父亲会被立刻投进监狱。&lt;/p&gt;
&lt;p&gt;商人父女别无选择，只好答应。&lt;/p&gt;
&lt;p&gt;于是三人来到债主花园内铺满鹅卵石的小路上，债主俯身捡两块黑石头扔进袋子里，他自以为神不知鬼不觉，却不知这一切都被商人女儿看在眼里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果是个”直脑筋”的人，可能就想到下面两种做法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当场揭穿糟老头的阴谋，然后商人进监狱；&lt;/li&gt;
&lt;li&gt;女儿认命，抽到黑石头，嫁给糟老头，债务一笔勾销。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后的结局是这样：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;商人的女儿摸出一块石头，但故意把它掉到地上，跟一堆鹅卵石混到一起。然后一边假装寻找石头，一边若有所思地说道，”但没关系，只要看看袋子里的那块石头是什么颜色，就可以判断我刚才摸出的那块石头是什么颜色了。”&lt;/p&gt;
&lt;p&gt;债主一时愣住了，不知道该说什么，只好让那个女孩拿出袋子里的石头，结果可想而知。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这就是水平思考法，我们可以回顾下这个故事，若要想免债的话，其中的”前提条件”是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前提条件&lt;/strong&gt;：从袋子中摸出白石头。&lt;/p&gt;
&lt;p&gt;现在通过改变该前提条件来思考，比如这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从袋子中摸出&lt;strong&gt;&lt;code&gt;黑&lt;/code&gt;&lt;/strong&gt;石头：现场改变规则，摸出黑石头可免债。&lt;/li&gt;
&lt;li&gt;摸出石头后，&lt;strong&gt;根据剩下的石头颜色来判断是否摸到的是白石头&lt;/strong&gt;，正如故事中所做的。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;日常生活中，阻碍我们进行创意思考的是，不假思索的程序性反应，就是不费脑子的事情，比如商店购物、开车等等，但有时遇到一些新情况，这些程序性反应就不灵了，这时就需要启动非程序性反应。&lt;/p&gt;
&lt;p&gt;书中还给了一道训练”水平思考法”的题目，大家可以先试着做下，一开始我也没做出来（答案见文末附录）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;用最多4条直线(笔尖不离纸)把下面的9个点连接起来。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nxsccj6aj30ck096t8z.jpg&quot; alt=&quot;image-20190503105014426&quot;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;还有另一道题，是当年面试微信支付时被问到的类似题目，但微信的更难一点（拿3个桶倒出想要的重量），答案亦见文末附录：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;马戏团老板派小丑去附近河边打水给大象喝。因为想在里面加入一种特殊健康浓缩剂。所以需要整整7加仑水，不能多，也不能少。他给了小丑两个水桶，一个5加仑，一个3加仑，让小丑去打整整7加仑水。请问小丑该怎么办？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;效用概率做决策&quot;&gt;&lt;a href=&quot;#效用概率做决策&quot; class=&quot;headerlink&quot; title=&quot;效用概率做决策&quot;&gt;&lt;/a&gt;效用概率做决策&lt;/h3&gt;&lt;p&gt;如果大家经常逛知乎的话，会发现很多人在问：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;做安全需不需要考研？&lt;/li&gt;
&lt;li&gt;选择什么样的学校和专业好就业？&lt;/li&gt;
&lt;li&gt;选择什么样的职业更适合自己？&lt;/li&gt;
&lt;li&gt;其它…….&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;相信很多人做决策的时候，多会先分析出各项选择的优缺点再打分对比，选择出最佳方案，这叫&lt;strong&gt;利弊分析法&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;有时，我们又会先列出在意的点，根据重要程度作个加权值，然后给个选择打分，根据分数高低来排序选择，这叫&lt;strong&gt;加权排序法&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;还有决策法、矩阵分析法、概率树等等多种决策分析方法，在我们在决策时，能够给我们提供很大的帮助。&lt;/p&gt;
&lt;p&gt;不过我在这里，重点是想介绍下&lt;strong&gt;效用分析法&lt;/strong&gt;，即分析某个结果对我们的价值，通常跟概率一块使用。&lt;/p&gt;
&lt;p&gt;打个比方，一名大四学生在规划自己的人生。摆在他面前的有三种选择：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;成为旅行作家；&lt;/li&gt;
&lt;li&gt;加入外交部；&lt;/li&gt;
&lt;li&gt;成为公司销售人员。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里肯定不能只从金钱回报来考虑这个问题，因为这名学生真正看重的并不是赚多少钱，而是自己从事这份工作时的内心感受。&lt;/p&gt;
&lt;p&gt;若是以前，我可能会列出收入、职业前景、兴趣、工作环境等多个维度来考虑。但是某些场景下，我们常常忽略实现这一结果的概率，比如我想当皇帝，这种不是靠努力就能实现的。&lt;/p&gt;
&lt;p&gt;因此这里最好的办法就是去计算每份职业的期望值（Expected Value, 简称EV）。EV计算公式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;EV = 效用(某种结果带给我们的心理满足度) x 出现这种结果的概率&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;根据上述公式，我们得到：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nzxuyujbj30lj088jsm.jpg&quot; alt=&quot;image-20190503120444342&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里每种结果存在实现概率，是因为该结果要求一定的技能，而这名学生此时并不完全具备这些技能。&lt;/p&gt;
&lt;p&gt;根据上面的分析，该学生选择加入外部部的期望值最高，所以理性地说，他应该选择这份工作。&lt;/p&gt;
&lt;h3 id=&quot;五大常见推理漏洞&quot;&gt;&lt;a href=&quot;#五大常见推理漏洞&quot; class=&quot;headerlink&quot; title=&quot;五大常见推理漏洞&quot;&gt;&lt;/a&gt;五大常见推理漏洞&lt;/h3&gt;&lt;p&gt;通常说的推理漏洞，大多是指那些跟我们所做假设相关的漏洞。书中列举出五大常见推理漏洞：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;比较和类比假设漏洞：偷换概念&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把两个虽然不同，但逻辑上却相等的事物进行对比。&lt;/p&gt;
&lt;p&gt;比如拿橘子和苹果作比较。再比如说，医学院校经常拿小白鼠做实验，然后把在动物身上得到的实验结果当作参考，但是若因小白鼠身上实验某种药物时发生某种并发症，就认为人类在使用这种药物时也会出现同样的并发症，就是错误的。&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;代表性假设漏洞：以偏概全&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不能拿特殊案例来代表整体，统计的样本要足够多才行，否则它就会弱化我们的论断。&lt;/p&gt;
&lt;p&gt;比如《思考，快与慢》中曾举过一个例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最近，某大医院出生婴儿1000人， 某小医院出生婴儿50人， 问哪家医院生男婴的比例大于60%的可能性较大？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们都知道生男生女的概率分别是50%，统计样本越多就越会接进这个数值，但如果你若去小医院，它的波动概率就很大，可能生男80%，也可以40%，所以小医院生男婴的比例就越有可能大于60%。&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;“好证据”假设漏洞：对相关证据视而不见&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当我们不经验证就想当然地认为自己的证据有效时，就很容易犯此错误。那些比较客观、相关、精确、真实的证据有利于强化我们的论述；而主观、不具代表性、不精确的论据则只会弱化我们的论述。&lt;/p&gt;
&lt;p&gt;比如，一个不愿意戒烟的人总是会看到吸烟有利的一面，而对那些支持戒烟的事实会视而不见。&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;因果假设漏洞：混淆因果关系&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当我们错误地做出因果假设，或者在没有证据的情况下就认定一件事会导致另外一件事时，就会犯这种错误。&lt;/p&gt;
&lt;p&gt;比如，每个活过百岁的人都喝过白开水，所以就认定经常喝白开水就能长命百岁，这显然是错误，它们不存在直接的因果关系。很多学术界的社会/生物健康调查相关的报导就经常出现这种错误。&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;实施假设漏洞：在执行计划时没有提前考虑可能出现的瓶颈&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当我们没有预料到计划实施过程可能出一的瓶颈，或者盲目地相信自己的计划会轻而易举地得到落实时，我们就会犯这种错误。&lt;/p&gt;
&lt;p&gt;比如，几年前，西方某旅行杂志曾登过一篇文章说：”因为如今搭乘飞机很方便，而且人们手头余钱也越来越多，所以很快大家都会去非洲看狮子了。”&lt;/p&gt;
&lt;p&gt;这显然就是错误的，去不去非洲看狮子，并非单纯考虑金钱和交通就行，比如先问问你有没有年假再说吧！&lt;/p&gt;
&lt;h3 id=&quot;识别常见的逻辑漏洞&quot;&gt;&lt;a href=&quot;#识别常见的逻辑漏洞&quot; class=&quot;headerlink&quot; title=&quot;识别常见的逻辑漏洞&quot;&gt;&lt;/a&gt;识别常见的逻辑漏洞&lt;/h3&gt;&lt;p&gt;根据书中列举的常见逻辑漏洞，我画了张思维导图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://riusksk.me/media/常见逻辑漏洞识别.svg&quot; alt=&quot;常见逻辑漏洞识别&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;附录&quot;&gt;&lt;a href=&quot;#附录&quot; class=&quot;headerlink&quot; title=&quot;附录&quot;&gt;&lt;/a&gt;附录&lt;/h3&gt;&lt;p&gt;1、9点连线的答案：多数人会受限于前提条件：只能在9个点内形成的长方形之内画线，如果能够摆脱该前提条件，那么答案就会有很多种：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nyan53h1j30440a73yu.jpg&quot; alt=&quot;image-20190503110749773&quot;&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nz31v5o9j30900akwfd.jpg&quot; alt=&quot;image-20190503113506286&quot;&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nz1dfjtvj30af071t93.jpg&quot; alt=&quot;image-20190503113329718&quot;&gt;&lt;/p&gt;
&lt;p&gt;2、水桶题目的答案：先倒满5加仑的水桶，再把它倒进3加仑水桶，把3加仑水桶里的水倒掉，把5加仑水桶里剩下的2加仑水倒进3加仑水桶里，重新装满5加仑水桶（5加仑 + 2加仑 = 7加仓）。&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;最近读了一本书叫《一本小小的蓝色逻辑书》，算是逻辑推理入门书籍，觉得不错，推荐给大家。&lt;/p&gt;
&lt;p&gt;这本书在微信读书上可以找到，大概需要4个多小时的阅读时间。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://riusksk.me/media/006tNc79gy1g2nw
    
    </summary>
    
      <category term="随笔杂谈" scheme="http://riusksk.github.io/categories/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="逻辑" scheme="http://riusksk.github.io/tags/%E9%80%BB%E8%BE%91/"/>
    
  </entry>
  
</feed>
