<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Fuzz - 标签 - 有价值炮灰</title>
        <link>https://evilpan.com/tags/fuzz/</link>
        <description>Fuzz - 标签 - 有价值炮灰</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>i@pppan.net (evilpan)</managingEditor>
            <webMaster>i@pppan.net (evilpan)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Sat, 25 Jul 2020 22:40:00 &#43;0800</lastBuildDate><atom:link href="https://evilpan.com/tags/fuzz/" rel="self" type="application/rss+xml" /><item>
    <title>MOSEC-2020参会小记</title>
    <link>https://evilpan.com/2020/07/25/mosec2020/</link>
    <pubDate>Sat, 25 Jul 2020 22:40:00 &#43;0800</pubDate><author>
        <name>evilpan</name>
    </author><guid>https://evilpan.com/2020/07/25/mosec2020/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/img/2020-07-25-mosec2020/2.png" referrerpolicy="no-referrer">
            </div><p>昨天去参加了mosec2020的安全会议，这也是我第一次参加mosec，议题质量比预料中的要高，因此在这记录一下其中几个有意思的议题。</p>
<h1 id="io80211family" class="headerLink">
    <a href="#io80211family" class="header-mark"></a>IO80211Family</h1><p>第一个议题是王宇师傅(@keenjoy95)关于苹果WiFi子系统的安全研究分享，其实王宇在前一段时间就提了一大波苹果蓝牙子系统的漏洞，看来手里的料还是挺多的。之所以去撸WiFi子系统，也是因为“之前的一个0day在升级系统后不work了”，……说回思路方面，研究入口的寻找个人认为比较有启发性，利用<a href="https://github.com/didi/kemon" target="_blank" rel="noopener noreferrer">Kemon</a>的内核挂钩能力，确实可以做到往上拳打daemon process，往下脚踢kernel driver或firmware。
<figure><a class="lightgallery" href="/img/2020-07-25-mosec2020/0.png" title="km" data-thumbnail="/img/2020-07-25-mosec2020/0.png" data-sub-html="<h2>km</h2><p>km</p>"><img  loading="lazy" src='/img/2020-07-25-mosec2020/0.png'   alt="km"  ></a><figcaption class="image-caption">km</figcaption>
</figure></p>
<p>IO80211Family V1/V2的这些漏洞，也是因为在接口上发现有巨大的参数传入。一方面通过修改Kemon实现Passive Fuzzer，另一方面去逆向对于这些参数的处理和校验从而优化样本。效果怎么样呢？也就是“每天和panic打交道，对于一些品相不好的panic都懒得去分析”的地步吧。</p>
<p>另外，对于这些复杂的设备驱动，可以参考开源代码(<a href="https://github.com/ammulder/AppleIntelWiFiMVM" target="_blank" rel="noopener noreferrer">AppleIntelWiFiMVM</a>)，甚至自己去实现一遍，这样可能在分析时会有不一样的理解。</p>
<p>像WiFi、蓝牙、NFC这些攻击面其实影响是很大的，而这部分驱动或者firmware的开发者由于自恃功能复杂天知地知或者抱着能用就行的心理，对一些不可信数据没有意识添加完善的边界检查，导致实现往往在遇到非预期输入时存在bug或者漏洞从而引起内存破坏。这部分分析一个绕不过的门槛是逆向的基本功，安全研究人员做好头发的保养工作还是很有必要的。</p>
<blockquote>
  <p>另外王宇也提到了他在macbook touchbar图像驱动中也是有0day的，感兴趣的同学也可以尝试去撞一下:)</p>
</blockquote><h1 id="droidcorn-无源码android-binary-fuzzing" class="headerLink">
    <a href="#droidcorn-%e6%97%a0%e6%ba%90%e7%a0%81android-binary-fuzzing" class="header-mark"></a>DroidCorn: 无源码Android Binary Fuzzing</h1><p>这个议题是flanker(@Flanker_017)介绍了他(们？)做的一个无源码fuzzing框架。说到无源码fuzz，常见的两个流派就是binary patch和dynamic instrument，而DroidCorn听名字也大概能猜到了，就是基于Unicorn开发的动态插桩式执行引擎。</p>
<p>该引擎架构大致分为以下部分:</p>
<ul>
<li>Crash Triager
<ul>
<li>Trace Recorder</li>
<li>Symbolizer</li>
</ul>
</li>
<li>Mini Runtime
<ul>
<li>ELF linker</li>
<li>Mini Heap</li>
<li>Mini Hooker</li>
</ul>
</li>
<li>Mini Kernel
<ul>
<li>Memory Layer</li>
<li>Syscall Handler</li>
</ul>
</li>
<li>Processor
<ul>
<li>Unicorn(patched)</li>
<li>ForkServer</li>
<li>Tracer</li>
</ul>
</li>
</ul>
<p>无源fuzz的思路和AFL-unicorn类似，在QEMU执行<a href="http://people.redhat.com/pbonzini/qemu-test-doc/_build/html/topics/Translator-Internals.html" target="_blank" rel="noopener noreferrer">Translation Block</a>的时候插入<code>afl_maybe_log</code>记录执行覆盖率。Unicorn本身只是QEMU中CPU Emulation部分代码提炼出来的可编程框架，要实现二进制程序的加载和运行还需要依赖于linker和内核的正确处理。DroidCorn中在这部分做了不少工作，实现自定义的ELF Linker、Runtime以及根据不同应用实现不同的内核系统调用(~20个)，这让我想起了另一个类似的框架<a href="https://github.com/qilingframework/qiling" target="_blank" rel="noopener noreferrer">qiling.io</a>。最后作为PoC，展示了三星手机图片库中找到的一些漏洞，不过工具想必近期是不会开源了，自己动手丰衣足食吧。</p>
<p>也许以后这类更偏向实战的无源fuzz会是一大热点。CPU指令的软件模拟运行的虽然可以做很多优化，但性能终究是比不上原生虚拟化的支持，ARM Server FTW？</p>
<h1 id="深入浅出jsc优化措施" class="headerLink">
    <a href="#%e6%b7%b1%e5%85%a5%e6%b5%85%e5%87%bajsc%e4%bc%98%e5%8c%96%e6%8e%aa%e6%96%bd" class="header-mark"></a>深入浅出JSC优化措施</h1><p>大宝(@S0rryMybad)的议题，讲得太深，而且又是我的知识盲区，所以不多介绍。唯一的收获是学会了面向RCE的“倒序挖洞法”，针对类型混淆去搜寻JS Array类型改变和检查的地方并寻找潜在的非预期状态。C/C++的代码审计和php有很大不同，但是现在网上更多的资料是关于后者，这个未来有时间也值得谈谈。</p>
<h1 id="暗涌2020" class="headerLink">
    <a href="#%e6%9a%97%e6%b6%8c2020" class="header-mark"></a>暗涌2020</h1><p>slipper的议题，光听名字完全不知道说啥，副标题是小米5c中国产自研手机芯片澎湃S1分析，其实我觉得标题应该改成“小米5c: 年轻人的第一个fullchain” :)。</p>
<p>虽然标题说是芯片，不过和芯片本身没什么太大关系。议题本身还是很精彩的，从头到尾介绍了如何实现one-click获得小米5c的持久化root权限(准确来说可以达到S-EL1的权限)。</p>
<p>由于安卓的碎片化，小米ROM中其实还是Android7.1，所以在攻击链中有几部分使用了n-day，比如webview和sepolicy的问题。小米5c使用了OP-TEE作为TEE的实现，从其中某个TA里发现漏洞函数，通过在用户态发送消息可以触发。一般TA中都是没有现代mitigation的，所以直接栈溢出+ROP来返回内核并进行patch从而获取了root权限；最后则是通过分析firstboot(LK+aboot)发现特殊入口绕过SecureBoot从而实现持久化。</p>
<p>最近中美关系紧张，可能会出现更多的国产芯片。除了芯片本身的硬件实现外，软件设施也需要跟上时代。华为海思是个很好的例子，虽然其TEE(iTrustee，之前是Trusted Core)也曾经有过<a href="https://www.blackhat.com/docs/us-15/materials/us-15-Shen-Attacking-Your-Trusted-Core-Exploiting-Trustzone-On-Android.pdf" target="_blank" rel="noopener noreferrer">漏洞</a>，但至少是和国际持平的。开源实现也不是不能用，不过开发者移植的时候最好先有个全面理解，这样也不至于把开源项目的测试接口原汁原味编译进release版本中，然后被安全研究员在大会上公开diss了:)</p>
<h1 id="攻击sep的安全启动" class="headerLink">
    <a href="#%e6%94%bb%e5%87%bbsep%e7%9a%84%e5%ae%89%e5%85%a8%e5%90%af%e5%8a%a8" class="header-mark"></a>攻击SEP的安全启动</h1><p>徐昊(@windknown)的压轴议题，这也是我觉得最有干货的一个议题了。在checkm8出来后，攻击者号称这是ROM的代码漏洞无法被修复，但是苹果计划在iOS14中修复这个问题，修复方法之一就是通过SEP。SEP是安全处理器(Secure Enclave Processor)，与ARM提供的Truszone总线隔离不同，而是使用了一个独立的处理器来专门处理敏感信息。</p>
<p>关于SEP的公开信息并不多，曾经在2016年BlackHatUS中的议题“Demystifying the Secure Enclave Processor”介绍过，此后很长一段时间都没有相关的安全分析。SEP同样也是一个ARM处理器，拥有独立的RAM和外设，如加密引擎(GID/UID)和TRNG，但同时也有部分和应用处理器共用的资源，比如电源管理(PMGR)、Mailbox和共享内存。</p>
<p>Mailbox是SEP和AP之间唯一的通信信道，基于双方都能访问的映射IO寄存器实现。AP端的映射基地址是<code>0x20da04000</code>，SEP端映射的虚拟地址是<code>0xcda00b80</code>(物理地址为<code>0x20da00b80</code>)。Mailbox信息(messages)的大小是8字节，其中4字节为data，数据结构如下:</p>
<div class="code-block highlight is-open show-line-numbers  tw-group tw-my-2">
  <div class="
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1"
      aria-hidden="true">
          <div class="group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></div>
          <p class="tw-select-none !tw-my-1">c</p>
      </button>

   <div class="tw-flex">
      <button 
        class="
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden"
        title="Copy code">
          <span class="copy-icon tw-block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw-hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw-block tw-m-0 tw-p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      "><span class="line"><span class="cl"><span class="k">struct</span> <span class="nf">__attribute__</span><span class="p">((</span><span class="n">packed</span><span class="p">))</span> <span class="n">sep_message</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">	<span class="kt">unsigned</span> <span class="kr">__int8</span> <span class="n">endpoint</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="kt">unsigned</span> <span class="kr">__int8</span> <span class="n">tag</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="kt">unsigned</span> <span class="kr">__int8</span> <span class="n">opcode</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="kt">unsigned</span> <span class="kr">__int8</span> <span class="n">param</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">data</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
</div>
<p><figure><a class="lightgallery" href="/img/2020-07-25-mosec2020/1.png" title="sep" data-thumbnail="/img/2020-07-25-mosec2020/1.png" data-sub-html="<h2>sep</h2><p>sep</p>"><img  loading="lazy" src='/img/2020-07-25-mosec2020/1.png'   alt="sep"  ></a><figcaption class="image-caption">sep</figcaption>
</figure></p>
<p>这个议题本身更多关注与安全启动部分，作者逆向分析了SEP ROM中的代码，分析地址映射和地址保护初始化的逻辑，并寻找其中的攻击点，最终在部分型号下实现SEP的memory读写。可能由于作者还没有完全撸完，所以后面留了一手，不过总的来说也算给其他研究者提供了一个指引方向，后面应该会针对SEP有个小爆发。</p>
<h1 id="baijiu-con" class="headerLink">
    <a href="#baijiu-con" class="header-mark"></a>Baijiu Con</h1><p>会后的环节是白酒Con，想上台讲的喝一杯白酒讲五分钟，挺新颖的形式。其中也有一些有趣的议题，比如:</p>
<ul>
<li>王宇介绍了SEP研究的一些其他相关资料和最新进展</li>
<li>王勇(ThomasKing2014)介绍了一种名为Arch-flip的奇淫技巧，在运行时切换ARM32/64位的运行环境，可用来辅助写chrome exp或者反逆向</li>
<li>Rancho介绍了Windows打印驱动的安全研究</li>
<li>redra1n介绍了供应链攻击，red on red，用魔法打败魔法(●—●)</li>
<li>360的小哥介绍了奔驰汽车安全研究，进入汽车系统后发现一个越权远程控制任意奔驰的漏洞(还好买不起)</li>
<li>iOS in 2020: 秀了一把最新iOS 14的越狱，不说了，盘古NB</li>
<li>Chromium Series in TCTF: 分享CTF中遇到的Chromium的漏洞利用技巧</li>
</ul>
<blockquote>
  <p>虽然会议视频和slides没有公开，但是CTF主播slipper在斗鱼直播间中直播了Baijiu Con部分的演讲，感兴趣的可以去看看，直播间号码是7851291</p>
</blockquote>]]></description>
</item></channel>
</rss>
